// javascripts.js
// Author: Alexander Aberer
// Date: 7/27/2000
// Last modified: 2/1/2005 (Alexander Aberer)

// !!!Wichtig!!! Die folgende Variable muß gesetzt werden wenn über open_window()
// Seiten auf externen/fremden Webservern geöffnet werden sollen.
	var blank_page = "about:blank"; 

	function SwitchWebservice(switchform,formelement) {
		var fe, dummy;
		if(typeof formelement != "undefined") {
			fe = formelement;
		} else {
			fe = switchform.elements[0];
		}
		if (fe.selectedIndex != 0) {
			var pulldownindex = fe.selectedIndex;
			var url = fe.options[pulldownindex].value;
			locarray = url.split("|");
			if ( locarray.length > 1 ) {
				windata = locarray[0].split(",");
				dummy = open_window(locarray[1],windata[0],windata[1],windata[2],0,0,"scrollbars=" + windata[3] + ",location=no,toolbar=no,status=no,menubar=no,resizable=yes,dependent=yes");
			} else {
				dummy = open_window(url,"",700,480,10,10,"location=yes,toolbar=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,dependent=no");
			}
	 	}
	}
	
	function realmedia(path,name,content) {
		var datestr = new Date();
		url = 'http://apps.vol.at/realmedia/embed.asp?cont=' + content + '&title=' + escape(name) + '&file=' + escape(path) + "&" + escape(datestr.toLocaleString());
		if (content=='video') {
			var rc_video=window.open(url,'rc_video','width=230,height=310,resizable=yes');
			rc_video.focus();
		} else {
			var rc_audio=window.open(url,'rc_audio','width=400,height=40');
			rc_audio.focus();
		}
	}
	
	function open_window(target,name,width,height,posx,posy,windowoptions,init_target) {
		var it, wo, px, py, host;

		it = target;
		wo = "location=no,toolbar=no,status=no,statusbar=no,scrollbars=no,resizable=no,dependent=yes";
		px = py = 0;

		if(typeof new_window != "undefined") {
			if(new_window.closed != true) {
				new_window.close();
			}
		}

		if (typeof posx != "undefined") px = posx;
		if (typeof posy != "undefined") py = posy;
		if ((typeof windowoptions != "undefined") && (windowoptions != "")) wo = windowoptions;
		if (typeof init_target != "undefined") {
			it = init_target;
		} else {
			if (target.indexOf("http://") != -1) {
				host = "http://" + window.location.hostname;
				if (target.indexOf(host) == -1) it = blank_page;
			}
		}
		new_window = window.open(it,name,"width=" + width + ",height=" + height + "," + wo);
		new_window.moveTo(px,py);
		new_window.location.replace(target);
		new_window.focus();
		return false;
	}

	function open_nav(target,name,width,height,navtype,posx,posy,windowoptions,init_target) {
		var it, wo, px, py, host;
		
		width=220;
		
		switch(navtype) {
			case "service":
			 height=482;
			 break;
			case "news":
			 height=390;
			 break;
			case "funfriends":
			 height=510
			 break;
			case "marktplatz":
			 height=200;
			 break;
			default:
			 height=350;
			 break;
		}
		it = target;
		wo = "location=no,toolbar=no,status=no,statusbar=no,scrollbars=no,resizable=no,dependent=yes";
		px = py = 0;

		if(typeof new_window != "undefined") {
			if(new_window.closed != true) {
				new_window.close();
			}
		}

		if (typeof posx != "undefined") px = posx;
		if (typeof posy != "undefined") py = posy;
		if ((typeof windowoptions != "undefined") && (windowoptions != "")) wo = windowoptions;
		if (typeof init_target != "undefined") {
			it = init_target;
		} else {
			if (target.indexOf("http://") != -1) {
				host = "http://" + window.location.hostname;
				if (target.indexOf(host) == -1) it = blank_page;
			}
		}
		new_window = window.open(it,name,"width=" + width + ",height=" + height + "," + wo);
		new_window.moveTo(px,py);
		new_window.location.replace(target);
		new_window.focus();
		return false;
	}

	function setUrlForPrint() {
		sUrl = document.location.href;
		if ((document.all) || (document.layers)){
			sUrl = sUrl.replace(/\?/, "\\/");
			sUrl = sUrl.replace(/\&/, "//");
		}
		document.printform.url.value = sUrl;
	}
	
	
	
	
	
	var days=new Array("Mo","Di","Mi","Do","Fr","Sa","So");
	var remainingDaysPrev = new Array(6,0,1,2,3,4,5);
	var remainingDaysNext = new Array(0,6,5,4,3,2,1);
	var months=new Array('','Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
	var monthDays=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	var formName = 'eventFinder';
	var todaysDate=new myGetDate();
	var calendarOpen=new Object();
	var ns4=(document.layers)?'true':'false';
	var IE = GECKO = false;
	if ( navigator.userAgent.indexOf('MSIE') != -1 )   IE = true;
	if ( navigator.userAgent.indexOf('Gecko') != -1 )  GECKO = true;



	function doTodaySearch() {
			document.forms[formName].quicktext.value = '';
		setDate(todaysDate.month,todaysDate.day,todaysDate.year,'fromDate');
		setDate(todaysDate.month,todaysDate.day,todaysDate.year,'toDate');
			document.forms[formName].submit();
	}

	function performSearch(month,day,year) {
			document.forms[formName].quicktext.value = '';
			setDate(month, day, year, 'fromDate');
			setDate(month, day, year, 'toDate');
			document.forms[formName].submit();
	}

	function setDate(month,day,year,field) {
		document.forms[formName].elements[field + 'Text'].value=makeDouble(day)+'.'+makeDouble((month))+'.'+year;
	}



	function myGetDate(month,day,year) {
		if (day&&year) {month--; var rawDate=new Date(year,month,day);}
		else {var rawDate=new Date();}
		this.year=rawDate.getFullYear();
		this.month=rawDate.getMonth();this.month++;
		this.day=rawDate.getDate();
		this.dow=rawDate.getDay();
		this.date=parseInt(this.year.toString()+makeDouble(this.month.toString())+makeDouble(this.day.toString()));
		this.monthDays=monthDays;this.monthDays[2]=(this.year%4)?28:29;
		this.prev_month=(this.month==1)?12:(this.month-1);
		this.prev_year=(this.month==1)?(this.year-1):this.year;
		this.next_month=(this.month==12)?1:(this.month+1);
		this.next_year=(this.month==12)?(this.year+1):this.year;
		return this;
	}


	function parseDate(testDate) {
		testDate = testDate.replace(/\W|\.\s+/g, ',');
		var month,day,year;
		var dateArray=new Array();dateArray=testDate.split(',');
		for (var i=0;i<dateArray.length;i++) {dateArray[i]=parseFloat(dateArray[i]);}
		if (dateArray[2]<30) {year=parseInt(dateArray[2])+2000;}
		else if (dateArray[2]>30&&dateArray[2]<100) {year=parseInt(dateArray[2])+1900;}
		else {year=dateArray[2];}
		month=dateArray[1];
		if (month>12) month=0;
		if (month) {
			day=parseInt(dateArray[0]);
			if (parseInt(day)>monthDays[month]) {day=monthDays[month];}
		}
		if (month&&day&&year) {return myGetDate(month,day,year);}
		else {return myGetDate();}
	}


	function makeDouble(number) {
		if ((number.toString()).length>=2) {return number;}
		else if (number) {var numString = number.toString();return('0'+numString);}
		return number;
	}

	function verifyDate(fieldsToVerify) {
		var fields=new Array();
		fields=fieldsToVerify.split(',');
		for (var id=0;id<fields.length;id++) {
			var textID=fields[id]+'Text';
			var radio_id=fields[id].replace(/End|Begin/,'');
			if (document.forms[formName][radio_id].checked==true) {
				var newDate=parseDate(document.forms[formName][textID].value);
				 setDate(newDate.month,newDate.day,newDate.year,fields[id]);
			}
		}
	}


	function drawCalendar(month,day,year,id,update,jump) {
		var calID   = id+'-event_calendar';
		var thisDiv = document.getElementById( calID );
		var textID  = document.forms[formName]['fromDateText'];
		var textID2 = document.forms[formName]['toDateText'];
		var formDate=parseDate(document.forms[formName]['fromDateText'].value);
		if (formDate.date!=todaysDate.date&&!update&&!jump) { var selectedDate=formDate; }
		else {var selectedDate=new myGetDate(month,day,year);}
		if (!jump) {
			setDate(selectedDate.month,selectedDate.day,selectedDate.year,'fromDate');
		setDate(selectedDate.month,selectedDate.day,selectedDate.year,'toDate');
		}
		if (update||((calendarOpen[calID]=='focused'||calendarOpen[calID]=='on')&&!jump)) {
			calendarOpen[calID]='on';
			drawCalendar(month,day,year,id,0,1);
			return;
		}
		calendarOpen[calID]='on';
		monthDate=new myGetDate(selectedDate.month,1,selectedDate.year);
		prevmonthDate=new myGetDate(selectedDate.prev_month,monthDays[selectedDate.prev_month],selectedDate.year);
		
		// Draw Calendar
		var calHtml = '';
		//months
		calHtml += "<div onMouseOut=\"calendarOpen['" + calID + "']='on'\" onMouseOver=\"calendarOpen['" + calID + "']='focused'\" bgcolor=\"#000000\" id=\"" + calID + "Inner\" name=\"" + calID + "Inner\">\n";
		calHtml += "    <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n";
		calHtml += "     <tr>\n";
		calHtml += "      <td  align=\"left\" valign=\"middle\" class=\"mback\">\n";
		if (prevmonthDate.date<=todaysDate.date) {
			calHtml += "      &nbsp</td>\n"; }
		else {
			calHtml += "      <a href=\"JavaScript:void(0)\" onClick=\"drawCalendar("+selectedDate.prev_month+", 1, "+selectedDate.prev_year+", '"+id+"',0,1);\" alt=\"Last Month\"><img src=\"/SysRes/MeineGemeindeSkin/Img/Calendar/calendar_monthback.gif\" width=\"14\" height=\"10\" alt=\"vorheriger Monat\" title=\"vorheriger Monat\" border=\"0\"></a></td>\n"; }
		calHtml += "      <td class=\"small\" align=\"center\" valign=\"middle\" nowrap=\"nowrap\">\n";
		calHtml += "       <div class=\"month\"><b>"+months[selectedDate.month]+" "+selectedDate.year+"</b></div></td>\n";
		calHtml += "      <td align=\"right\" valign=\"middle\" class=\"mforward\">\n";
		calHtml += "       <a href=\"JavaScript:void(0)\" onClick=\"drawCalendar("+selectedDate.next_month+", 1, "+selectedDate.next_year+", '"+id+"',0,1);\"><img src=\"/SysRes/MeineGemeindeSkin/Img/Calendar/calendar_monthforward.gif\" width=\"14\" height=\"10\" alt=\"n&auml;chster Monat\" title=\"n&auml;chster Monat\" border=\"0\"></a></td>\n";
		calHtml += "     </tr>\n";
		calHtml += "    </table>\n";
		
		calHtml += "    <table align=\"center\" border=\"0\" class=\"daytable\" cellspacing=\"5\" cellpadding=\"5\" width=\"0\" style=\"border:1px solid #CECECE;\">\n";
		calHtml += "     <tr class=\"daytitles\">\n";
		// Days of the Week column titles
		for (var i=0;i<days.length;i++) {
			calHtml += "      <td valign=\"top\" align=\"center\"><div style=\"width:15px;\">\n";
			calHtml += "       "+days[i]+"</div></td>\n";
		}
		calHtml += "     </tr>\n";
		var weekNum = 1;
		var rowNum = 0;
		calHtml += "     <tr id=\"week"+weekNum+"\" class=\"cal\" valign=\"top\">\n";
		// Previous Months Days
		calHtml += getPrevMonthDays(monthDate, selectedDate, id);
		// This Months Days
		for (var thisDay=1;thisDay<=selectedDate.monthDays[selectedDate.month];thisDay++) {
			var dateString=parseInt(selectedDate.year.toString()+makeDouble(selectedDate.month.toString())+makeDouble(thisDay.toString()));
			//need to start on monday
			var tmpdate = new myGetDate(selectedDate.month, thisDay, selectedDate.year);
			
			if ( tmpdate.dow == 1 && thisDay != 1 ) {
				calHtml += "     </tr>\n";
				weekNum++;
				calHtml += "     <tr id=\"week"+weekNum+"\" class=\"cal\" valign=\"top\">\n"; }
			// Calendar Days Display
			if (dateString==formDate.date) {
				rowNum = weekNum;
				calHtml += "      <td align=\"center\" ><div class=\"today\" style=\"width:16px;\"><a style=\"text-decoration: none;\" href=\"JavaScript:performSearch(" + selectedDate.month + ", " + thisDay + ", " + selectedDate.year +");\"><b>" + makeDouble(thisDay) + "</b></a>\n"; }
			else if (dateString<todaysDate.date) {
				calHtml += "      <td align=\"center\"><div class=\"lastm\" style=\"width:16px;\">" + thisDay + "\n"; }
			else {
				 calHtml += "      <td align=\"center\"><div class=\"normal\" style=\"width:16px;\"><a style=\"text-decoration: none;\" href=\"JavaScript:performSearch(" + selectedDate.month + ", " + thisDay + ", " + selectedDate.year +");\">" + makeDouble(thisDay) + "</a>\n"; }
			calHtml += "      </div></td>\n";
		}
		// Next Months Days
		calHtml += getTailMonthDays(monthDate,selectedDate,id);
		calHtml += "     </tr>\n";
		calHtml += "    </table>\n";

		calHtml += "</div>\n<hr />";
		if (ns4 == 'false') document.getElementById(calID).innerHTML=calHtml;
	}


	function getPrevMonthDays(monthDate,selectedDate,id) {
		var calHtml='';
		var days=monthDays[selectedDate.prev_month];
		var day;
		var remainingdays = remainingDaysPrev[monthDate.dow];
		
		for (var i=remainingdays;i>0;i--) {
			day = days-i+1;
			calHtml += "      <td align=\"center\"><div class=\"lastm\" style=\"width:16px;\">"+day+"</div></td>\n";
		}
		return calHtml;
	}

	function getTailMonthDays(monthDate,selectedDate,id) {
		var calHtml='';
		
		var lastdow =((selectedDate.monthDays[selectedDate.month] + (monthDate.dow-1))%7);
		var remainingdays = remainingDaysNext[lastdow];
			
		for (var day=1; day<=remainingdays;day++) {
			var nxtmonth = selectedDate.next_month;
			var nxtyear;
			if  (nxtmonth == 1) nxtyear = selectedDate.next_year;
			else nxtyear = selectedDate.year;
			
			calHtml += "      <td align=\"center\"><div class=\"lastm\" style=\"width:16px;\"><a style=\"text-decoration: none; color:#BBBBBB;\" href=\"JavaScript:performSearch(" + nxtmonth + ", " + day + ", " + nxtyear +");\">" + makeDouble(day) + "</a></div></td>\n";
		}
		return calHtml;
	}

	function closeCalendar(evt) {
	var other = (evt) ? (evt.target.id) ? evt.target.id : 0 : 'called';
		if (ns4 == 'true') return;
		for (var field in calendarOpen) {
			if (calendarOpen[field] == 'on' && other != 'cal_last' && other != 'cal_next') {
				document.getElementById(field).innerHTML='';
				calendarOpen[field] = 'off';
			}
		}
	}
