/*
MENU functions for javascript selectable RASP maps.

Copyright (C) 2010 Thomas Pantzer

This program is free software; you can redistribute it and/or modify it under 
the terms of the GNU General Public License as published by the Free Software 
Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY 
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with 
this program; if not, see http://www.gnu.org/licenses/.
*/

var ctlForm;
var divIsLayer = 0;

var browserVersionMsgSent = 0;
var browserNotCompatibleMsgSent = 0;
var optGroupWorks = 0;
var firstChildWorks = 0;
var getElemByIdWorks = 1;
var canEditMenus = 1;
var canPosMark = 1;
var canChangeText = 1;

var VersionArray = navigator.appVersion.split(" ");		

if (navigator.appName == "Netscape") {
	if (parseFloat(VersionArray[0]) < 5.0) {
// 		"Netscape" "4.8 [en] (X11; U; Linux 2.6.33.3 i686)"	// geht garnicht
//		alert("browser:"+navigator.appName+", version:"+navigator.appVersion+", MSIE:"+VersionArray[3]+" doesnt work at all.");
		getElemByIdWorks = 0;
		divIsLayer = 1;
		canEditMenus = 0;
	} else {
		// "Netscape" "5.0 (X11; de)"	// Netscape Navigator 7.2 + Firefox 3.0
		optGroupWorks = 1;
		firstChildWorks = 1;
	}	
} else {
	if (navigator.appName == "ACCESS NetFront") {
		// "ACCESS NetFront" "3.1"
		canPosMark = 0;		
		canEditMenus = 0;
	} else {
		if ((VersionArray[2] == "MSIE") && (VersionArray[3] == "7.0;"))  {
			// "Microsoft Internet Explorer" "4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)"	
			firstChildWorks = 1;
		} else {		
			if (browserVersionMsgSent == 0) {
				// "Microsoft Internet Explorer" "4.0 (compatible; MSIE 5.0; Linux 2.4.20 armv5tel; 640x480)"	Opera 6.0 auf Zaurus PDA
				alert("browser:"+navigator.appName+", version:"+navigator.appVersion+", MSIE:"+VersionArray[3]);
			}	
			browserVersionMsgSent = 1;
		}	
	}	
}

function myGetFormObj()
{
	if (document.ctl) {
		if (!document.ctl.time) {
			var el = document.getElementById("formDivId");		

			var c0 = el.firstChild;		
			var c1 = c0.nextSibling;		
			var c2 = c1.nextSibling;		
			var fo = c1;
		
			if ((debug) || (c1.nodeName != "FORM")) {
				alert("myGetFormObj(): c0:"+c0.nodeName+" c1:"+c1.nodeName+" c2:"+c2.nodeName);
			}	
			return fo;			
		}	
		return document.ctl;
	}	
	if (divIsLayer) {
		// Netscape 4.8, <div>s become <layer>s 
		return document.formDivId.document.ctl;
	}
	return 0;	
}


function init_times(didx)
{
//	if (debug) {		alert("init_times("+didx.toString()+")");	}
	if (!(ctlForm.time)) {
		var msg = "You have a shitty browser\n";
		msg = msg + "Form.Elements is missing\n";
		msg = msg + "Try to resize the main window until the Menu appears at the right side. Then press [Reload]\n";
		msg = msg + "Actual window width:";
		msg = msg + window.innerWidth;
		msg = msg + ",  needed width:";
		msg = msg + imageWidth;
		msg = msg + "+MenuWidth";
//		msg = msg + document.formDivId.width;
		alert(msg);
	} else {
		if (!(ctlForm.time.options)) {
			alert("You have a shitty browser\nElement.Options is missing\nTry to resize the main window and press [Reload]");
		}
	}

	ctlForm.time.options.length = timeOptionsLength[didx];

	for (i=0; i<timeOptionsLength[1]; i++) {
		if (didx == 0) {	// yesterday
			if (timeOptionYesterday[0] > 0) {
				ctlForm.time.options[i].text = timeOptionText[i];
				ctlForm.time.options[i].value = timeOptionValue[i];	
			}	
		} else {
			if (didx == 3) {	// day after tomorrow
				if (timeOptionAfterTomorrow[0] > 0) {
					ctlForm.time.options[i].text = timeOptionText[i];
					ctlForm.time.options[i].value = timeOptionValue[i];							
				}	
			} else {
				ctlForm.time.options[i].text = timeOptionText[i];
				ctlForm.time.options[i].value = timeOptionValue[i];			
			}	
		}	
	}
	ctlForm.time.selectedIndex = timePreselection % ctlForm.time.options.length;
}

function init_daytimes()
{
	if (dayOptionsLength != 4) {
		// alpen hat nur 2 Tage, ddr und weishaupt nur 3 Tage
		init_times(1);
	} else {
		// alle anderen haben 4 Tage
		init_times(ctlForm.day.selectedIndex);
	}
}

function new_image_url()
{
	day = ctlForm.day.options[ctlForm.day.selectedIndex].value;
	dayPrefix = dayOptionPrefix[ctlForm.day.selectedIndex];
	mname = "" + ctlForm.map.options[ctlForm.map.selectedIndex].value + "";
	time = ctlForm.time.options[ctlForm.time.selectedIndex].value;
	
	var myUrl = "" + mapServerURL + dayPrefix + mapDayTime(mname, day, time) + mapImagePostfix;
	return myUrl;
}

function init_days()
{
	ctlForm.day.options.length = dayOptionsLength;
	for (i=0; i<dayOptionsLength; i++) {
		ctlForm.day.options[i].text = dayOptionText[i];
		ctlForm.day.options[i].value = dayOptionValue[i];			
	}
	ctlForm.day.selectedIndex = dayPreselection;
}

function init_maps()
{
	ctlForm.map.options.length = mapOptionsLength;
	for (i=0; i<mapOptionsLength; i++) {
		ctlForm.map.options[i].text = mapOptionText[i];
		ctlForm.map.options[i].value = mapOptionValue[i];			
	}
	ctlForm.map.selectedIndex = mapPreselection;
}


