﻿
    var intBaseDur = 3500;
    
    var strImgs = [];
    
    var strCat1Imgs = [];
    var strCat2Imgs = [];
    
    var intCurrentIdx = new Array(0, 0);
                
    function fcnFade(strID, intStartOpacity, intEndOpacity, intFadeTime) 
    { 
        //speed for each frame 
        var intSpeed = Math.round(intFadeTime / 100); 
        var intTimer = 0; 

        //determine the direction for the blending, if start and end are the same nothing happens 
        if(intStartOpacity > intEndOpacity) 
        { 
            for(intI = intStartOpacity; intI >= intEndOpacity; intI--) 
            { 
                setTimeout("fcnChangeOpac(" + intI + ",'" + strID + "')",(intTimer * intSpeed)); 
                intTimer++; 
            } 
        }
        else if(intStartOpacity < intEndOpacity) 
        { 
            for(intI = intStartOpacity; intI <= intEndOpacity; intI++) 
            { 
                setTimeout("fcnChangeOpac(" + intI + ",'" + strID + "')",(intTimer * intSpeed)); 
                intTimer++; 
            } 
        } 
    } 

    //change the opacity for different browsers 
    function fcnChangeOpac(intOpacity, strID) 
    { 
        var objImg = document.getElementById(strID).style; 
        objImg.opacity = (intOpacity / 100); 
        objImg.MozOpacity = (intOpacity / 100); 
        objImg.KhtmlOpacity = (intOpacity / 100); 
        objImg.filter = "alpha(opacity=" + intOpacity + ")"; 
    } 
    
    function fcnDividedRotate(blnIn, intCategory, strIDToRotate)
    {
        if(blnIn)
        {            
            var strImg = "";
            
            switch(intCategory)
            {
                case 0:
                {
                    strImg = strCat1Imgs[intCurrentIdx[intCategory]];                        
                    
                    if(strCat1Imgs[intCurrentIdx[intCategory]+1])
                        intCurrentIdx[intCategory]++;
                    else
                        intCurrentIdx[intCategory]=0;
                        
                    break;
                }
                case 1:
                {
                    strImg = strCat2Imgs[intCurrentIdx[intCategory]];       
                    
                    if(strCat2Imgs[intCurrentIdx[intCategory]+1])
                        intCurrentIdx[intCategory]++;
                    else
                        intCurrentIdx[intCategory]=0;
                                         
                    break;
                }
            }
            
            document.getElementById(strIDToRotate).src = strImg;
            
            fcnFadeIn(strIDToRotate);
        }
        else
        {
            fcnFadeOut(strIDToRotate);
        }
        
        var intDur = intBaseDur;
        
        if(blnIn) intDur =  intBaseDur * 1.6;                
            
        setTimeout("fcnDividedRotate("+!blnIn+", "+intCategory+", '"+strIDToRotate+"')", intDur);
    }
    
    function fcnFadeIn(strIDToFadeIn)
    {
        var intI = 0;

        var blnIE = false;

        if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1 || navigator.userAgent.toLowerCase().indexOf('safari') > -1) {
            blnIE = false;
        }
        else if (window.ActiveXObject) {// code for IE
            blnIE = true;
        }
        else if (document.implementation.createDocument) {// code for Mozilla, Firefox, Opera, etc.
            blnIE = false;
        }
        else {
            alert('Your browser does not support the image display for this page.');
        }

        var intDur = intBaseDur;

//        if (blnIE) intDur = 300;

        fcnFade(strIDToFadeIn, 0, 100, intDur);
    }
    
    function fcnFadeOut(strIDToFadeOut) {

        var blnIE = false;

        if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1 || navigator.userAgent.toLowerCase().indexOf('safari') > -1) {
            blnIE = false;
        }
        else if (window.ActiveXObject) {// code for IE
            blnIE = true;
        }
        else if (document.implementation.createDocument) {// code for Mozilla, Firefox, Opera, etc.
            blnIE = false;
        }
        else {
            alert('Your browser does not support the image display for this page.');
        }

        var intDur = intBaseDur;

//        if (blnIE) intDur = 300;

        fcnFade(strIDToFadeOut, 100, 0, intDur);
    }

    function fcnSortArray(strVals, intSorts)
    {        
		var blnReSort=true;
		
		while(blnReSort)
		{
		    blnReSort=false;
		    
		    for(intI = 0; intI<=intSorts.length; intI++)
		    {
		        if(intSorts[intI] > intSorts[intI+1])
		        {
		            var str1 = strVals[intI];
		            var str2 = strVals[intI+1];
		            
		            var int1 = intSorts[intI];
		            var int2 = intSorts[intI+1];
		            
		            strVals[intI]=str2;
		            strVals[intI+1]=str1;
		            
		            intSorts[intI] = int2;
		            intSorts[intI+1] = int1;
		            
		            blnReSort=true;
		        }
		    }
		}
		
        return strVals;
    }

    function fcnStartDividedRotate()
    {       
        //load array with categories and images from xml file
        var xmlDoc=null;
    	
    	if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1 || navigator.userAgent.toLowerCase().indexOf('safari') > -1)
		{
		    var xmlhttp = new window.XMLHttpRequest();
		    xmlhttp.open("GET", "IndexProds.xml", false);
            xmlhttp.send(null);
            var xmlDoc = xmlhttp.responseXML.documentElement;
		}
    	else if (window.ActiveXObject)
    	{// code for IE
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async=false;
			xmlDoc.load("IndexProds.xml");
		}
		else if (document.implementation.createDocument)
		{// code for Mozilla, Firefox, Opera, etc.
			xmlDoc=document.implementation.createDocument("","",null);
			xmlDoc.async=false;
			xmlDoc.load("IndexProds.xml");
		}
		else
		{
			alert('Your browser does not support the image display for this page.');
		}
		
		if (xmlDoc!=null)
		{            
			var xmlImgs=xmlDoc.getElementsByTagName("IndexImg");
			
			var intSort1 = [];
			var intSort2 = [];
			
			for (intI = 0; intI < xmlImgs.length; intI++)
            {
                var strCat = xmlImgs[intI].getElementsByTagName("strCategory")[0].childNodes[0].nodeValue;
                var strFile ="Imgs/IndexImgs/" + xmlImgs[intI].getElementsByTagName("strFileName")[0].childNodes[0].nodeValue;
                
                imgPL = new Image();                
                imgPL.src = strFile;
                
                var intIndex = xmlImgs[intI].getElementsByTagName("intSortOrder")[0].childNodes[0].nodeValue;                
                var intCategory = -1;
                
                switch(strCat)
                {
                    case "Tea":
                        intCategory = 0;
                        strCat1Imgs[intCurrentIdx[intCategory]] = strFile;
                        intSort1[intCurrentIdx[intCategory]] = intIndex - 0;
                        break;
                        
                    case "Accessories":
                        intCategory = 1;
                        strCat2Imgs[intCurrentIdx[intCategory]] = strFile;
                        intSort2[intCurrentIdx[intCategory]] = intIndex - 0;
                        break;
                        
                    default:
                        alert("Unhandled category: "+strCat+" - "+strFile);
                        break;
                }                
                
                intCurrentIdx[intCategory] = intCurrentIdx[intCategory] + 1;
            }
        }
        
        //sort arrays
        strCat1Imgs=fcnSortArray(strCat1Imgs,intSort1);
        strCat2Imgs=fcnSortArray(strCat2Imgs,intSort2);
        
        intCurrentIdx[0] = 0;
        intCurrentIdx[1] = 0;
     
        //start rotating images    
        fcnDividedRotate(true, 0, "img1");
        setTimeout("fcnDividedRotate(true, 1, 'img2')", intBaseDur);
    }
