﻿// JScript File
var modal_popup_id = null;
var csMoveArr = new Array(4);
var leftMostCS = 0;

function setModalPopUpId(id){
    modal_popup_id = id;
}

function getCaseStudy(caseId){
    try{
        $get('div_Loading').style.display = "";
        $get('div_CaseStudy').style.display = "none";
        $get('img_FullsizeImage').src = "";
        
        showModal();
        CaseStudyServices.GetCaseStudy(caseId, loadCaseStudy, getCaseStudyFailed);
    }
    catch(ex){
        alert('Error: '+ex.message);
    }
}

function loadCaseStudy(caseStudy){
    try{
        $get('img_FullsizeImage').src = caseStudy.ImageUrl;
        $get('lbl_customer').innerHTML = caseStudy.Description;
        $get('lbl_description').innerHTML = caseStudy.Application;
        $get('lbl_Details').innerHTML = caseStudy.DisplayText;
        $get('div_mockTableBorber').style.backgroundColor = caseStudy.HeaderColor;
        $get('div_Loading').style.display = "none";
        $get('div_CaseStudy').style.display = "";
    }
    catch(ex){
        alert('Error: '+ex.message);
    }
}

function getCaseStudyFailed(error){
    var stackTrace = error.get_stackTrace();
    var message = error.get_message();
    var statusCode = error.get_statusCode();
    var exceptionType = error.get_exceptionType();
    var timedout = error.get_timedOut();
   
    // Display the error.    
    alert("Service Error: " + message + "\n" +
        "Status Code: " + statusCode + "'n" +
        "Exception Type: " + exceptionType + '\n' +
        "Stack Trace: " + stackTrace);
}

function showModal(){
    $find(modal_popup_id).show();
}

function hideModal() {
    $find(modal_popup_id).hide();
}

function moveLeft(){
    if(csCnt < 4)
        return;

    obj = $get(csArr[leftMostCS]);
    csMoveArr[0] = new cs(obj,0,0,parseInt(obj.style.left),parseInt(obj.style.width));
    
    obj = $get(csArr[((leftMostCS == csCnt - 1) ? 0 :(leftMostCS+1))]);
    csMoveArr[1] = new cs(obj,0,165,parseInt(obj.style.left),parseInt(obj.style.width));
    
    obj = $get(csArr[((leftMostCS == csCnt - 1) ? 1 : ((leftMostCS == csCnt - 2) ? 0 : (leftMostCS+2)))]);
    csMoveArr[2] = new cs(obj,169,165,parseInt(obj.style.left),parseInt(obj.style.width))
        
    obj = $get(csArr[((leftMostCS == csCnt - 1) ? 2 : ((leftMostCS == csCnt - 2) ? 1 : ((leftMostCS == csCnt - 3) ? 0 :(leftMostCS+3))))]);
    obj.style.display = '';
    csMoveArr[3] = new cs(obj,338,165,515,0)
    
    animate();

    leftMostCS = ((leftMostCS == csCnt - 1) ? 0 : ++leftMostCS);
}

function moveRight(){
    if(csCnt < 4)
        return;
   
    obj = $get(csArr[((leftMostCS == (csCnt - 2)) ? 0 : ((leftMostCS == (csCnt - 1)) ? 1 : (leftMostCS + 2)))]);
    csMoveArr[0] = new cs(obj,515,0,parseInt(obj.style.left),parseInt(obj.style.width));

    obj = $get(csArr[((leftMostCS == csCnt - 1) ? 0 : (leftMostCS + 1))]);
    csMoveArr[1] = new cs(obj,338,165,parseInt(obj.style.left),parseInt(obj.style.width));
    
    obj = $get(csArr[leftMostCS]);
    csMoveArr[2] = new cs(obj,169,165,parseInt(obj.style.left),parseInt(obj.style.width));

    obj = $get(csArr[((leftMostCS == 0) ? (csCnt - 1) : (leftMostCS - 1))]);
    obj.style.display = '';
    csMoveArr[3] = new cs(obj,0,165,0,0)
    
    animate();

    leftMostCS = ((leftMostCS == 0) ? csCnt - 1 : --leftMostCS);
}

function cs(obj, newLeft, newWidth, currLeft, currWidth, fLeft, fWidth){
    this.obj = obj;
    this.newLeft = newLeft;
    this.newWidth = newWidth;
    this.currLeft = currLeft
    this.currWidth = currWidth;
    this.fLeft = fLeft
    this.fWidth = fWidth;
    
}

function animate()
{
  f = 300 / 40;
  
  for(i in csMoveArr){
    csMoveArr[i].fLeft = (csMoveArr[i].newLeft - csMoveArr[i].currLeft) / f;
    csMoveArr[i].fWidth = (csMoveArr[i].newWidth - csMoveArr[i].currWidth) / f;
  }

  doFrame();
}

function doFrame()
{
  for(i in csMoveArr){
    try{
    //alert(csMoveArr[i].currLeft+" :: "+csMoveArr[i].newLeft+" :: "+csMoveArr[i].fLeft);
    csMoveArr[i].currLeft = moveSingleVal(csMoveArr[i].currLeft, csMoveArr[i].newLeft, csMoveArr[i].fLeft);
    csMoveArr[i].currWidth = moveSingleVal(csMoveArr[i].currWidth, csMoveArr[i].newWidth, csMoveArr[i].fWidth);
    csMoveArr[i].obj.style.left = ((csMoveArr[i].currLeft == 'NaN') ? 0 : Math.round(csMoveArr[i].currLeft)) + 'px';
    csMoveArr[i].obj.style.width = Math.round(csMoveArr[i].currWidth) + 'px';
    }
    catch(ex){
        //alert("ERROR! \nID:"+csMoveArr[i].obj.id+"\nMessage:"+ex.message+"\nleft:"+csMoveArr[i].currLeft+"\nwidth:"+csMoveArr[i].currWidth);
        //return;
    }
  }

  if(csMoveArr[0].currLeft == csMoveArr[0].newLeft && csMoveArr[0].currWidth == csMoveArr[0].newWidth){ 
     csMoveArr[0].obj.style.display = 'none';
     return;
  }
  setTimeout('doFrame()', 40);
}

function moveSingleVal(currentVal, finalVal, frameAmt)
{
  if(frameAmt == 0 || currentVal == finalVal)
    return finalVal;
  
  currentVal += frameAmt;
  if((frameAmt> 0 && currentVal>= finalVal) 
    || (frameAmt <0 && currentVal <= finalVal))
  {
    return finalVal;
  }
  return currentVal;
}