<!-- hide the script from old browsers 

/***************************************************/
/* JS File for Radar Portal ZAMG Innsbruck         */
/* (c) ZAMG Innsbruck                              */
/***************************************************/



/***************************************************/
/* global variables                                */
/***************************************************/
var imgType = ".gif";
var colorbar_rr = '"underlays/RRcolorbar_vbgweb.gif"';
var colorbar_zlog = '"underlays/ZLOGcolorbar_vbgweb.gif"';


/***************************************************/
/* Javascript-functions for loop                   */
/***************************************************/
//////////////////////////////////////////////////////////////////////////
function startval(numOfImgs,arrayOfImgs,looptype) {

	// initialization
	// Note: global variables must not be declared with var
	if (looptype == "inca")
	{
		mode = loopmode_inca(); 
	} else {
		mode = loopmode(); 
	}
	lspeed       = speed();
	ImageNames   = new Array();
	back         = 0;
	image_loaded = 0;
	imnum        = numOfImgs;
	var imgLoadStatus = document.getElementById("imgCounter");
	imgLoadStatus.innerHTML = "lade Bilder...";
	//alert("initialization with\nloopmode="+mode+"\nspeed="+lspeed+"\nimnum="+imnum);

        for (counter = 0; counter < arrayOfImgs.length; counter++) {
        	ImageNames[counter] = new Image();
            	filenum = counter + 1;
            	filename = arrayOfImgs[counter];
            	ImageNames[counter].src = filename; //load image from webserver
            	imgLoadStatus.innerHTML = "Bild "+filenum+" von "+arrayOfImgs.length+" geladen";
            	
        }
        counter=0;
}



//////////////////////////////////////////////////////////////////////////
function changeImage(direction) {
        image_loaded += direction;
        if (image_loaded < 0)
           image_loaded = 0;
        if (image_loaded == imnum)
           image_loaded = imnum - 1;
        if (document.images)
        {
        	document.image.src = ImageNames[image_loaded].src;
        	var imgCounter = document.getElementById("imgCounter");
        	dateStrg = formatDate(document.image.src);
        	imgCounter.innerHTML = "g&uuml;ltig f&uuml;r "+dateStrg;
	}
}


//////////////////////////////////////////////////////////////////////////
function play() {
         if(mode==0) { //einmal
          back=0;
          if(image_loaded < imnum) {
           loop = window.setTimeout("nextpic()", lspeed);
           }
         }

         if(mode==1) { //durchlaufend
          back=0;
          if(image_loaded < imnum) {
           loop = window.setTimeout("nextpic()", lspeed);
           }
          else {
           image_loaded=0;
           loop = window.setTimeout("nextpic()", lspeed*2);
           }
         }

         if(mode==2) { // vor/zurück
          if( image_loaded < imnum ){
           if( image_loaded < 0) {image_loaded=0; back=0;}
           loop = window.setTimeout("nextpic()", lspeed);
           }
          if( image_loaded == imnum ) {
           back=1;
           image_loaded=image_loaded-2;
           loop = window.setTimeout("nextpic()", lspeed*2);
           }
         }
}


//////////////////////////////////////////////////////////////////////////
function stop() {
        window.clearTimeout(loop);
        image_loaded--;
}


//////////////////////////////////////////////////////////////////////////
function nextpic() {
        document.image.src = ImageNames[image_loaded].src;
        if (back==0) {image_loaded=image_loaded+1};
        if (back==1) {image_loaded=image_loaded-1};

        var imgCounter = document.getElementById("imgCounter");
        dateStrg = formatDate(document.image.src);
        imgCounter.innerHTML = "g&uuml;ltig f&uuml;r "+dateStrg;

        play();
}


//////////////////////////////////////////////////////////////////////////
function speed() {
        i=document.steuerung1.sspeed.selectedIndex;
        lspeed=document.steuerung1.sspeed.options[i].value;
	document.cookie = "ZAMGRadarPortal_loop_speed=" + lspeed; // set cookie for selected speed
        return lspeed;
}


//////////////////////////////////////////////////////////////////////////
function loopmode () {
	mode = document.lmode.mode.selectedIndex;
	val  = document.lmode.mode.options[mode].value;
	document.cookie = "ZAMGRadarPortal_loop_mode=" + val; // set cookie for selected loop mode
	return mode;
}


//////////////////////////////////////////////////////////////////////////
function loopmode_inca () {
	mode = document.lmode.mode_inca.selectedIndex;
	val  = document.lmode.mode_inca.options[mode].value;
	document.cookie = "ZAMGRadarPortal_inca_loop_mode=" + val; // set cookie for selected loop mode
	return mode;
}


//////////////////////////////////////////////////////////////////////////
function loopperiod (region,looptype) {
	if (looptype == "inca")
	{
		period=document.lperiod.period_inca.selectedIndex;
		val = document.lperiod.period_inca.options[period].value;
		document.cookie = "ZAMGRadarPortal_inca_loop_period=" + val; // set cookie for selected loop mode
	} else {
		period=document.lperiod.period.selectedIndex;
		val = document.lperiod.period.options[period].value;
		document.cookie = "ZAMGRadarPortal_loop_period=" + val; // set cookie for selected loop mode
	}

	// load loop page in actual frame (name="content")
	parent["content"].location.href = "radarPortal_createContent.php?region=" + region + "&parameter=loop_" + looptype;
	return period;
}



//////////////////////////////////////////////////////////////////////////
function firstpic() {
        image_loaded = 0;
        document.image.src = ImageNames[image_loaded].src;

        var imgCounter = document.getElementById("imgCounter");
        dateStrg = formatDate(document.image.src);
        imgCounter.innerHTML = "g&uuml;ltig f&uuml;r "+dateStrg;
}




//////////////////////////////////////////////////////////////////////////
function showTimetable(visType)
{
	displayTimetable = document.getElementById('timetable');
	displayTimetable.style.visibility = visType;
}


//////////////////////////////////////////////////////////////////////////
// fill selected timestamp into loop-table-input and delete timetable
function fillLoopEndDate(val)
{

        //var loopEndTimestamp = document.getElementById('loopEndTimestamp');
	var inputLoopEnd = document.getElementById('inputLoopEnd');
	document.cookie = "ZAMGRadarPortal_loop_loopEnd=" + val; // set cookie for selected loop mode
	
	// load loop page in actual frame (name="content")
	//parent["content"].location.href = self;
	
	inputLoopEnd.value = val; 
        //ajaxDisplay.innerHTML = "";

}


//////////////////////////////////////////////////////////////////////////
function changeCursorstyle (linkId,cursorStyle)
{
	var link = document.getElementById(linkId);
	link.style.cursor = cursorStyle;
}


//////////////////////////////////////////////////////////////////////////
function createOverlibStrg ()
{

	var htmlstrg,checked_rr,checked_ref,cbImg,cbtype;

	// read cookie
	var allCookies = document.cookie;
	var pos = allCookies.indexOf("ZAMGRadarPortal_cbtype=");
	//                            012....................23
	if (pos != -1) {
		var start = pos+23;
		var end = allCookies.indexOf(";", start);
		if (end == -1) end = allCookies.length;
		var value = allCookies.substring(start,end);
		cbtype = value;
	} else {
		cbtype = "rain_rate"; // standard if cookie is not set
	}

	switch (cbtype)
	{
		case "rain_rate":
			checked_rr = "checked";
			checked_ref = "";
			cbImg = colorbar_zlog;
			
		break;

		case "reflectivity":
			checked_rr = "";
			checked_ref = "checked";
			cbImg = colorbar_rr;
		break;
	}
		
	htmlstrg = 	"<table class='colorbarInfo'>";
	htmlstrg +=	"<tr><td colspan='2'>Colorbartyp w&auml;hlen:</td></tr>";
	htmlstrg += 	"<tr><td>rain rate [mm/h]</td>" +
		       	"<td><input type='radio' name='colorbartype' value='rain_rate' onclick='setCookie(this.value,"+cbImg+")' "+checked_rr+"></td></tr>" +
		       	"<tr><td>reflectivity [dBZ]</td>" +
		       	"<td><input type='radio' name='colorbartype' value='reflectivity' onclick='setCookie(this.value,"+cbImg+")' "+checked_ref+"></td>";
	htmlstrg += 	"</tr></table>";
	paras     =	"STICKY, MOUSEOFF, WRAP, CELLPAD, 5";
	return overlib(htmlstrg, STICKY, MOUSEOFF, WRAP, CELLPAD, 5);

}



//////////////////////////////////////////////////////////////////////////
function setCookie(val,cb_img) {
	document.cookie = "ZAMGRadarPortal_cbtype="+val;
	document.getElementById("radarImagesColorbarSrc").src = cb_img;
	return nd();
}


//////////////////////////////////////////////////////////////////////////
// liefert eine Instanz des XHTML-HTTP-Request-Objektes zurück
// und unterscheidet dabei zwischen der Implementierung in verschiedenen Browsern
// function ajaxRequest()
// {
//         var ajaxRequest; // The variable that makes Ajax possible!
// 
//         try{
//                 // Opera 8.0+, Firefox, Safari
//                 ajaxRequest = new XMLHttpRequest();
//         } catch (e){
//                 // Internet Explorer Browsers
//                 try{
//                         ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
//                 } catch (e) {
//                         try{
//                                 ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
//                         } catch (e){
//                                 // Something went wrong
//                                 alert("Your browser broke!");
//                                 return false;
//                         }
//                 }
//         }
//         return ajaxRequest;
// }



//////////////////////////////////////////////////////////////////////////
function setAction(fName,script,region,parameter,warnlink)
{
	var region,parameter,warnlink;

	if (region != "") // a radio button or link in the region radiogroup was clicked
	{ 
		// find parameter
		// search all radios in form and return value of checked parameter-button
		var allParameters = document.forms[fName].elements["parameter"];
		for (var i=0; i<allParameters.length; i++)
		{
			if (allParameters[i].checked == true)
			{
				parameter = allParameters[i].value;
			}
		}
	
		// set region
		// search all radios in form and set to true if the corresponding link was clicked
		var allRegions = document.forms[fName].elements["region"];
		for (var i=0; i<allRegions.length; i++)
		{
			if (allRegions[i].value == region)
				allRegions[i].checked = true;
		}
		document.forms[fName].action = script + "?region=" + region + "&parameter=" + parameter;
        	document.forms[fName].submit();
	}

	if (parameter != "")  // a radio button or link in the parameter radiogroup was clicked
	{
		// find region
		// search all radios in form and return value of checked region-button
		var allRegions = document.forms[fName].elements["region"];
		for (var i=0; i<allRegions.length; i++)
		{
			if (allRegions[i].checked == true)
			{
				region = allRegions[i].value;
			}
		}
	
		// set parameter
		// search all radios in form and set to true if the corresponding link was clicked
		var allParameters = document.forms[fName].elements["parameter"];
		for (var i=0; i<allParameters.length; i++)
		{
			if (allParameters[i].value == parameter)
				allParameters[i].checked = true;
		}
		document.forms[fName].action = script + "?region=" + region + "&parameter=" + parameter;
        	document.forms[fName].submit();
	}

	if (warnlink != "")
	{
		// set parameter
		// search all radios in form and set to true if the corresponding link was clicked
		var allWarnings = document.forms[fName].elements["warnings"];
		for (var i=0; i<allWarnings.length; i++)
		{
			if (allWarnings[i].value == warnlink)
				allWarnings[i].checked = true;
		}
		document.forms[fName].action = warnlink;
        	document.forms[fName].submit();
	}

}


//////////////////////////////////////////////////////////////////////////
// returns a formatted date by extracting a datestring from an imagesrc
// dateStrg has the format YYMMDDhhmm
// function formatDate (strg)
// {
// 	var arr = strg.split("_");
// 	var i = arr.length;
// 	var dateStrg = arr[i-1].split(".");
// 
// 	var year,month,day,hour,min;
// 	year = "20"+dateStrg[0].substr(0,2);
// 	month = dateStrg[0].substr(2,2);
// 	day = dateStrg[0].substr(4,2);
// 	hour = dateStrg[0].substr(6,2);
// 	min = dateStrg[0].substr(8,2)
// 
// 	return day+"."+month+"."+year+" "+hour+":"+min+" UTC";
// 
// }


//////////////////////////////////////////////////////////////////////////
// returns a formatted date by extracting a datestring from an imagesrc
// dateStrg has the format YYMMDDhhmm
function formatDate (strg)
{
	var arr = strg.split("_");
	var i = arr.length;
	var dateStrg = arr[i-1].split(".");
	var timezone;

	var year,month,day,hour,min;
	year = "20"+dateStrg[0].substr(0,2);
	month = dateStrg[0].substr(2,2);
	day = dateStrg[0].substr(4,2);
	hour = dateStrg[0].substr(6,2);
	min = dateStrg[0].substr(8,2)

	// produce datestring in dependance of summertime: MEZ or MESZ
	st = get_summertime(year,month,day,hour,min);
	if (st == 1) {
		timezone = "MESZ";
		timelag = 7200*1000;
	} else {
		timezone = "MEZ";
		timelag = 3600*1000;
	}

	var arbdate = new Date(year,month-1,day,hour,min,0,0);
	var msecs_arbdate = arbdate.getTime();
	var d = new Date(msecs_arbdate+timelag);

	// final formatting
	var dateFields = [d.getDate(),d.getMonth()+1,d.getHours(),d.getMinutes()];
	for (var i=0;i<dateFields.length;i++) {
		s = new String(dateFields[i]);
		if (s.length == 1) {
			dateFields[i] = "0"+s;
		}
	}
	
	return dateFields[0]+"."+dateFields[1]+"."+d.getFullYear()+" "+dateFields[2]+":"+dateFields[3]+" "+timezone;

}


//////////////////////////////////////////////////////////////////////////
// gibt Sommerzeit 0/1 für ein beliebiges Datum zurück
// Definition (http://de.wikipedia.org/wiki/Sommerzeit)
// Beginn: Letzter Sonntag im März um 1 UTC
// Ende: Letzter Sonntag im Oktober um 1 UTC
function get_summertime (year,month,day,hour,min)
{
	var st;
	var msecs_arbdate = Date.UTC(year,month-1,day,hour,min,0,0);
	var msecs_last_day_march = Date.UTC(year,2,31,0,0,0,0);
        var msecs_last_day_october = Date.UTC(year,9,31,0,0,0,0);

	// compute epochsec of begin and end of summertime
	// count in ms
        var week = 7*86400*1000;
        for (i=0;i<=week;i+=86400*1000) {
                begin = new Date(msecs_last_day_march-i);
                 if (begin.getUTCDay() == 0) {   // if day = sonntag
                        var msecs_st_begin = Date.UTC(begin.getYear()+1900,begin.getUTCMonth(),begin.getUTCDate(),1,0,0,0);
                }
                end = new Date(msecs_last_day_october-i);
                 if (end.getUTCDay() == 0) {   // if day = sonntag
                        var msecs_st_end = Date.UTC(end.getYear()+1900,end.getUTCMonth(),end.getUTCDate(),1,0,0,0);
                }
        }
	if (msecs_arbdate < msecs_st_begin || msecs_arbdate > msecs_st_end) {
		st = 0;		// arbitray date NOT in summertime: st=0
	} else {
		st = 1;
	}

	return st;
}

/***************************************************/
/* Javascript-functions for TAWES                  */
/***************************************************/
//////////////////////////////////////////////////////////////////////////
function tawesChangeImg (path2images,formName,eleName,elePosition) {
	
	// get sources of images in the document
	// and change the source according to the selected value in the options dialog
	for (var i=0; i<document.images.length; i++)
	{
 		var img = document.images[i];

			// extract stationname from selected element...
			var fields = img.name.split("_");
			var allOptions = document.forms[formName].elements[eleName];
			for (var j=0; j<allOptions.length; j++)	{

			// ...and reassemble image-sources with selected option
				if (allOptions[j].selected == true) {
					
					fields[elePosition] = allOptions[j].value; //fields[0] is station, fields[2] is period
					if (formName == "periodForm")
					{				
						// set cookie for selected periodForm
						document.cookie = "ZAMGRadarPortal_tawes_period=" + allOptions[j].value;
						fields[elePosition] += imgType;
					}
					if (!fields[0]) return;
					img.name = fields.join("_");
					img.src = path2images + "/" + img.name;
				}
			}

	}

	

}

