﻿var viewer = null;
var dzipath=null;
var currentCam=null;
var currentSocket="0";
var czoom=null;
var cpoint=null;
var cbounds=null;
var cameraChange=false;
var updateTimer=null;
var firstrun=true;
var viewcenter=null;
//getwebcamXML('webcam1');


function init() {
        Seadragon.Config.maxZoomPixelRatio=1;
        Seadragon.Config.minZoomDimension=200;
        Seadragon.Config.animationTime =1;
        Seadragon.Config.zoomPerClick=1.2;
        viewer = new Seadragon.Viewer("SDViewer");
        var navControl = viewer.getNavControl();
    	//remove full screen button
        //navControl.removeChild(navControl.lastChild);
         dialogWindow = document.createElement("div");
         dialogWindow.id = "dialog_window";
         dialogWindow.className = "dialog_window";
         var txt = document.createTextNode("LakeStatus.com");
         dialogWindow.appendChild(txt);
         
         FSControls = document.createElement("div");
         FSControls.id = "FSControls";
         FSControls.className = "fs_control";       
         viewer.openDzi(imgSrc);
 	     viewer.addEventListener("open", onOpen);	
		 viewer.addEventListener("resize", setFullScreen);
    }
  
 function setFullScreen(){
    	if (viewer.isFullPage()){
			viewer.addControl(dialogWindow, Seadragon.ControlAnchor.TOP_LEFT);
			viewer.addControl(FSControls, Seadragon.ControlAnchor.TOP_RIGHT);
	  	    document.getElementById("FSControls").innerHTML=document.getElementById("dialog_window_template").innerHTML;

		}
		else{
			viewer.removeControl(dialogWindow);
			viewer.removeControl(FSControls);
		}
		viewset=setTimeout('viewer.viewport.goHome(true)',5);
//		viewer.viewport.goHome(true);	
 //      viewer.viewport.zoomTo(1); 
   	}
   	
    function closeFullPage(){
		viewer.setFullPage(false);               
    }
    
   
    function RefreshViewer(){
    	cameraChange=false;
    	currentSocket=0;
    	UpdateWebcam();
              
    }
    function SetWebcam1(){
   	 	cameraChange=true;
   	 	 currentSocket=0;

   	 	currentCam="webcam1";
   	 	UpdateWebcam();
   	 	}
   	 	
    function SetWebcam2(){
   	 	cameraChange=true;
   	 	currentSocket=0;

   	 	currentCam="webcam2";
   	 	UpdateWebcam();
   	 	}

   function onOpen(viewer) {
   		
         if (!cameraChange)
         { 	    
     	    viewer.viewport.fitBounds(cbounds);
     	   // cameraChange=false;
     	  }
		  else
		  {
		  	    //viewer.viewport.zoomTo(1); 
		   }

       cameraChange=false;        
     }

	function OpenWebcam(webcam)
	{
		try 
		  {
		  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
 
		  
		  }
		catch(e)
		  {
		try 
		    {
		    xmlDoc=document.implementation.createDocument("","",null);
		    }
		 catch(e)
		    {
		    alert(e.message);
		    return;
		    }
	 	 }
		  xmlDoc.async=false;
		  if (webcam=='webcam2'){
		 	 xmlDoc.load("webcams/webcam2.xml");
		 	 }
		  else
		  {
			 xmlDoc.load("webcams/webcam1.xml");
		  }
		  
		  newDzi=xmlDoc.getElementsByTagName("current_image")[0].childNodes[0].nodeValue;
		  newDzi="http://www.lakestatus.com/webcams/"+newDzi+".dzi";
		  //alert (newDzi);
		  newSocket=xmlDoc.getElementsByTagName("socketnumber")[0].childNodes[0].nodeValue;
		  document.getElementById("imageTime").innerHTML="   Image from: "+xmlDoc.getElementsByTagName("shottime")[0].childNodes[0].nodeValue;
		  if (webcam == currentCam){
                cameraChange=false;
               	cbounds=viewer.viewport.getBounds();
                 }
               else
                 {
               	  cameraChange=true;
               	  }  
  		    viewer.openDzi(newDzi);      
            currentCam=webcam;
            currentSocket=newSocket;  
      }

   function ajaxGetHtml(url, target) {
	  //document.getElementById(target).innerHTML = ' Fetching data...';
	  if (window.XMLHttpRequest) {
	    req = new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
	    req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  if (req != undefined) {
	  	myRand=parseInt(Math.random()*99999999); 
	  	url=url+"?rand="+myRand
	    req.onreadystatechange = function() {ajaxGetHtmlDone(url, target);};
	    req.open("GET", url, true);
	    req.send("");
	  }
	}  
	
	function ajaxGetHtmlDone(url, target) {
	  if (req.readyState == 4) { // only if req is "loaded"
	    if (req.status == 200) { // only if "OK"
	      document.getElementById(target).innerHTML = req.responseText;
	    } else {
	      //document.getElementById(target).innerHTML=" AHAH Error:\n"+ req.status + "\n" +req.statusText;
	    }
	  }
	}
	
    function UpdateForecast(){
       ajaxGetHtml('outlook.php', 'Outlook');
	   ForecastUpdateTimer=setTimeout('UpdateForecast()',600000);
     }

    function UpdateNews(){
       ajaxGetHtml('news.html', 'News');
	   ForecastUpdateTimer=setTimeout('UpdateForecast()',1100444);
     }


    var xmlhttp;
	var xmlurl;
		
	function UpdateWebcam()
		{
    	xmlhttp=null;
		if (currentCam=="webcam2")
			{
			xmlurl="webcams/webcam2.xml";
			}
		else
		 {
			xmlurl="webcams/webcam1.xml";
		  }
		if (window.XMLHttpRequest)
		  {// code for IE7, Firefox, Opera, etc.
		  xmlhttp=new XMLHttpRequest();
		  }
		else if (window.ActiveXObject)
		  {// code for IE6, IE5
		  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		  }
		if (xmlhttp!=null)
		  {
		  xmlhttp.onreadystatechange=function() {webcamstate_Change();}
		  xmlhttp.open("GET",xmlurl,true);
		  xmlhttp.send(null);
		  }
		else
		  {
		  alert("Your browser does not support XMLHTTP.");
		  }
		}

	function webcamstate_Change()
	{
	var newDzi;
	if (xmlhttp.readyState==4)
	  {// 4 = "loaded"
	  if (xmlhttp.status==200)
	    {// 200 = "OK"
	    	  xmlDoc=xmlhttp.responseXML;
			  newDzi="webcams/"+xmlDoc.getElementsByTagName("current_image")[0].childNodes[0].nodeValue+".dzi";
			  newSocket=xmlDoc.getElementsByTagName("socketnumber")[0].childNodes[0].nodeValue;
 			  if (document.getElementById("AUpdate").checked)
			  {
	              if (newSocket > currentSocket){
	                 cbounds=viewer.viewport.getBounds(); 
	                 viewer.openDzi(newDzi);
	                 currentSocket=newSocket;
	                 document.getElementById("imageTime").innerHTML="   Image from: "+xmlDoc.getElementsByTagName("shottime")[0].childNodes[0].nodeValue;

	  		       }              
			  }
              WebCamUpdateTimer=setTimeout('UpdateWebcam()',60000);

	    }
	  else
	    {
	    //alert("Problem retrieving Image Data - Verify you still have an internet connection:" + xmlhttp.statusText);
	    }
	  }
	 

	}
/**
 * Lakestatus Framework 1.3
 * Copyright (c) Lakestatus.com - Greg Dohrman. All rights reserved.
 * Unauthorized use is prohibited
 */
var conditionshttp;
var conditionsxmlurl;	
	function parseXML()
		{

		conditionshttp=null;
		conditionsxmlurl="lakestatus1.xml"
		if (window.XMLHttpRequest)
		  {// code for IE7, Firefox, Opera, etc.
		  conditionshttp=new XMLHttpRequest();
		  }
		else if (window.ActiveXObject)
		  {// code for IE6, IE5
		  conditionshttp=new ActiveXObject("Microsoft.XMLHTTP");
		  }
		if (conditionshttp!=null)
		  {
		  conditionshttp.onreadystatechange=state_Change;
		  conditionshttp.open("GET",conditionsxmlurl,true);
		  conditionshttp.send(null);
		  }
		else
		  {
		  alert("Your browser does not support XMLHTTP.");
		  }
		}

	function state_Change()
	{
	if (conditionshttp.readyState==4)
	  {// 4 = "loaded"
	  if (conditionshttp.status==200)
	    {// 200 = "OK"
	    	  xmlDoc=conditionshttp.responseXML;
			  document.getElementById("AJtemp").innerHTML=xmlDoc.getElementsByTagName("temp")[0].childNodes[0].nodeValue + "°F";
			  document.getElementById("cTemp").innerHTML=xmlDoc.getElementsByTagName("temp")[0].childNodes[0].nodeValue + "°F.";
			  document.getElementById("AJwindspeed").innerHTML=xmlDoc.getElementsByTagName("windspeed")[0].childNodes[0].nodeValue;
			  document.getElementById("AJwinddir").innerHTML="<b>Wind: "+xmlDoc.getElementsByTagName("winddir")[0].childNodes[0].nodeValue+"</b>";
			  document.getElementById("AJwindgust").innerHTML=xmlDoc.getElementsByTagName("windgust")[0].childNodes[0].nodeValue + " Mph";
			  document.getElementById("AJlakelev").innerHTML=xmlDoc.getElementsByTagName("lakelev")[0].childNodes[0].nodeValue + " ft.";
			  document.getElementById("AJlaketemp").innerHTML=xmlDoc.getElementsByTagName("laketemp")[0].childNodes[0].nodeValue + "°F";
			  document.getElementById("AJupdate").innerHTML="Updated:"+xmlDoc.getElementsByTagName("updatetime")[0].childNodes[0].nodeValue;
			  document.getElementById("cUpdated").innerHTML=xmlDoc.getElementsByTagName("updatetime")[0].childNodes[0].nodeValue;
		      document.getElementById("AJhumidity").innerHTML=xmlDoc.getElementsByTagName("humidity")[0].childNodes[0].nodeValue + "%";
			  document.getElementById("AJheatindex").innerHTML=xmlDoc.getElementsByTagName("heatindex")[0].childNodes[0].nodeValue + "°F";
			  //windstring=xmlDoc.getElementsByTagName("winddir")[0].childNodes[0].nodeValue+" at "+	xmlDoc.getElementsByTagName("windspeed")[0].childNodes[0].nodeValue+" mph and gusting to "+	xmlDoc.getElementsByTagName("windgust")[0].childNodes[0].nodeValue+" mph";
			  if(xmlDoc.getElementsByTagName("windspeed")[0].childNodes[0].nodeValue=="0.0")
			   {
			   	windstring="calm.";
			  	}
			  else
			  {
			     windstring="from the "+xmlDoc.getElementsByTagName("winddir")[0].childNodes[0].nodeValue+" at "+	xmlDoc.getElementsByTagName("windspeed")[0].childNodes[0].nodeValue+" mph gusting to "+	xmlDoc.getElementsByTagName("windgust")[0].childNodes[0].nodeValue+" mph.";
               }
			  document.getElementById("cWind").innerHTML=windstring;
			  //alert(document.getElementById("AutoUpdate").checked);
			  
			updateTimer=setTimeout('parseXML()',120000);
	    }
	  else
	    {
	    //alert("Problem retrieving XML data:" + xmlhttp.statusText);
	    }
	  }
	 

	}
