calDateFormat    = "DD/MM/YY";
var todayDay =0;

var isNav = false;
var isIE  = false;
if (navigator.appName == "Netscape") {
    isNav = true;
}
else {
    isIE = true;
}
if(isNav == true){
  selectedLanguage = navigator.language;
  }else{
  selectedLanguage = navigator.userLanguage;
}

function setDateField(dateField) {
        calDateField = dateField;
        inDate = dateField.value;
        setInitialDate();
        calDocTop    = buildTopCalFrame();
    	calDocBottom = buildBottomCalFrame();
}

function setDateFields(dayField, monthField, yearField, lang) {
	selectedLanguage = lang;
	buildCalParts();
	calDateDay = dayField;
        calDateMonth = monthField;
        calDateYear = yearField;
        inDate = monthField.value+"/"+dayField.value+"/20"+yearField.value;

        setInitialDate();
        calDocTop    = buildTopCalFrame();
    	calDocBottom = buildBottomCalFrame();
}

function setInitialDate() {
        calDate = new Date(inDate);
        if (isNaN(calDate)) {
        	calDate = new Date();
    	}
        calDay  = calDate.getDate();
        calDate.setDate(1);
}


function buildTopCalFrame() {
	var nextYear = calDate.getFullYear() + 1;
        var calDoc =
		"<form name='calControl' onSubmit='return false;'>" +
		"<div class='CalenderSelect'>" +
		getMonthSelect() +
		"<select name='year' id='year' class='Caljahr'>" +
		"<option value='" + calDate.getFullYear() +"'>" + calDate.getFullYear() + "</option>" +
		<!--"<option value='" + nextYear +"' onclick='parent.opener.setYear()'>" + nextYear + "</option>" +-->
		"</select>" +
		"</div><div class='clear'>&nbsp;</div>" +
		"</form></div><br/>" ;
    	return calDoc;
}

function buildBottomCalFrame() {
    var calDoc = calendarBegin;
    month   = calDate.getMonth();
    year    = calDate.getFullYear();
    day     = calDay;
    var i   = 0;
    var days = getDaysInMonth();
    if (day > days) {
        day = days;
    }
    var firstOfMonth = new Date (year, month, 1);
    var startingPos  = firstOfMonth.getDay();
    days += startingPos;
        var columnCount = 0;
        for (i = 0; i < startingPos; i++) {
        calDoc += blankCell;
	columnCount++;
    }
    var currentDay = 0;
    var dayType    = "calen";
    //var dateSet = 0;
        for (i = startingPos; i < days; i++) {
	
		currentDay = i-startingPos+1;
		if (currentDay == day) 
			dayType = "calen_activ";
		else 
		    dayType = "calen";
		calDoc += "<td class='" + dayType + "'>" +
			  "<a href='javascript:parent.opener.returnDate(" + currentDay + ")'>" + currentDay + "</a></td>";
		columnCount++;
			if (columnCount % 7 == 0) {
		    calDoc += "</tr><tr>";
		}
     	}
        for (i=days; i<42; i++)  {
        calDoc += blankCell;
	columnCount++;
                if (columnCount % 7 == 0) {
            calDoc += "</tr>";
            if (i<41) {
                calDoc += "<tr>";
            }
        }
    }
        calDoc += calendarEnd;
        return calDoc;
}

function writeCalendar() {
        calDocTop = buildTopCalFrame();
        calDocBottom = buildBottomCalFrame();
        top.newWin.document.open();
        top.newWin.document.write(
        	"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>" +
		"<html><head><title>3-Loewen-Takt - Elektronische Fahrplanauskunft</title>" +
		"<meta http-equiv='content-type' content='text/html; charset=iso-8859-1' />" +
		"<meta name='Pragma' content='no-cache' />" +
		"<meta name='Cache-Control' content='no-cache, must-revalidate' />" +
		"<meta name='Cache-Control' content='post-check=0, pre-check=0' />" +
		"<meta name='date' content='' />" +
		"<meta name='Last-Modified' content='2006-12-14' />" +
		"<meta name='robots' content='follow' />" +
		"<meta name='revisit-after' content='1 day' />" +
		"<meta name='language' content='de' />" +
		"<meta name='AUTHOR' content='3-Loewen-Takt' />" +
		"<meta name='COPYRIGHT' content='3-Loewen-Takt' />" +
		"<meta name='PUBLISHER' content='3-Loewen-Takt' />" +
		"<meta name='DESCRIPTION' lang='d' content='3-Loewen-Takt - Busse und Bahnen sowie Freizeit- und Erlebniskultur in Verbindung mit oeffentlichem Nahverkehr' />" +
		"<meta content='3-Loewen-Takt - Busse und Bahnen sowie Freizeit- und Erlebniskultur in Verbindung mit oeffentlichem Nahverkehr' name='Abstract' />" +
		"<meta name='KEYWORDS' lang='d' content='EFA, Fahrplanauskunft, Bus, Busse, Bahn, Verkehrsmittel, Baden W&amp;uuml;rttemberg, Zug, 3-L&amp;ouml;wen Takt, 3-L&amp;ouml;wen-Club, NVBW, Fahrkarten, Nahverkehr, Tickets, Verkehrsverbund aktuell, 3-L&amp;ouml;wen-Magazin, rail &amp; relax, &amp;Ouml;PNV,  Veranstaltungen, SPNV' />" +
		"<meta content='3-Loewen-Takt - Busse und Bahnen sowie Freizeit- und Erlebniskultur in Verbindung mit oeffentlichem Nahverkehr' name='Title' />" +
		"<meta name='content-language' content='de' />" +
		"<link rel='shortcut icon' type='image/x-icon' href='_ima/favicon.ico' />" +
		"<link rel='stylesheet' media='screen' type='text/css' href='css/form_style.css' />" +
		"</head><body  style='padding:5px'><div id='content_cal'>");
    	top.newWin.document.write(calDocTop);
    	top.newWin.document.write(calDocBottom);
    	top.newWin.document.write("</script></div></body></html>");
    	top.newWin.document.close();
}

function setToday() {
        calDate = new Date();
        var month = calDate.getMonth();
    	var year  = calDate.getFullYear();
    	currentDay = calDate.getDate();
        top.newWin.document.calControl.month.selectedIndex = month;
        top.newWin.document.calControl.year.value = year;
        top.newWin.parent.opener.returnDate(currentDay);
        writeCalendar();
}

function setYear() {
	var year  = top.newWin.document.calControl.year.value;
        if (isFourDigitYear(year)) {
        	calDate.setFullYear(year);
        	writeCalendar();
   	}
   	 else {
        	top.newWin.document.calControl.year.focus();
        	top.newWin.document.calControl.year.select();
    	}
}

function setCurrentMonth() {
    	var month = top.newWin.document.calControl.month.selectedIndex;
    	calDate.setMonth(month);
    	writeCalendar();
}

function setPreviousMonth() {
    var year  = top.newWin.document.calControl.year.value;
    if (isFourDigitYear(year)) {
        var month = top.newWin.document.calControl.month.selectedIndex;
                if (month == 0) {
            month = 11;
            if (year > 1000) {
                year--;
                calDate.setFullYear(year);
                top.newWin.document.calControl.year.value = year;
            }
        }
        else {
            month--;
        }
        calDate.setMonth(month);
        top.newWin.document.calControl.month.selectedIndex = month;
        writeCalendar();
    }
}
function setNextMonth() {
    var year = top.newWin.document.calControl.year.value;
    if (isFourDigitYear(year)) {
        var month = top.newWin.document.calControl.month.selectedIndex;
                if (month == 11) {
            month = 0;
            year++;
            calDate.setFullYear(year);
            top.newWin.document.calControl.year.value = year;
        }
        else {
            month++;
        }
        calDate.setMonth(month);
        top.newWin.document.calControl.month.selectedIndex = month;
        writeCalendar();
    }
}
function setNextYear() {
    var year  = top.newWin.document.calControl.year.value;
    if (isFourDigitYear(year)) {
        year++;
        calDate.setFullYear(year);
        top.newWin.document.calControl.year.value = year;
        writeCalendar();
    }
}
function getDaysInMonth()  {
    var days;
    var month = calDate.getMonth()+1;
    var year  = calDate.getFullYear();
        if (month==1 || month==3 || month==5 || month==7 || month==8 ||
        month==10 || month==12)  {
        days=31;
    }
        else if (month==4 || month==6 || month==9 || month==11) {
        days=30;
    }
        else if (month==2)  {
        if (isLeapYear(year)) {
            days=29;
        }
                else {
            days=28;
        }
    }
    return (days);
}
function isLeapYear (Year) {
    if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
        return (true);
    }
    else {
        return (false);
    }
}
function isFourDigitYear(year) {
    if (year.length != 4) {
        top.newWin.document.calControl.year.value = calDate.getFullYear();
        top.newWin.document.calControl.year.select();
        top.newWin.document.calControl.year.focus();
    }
    else {
        return true;
    }
}
function getMonthSelect() {
        if (selectedLanguage == "fr") {
        monthArray = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
                               'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
    }
        else if (selectedLanguage == "de") {
        monthArray = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
                               'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
    }
        else {
        monthArray = new Array('January', 'February', 'March', 'April', 'May', 'June',
                               'July', 'August', 'September', 'October', 'November', 'December');
    }
        var activeMonth = calDate.getMonth();
        monthSelect = "<select class='Calmon' name='month' onChange='parent.opener.setCurrentMonth()'>";
        for (var i=0; i < monthArray.length; i++) {
                if (i == activeMonth) {
            monthSelect += "<option selected='selected'>" + monthArray[i] + "</option>\n";
        }
        else {
            monthSelect += "<option>" + monthArray[i] + "</option>\n";
        }
    }
    monthSelect += "</select>";
        return monthSelect;
}
function createWeekdayList() {
        if (selectedLanguage == "fr") {
        weekdayList  = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
        weekdayArray = new Array('Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa');
    }
        else if (selectedLanguage == "de") {
        weekdayList  = new Array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
        weekdayArray = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
    }
    else {
        weekdayList  = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
        weekdayArray = new Array('Su','Mo','Tu','We','Th','Fr','Sa');
    }
        var weekdays = "<tr>";
        for (var i=0; i < weekdayArray.length; i++) {
        weekdays += "<th class='calen'>" + weekdayArray[i] + "</th>";
    }
    weekdays += "</tr>";
        return weekdays;
}

function createToday() {
  if (selectedLanguage == "fr") 
    today = 'Aujourd\'hui';
  else if (selectedLanguage == "de") 
    today = 'Heute';    
  else 
    today = 'Today';   
  return today;
}

function buildCalParts() {
  weekdays = createWeekdayList();
  blankCell = "<td class='calen'>&nbsp;</td>";
  calendarBegin = "<table  cellpadding='0' class='tab_calen' cellspacing='0'>" + weekdays + "<tr>";
  calendarEnd = "</table>" +
            	"<div class='CalenderButtons'>" +
 	    	"<div class='buttonRight'><input class='button' type='button' name='nextMonth' value=' > ' onclick='parent.opener.setNextMonth()'/></div>"+
 	    	"<div class='buttonLeft'><input class='button' type='button' name='previousMonth' value=' < ' onclick='parent.opener.setPreviousMonth()'/></div>" +
 	    	"<div class='buttonMiddle'><input class='button' type='button' name='today' value='"+ createToday()+"' onClick='parent.opener.setToday()'/></div>" +     
	    	"</div>" +        
	    	"<div class='clear'>&nbsp;</div>";
}

function jsReplace(inString, find, replace) {
    var outString = "";
    if (!inString) {
        return "";
    }
        if (inString.indexOf(find) != -1) {
                t = inString.split(find);
                return (t.join(replace));
    }
    else {
        return inString;
    }
}

function makeTwoDigit(inValue) {
    var numVal = parseInt(inValue, 10);
        if (numVal < 10) {
                return("0" + numVal);
    }
    else {
        return numVal;
    }
}

function returnDate(inDay)
{
        calDate.setDate(inDay);
        var day           = calDate.getDate();
    var month         = calDate.getMonth()+1;
    var year          = calDate.getFullYear();
    var monthString   = monthArray[calDate.getMonth()];
    var monthAbbrev   = monthString.substring(0,3);
    var weekday       = weekdayList[calDate.getDay()];
    var weekdayAbbrev = weekday.substring(0,3);
    outDate = calDateFormat;
    if (calDateFormat.indexOf("DD") != -1) {
        day = makeTwoDigit(day);
        outDate = jsReplace(outDate, "DD", day);
    }
        else if (calDateFormat.indexOf("dd") != -1) {
        outDate = jsReplace(outDate, "dd", day);
    }
        if (calDateFormat.indexOf("MM") != -1) {
        month = makeTwoDigit(month);
        outDate = jsReplace(outDate, "MM", month);
    }
        else if (calDateFormat.indexOf("mm") != -1) {
        outDate = jsReplace(outDate, "mm", month);
    }
    if (calDateFormat.indexOf("yyyy") != -1) {
        outDate = jsReplace(outDate, "yyyy", year);
    }
        else if (calDateFormat.indexOf("yy") != -1) {
        var yearString = "" + year;
        var yearString = yearString.substring(2,4);
        outDate = jsReplace(outDate, "yy", yearString);
    }
        else if (calDateFormat.indexOf("YY") != -1) {
        outDate = jsReplace(outDate, "YY", year);
    }
        if (calDateFormat.indexOf("Month") != -1) {
        outDate = jsReplace(outDate, "Month", monthString);
    }
        else if (calDateFormat.indexOf("month") != -1) {
        outDate = jsReplace(outDate, "month", monthString.toLowerCase());
    }
        else if (calDateFormat.indexOf("MONTH") != -1) {
        outDate = jsReplace(outDate, "MONTH", monthString.toUpperCase());
    }
        if (calDateFormat.indexOf("Mon") != -1) {
        outDate = jsReplace(outDate, "Mon", monthAbbrev);
    }
        else if (calDateFormat.indexOf("mon") != -1) {
        outDate = jsReplace(outDate, "mon", monthAbbrev.toLowerCase());
    }
        else if (calDateFormat.indexOf("MON") != -1) {
        outDate = jsReplace(outDate, "MON", monthAbbrev.toUpperCase());
    }
        if (calDateFormat.indexOf("Weekday") != -1) {
        outDate = jsReplace(outDate, "Weekday", weekday);
    }
        else if (calDateFormat.indexOf("weekday") != -1) {
        outDate = jsReplace(outDate, "weekday", weekday.toLowerCase());
    }
        else if (calDateFormat.indexOf("WEEKDAY") != -1) {
        outDate = jsReplace(outDate, "WEEKDAY", weekday.toUpperCase());
    }
        if (calDateFormat.indexOf("Wkdy") != -1) {
        outDate = jsReplace(outDate, "Wkdy", weekdayAbbrev);
    }
        else if (calDateFormat.indexOf("wkdy") != -1) {
        outDate = jsReplace(outDate, "wkdy", weekdayAbbrev.toLowerCase());
    }
        else if (calDateFormat.indexOf("WKDY") != -1) {
        outDate = jsReplace(outDate, "WKDY", weekdayAbbrev.toUpperCase());
    }
    calDateDay.value= outDate.substring(0,2);
    calDateMonth.value = outDate.substring(3,5);
    calDateYear.value = outDate.substring(8,10);
        top.newWin.close();
}

function initDateTime(dayField, monthField, yearField, hourField, minuteField)
{
    if(hourField == null || minuteField == null){
    		inDate = monthField.value+"/"+dayField.value+"/20"+yearField.value;
		}else{
        inDate = monthField.value+"/"+dayField.value+"/20"+yearField.value+" "+hourField.value+":"+minuteField.value;
		}
	    setInitialDate();
	    var day           = calDay;
	    var month         = calDate.getMonth()+1;
	    var year          = calDate.getFullYear();
	    var yearString 		= "" + year;
	    var yearString 		= yearString.substring(2,4);
		var hour 			 	  = calDate.getHours();
		var minutes 			= calDate.getMinutes();
		hour = makeTwoDigit(hour);
		minutes = makeTwoDigit(minutes);
		day = makeTwoDigit(day);
    		month = makeTwoDigit(month);
		dayField.value = day;
		monthField.value = month;
		yearField.value = yearString;
		if(hourField != null && minuteField != null){
		hourField.value = hour;
		minuteField.value = minutes;
		}
}
