﻿


function TrackingDataLoader(url, rootElement){
    // create downloader
    this.control = rootElement.getHost();
    this.downloader = this.control.createObject("downloader");
    // attach event handlers
    //this.downloader.addEventListener("downloadProgressChanged",   downloadProgressChanged);
    //this.downloader.addEventListener("downloadFailed", downloadFailed);
    this.downloader.addEventListener("completed", Silverlight.createDelegate(this, this.OnTrackingDataDownloadComplete));
        
   // download
    this.downloader.open("GET", url);
    this.downloader.send();
 
}

TrackingDataLoader.prototype.OnTrackingDataDownloadComplete = function(sender, args){

    // get the response
    var xml = sender.responseText;
    var doc;
    var xmlList;
    // create appropiate XML document
    if (window.ActiveXObject) {
        // IE 6 (and 7)
        doc = new ActiveXObject("Microsoft.XMLDOM");
        doc.async="false";
  	    doc.loadXML(xml);
	    xmlList = doc.childNodes[1].nodeName;
	    
        if (!doc.loadXML(xml)){
            // handle parse error
            throw doc.parseError.reason;
        }
        // loop
            if (xmlList == "Left_Loop"){
                var xml = doc.getElementsByTagName("frame");
               
                for(i=0;i<xml.length;i++){
                    
                    var frames = xml[i].childNodes;
                    //alert("point:"+frames[0].childNodes[0].nodeValue+" scale:"+frames[1].childNodes[0].nodeValue+" rot:"+frames[2].childNodes[0].nodeValue);
                    var pointString = frames[0].childNodes[0].nodeValue;
                    //alert(frames[0].childNodes[0].nodeValue);
                    var pointData = pointString.split(",",3);
                    CanvasLeft_loop_dataX.push(pointData[0]);
                    CanvasLeft_loop_dataY.push(pointData[1]);
                    var scaleString = frames[1].childNodes[0].nodeValue;
                    var scaleData = scaleString.split(",",3);
                    ScaleLeft_loop_data.push(Math.abs(scaleData[0]*.01));
                    var rotationString = frames[2].childNodes[0].nodeValue;
                    RotationLeft_loop_data.push(rotationString);
                    
               }
              
            }
            if (xmlList == "Right_Loop"){
                var xml = doc.getElementsByTagName("frame");
                for(i=0;i<xml.length;i++){
                    var frames = xml[i].childNodes;
                    var pointString = frames[0].childNodes[0].nodeValue;
                    var pointData = pointString.split(",",3);
                    CanvasRight_loop_dataX.push(pointData[0]);
                    CanvasRight_loop_dataY.push(pointData[1]);
                    var scaleString = frames[1].childNodes[0].nodeValue;
                    var scaleData = scaleString.split(",",3);
                    ScaleRight_loop_data.push(Math.abs(scaleData[0]*.01));
                    var rotationString = frames[2].childNodes[0].nodeValue;
                    RotationRight_loop_data.push(rotationString);
               }
            }
            
            // intro
            if (xmlList == "Left_Intro"){
                var xml = doc.getElementsByTagName("frame");
                for(i=0;i<xml.length;i++){
                    var frames = xml[i].childNodes;
                    var pointString = frames[0].childNodes[0].nodeValue;
                    var pointData = pointString.split(",",3);
                    CanvasLeft_intro_dataX.push(pointData[0]);
                    CanvasLeft_intro_dataY.push(pointData[1]);
                    var scaleString = frames[1].childNodes[0].nodeValue;
                    var scaleData = scaleString.split(",",3);
                    ScaleLeft_intro_data.push(Math.abs(scaleData[0]*.01));
                    var rotationString = frames[2].childNodes[0].nodeValue;
                    RotationLeft_intro_data.push(rotationString);
                    
               }
            }
            if (xmlList == "Right_Intro"){
                var xml = doc.getElementsByTagName("frame");
                for(i=0;i<xml.length;i++){
                    var frames = xml[i].childNodes;
                    var pointString = frames[0].childNodes[0].nodeValue;
                    var pointData = pointString.split(",",3);
                    CanvasRight_intro_dataX.push(pointData[0]);
                    CanvasRight_intro_dataY.push(pointData[1]);
                    var scaleString = frames[1].childNodes[0].nodeValue;
                    var scaleData = scaleString.split(",",3);
                    ScaleRight_intro_data.push(Math.abs(scaleData[0]*.01));
                    var rotationString = frames[2].childNodes[0].nodeValue;
                    RotationRight_intro_data.push(rotationString);
               }
                
            }
            // outro
               if (xmlList == "Left_Outro"){
                var xml = doc.getElementsByTagName("frame");
                for(i=0;i<xml.length;i++){
                    var frames = xml[i].childNodes;
                    var pointString = frames[0].childNodes[0].nodeValue;
                    var pointData = pointString.split(",",3);
                    CanvasLeft_outro_dataX.push(pointData[0]);
                    CanvasLeft_outro_dataY.push(pointData[1]);
                    var scaleString = frames[1].childNodes[0].nodeValue;
                    var scaleData = scaleString.split(",",3);
                    ScaleLeft_outro_data.push(Math.abs(scaleData[0]*.01));
                    var rotationString = frames[2].childNodes[0].nodeValue;
                    RotationLeft_outro_data.push(rotationString);
                    
               }
            }
            if (xmlList == "Right_Outro"){
                var xml = doc.getElementsByTagName("frame");
                for(i=0;i<xml.length;i++){
                    var frames = xml[i].childNodes;
                    var pointString = frames[0].childNodes[0].nodeValue;
                    var pointData = pointString.split(",",3);
                    CanvasRight_outro_dataX.push(pointData[0]);
                    CanvasRight_outro_dataY.push(pointData[1]);
                    var scaleString = frames[1].childNodes[0].nodeValue;
                    var scaleData = scaleString.split(",",3);
                    ScaleRight_outro_data.push(Math.abs(scaleData[0]*.01));
                    var rotationString = frames[2].childNodes[0].nodeValue;
                    RotationRight_outro_data.push(rotationString);
               }
            }
    }
    else {
        // Firefox and others
        var parser = new DOMParser();
        doc = parser.parseFromString(xml, "text/xml");
        xmlList = doc.childNodes[0].nodeName;
        // loop
                if (xmlList == "Left_Loop"){
                    var xml = doc.getElementsByTagName("frame");
                   
                    for(i=0;i<xml.length;i++){
                        
                        var frames = xml[i].childNodes;
                        //alert("point:"+frames[1].childNodes[0].nodeValue+" scale:"+frames[3].childNodes[0].nodeValue+" rot:"+frames[5].childNodes[0].nodeValue);
                        var pointString = frames[1].childNodes[0].nodeValue;
                        
                        var pointData = pointString.split(",",3);
                        CanvasLeft_loop_dataX.push(pointData[0]);
                        CanvasLeft_loop_dataY.push(pointData[1]);
                        var scaleString = frames[3].childNodes[0].nodeValue;
                        var scaleData = scaleString.split(",",3);
                        ScaleLeft_loop_data.push(Math.abs(scaleData[0]*.01));
                        var rotationString = frames[5].childNodes[0].nodeValue;
                        RotationLeft_loop_data.push(rotationString);
                        
                   }
                  
                }
                if (xmlList == "Right_Loop"){
                    var xml = doc.getElementsByTagName("frame");
                    for(i=0;i<xml.length;i++){
                        var frames = xml[i].childNodes;
                        var pointString = frames[1].childNodes[0].nodeValue;
                        var pointData = pointString.split(",",3);
                        CanvasRight_loop_dataX.push(pointData[0]);
                        CanvasRight_loop_dataY.push(pointData[1]);
                        var scaleString = frames[3].childNodes[0].nodeValue;
                        var scaleData = scaleString.split(",",3);
                        ScaleRight_loop_data.push(Math.abs(scaleData[0]*.01));
                        var rotationString = frames[5].childNodes[0].nodeValue;
                        RotationRight_loop_data.push(rotationString);
                   }
                }
                
                // intro
                if (xmlList == "Left_Intro"){
                    var xml = doc.getElementsByTagName("frame");
                    for(i=0;i<xml.length;i++){
                        var frames = xml[i].childNodes;
                        var pointString = frames[1].childNodes[0].nodeValue;
                        var pointData = pointString.split(",",3);
                        CanvasLeft_intro_dataX.push(pointData[0]);
                        CanvasLeft_intro_dataY.push(pointData[1]);
                        var scaleString = frames[3].childNodes[0].nodeValue;
                        var scaleData = scaleString.split(",",3);
                        ScaleLeft_intro_data.push(Math.abs(scaleData[0]*.01));
                        var rotationString = frames[5].childNodes[0].nodeValue;
                        RotationLeft_intro_data.push(rotationString);
                        
                   }
                }
                if (xmlList == "Right_Intro"){
                    var xml = doc.getElementsByTagName("frame");
                    for(i=0;i<xml.length;i++){
                        var frames = xml[i].childNodes;
                        var pointString = frames[1].childNodes[0].nodeValue;
                        var pointData = pointString.split(",",3);
                        CanvasRight_intro_dataX.push(pointData[0]);
                        CanvasRight_intro_dataY.push(pointData[1]);
                        var scaleString = frames[3].childNodes[0].nodeValue;
                        var scaleData = scaleString.split(",",3);
                        ScaleRight_intro_data.push(Math.abs(scaleData[0]*.01));
                        var rotationString = frames[5].childNodes[0].nodeValue;
                        RotationRight_intro_data.push(rotationString);
                   }
                    
                }
                // outro
                   if (xmlList == "Left_Outro"){
                    var xml = doc.getElementsByTagName("frame");
                    for(i=0;i<xml.length;i++){
                        var frames = xml[i].childNodes;
                        var pointString = frames[1].childNodes[0].nodeValue;
                        var pointData = pointString.split(",",3);
                        CanvasLeft_outro_dataX.push(pointData[0]);
                        CanvasLeft_outro_dataY.push(pointData[1]);
                        var scaleString = frames[3].childNodes[0].nodeValue;
                        var scaleData = scaleString.split(",",3);
                        ScaleLeft_outro_data.push(Math.abs(scaleData[0]*.01));
                        var rotationString = frames[5].childNodes[0].nodeValue;
                        RotationLeft_outro_data.push(rotationString);
                        
                   }
                }
                if (xmlList == "Right_Outro"){
                    var xml = doc.getElementsByTagName("frame");
                    for(i=0;i<xml.length;i++){
                        var frames = xml[i].childNodes;
                        var pointString = frames[1].childNodes[0].nodeValue;
                        var pointData = pointString.split(",",3);
                        CanvasRight_outro_dataX.push(pointData[0]);
                        CanvasRight_outro_dataY.push(pointData[1]);
                        var scaleString = frames[3].childNodes[0].nodeValue;
                        var scaleData = scaleString.split(",",3);
                        ScaleRight_outro_data.push(Math.abs(scaleData[0]*.01));
                        var rotationString = frames[5].childNodes[0].nodeValue;
                        RotationRight_outro_data.push(rotationString);
                   }
                }
    }

    // query XML dom
    
    
  
    /***  FUNCTION TO SPLIT FONT/BACK LEFT/RIGHT DATA ***
    var xmlList = doc.childNodes[0].nodeName;
   
     switch(xmlList){
     case "front_001_left":
        var xml = doc.getElementsByTagName("frame");
       //alert(xml[0].getAttribute('x'));
       for(i=0;i<xml.length;i++){
            var pointString = xml[i].childNodes[0].nodeValue;
            var pointData = pointString.split(",",3);
            front_Left_dataX.push(pointData[0]);
            front_Left_dataY.push(pointData[1]);
       }
     break;
     case "front_001_right":
      var xml = doc.getElementsByTagName("frame");
      
       for(i=0;i<xml.length;i++){
            var pointString = xml[i].childNodes[0].nodeValue;
            var pointData = pointString.split(",",3);
            front_Right_dataX.push(pointData[0]);
            front_Right_dataY.push(pointData[1]);
       }
     break;
     case "back_001_left":
      var xml = doc.getElementsByTagName("frame");
       
       for(i=0;i<xml.length;i++){
            var pointString = xml[i].childNodes[0].nodeValue;
            var pointData = pointString.split(",",3);
            back_Left_dataX.push(pointData[0]);
            back_Left_dataY.push(pointData[1]);
       }
     break;
     case "back_001_right":
      var xml = doc.getElementsByTagName("frame");
       
       for(i=0;i<xml.length;i++){
            var pointString = xml[i].childNodes[0].nodeValue;
            var pointData = pointString.split(",",3);
            back_Right_dataX.push(pointData[0]);
            back_Right_dataY.push(pointData[1]);
       }
     break;
   }
   */
   
    
}


		


 



		