// JavaScript Document

function getTimestamp() {
	var myDate = new Date(activeRadarTimes[cur_frame]*1000);
    var ptz = myDate.getTimezoneOffset()/60;
    var pdate = myDate.toLocaleString() + " UTC-" + ptz
	document.getElementById('timestamp').innerHTML = pdate;
}

function setTitle(r,n,p) {
	//document.getElementById('radar_title').innerHTML = n + " ("+r+") - " + p;
	document.getElementById('radar_title').innerHTML = p;
	document.getElementById('cur_location').innerHTML = n;
	
	//ONLY DISPLAYS PERMALINK LINK ON MOSAICS
	if(n == "National Mosaic"){
		document.getElementById('permalink').innerHTML = "<b>Location Permalink</b>";
	}
	else{		
		document.getElementById('permalink').innerHTML = "";
	}
	
}



// Simulates PHP's date function
//Date.prototype.format=function(format){var returnStr='';var replace=Date.replaceChars;for(var i=0;i<format.length;i++){var curChar=format.charAt(i);if(replace[curChar]){returnStr+=replace[curChar].call(this);}else{returnStr+=curChar;}}return returnStr;};Date.replaceChars={shortMonths:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],longMonths:['January','February','March','April','May','June','July','August','September','October','November','December'],shortDays:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],longDays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],d:function(){return(this.getDate()<10?'0':'')+this.getDate();},D:function(){return Date.replaceChars.shortDays[this.getDay()];},j:function(){return this.getDate();},l:function(){return Date.replaceChars.longDays[this.getDay()];},N:function(){return this.getDay()+1;},S:function(){return(this.getDate()%10==1&&this.getDate()!=11?'st':(this.getDate()%10==2&&this.getDate()!=12?'nd':(this.getDate()%10==3&&this.getDate()!=13?'rd':'th')));},w:function(){return this.getDay();},z:function(){return"Not Yet Supported";},W:function(){return"Not Yet Supported";},F:function(){return Date.replaceChars.longMonths[this.getMonth()];},m:function(){return(this.getMonth()<11?'0':'')+(this.getMonth()+1);},M:function(){return Date.replaceChars.shortMonths[this.getMonth()];},n:function(){return this.getMonth()+1;},t:function(){return"Not Yet Supported";},L:function(){return"Not Yet Supported";},o:function(){return"Not Supported";},Y:function(){return this.getFullYear();},y:function(){return(''+this.getFullYear()).substr(2);},a:function(){return this.getHours()<12?'am':'pm';},A:function(){return this.getHours()<12?'AM':'PM';},B:function(){return"Not Yet Supported";},g:function(){return this.getHours()%12||12;},G:function(){return this.getHours();},h:function(){return((this.getHours()%12||12)<10?'0':'')+(this.getHours()%12||12);},H:function(){return(this.getHours()<10?'0':'')+this.getHours();},i:function(){return(this.getMinutes()<10?'0':'')+this.getMinutes();},s:function(){return(this.getSeconds()<10?'0':'')+this.getSeconds();},e:function(){return"Not Yet Supported";},I:function(){return"Not Supported";},O:function(){return(this.getTimezoneOffset()<0?'-':'+')+(this.getTimezoneOffset()/60<10?'0':'')+(this.getTimezoneOffset()/60)+'00';},T:function(){return"Not Yet Supported";},Z:function(){return this.getTimezoneOffset()*60;},c:function(){return"Not Yet Supported";},r:function(){return this.toString();},U:function(){return this.getTime()/1000;}};


	var wtimeForTileCache = new Array();

function makewtimeForTileCache(){

	GDownloadUrl("xmlpull.php?type=radartimes&rid="+rid+"&pid="+pid+"&random="+rand(10000), function(data, responseCode) {
	    //document.getElementById('debug').innerHTML = "";
	    var xml = GXml.parse(data);
	    var rad_data = xml.documentElement.getElementsByTagName("radarfile");
	    var j=numFrames;
	    for (var i=0; i<rad_data.length; i++) {
	    	
	    	activeRadarTimes[j] = rad_data[i].getAttribute("time");
	    	
	    	dateObj = new Date(activeRadarTimes[j] * 1000);
	    	year_UTC = dateObj.getUTCFullYear();
	    	if(year_UTC < 10){year_UTC = "0"+year_UTC;}
	    	month_UTC = dateObj.getUTCMonth() + 1;
	    	if(month_UTC < 10){month_UTC = "0"+month_UTC;}
	    	day_UTC = dateObj.getUTCDate();
	    	if(day_UTC < 10){day_UTC = "0"+day_UTC;}
	    	hour_UTC = dateObj.getUTCHours();
	    	if(hour_UTC < 10){hour_UTC = "0"+hour_UTC;}
	    	minute_UTC = dateObj.getMinutes();
	    	if(minute_UTC < 10){minute_UTC = "0"+minute_UTC;}
	    	
	    	wtimeForTileCache[j] = year_UTC+"-"+month_UTC+"-"+day_UTC+"T"+hour_UTC+":"+minute_UTC;
	    	//document.getElementById('debug').innerHTML += "<b>layer</b> = "+r+'_'+p+" <b>time</b> = "+wtimeForTileCache[j]+" <b>activeRadarTimes</b> = "+ activeRadarTimes[j] + " j = "+j+" This is on line 71.<br>";
	    	
	    	j--;
	    }	 
	  });
}  




function createRadar(r,p) {
	
	//removeRadars();
	setRadarLegend();
	GDownloadUrl("xmlpull.php?rid="+rid, function(data, responseCode) {
	    var xml = GXml.parse(data);
	    var rad_info = xml.documentElement.getElementsByTagName("radar");
	    var rid_name = rad_info[0].getAttribute("name");
	    var rad_data = xml.documentElement.getElementsByTagName("product");
	    for (var i=0; i<rad_data.length; i++) {
	    	if (rad_data[i].getAttribute("id") == pid) {
	    		var pid_print = rad_data[i].getAttribute("name");
	    	}
	    }
	    setTitle(rid,rid_name,pid_print);
	});
	GDownloadUrl("xmlpull.php?type=radartimes&rid="+rid+"&pid="+pid+"&random="+rand(10000), function(data, responseCode) {
	    //document.getElementById('debug').innerHTML = "";
	    var xml = GXml.parse(data);
	    var rad_data = xml.documentElement.getElementsByTagName("radarfile");
	    var j=numFrames;
	    for (var i=0; i<rad_data.length; i++) {
	    	
	    	activeRadarTimes[j] = rad_data[i].getAttribute("time");
	    	
	    	dateObj = new Date(activeRadarTimes[j] * 1000);
	    	year_UTC = dateObj.getUTCFullYear();
	    	if(year_UTC < 10){year_UTC = "0"+year_UTC;}
	    	month_UTC = dateObj.getUTCMonth() + 1;
	    	if(month_UTC < 10){month_UTC = "0"+month_UTC;}
	    	day_UTC = dateObj.getUTCDate();
	    	if(day_UTC < 10){day_UTC = "0"+day_UTC;}
	    	hour_UTC = dateObj.getUTCHours();
	    	if(hour_UTC < 10){hour_UTC = "0"+hour_UTC;}
	    	minute_UTC = dateObj.getMinutes();
	    	if(minute_UTC < 10){minute_UTC = "0"+minute_UTC;}
	    	
	    	wtimeForTileCache[j] = year_UTC+"-"+month_UTC+"-"+day_UTC+"T"+hour_UTC+":"+minute_UTC;
	    	//document.getElementById('debug').innerHTML += "<b>layer</b> = "+r+'_'+p+" <b>time</b> = "+wtimeForTileCache[j]+" <b>activeRadarTimes</b> = "+ activeRadarTimes[j] + " j = "+j+" This is on line 71.<br>";
	    	
	    	j--;
	    }	    
	    //document.getElementById('debug').innerHTML += "<br><br>Here: "+wtimeForTileCache[5]+" This is on line 76.<br>";	    
	    getTimestamp();
	    
	    
	    
	    ///THE FOLLOWING WAS ORIGINALLY OUTSIDE OF GDownloadUrl FUNCTION	
	    
	    //alert(p);
	    //if(r == "JAX" || r == "NAT" || p == "N0R" || p == "TR0" || p == "TR2" || p == "TV0" || p == "TV1" || p == "TV2"){   
			radar = new OpenLayers.Layer.WMS("Current Radar", ["http://radarcache4.srh.noaa.gov/tilecache/tilecache.py"], 
		  	{layers : 'radar_slice', radar : r, level : p , time: wtimeForTileCache[5], format: 'image/png', tiled: 'true', transparent: 'true'},
		  	{singleTile: false, opacity: radar_opacity, visibility: true, buffer: 0,isBaseLayer: false}
			);		
			radar2 = new OpenLayers.Layer.WMS("Radar Frame 2", ["http://radarcache5.srh.noaa.gov/tilecache/tilecache.py"], 
		  	{layers : 'radar_slice', radar : r, level : p , time: wtimeForTileCache[4], format: 'image/png', tiled: 'true', transparent: 'true'},
		  	{singleTile: false, opacity: '0', visibility: true, buffer: 0,isBaseLayer: false}
			);			
			radar3 = new OpenLayers.Layer.WMS("Radar Frame 3", ["http://radarcache4.srh.noaa.gov/tilecache/tilecache.py"], 
		  	{layers : 'radar_slice', radar : r, level : p , time: wtimeForTileCache[3], format: 'image/png', tiled: 'true', transparent: 'true'},
		  	{singleTile: false, opacity: '0', visibility: true, buffer: 0,isBaseLayer: false}
			);			
			radar4 = new OpenLayers.Layer.WMS("Radar Frame 4", ["http://radarcache5.srh.noaa.gov/tilecache/tilecache.py"], 
		  	{layers : 'radar_slice', radar : r, level : p , time: wtimeForTileCache[2], format: 'image/png', tiled: 'true', transparent: 'true'},
		  	{singleTile: false, opacity: '0', visibility: true, buffer: 0,isBaseLayer: false}
			);			
			radar5 = new OpenLayers.Layer.WMS("Radar Frame 5", ["http://radarcache1.srh.noaa.gov/tilecache/tilecache.py"], 
		  	{layers : 'radar_slice', radar : r, level : p , time: wtimeForTileCache[1], format: 'image/png', tiled: 'true', transparent: 'true'},
		  	{singleTile: false, opacity: '0', visibility: true, buffer: 0,isBaseLayer: false}
			);		
		//}
		
		//if(r == "NAT"){ 
		/*else{   
		radar = new OpenLayers.Layer.WMS("Current Radar", ["http://radarcache4.srh.noaa.gov/tilecache/tilecache.py"], 
		  {layers : r+'_'+p+'_0',format: 'image/png',tiled: 'true',transparent: 'true'},
		  {opacity: radar_opacity,visibility: true,buffer: 0}
	   );
	   radar2 = new OpenLayers.Layer.WMS("Radar Frame 2", ["http://radarcache5.srh.noaa.gov/tilecache/tilecache.py"], 
		  {layers : r+'_'+p+'_1',format: 'image/png',tiled: 'true',transparent: 'true'},
		  {opacity: '0',visibility: true,buffer: 0}
	   );	
	   radar3 = new OpenLayers.Layer.WMS("Radar Frame 3", ["http://radarcache4.srh.noaa.gov/tilecache/tilecache.py"], 
		  {layers : r+'_'+p+'_2',format: 'image/png',tiled: 'true',transparent: 'true'},
		  {opacity: '0',visibility: true,buffer: 0}
	   );
	   radar4 = new OpenLayers.Layer.WMS("Radar Frame 4", ["http://radarcache5.srh.noaa.gov/tilecache/tilecache.py"], 
		  {layers : r+'_'+p+'_3',format: 'image/png',tiled: 'true',transparent: 'true'},
		  {opacity: '0',visibility: true,buffer: 0}
	   );   
	   radar5 = new OpenLayers.Layer.WMS("Radar Frame 5", ["http://radarcache1.srh.noaa.gov/tilecache/tilecache.py"], 
		  {layers : r+'_'+p+'_4',format: 'image/png',tiled: 'true',transparent: 'true'},
		  {opacity: '0',visibility: true,buffer: 0}
	   );
		}*/
  
   
   registerEvents(radar,0);
   registerEvents(radar2,1);
   registerEvents(radar3,2);
   registerEvents(radar4,3);
   registerEvents(radar5,4);
   pickRadarDropdown(p);
   
   
   ///THE ABOVE WAS ORIGINALLY OUTSIDE OF GDownloadUrl FUNCTION
	    
	    
	});
	
	
	  //document.getElementById('debug').innerHTML = "Here I am.<br>";
	    	

}

function createWarnings(wt) {
	wid = wt;
	   watchwarn = new OpenLayers.Layer.WMS(
		  "Watches and Warnings", ["http://radarcache2.srh.noaa.gov/tilecache/tilecache.py"], 
		  {
			 //layers : 'nws:current_products',
			 //cql_filter: "unix_expiration_time>" + radTimes[0],
			 layers : wid,
			 format: 'image/png',
			 tiled: 'true',
			 transparent: 'true'
		  },
		  {
			opacity: warn_opacity,
			//isBaseLayer : false,
			visibility: true,
			buffer: 0,
			wrapDateLine: true
		  }
	   );
	registerEvents(watchwarn,5);
}

function setNewWarnings(wt) {
	removeWarnings();
	createWarnings(wt);
}

function setNewRadarType(np) {
	removeRadars();
	pid = np;
	createRadar(rid,pid);
	//setTitle();
}

function setNewRadarLocation(nr) {
	removeRadars();
	if (togglePoints || (nr !== "NAT" || nr !== "NAK" || nr !== "NPR")) { removeRadarPoints(); document.getElementById('dottastic').value = "Return to National Mosaic"; $('radar_types').hide(); }
	rid = nr;
	var proj = new OpenLayers.Projection("EPSG:4326");
	GDownloadUrl("xmlpull.php?rid="+rid, function(data, responseCode) {
	    var xml = GXml.parse(data);
	    var rad_data = xml.documentElement.getElementsByTagName("radar");
		radar_name = rad_data[0].getAttribute("name");
		var radar_type = rad_data[0].getAttribute("type");
		var ll_corn = new OpenLayers.LonLat(rad_data[0].getAttribute("ll_lon"),rad_data[0].getAttribute("ll_lat"));
		var ur_corn = new OpenLayers.LonLat(rad_data[0].getAttribute("ur_lon"),rad_data[0].getAttribute("ur_lat"))
		ll_corn.transform(proj, map.getProjectionObject());
		ur_corn.transform(proj, map.getProjectionObject());
		var mbounds = new OpenLayers.Bounds;
		mbounds.extend(ll_corn);
		mbounds.extend(ur_corn);
		map.zoomToExtent(mbounds);
		map.setOptions({restrictedExtent: mbounds});
		if (radar_type !== "mosaic") { map.zoomTo(map.getZoom() + 1); }
		//Else added by Corey 3/12/2009
		else { map.zoomTo(map.getZoom()); }
		//var boxes = new OpenLayers.Layer.Boxes("boxes");
	    //var box = new OpenLayers.Marker.Box(mbounds);
	    //boxes.addMarker(box);
	    //map.addLayer(boxes);
	    var rad_prod = xml.documentElement.getElementsByTagName("product");
	    
		var cur_prod = new Array();
		for (var i=0; i < rad_prod.length; i++) {
			cur_prod[i] = rad_prod[i].getAttribute("id");
		}
		if (!cur_prod.in_array(pid)) {
			pid = cur_prod[0];
		}
	    new Ajax.Updater('radar_products', 'products.php?rid='+rid, { method: 'get',
			onComplete: function(){
				pickRadarDropdown(pid);
			}
		});
	    createRadar(rid,pid);
	    if (togglePoints && (nr !== "NAT" || nr !== "NAK" || nr !== "NPR")) { map.raiseLayer(markers, 5); }
	});
	
}


function init() {
	
	radarLog = OpenLayers.Util.getElement("radarLog");
	
	var bounds = new OpenLayers.Bounds(-20037508, -20037508,20037508, 20037508.34);
	
	map = new OpenLayers.Map(
	  'map',
	  {
		 //restrictedExtent: new OpenLayers.Bounds(-179, 10, -40, 80),
		 maxExtent: bounds,
		 maxResolution: 156543.0339,
		 //minResolution: "auto",
		 controls : [],
		 projection: new OpenLayers.Projection("EPSG:900913"),
		 displayProjection: new OpenLayers.Projection("EPSG:4326"),
		 units: 'm',
		 numZoomLevels: 9
		 //
		 //projection: new OpenLayers.Projection("EPSG:4326"),
	  }
   );
   
   c = new OpenLayers.Control.PanZoomBar();
   map.addControl(c);	
   

   map.addControl(new OpenLayers.Control.Permalink('permalink'));
   

   physical = new OpenLayers.Layer.Google(
			"Google Physical",
		{'sphericalMercator': true, 'type': G_PHYSICAL_MAP, 'minZoomLevel': 4}
   );   
   hybrid = new OpenLayers.Layer.Google(
			"Google Hybrid",
		{'sphericalMercator': true, 'type': G_HYBRID_MAP, 'minZoomLevel': 4}
   );   
   normal = new OpenLayers.Layer.Google(
			"Google Normal",
		{'sphericalMercator': true, 'type': G_NORMAL_MAP, 'minZoomLevel': 4}
   );
   satellite = new OpenLayers.Layer.Google(
			"Google Satellite",
		{'sphericalMercator': true, 'type': G_SATELLITE_MAP, 'minZoomLevel': 4}
   );    
	map.addLayers([normal,physical,hybrid,satellite]);

    //registerEvents(physical,6);
    registerEvents(normal,6);
    createWarnings(wid);
	createRadar(rid,pid);
	
	//map.addControl(new OpenLayers.Control.LayerSwitcher());
					var mousepositionoptions = {
					'numDigits': 2
				};
				


	var mouseposition = new OpenLayers.Control.MousePosition(mousepositionoptions);
	map.addControl(mouseposition);
	map.addControl(new OpenLayers.Control.Navigation());
	var proj = new OpenLayers.Projection("EPSG:4326");
	
	new Control.Slider('radar_handle', 'radar_track', {
	      range: $R(0, 1),
	      sliderValue: 0.7,
	      onChange: function(value) {
				radOpacity(value);
	      }
	});
	
	new Control.Slider('warnings_handle', 'warnings_track', {
	      range: $R(0, 1),
	      sliderValue: 0.5,
	      onChange: function(value) {
				warnOpacity(value);
	      }
	});
	
	new Control.Slider('speed_handle', 'speed_track', {
	      range: $R(750,50),
	      sliderValue: 300,
	      values: [750,700,650,600,550,500,450,400,350,300,250,200,150,100,50],
	      onChange: function(value) {
				loopSpeed(value);
	      }
	});
	
	GDownloadUrl("xmlpull.php?rid="+rid, function(data, responseCode) {
	    var xml = GXml.parse(data);
	    var rad_data = xml.documentElement.getElementsByTagName("radar");
		radar_name = rad_data[0].getAttribute("name");
		var ll_corn = new OpenLayers.LonLat(rad_data[0].getAttribute("ll_lon"),rad_data[0].getAttribute("ll_lat"));
		var ur_corn = new OpenLayers.LonLat(rad_data[0].getAttribute("ur_lon"),rad_data[0].getAttribute("ur_lat"))
		ll_corn.transform(proj, map.getProjectionObject());
		ur_corn.transform(proj, map.getProjectionObject());
		var mbounds = new OpenLayers.Bounds;
		mbounds.extend(ll_corn);
		mbounds.extend(ur_corn);
		
		layersURLParam = getURLParam('layers');
		if(layersURLParam == ""){		
			map.zoomToExtent(mbounds);
		}
		map.setOptions({restrictedExtent: mbounds});
	});
	//var point = new OpenLayers.LonLat(-98, 39);
	//map.setCenter(point.transform(proj, map.getProjectionObject()),4);
	OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
	OpenLayers.Util.onImageLoadErrorColor = "transparent";
	
	//Hide warnings legend by default. (default on as of 7/15/2009 - Commented out
	//toggle_warnings_div();
	setDisplayExtraLayers('warnings_outline',document.warningoutlineform.warningoutlineformCheckbox);

}





function switchBaseLayer(name){
	map.setBaseLayer(name);
}


function loopRadar(sf,lp) {
	radar.setOpacity(0); radar2.setOpacity(0); radar3.setOpacity(0); radar4.setOpacity(0); radar5.setOpacity(0);
	setFrameIcon(sf);
	if (sf == 1) { 
		if (set_radar) { radar5.setOpacity(radar_opacity);  }
	}
	if (sf == 2) { 
		if (set_radar) { radar4.setOpacity(radar_opacity); }
	}
	if (sf == 3) { 
		if (set_radar) { radar3.setOpacity(radar_opacity); }
	}
	if (sf == 4) { 
		if (set_radar) { radar2.setOpacity(radar_opacity); }
	}
	if (sf == 5) { 
		if (set_radar) { radar.setOpacity(radar_opacity); }
	}
	sf = sf + 1;
	if (sf > 5) { sf = 1; var td = f_break; } else { var td = f_speed; }
	if (lp) {
		var f = function() { loopRadar(sf,loopable) };
		var t = setTimeout(f,td);
	}
}

function removeRadars() {
	map.removeLayer(radar);
	map.removeLayer(radar2);
	map.removeLayer(radar3);
	map.removeLayer(radar4);
	map.removeLayer(radar5);
}

function removeWarnings() {
	map.removeLayer(watchwarn);
}

function setDisplayExtraLayers(layername,chk){
	//alert(layername+" "+chk);
	//if(onoroff == "on"){
	if (chk.checked == 1){
				//extra_url = ["http://radarcache.srh.noaa.gov/tilecache/tilecache.py", "http://radarcache0.srh.noaa.gov/tilecache/tilecache.py", "http://radarcache1.srh.noaa.gov/tilecache/tilecache.py", "http://radarcache2.srh.noaa.gov/tilecache/tilecache.py", "http://radarcache3.srh.noaa.gov/tilecache/tilecache.py"];
				extra_url = ["http://radarcache3.srh.noaa.gov/tilecache/tilecache.py"];

				extra_layer[layername] =  new OpenLayers.Layer.WMS( layername, extra_url,
				{
						layers: layername,
						transparent: true,
						format: 'image/png'
					}, {
						singleTile: false,
						isBaseLayer: false, 
						opacity: warnOpacity
					}
				  );
			map.addLayer(extra_layer[layername]);
			registerEvents(extra_layer[layername],7);

	}
	else{
		map.removeLayer(extra_layer[layername]);
	}

	
}

function loopSpeed(td) {
	f_speed = td;
	f_break = td * 2;
}

function startRadar() {
	if (!loopable) {
		loopable = true;
		loopRadar(cur_frame,loopable);
	}
}

function stopRadar() {
	loopable = false;
}

function actionsAutoRefresh(){
	if(refreshable == 1){
		document.getElementById('autorefrbutton').value = "Start Auto Refresh";
		document.getElementById('refreshSummary').innerHTML = "&nbsp;";
		
		stopAutoRefresh();
	}
	else{
		document.getElementById('autorefrbutton').value = "Stop Auto Refresh";
		document.getElementById('refreshSummary').innerHTML = "Refreshing Every 4 Minutes";
		startAutoRefresh();
	}
}

function startAutoRefresh() {
	refreshable = 1;
	AutoRefresh(refreshable);
}

function stopAutoRefresh() {
	refreshable = 0;
}

function AutoRefresh(refreshable){	
	if(refreshable == 1){
		var tAutoRefresh = setTimeout("AutoRefresh(refreshable)",240000);
		makeMeNew();
	}
	else{
		//alert('refreshable = '+ refreshable);
	}
}

function rand ( n )
{
  return ( Math.floor ( Math.random ( ) * n + 1 ) );
}

function refreshTimeStamps(){	
	    //alert('Hello= '+activeRadarTimes[1]);
			GDownloadUrl("xmlpull.php?type=radartimes&rid="+rid+"&pid="+pid+"&random="+rand(10000), function(data, responseCode) {
	    var xml = GXml.parse(data);
	    var rad_data = xml.documentElement.getElementsByTagName("radarfile");
	    var j=numFrames;
	    for (var i=0; i<rad_data.length; i++) {
	    	activeRadarTimes[j] = rad_data[i].getAttribute("time");
	    	//document.getElementById('debug').innerHTML += "<br><br>Original Method: "+activeRadarTimes[j]
	    	j--;
	    }
	    getTimestamp();
	});
	
}

function makeMeNew() {
	makewtimeForTileCache();
	radar.mergeNewParams({time: wtimeForTileCache[5]});
	radar2.mergeNewParams({time: wtimeForTileCache[4]});
	radar3.mergeNewParams({time: wtimeForTileCache[3]});
	radar4.mergeNewParams({time: wtimeForTileCache[2]});
	radar5.mergeNewParams({time: wtimeForTileCache[1]});
	radar.redraw(true);
	radar2.redraw(true);
	radar3.redraw(true);
	radar4.redraw(true);
	radar5.redraw(true);		
	
	watchwarn.redraw(true);
	extra_layer['warnings_outline'].redraw(true);
	refreshTimeStamps();	

}

function jumpFrame(ty) {
	var cf = cur_frame;
	if (ty == 'back') {
		cf = cf - 1;
		if (cf < 1) { cf = 5; }
	} else if (ty == 'last') {
		cf = 5;
	} else if (ty == 'first') {
		cf = 1;
	} else {
		cf = cf + 1;
		if (cf > 5) { cf = 1; }
	}
	pickFrame(cf);
}

function getURLParam( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function pickFrame(f) {
	loopable = false;
	radar.setOpacity(0);
	radar2.setOpacity(0);
	radar3.setOpacity(0);
	radar4.setOpacity(0);
	radar5.setOpacity(0);
	setFrameIcon(f);
	if (f == 1) { radar5.setOpacity(radar_opacity); }
	if (f == 2) { radar4.setOpacity(radar_opacity); }
	if (f == 3) { radar3.setOpacity(radar_opacity); }
	if (f == 4) { radar2.setOpacity(radar_opacity); }
	if (f == 5) { radar.setOpacity(radar_opacity); }
}

function setFrameIcon(ac) {
	document.getElementById('frame_1').src = 'img/off_square.png';
	document.getElementById('frame_2').src = 'img/off_square.png';
	document.getElementById('frame_3').src = 'img/off_square.png';
	document.getElementById('frame_4').src = 'img/off_square.png';
	document.getElementById('frame_5').src = 'img/off_square.png';
	var sel_frame = 'frame_' + ac;
	cur_frame = ac;
	if (ac > 1) {
		warn_queue = "watchwarn_" + ac;
	} else { 
		warn_queue = "watchwarn";
	}
	getTimestamp();
	document.getElementById(sel_frame).src = 'img/on_square.png';
}

function setWarningsLegend() {
	if (set_warn) {
		$('warnlegend').appear();
	} else {
		$('warnlegend').hide();
	}
}

function toggle_warnings_div() {
	var ele = document.getElementById("warnlegend");
	var text = document.getElementById("warnlegend_displayText");
	if(ele.style.display == "block" || ele.style.display == "") {
    		ele.style.display = "none";
    		text.innerHTML = "Show Warning Legend <img src=\"http://www.pediatrics.medschool.ucsf.edu/images/btn_down_arrow.gif\">";    		
  	}
	else {
		ele.style.display = "block";
    		text.innerHTML = "Hide Warning Legend <img src=\"http://www.pediatrics.medschool.ucsf.edu/images/btn_up_arrow.gif\">";  
	}
} 


function changeWarnings(ab) {
	if (ab.checked == 0){
	//if (ab) {
		if (!set_warn) return false;
		set_warn = false;
		removeWarnings();
		setWarningsLegend();
		
	} else {
		if (set_warn) return false;
		set_warn = true;
		setWarningsLegend();
		createWarnings(wid);
	}
}

function setRadarLegend(a) {
	if (!a) { a = ''; }
	if (a == 'hide') {
		document.getElementById('radarkey').src = "img/null.gif";
	} else {
		document.getElementById('radarkey').src = "http://www.srh.noaa.gov/ridge2/images/Legend/"+pid+".gif";
	}
	
}

function pickRadarDropdown(pd) {
	for (var i=0;i<document.getElementById('radartype').length;i++) {
		if (document.getElementById('radartype')[i].value == pd) {
			document.getElementById('radartype')[i].selected = true;
		}
	}
}

function registerEvents(layer,arpt) {
		layer.logEvent = function(event) {
			//dv.innerHTML = this.name + ": " + event;
			loadPlot(event);
		}
		layer.events.register("loadstart", layer, function() {
			//alert ('About to load');
			//this.logEvent(" <span style='color:red;'>Loading...</span>");
			this.logEvent('loading');
			loadCheck[arpt] = false;
			checkLayers('start');
		});
		layer.events.register("tileloaded", layer, function() {
			if (totTiles[arpt] == 0) { totTiles[arpt] = this.numLoadingTiles; }
			loadTiles[arpt] = this.numLoadingTiles;
			//this.logEvent(radar_tiles);
			this.logEvent();
		});
		layer.events.register("loadend", layer, function() {
			//this.logEvent(" <span style='color:green;'>Loaded.</span>");
			this.logEvent();
			loadCheck[arpt] = true;
			checkLayers('end');
		});
		activeRadar[arpt] = true;
		map.addLayer(layer);
}

function loadPlot(type) {
	var all_radar = loadTiles[0] + loadTiles[1] + loadTiles[2] + loadTiles[3] + loadTiles[4];
	var tot_radar = totTiles[0] + totTiles[1] + totTiles[2] + totTiles[3] + totTiles[4];
	var pct_radar = ((tot_radar - all_radar) / tot_radar) * 100;
	radarLog.innerHTML = "Radar: " + Math.round(pct_radar) + "%";
	//radarLog.style.width = parseInt((Math.round(pct_radar) * .8) + 100) + "px";
}

function checkLayers(bab) {
	if (bab == 'start') {
		if (loadscreen == false) {
			//toggleLoader();
			loadscreen = true;
		}
	} else {
		var i = 0;
		for (j=0;j<loadCheck.length;j++) {
			if (loadCheck[j] == false) { i++; }
		}
		if (i == 0) {
			//toggleLoader();
			loadscreen = false;
		}
	}
}	

function toggleLoader() {
	Effect.toggle('loadsquare', 'blind', { duration: 0.25 });
}

function warnOpacity(newOpacity) {
	watchwarn.setOpacity(newOpacity);
}
function radOpacity(newOpacity) {
	if (cur_frame == 5) { radar.setOpacity(newOpacity); }
	if (cur_frame == 4) { radar2.setOpacity(newOpacity); }
	if (cur_frame == 3) { radar3.setOpacity(newOpacity); }
	if (cur_frame == 2) { radar4.setOpacity(newOpacity); }
	if (cur_frame == 1) { radar5.setOpacity(newOpacity); }
	radar_opacity = newOpacity;
}

function changeRadar(ab) {
	if (ab.checked == 0){
	//if (ab) {
		if (!set_radar) { return false; }
		removeRadars();
		setRadarLegend('hide');
		set_radar = false;
	} else {
		if (set_radar) { return false; }
		createRadar(rid,pid);
		set_radar = true;
	}
}
function legendControl(dir) {
	if (dir == 'close') {
		Effect.BlindUp('legend', { duration: 0.5 });
		Effect.BlindDown('small_legend', { duration: 0.5, queue: 'end' });
	} else {
		Effect.BlindUp('small_legend', { duration: 0.5 });
		Effect.BlindDown('legend', { duration: 0.5, queue: 'end' });
	}
}

function radarActions() {
	if (!togglePoints && (rid == 'NAT' || rid == 'NAK' || rid == 'NPR')) {
		addRadarPoints();
		$('radar_types').appear();
		document.getElementById('dottastic').value = "Remove Individual Radars";
	} else if (!togglePoints && (rid !== 'NAT' || rid !== 'NAK' || rid !== 'NPR')) {
		//map.zoomTo(map.getZoom() - 2);
		setNewRadarLocation('NAT');
		document.getElementById('dottastic').value = "Remove Individual Radars";
		$('radar_types').appear();
		addRadarPoints();
	} else {
		removeRadarPoints();
		$('radar_types').hide();
		document.getElementById('dottastic').value = "Show Individual Radars";
	}
}

function addRadarPoints() {
	if (togglePoints) return false;
	markers = new OpenLayers.Layer.Markers( "Markers" );
    map.addLayer(markers);
	GDownloadUrl("xmlpull.php", function(data, responseCode) {
	    var xml = GXml.parse(data);
	    var mk = xml.documentElement.getElementsByTagName("radar");
		for (var i = 0; i < mk.length; i++) {
			var radarid = mk[i].getAttribute("id");
			var point = new OpenLayers.LonLat(parseFloat(mk[i].getAttribute("lon")),parseFloat(mk[i].getAttribute("lat")));
			var radarname = mk[i].getAttribute("name");
			var radartype = mk[i].getAttribute("type");
			if (radartype !== 'mosaic') {
				var marker = createMarker(map, point, radarid, radarname,radartype);
				//radarPoints.push(marker);
				markers.addMarker(marker);
			}
		}
	});
	togglePoints = true;
}

function removeRadarPoints() {
	if (!togglePoints) return false;
	map.removeLayer(markers);
	togglePoints = false;
}

function createMarker(map,point,rd,rname,rtype) {
	var size = new OpenLayers.Size(10,10);
    var offset = new OpenLayers.Pixel(0,0);
    if (rtype == "WSR-88D") {
    	var icon = new OpenLayers.Icon('img/radar_point.png',size,offset);
    } else {
    	var icon = new OpenLayers.Icon('img/radar2_point.png',size,offset);
    }
    var proj = new OpenLayers.Projection("EPSG:4326");
    point.transform(proj, map.getProjectionObject());
	marker = new OpenLayers.Marker(point,icon);
    marker.events.register('click', marker, function(evt) { setNewRadarLocation(rd); });
	return marker;
}

Array.prototype.in_array = function ( obj ) {
	var len = this.length;
	for ( var x = 0 ; x <= len ; x++ ) {
		if ( this[x] == obj ) return true;
	}
	return false;
}
