﻿    var root_node;
    var feedNumber = 1136;
    var numbFeeds;
    var values = new Array(numbFeeds);
    var http_request = null;
    var key;
    var jsLoop = 1000;
    var runVar = false;
    var sendVar = false;
    var wooYayIntervalId = 0;
    var suLoop = 3000;
    var selection_id = new Array(20);
    var selection_class = new Array(20);
    var streamValue;
    var formData = new Array(20);
    var url;
    var loops = new Array(10);
    var loopName = new Array(10);
    var dataLooping = true;
	var buttonArray = new Array(10);
        setStatusLights(1);
        formData[0] = 1136; // feed number
        formData[1] =5;  // stream number
                formData[2] = 1000; // default loop value

    // the settings for the plug-in are stored in an array, formData
    // each value is one used by the plugin
    // 0 feed number
    // 1 stream number
    // 2 js loop
    // 3 su loop
    // 5 = api_key
    

    

function setLoop(tempstring)
    {
    document.getElementById("loopNo").innerHTML= tempstring;
}

function setStatusLights(statusType){

if (statusType == 1){
document['status1'].src = 'images/statusbuttons/red.png';
document['status2'].src = 'images/statusbuttons/white.png';
document['status3'].src = 'images/statusbuttons/white.png';

}
if (statusType == 2){
document['status1'].src = 'images/statusbuttons/white.png';
document['status2'].src = 'images/statusbuttons/orange.png';
document['status3'].src = 'images/statusbuttons/white.png';


}
if (statusType == 3){
document['status1'].src = 'images/statusbuttons/white.png';
document['status2'].src = 'images/statusbuttons/white.png';
document['status3'].src = 'images/statusbuttons/green.png';

}
}

function setMsg(location,tempstring)
    {
    document.getElementById(location).innerHTML= tempstring;
    }
    

    


function urlTest()


{
 url = "http://www.pachube.com/api/"+formData[0]+".xml" ;

setMsg("status2","Loading Values from: "+url);  
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
        http_request.overrideMimeType('text/xml');
       }

}
if (http_request!=null)
  {

http_request.open("GET",url,true);
http_request.onreadystatechange=state_Change;
http_request.send(null);
  }

}

function state_Change(){

    if (http_request.readyState == 0) {
    setMsg("status","Ready State = 0");

        setStatusLights(2);
    
    }


    if (http_request.readyState == 1) {
    setMsg("status","Just Loading Values...");
        setStatusLights(2);
    
    }
        if (http_request.readyState == 2) {
            setMsg("status","Ready State = 2");
    setStatusLights(2);

        }
        if (http_request.readyState == 3) {
            if (http_request.status == 200) {
            setMsg("status","Loading...");
                setStatusLights(2);
            } else if(http_request.status == 404){
            setMsg("status","Feed Not Found, Try Checking The Feed Is Live at Pachube.com");
            setStatusLights(1);
    
        }   else if(http_request.status == 401){
            setMsg("status","You are not authorized to view this feed. See below for help.");
            setStatusLights(1);
    
        }
        else {
            setMsg("status","Oops! The Server Returned the Status Code: "+http_request.status);
            setStatusLights(1);
    
        }
        }

        if (http_request.readyState == 4) 
    {
          var pachubeXML = http_request.responseXML;
            
    
}   

    root_node = pachubeXML.getElementsByTagName('environment').item(0);
    var numbFeeds = root_node.getElementsByTagName('data').length;
    setMsg("numb",numbFeeds);
    values.length = numbFeeds;
    var i = 0;
    var valuesString = '';
    setMsg("values1", "p1");
    for (i = 0; i<numbFeeds; i++){

        var data_value = root_node.getElementsByTagName('data').item(i);
        
         setMsg("values1", "about to make final_values " + i);
        
        var final_values = data_value.getElementsByTagName('value').item(0);
        
        //setMsg("values1", "p2"+i + " " + final_value.childNodes.length);
        
		values[i] = 1;
		setMsg("values1", "beforep3"+i);
		var actual_value = final_values.childNodes[0];
		setMsg("values1", "afterp3"+i);
		if (final_values.hasChildNodes()){
			setMsg("values1", "afterp3nodevalue "+i);
			
			if (actual_value.nodeValue == parseFloat(actual_value.nodeValue)){
				values[i] = actual_value.nodeValue;
			} 
			
		} else {
		values[i] = 1;
		}
	

        valuesString +=  values[i] + ", ";
    }
   // alert(parseFloat(values[1]));

setMsg("values1", "here");
  //  setMsg ("values1" , "No Values Currently Loaded")

//streamValue = values[formData[1]];
//setMsg ("streamValue" , streamValue)

setMsg ("values1" , valuesString)


setMsg ("streamNo" , formData[1])
setStatusLights(3);
var d = new Date();
setMsg("status","Values Loaded " +d.toTimeString());


}



//f1

function pickObjects() {
                query = 'skp:pickObjectsInSU@' + values;
                window.location.href = query;
                }



                
 function suFunction(function_name) {
                query = 'skp:'+function_name+'@' + values;
                window.location.href = query;
                }
                

function callFeedInfo(function_name) {
                query = 'skp:'+function_name+'@'+ formData;
                window.location.href = query;
                }

                
                



function dataSet(form, num, msgName) {
    
   formData[num] = form.value;
    setMsg(msgName,formData[num]);

}



    
    
setMsg("getFeedNumber",feedNumber);
setMsg("jsloopNo", jsLoop);
setMsg ("values1" , "No Values Currently Loaded")
setMsg("streamNo",formData[1]);
setMsg("streamValue","Currently Unassigned");   


 
    
    function makeLoop(loopFunction, loopTime, loop_ID, buttonName){

         if ( document.getElementById(loop_ID).name == "true"){
loopName[loop_ID] = buttonName;
              document.getElementById(loop_ID).name = "false";
              document.getElementById(loop_ID).value = buttonName + " (Currently Looping)";
				loops[loop_ID] = setInterval(loopFunction, loopTime);
     
         }
      
      else

      
      {
document.getElementById(loop_ID).name = "true";
        clearInterval ( loops[loop_ID] );
		document.getElementById(loop_ID).value = loopName[loop_ID];
        
      }
    
    }
    
    
    function setID(name, num){
    selection_id[num] = name;
    setMsg("ids", selection_id);
    }


    function setClass(name, num){
    selection_class[num] = name;
        setMsg("classes", selection_class);
    
    }



function setArrayLength(num){
selection_id = Array(num);
selection_class = Array(num);
}


function setFeedData(form1, form2, form3){

    formData[0] = form1.value;
    formData[1] = form2.value;
    formData[2] = form3.value;




loopDataCall();
               
setMsg("getFeedNumber",formData[0]);
            setMsg("streamNo",formData[1]);
                setMsg("jsLoopNo",formData[2]);
                

    

}


function loopDataCall(){
var loopButton = "feedButton";

if (dataLooping)
      {
      dataLooping = false;
        // Start the timer
        document.getElementById(loopButton).value = "Getting Data, Click To Stop (Looping Every "+formData[2]+"s)";
        dataLoop = setInterval("urlTest()",  formData[2]);
		

      }
      
      else
      
      
      {
      dataLooping = true;
        clearInterval ( dataLoop );
        document.getElementById(loopButton).value = "Get Pachube Data";
        
      }
    }

var selectmenu= document.getElementById("mySelect")

selectmenu.onchange=function(){ //run some code when "onchange" event fires


var chosenoption = selectmenu.options[selectmenu.selectedIndex]; //this refers to "selectmenu"

 if (chosenoption.value == "scaler"){

makeButton("3","pickObjects()","Pick Objects");
makeButton("1","suFunction('scaleObjects')","Scale Once");
makeLoopButton("2","suFunction('scaleObjects')","Scale Loop","3000");
document.getElementById ("buttons").innerHTML = buttonArray[1]+buttonArray[2]+buttonArray[3];
modeTitle("Scaler");

} else if (chosenoption.value == "grapher"){

makeLoopButton("2","suFunction('grapher')","Grapher",3000);
document.getElementById ("buttons").innerHTML = buttonArray[1];
modeTitle("Grapher");
} else {
alert("NOT COOL");
modeTitle("");

}
}






function makeButton(idNum, function_name, button_name){
buttonArray[idNum] = "<input type=\"button\" name=\"true\" id=\""+  idNum  +  "\" value=\"" + button_name + "\" onclick=\"" + function_name + "\"/><br>";
}


function makeLoopButton(idNum, function_name, button_name,loop_value){
buttonArray[idNum] = "<input type=\"button\" name=\"true\" id=\"" + idNum + "\" value=\""+button_name + "\" onclick=\"makeLoop(&quot;"+function_name+"&quot;,"+ loop_value  +",this.id,this.value)\"/><br>";
}

function modeTitle(title){
document.getElementById ("mode_name").innerHTML = "<b>"+title+"</b><br>";
}

