//if (t=="undefined"){var t = "---";}
//if (td=="undefined"){var td = "---";}
if (wd==null){var wd = "---";}
if (wh10==null){var wh10 = "---"; }
if (hum==null){var hum = "---";}
if (bar==null){var bar = "---"; }
if (rise==null){var rise = 0;} 
var latitude = 52.03399;
var days_in_month = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var text_month = new Array("","January","February","March","April","May","June","July","August","September","October","November","December");
var hour = (15 * sunTime()) * 0.0174532925;
var decl = (23.45 * Math.sin((parseInt(Jday) + 285) * (360/365) * 0.0174532925) * 0.0174532925);
var lat = latitude * 0.0174532925;
var	radianfactor = 3.14159265/180
var t_img = "<img src=http://homepage.ntlworld.com/cliftonweather/images/pixel_red.gif width=3 height="
var therm_h = t_img + (((hum-20)*2)+5) + " border=0>";
var therm_b = t_img + (((bar-965)*2)+5) + " border=0>";

var aryImages = new Array(2);
var camera = new Array(2);
var east = new Array(2);
var north = new Array(2);
var ix;

function txtMonth(dateStr) {
	var strg = dateStr.split(" ");
	var mth = strg[1];
	return mth;
}

intImage = 1;
function swapImage() {
switch (intImage) {
 case 1:
	document.getElementById('cam').src = "http://homepage.ntlworld.com/cliftonweather/images/cam2.jpg"
	document.getElementById('camUrl').href = "http://homepage.ntlworld.com/cliftonweather/images/cam2.jpg"
	document.getElementById('view').innerHTML = "<a id=small4 href=#><b>View East Cam</b></a>"
  intImage = 2
  return(false);
case 2:
	document.getElementById('cam').src = "http://homepage.ntlworld.com/cliftonweather/images/cam1.jpg"
	document.getElementById('camUrl').href = "http://homepage.ntlworld.com/cliftonweather/images/cam1.jpg"
	document.getElementById("view").innerHTML = "<a id=small4 href=#><b>View North Cam</b></a>"
  intImage = 1
  return(false);
 }
}

function openImage(aUrl) {
    document.location = aryImages[ix];
}

function wdirection(dir){
	switch (dir){
		case "N":
			winddir = "North";
			return;
		case "E":
			winddir = "East";
			return;
		case "S":
			winddir = "South";
			return;
		case "W":
			winddir = "West";
			return;
	}	
}

function fcol(p){
	if (p != "---") {
		p = parseFloat(p).toFixed(1);
		var pc = p + "°C";
		if (p <= 0){pc = "<font color=Blue>" + p + "°C</font>";}
	}
	return pc;
}

function fcol2(p){
	if (p != "---") {
		if (p <= 0){p = "<font color=Blue>" + p + "</font>";}
	}
	return p + "°C";
}

function thermo(tval,img){		// thermometer
	var thermo = (eval(td) < 0) ? 
	 new Array(t_img + (((eval(tval)+20)*4)+5) + " border=0>", "<img src=http://homepage.ntlworld.com/cliftonweather/images/thermo_c2.gif width=22 height=171 border=0>") :
	 new Array(t_img + ((eval(tval)*4)+5) + " border=0>", "<img src=http://homepage.ntlworld.com/cliftonweather/images/thermo_c1.gif width=22 height=171 border=0>");
	return thermo[img];
}

function data(y,i){		// general stuff
	var data = y;
	var edata	= eval(y);
	switch (i){
		case 0:		// return data
			if (y == "wd" && ws == 0){edata = "---";}
			return edata;
			break;
		case 1:		// C to F 1
			data = data + "°C (" + setDecimal((9*data/5 + 32),1) + "°F)";
			return data;
		case 2:		// C to F 2
			data = "(" + setDecimal((9*data/5 + 32),1) + "°F)";
			return data;
		case 4:   // mm to inch's
			data = data + " mm &nbsp;(" + setDecimal((data/25.4),2) + " in)";
			return data;
		case 5:   // mph to knot's
			data = "(" + Math.round(data*0.86898) + " kt)";
			return data;
		case 6:   // windspeed & calm
			data = ""
			if (ws == 0){data = "Calm";}
			else data = wd + "&nbsp;&nbsp; @ &nbsp;&nbsp;" + ws + " mph";
			return data;
		 return data;
		case 7:		// dir windspeed & calm
			data = ""
			for (var i = 0; i < wd.length; i++){
				wdirection(wd.charAt(i));
				data = data + " " + winddir;
			}
			if (ws == 0){data = "Calm";}
			else data = data + "&nbsp; @ &nbsp;" + ws + " mph";
			return data;
		case 8:   // windspeed & calm
			data = ""
			if (wa == 0){data = "Calm";}
				else data = wad + "&nbsp; @ &nbsp;" + wa + " mph";
				return data;
		 	return data;
		default:
		 data = "---";
	}
}

function roundOff(value){
	value = Math.round(10*value)/10; 
	return value;
}

// Remove leading zero
function leadingZero(str){
	if(str.length > 1 && str.substring(0,1) == '0'){str = str.substring(1,str.length);}
	return str;
}

//Calculates time relative to local solar noon
function sunTime(){
	solar_noon = (timeDec(rise) + timeDec(set) + 12)/2;
	suntime = (solar_noon - timeDec(leadingZero(wxst)));
	return suntime;
}

function timeDec(tm){
	dtm = tm.split(":");
	dtm = parseInt(dtm[0]) + parseInt(dtm[1])/60;
	return dtm;
}

//Calculates solar elevation angle for given hour, minute, and day of the year
function solarAltitude(){
	sin_alt = (Math.cos(lat) * Math.cos(decl) * Math.cos(hour)) + (Math.sin(lat) * Math.sin(decl));
	altitude_angle = roundOff(Math.asin(sin_alt) * 57.2957795);
	return altitude_angle;
}

//Calculates solar azimuth angle for given hour, minute, and day of the year
function solarAzimuth(){
	y_azm = (-1 * (Math.cos(hour)) * Math.cos(decl) * Math.sin(latitude)) + (Math.cos(latitude) * Math.sin(decl));
	x_azm = Math.sin(hour) * Math.cos(decl);
	azimuth_angle = Math.atan(x_azm/y_azm) * 57.2957795;
	if (x_azm >= 0 && y_azm <= 0 || x_azm < 0 && y_azm < 0) {azimuth_angle = 180 + azimuth_angle}
	if (x_azm <= 0 && y_azm >= 0) {azimuth_angle = 360 + azimuth_angle}
	return roundOff(azimuth_angle);
}

//Calculates maximum expected solar radiation for given hour, minute, and day of the year
function sunshine(ty){
	solarconstant = 1366 //Top of atmosphere, horizontal surface
	var solar_elevation = solarAltitude();
	var sun_azimuth = solarAzimuth();
	var ampm = st.substring(0,2);	
	if (ampm.substring(1,2) == ":") {ampm = "0" + ampm.substring(0,1)}
	maxradpossible = solarconstant * Math.sin(solar_elevation * radianfactor) //Assumes no atmospheric attenuation
	attenuation = maxradpossible * .44 * (1 - Math.sin(solar_elevation * radianfactor)) //Increase attenuation as sun angle decreases
	maxradpossible = maxradpossible - attenuation
	if (maxradpossible < 0) {maxradpossible = 0}
	clouds = maxradpossible*.25
	partsun = maxradpossible*.55
	partcloud = maxradpossible*.70
	fullsun = maxradpossible*.80
	skycondition = "";
	var imgloc1 = "<img src=http://homepage.ntlworld.com/cliftonweather/images/";
	var imgloc2 = ".gif border=0>";
	var skycon = "tc";
	if (srad > clouds) {skycon = "c";}
	if (srad > partsun) {skycon = "ps";}
	if (srad > partcloud) {skycon = "pc";}
	if (srad > fullsun) {skycon = "s";}
	if (hrrh > 0) {skycon = "r" + skycon;}
	skycon = imgloc1 + skycon + imgloc2;
	if (srad == 0 && solar_elevation < -5) {skycon = ""}	
	if (hrrh > 10) {skycon = "*Heavy Rain*";}
	if (ws10 > 24) {skycon = "*High Winds*";}
	if (ws10 > 37) {skycon = "*Gale force Winds*";}
	if (srad < partcloud && cb < 80 && hum > 95 && wa10 <= 3.0 && bar > 1012 && hrrh == 0 && clhr_t < 1.5) {
		skycon = imgloc1 + "fog" + imgloc2;
		if (t < 0) {skycon = "*Freezing Fog*";} 
	}
	if (ty == 1) {return Math.round(maxradpossible)}
	if (ty == 2) {return skycon}
	return skycon;
}

function moon(){		// moon phases 
	var black = "http://homepage.ntlworld.com/cliftonweather/images/black.gif";
	var white = "http://homepage.ntlworld.com/cliftonweather/images/white.gif";
	var height=1;
	var size = 16;
	var i;
	var currentDate  = new Date();
	var x = currentDate;
	currentDate.setTime(currentDate.getTime() + (currentDate.getTimezoneOffset()*60000));
	var blueMoonDate = new Date(96, 1, 3, 16, 15, 0);
	var lunarPeriod  = 29*(24*3600*1000) + 12*(3600*1000) + 44.05*(60*1000);
	var moonPhaseTime = (currentDate.getTime() - blueMoonDate.getTime()) % lunarPeriod;
	var percentRaw = (moonPhaseTime / lunarPeriod);
	var percent    = Math.round(100*percentRaw) / 100;
	var percentBy2 = Math.round(200*percentRaw);
	var left  = (percentRaw >= 0.5) ? black : white;
	var right = (percentRaw >= 0.5) ? white : black;
	var time = Math.round((lunarPeriod-moonPhaseTime)/(24*3600*1000));
	document.write("<center>");
	if (percentBy2 > 100) {
		percentBy2 = percentBy2 - 100;
	}
	for (i = -(size-1); i < size; ++i) {
		var wid=2*parseFloat(Math.sqrt((size*size)-(i*i)));
		if (percentBy2 != 100)
			document.write ("<img src="+left +" height=1 width="+(wid*((100-percentBy2)/100))+">");
		if (percentBy2 != 0)
			document.write("<img src="+right+" height=1 width="+(wid*((percentBy2)/100))+">");
		document.write("<br>");
	}
}
//Does rounding of numbers to desired number of places after decimal point
function setDecimal(value, places){
	if (value < 0) {sign = "-"} else {sign = ""}
	value = Math.abs(value) 
	factor = Math.pow(10, places)
	valInt = Math.round(value * factor)
	if (places == 0 && valInt == 0) {sign = ""}
	if (places == 0) {return sign + valInt}
	valStr = valInt.toString(10)
	len = valStr.length
	radix = len - places - 1
    	radShift = 0
    	if (radix < 0) {radShift = -radix, radix = 0}
    	for (i = 0; i < radShift; i++) {valStr = "0" + valStr}
 	intStr = valStr.substring(0, radix + 1)
	decStr = valStr.substring(radix + 1, len + radShift)
	valStr = sign + intStr + "." + decStr
	return valStr
}

function FreezingL(){
	OLevel = t / 0.0098 + 42;
	if (cb<=OLevel){
		Wet = (OLevel - cb) / 0.54
		OLevel = Wet + cb
	}
	return Math.round(OLevel) + " m";
} 

function MakeVisible(x,unit,top,lft){
	browsername=navigator.appName;
	if (browsername.indexOf("Microsoft")!=-1){lft = lft - 2}
	document.getElementById('myLayer').style.visibility = 'visible';
	document.getElementById('myLayer').style.top = top;
	document.getElementById('myLayer').style.left = lft;
	document.getElementById('myLayer').innerHTML = "Currently: &nbsp;" + x + unit;
}

function MakeHidden(){
if (document.getElementById) {
	document.getElementById('myLayer').style.visibility = 'hidden';
	}
else if (document.all) {
	document.all.myLayer.style.visibility = 'hidden';
	}
} 
function handleErr(msg,url,l){
 var err_val = msg.split(" ");
 var wx_var = err_val[0];
 if (wx_var.indexOf('f') == -1){
 		if(self.wx_var){ alert(msg + " line" + l);}
 		else {wx_var = "---";}
 document.write(wx_var);		 
 }
 return;
}