﻿// JScript File

var SampleImgDivID;
var BigImgDivID;
var BigImgInnerDivID;
var BigImgID;
var MaskDivID;
var MaskImgID;
var sampleImageID;
var minX;
var maxX;
var minY;
var maxY;

var mouseX=0;
var mouseY=0;
var fx=0;
var fy=0;

var sampleImageDivX;
var sampleImageDivY;
var sampleImageDivW;
var sampleImageDivH;
var L;
var T;
var bigImageDivX;
var bigImageDivY;
var bigImageDivCX;
var bigImageDivCY;
var bigImageDivW;
var bigImageDivH;

var maskDivW;
var maskDivH;

var bigImageW;
var bigImageH;

var zoomAmountW;
var zoomAmountH;

var scrollX;
var scrollY;

var isSampleImageLoaded=false;

var IsCrossBorder=false;

function CacheImage(ImageSource) 
{ 
   var ImageObject = new Image();
   ImageObject.src = ImageSource;
   return ImageObject;
}


function sampleImageDiv_mousemove(evt) {
if (isSampleImageLoaded)
    {
        IsCrossBorder=false;
        if (self.pageYOffset) // all except Explorer
        {
	        scrollX= self.pageXOffset;
	        scrollY= self.pageYOffset;
        }
        else if (document.documentElement && document.documentElement.scrollTop)
	        // Explorer 6 Strict
        {
	        scrollX= document.documentElement.scrollLeft;
	        scrollY= document.documentElement.scrollTop;
        }
        else if (document.body) // all other Explorers
        {
	        scrollX= document.body.scrollLeft;
	        scrollY= document.body.scrollTop;
        }

        mouseX=(evt.clientX)+scrollX;//mouse axis
        mouseY=(evt.clientY)+scrollY;

        L=mouseX-sampleImageDivX;
        T=mouseY-sampleImageDivY;

        fx=parseInt(bigImageDivCX-(L*zoomAmountW));
        fy=parseInt(bigImageDivCY-(T*zoomAmountH));


        if(BigImgInnerDivID)
            {
               
            Sys.UI.DomElement.setLocation($get(MaskDivID),parseInt(mouseX-(maskDivW/2)),parseInt(mouseY-(maskDivH/2)));    
            Sys.UI.DomElement.setLocation($get(BigImgInnerDivID),(fx-bigImageDivX),(fy-bigImageDivY));        
            }

        if(mouseX<minX || mouseX>maxX || mouseY<minY || mouseY>maxY)
            {
            document.getElementById(MaskDivID).style.visibility="hidden";
            //document.getElementById(BigImgID).style.visibility="hidden";    
            disableMask();
            }
        else
            {
            var xMaxLimit= mouseX+ (maskDivW)/2;
            var xMinLimit= mouseX- (maskDivW)/2;
            var yMaxLimit= mouseY+ (maskDivH)/2;
            var yMinLimit= mouseY- (maskDivH)/2;
            
            if  (xMinLimit <= minX && yMinLimit <= minY)
                {        
                var newMaskWidth=maskDivW - (minX - xMinLimit);        
                document.getElementById(MaskDivID).style.width= newMaskWidth +'px';
                var newMaskHeight=maskDivH - (minY - yMinLimit);        
                document.getElementById(MaskDivID).style.height= newMaskHeight +'px';
                Sys.UI.DomElement.setLocation($get(MaskDivID),minX,minY);
                }
            else if(xMaxLimit >= maxX && yMinLimit <= minY)
                {
                var newMaskWidth=maskDivW + (maxX - xMaxLimit);        
                document.getElementById(MaskDivID).style.width= newMaskWidth +'px';
                var newMaskHeight=maskDivH - (minY - yMinLimit);        
                document.getElementById(MaskDivID).style.height= newMaskHeight +'px';
                Sys.UI.DomElement.setLocation($get(MaskDivID),parseInt(mouseX-(maskDivW/2)),minY);
                }
            else if (xMaxLimit >= maxX && yMaxLimit >= maxY)
                {
                var newMaskWidth=maskDivW + (maxX - xMaxLimit);        
                document.getElementById(MaskDivID).style.width= newMaskWidth +'px';
                var newMaskHeight=maskDivH + (maxY - yMaxLimit);        
                document.getElementById(MaskDivID).style.height= newMaskHeight +'px';
                }
            else if (xMinLimit <= minX && yMaxLimit >= maxY)
                {
                var newMaskWidth=maskDivW - (minX - xMinLimit);        
                document.getElementById(MaskDivID).style.width= newMaskWidth +'px';
                var newMaskHeight=maskDivH + (maxY - yMaxLimit);        
                document.getElementById(MaskDivID).style.height= newMaskHeight +'px';        
                Sys.UI.DomElement.setLocation($get(MaskDivID),minX,parseInt(mouseY-(maskDivH/2)));
                }        
            else if (xMaxLimit >= maxX)
                {
                var newMaskWidth=maskDivW + (maxX - xMaxLimit);        
                document.getElementById(MaskDivID).style.width= newMaskWidth +'px';        
                }    
            else if (xMinLimit <= minX)        
                {        
                var newMaskWidth=maskDivW - (minX - xMinLimit);        
                document.getElementById(MaskDivID).style.width= newMaskWidth +'px';
                Sys.UI.DomElement.setLocation($get(MaskDivID),minX,parseInt(mouseY-(maskDivH/2)));
                }        
            else if (yMaxLimit >= maxY)
                {
                var newMaskHeight=maskDivH + (maxY - yMaxLimit);        
                document.getElementById(MaskDivID).style.height= newMaskHeight +'px';        
                }    
            else if (yMinLimit <= minY)        
                {        
                var newMaskHeight=maskDivH - (minY - yMinLimit);        
                document.getElementById(MaskDivID).style.height= newMaskHeight +'px';
                Sys.UI.DomElement.setLocation($get(MaskDivID),parseInt(mouseX-(maskDivW/2)),minY);
                }    
            }
    }
}

function sampleImageDiv_mouseover(samleImageDiv,bigImageDiv,bigImageInnerDiv,bigImage,maskDiv,maskImg,sampleImage) {
//Initialization Start
    SampleImgDivID=samleImageDiv;       //Set Div ID variales
    BigImgDivID=bigImageDiv;
    BigImgInnerDivID=bigImageInnerDiv;  
    BigImgID=bigImage;
    MaskDivID=maskDiv;
    MaskImgID=maskImg;
    sampleImageID=sampleImage;
    
if (isSampleImageLoaded)
    {
            if (self.pageYOffset) // all except Explorer
        {
	        scrollX= self.pageXOffset;
	        scrollY= self.pageYOffset;
        }
        else if (document.documentElement && document.documentElement.scrollTop)
	        // Explorer 6 Strict
        {
	        scrollX= document.documentElement.scrollLeft;
	        scrollY= document.documentElement.scrollTop;
        }
        else if (document.body) // all other Explorers
        {
	        scrollX= document.body.scrollLeft;
	        scrollY= document.body.scrollTop;
        }

        document.getElementById(BigImgID).style.visibility="visible";
        document.getElementById(BigImgInnerDivID).style.visibility="visible";

        sampleImageDivW=$get(SampleImgDivID).offsetWidth;
        sampleImageDivH=$get(SampleImgDivID).offsetHeight;
        sampleImageDivX= parseInt(Sys.UI.DomElement.getLocation($get(SampleImgDivID)).x);
        sampleImageDivY=parseInt(Sys.UI.DomElement.getLocation($get(SampleImgDivID)).y);

        bigImageDivW=$get(BigImgDivID).offsetWidth;
        bigImageDivH=$get(BigImgDivID).offsetHeight;
        bigImageDivX=parseInt(Sys.UI.DomElement.getLocation($get(BigImgDivID)).x);
        bigImageDivY=parseInt(Sys.UI.DomElement.getLocation($get(BigImgDivID)).y);
        bigImageDivCX=parseInt(bigImageDivX+bigImageDivW/2);
        bigImageDivCY=parseInt(bigImageDivY+bigImageDivH/2);

        bigImageW=$get(BigImgID).offsetWidth;
        bigImageH=$get(BigImgID).offsetHeight;

        zoomAmountW=(bigImageW/sampleImageDivW);
        zoomAmountH=(bigImageH/sampleImageDivH);

        maskDivW=((bigImageDivW*sampleImageDivW)/bigImageW);
        maskDivH=((bigImageDivH*sampleImageDivH)/bigImageH);
        if (maskDivW <= maskDivH)
            {
            maskDivH=maskDivW;
            }
        else
            {
            maskDivW=maskDivH;
            }    
        if (maskDivW < 350 && maskDivH < 350)
            {   
                document.getElementById(MaskDivID).style.width= maskDivW +'px';
                document.getElementById(MaskDivID).style.height= maskDivH +'px';            
            }
        else
            {
        document.getElementById(MaskDivID).style.width=100+'px';
        document.getElementById(MaskDivID).style.height=100+'px';
            }  
        minX=sampleImageDivX;
        minY=sampleImageDivY;
        maxX=sampleImageDivX+sampleImageDivW;
        maxY=sampleImageDivY+sampleImageDivH;
    }
//Initialization Complete
}
function sampleImageDiv_onmouseout(){

}

 function replaceSubstring(inputString, fromString, toString) {   
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { 
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { 
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
     
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      } 
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
   
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   }
   return temp;
}

//End of Zooming Script

//Starts scrollingBar script

var mainDivID;
var scrollableDivID;
var counter=0
var timerNxt;
var timerNxtFast;
var timerPrev;
var timerPrevFast;
var minSpeed=4;
var maxSpeed=15;
var timeInterval=10;
var moveSpeed ; //1 is minimum
moveSpeed=minSpeed; 

function MoveRight()
{
var curX=parseInt(Sys.UI.DomElement.getLocation($get(scrollableDivID)).x);
var w=parseInt(document.getElementById(mainDivID).style.width);
var containerX=parseInt(Sys.UI.DomElement.getLocation($get(mainDivID)).x);
var ww=parseInt($get(scrollableDivID).offsetWidth);
var limitLeft=containerX +w-ww ;
if (curX >= limitLeft)
{
counter=counter-moveSpeed;
Sys.UI.DomElement.setLocation($get(scrollableDivID),counter,0);
}
else
{
clearInterval(timerNxt);
}
}
function MoveLeft()
{
var curX=parseInt(Sys.UI.DomElement.getLocation($get(scrollableDivID)).x);
var limitLeft=parseInt(Sys.UI.DomElement.getLocation($get(mainDivID)).x);
if (curX < limitLeft)
{
counter=counter+moveSpeed;
Sys.UI.DomElement.setLocation($get(scrollableDivID),counter,0);
}
else
{
clearInterval(timerPrev);
}
}
function ResetScrollbar(mainDiv,ScrollableDiv)
    {
    mainDivID=mainDiv;
    scrollableDivID=ScrollableDiv;
    MoveRight();
    MoveLeft();
    }
function ScrollRight(mainDiv,ScrollableDiv) {
mainDivID=mainDiv;
scrollableDivID=ScrollableDiv;
timerNxt =setInterval("MoveRight();",timeInterval);
}

function ScrollLeft(mainDiv,ScrollableDiv) {
mainDivID=mainDiv;
scrollableDivID=ScrollableDiv;
timerPrev=setInterval("MoveLeft();",timeInterval);
}

function ExitRightScroll() {
clearInterval(timerNxt);
clearInterval(timerPrevFast);
moveSpeed=minSpeed;
clearInterval(timerPrev);
clearInterval(timerNxtFast);
}

function ExitLeftScroll() {
clearInterval(timerPrev);
clearInterval(timerNxtFast);
moveSpeed=minSpeed;
clearInterval(timerNxt);
clearInterval(timerPrevFast);
}

function GoToRightEnd()
{
clearInterval(timerNxt);
moveSpeed=maxSpeed ;
timerNxtFast=setInterval("MoveRight();",timeInterval);
}
function EndGotoRight()
{
moveSpeed=minSpeed;
clearInterval(timerNxtFast);
timerNxt =setInterval("MoveRight();",timeInterval);
}


function GoToLeftEnd()
{
clearInterval(timerPrev);
moveSpeed=maxSpeed;
timerPrevFast=setInterval("MoveLeft();",timeInterval);
}
function EndGotoLeft()
{
moveSpeed=minSpeed;
clearInterval(timerPrevFast);
timerPrev=setInterval("MoveLeft();",timeInterval);
} 