var modulFormTexts = new Array();
modulFormTexts['text.months'] = new Array('Januar', 'Februar', 'M?rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
modulFormTexts['text.shortDayNames'] = new Array('MO', 'DI', 'MI', 'DO', 'FR', 'SA', 'SO');
var calDate = new Date();
function BrowserCheck(){

        pform   = navigator.platform.toLowerCase();
        ver     = navigator.appVersion;


        this.dom     = document.getElementById?1:0;
        this.ie5     = (ver.indexOf("MSIE 5")>-1 && this.dom)||(ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;   // Internet Explorer >= 5.x
        this.macie5  = (ver.indexOf("MSIE 5")>-1 && this.dom && pform.indexOf("mac")>-1)?1:0;   // PPC Internet Explorer 5.x
        this.ie4     = (document.all && !this.dom)?1:0;   // Internet Explorer 4.x
        this.macie4  = (document.all && !this.dom && pform.indexOf("mac")>-1)?1:0;   // PPC Internet Explorer 4.x
        this.ns6     = (this.dom && parseInt(ver) >= 5)?1:0;   // Netscape 6.x
        this.ns4     = (document.layers && !this.dom)?1:0;   // Netscape 4.x
        this.macns4  = (document.layers && !this.dom && pform.indexOf("mac")>-1)?1:0;   // PPC Netscape 4.x
        this.mac = (this.macie5 || this.macie4 || this.macns4)?1:0;

        // zusaetzl. opera abfrage (egal mit welcher user-einstellung)
        browser = navigator.appName.toLowerCase();
        check   = navigator.userAgent.toLowerCase();
        //this.op = check.match("opera")?1:0;
        if (this.op==1) {
            this.ie4=0; this.ie5=0; this.ns4=0; this.ns6=0;
        }
}
var is = new BrowserCheck();

function submitExtendedTripForm() {
  document.forms[0].execInst.value="verifyOnly";
  document.forms[0].submit();
}

function getTRIPParamsForSubmit(usage) {
  var frm = document.forms[0];
  var sParams = "";

  if ( frm.sessionID && frm.sessionID.value != "" ) {
    sParams += "&sessionID=" + frm.sessionID.value;
  }
  if ( frm.requestID && frm.requestID.value != "" ) {
    sParams += "&requestID=" + frm.requestID.value;
  }
  
  var sUsageBack = usage;
  if (sUsageBack == undefined) usage = "destination";
  
  if ( usage == "destination" && frm.place_origin && frm.place_origin.value != "" ) {
    sParams += "&place_origin=" + frm.place_origin.value;
  }
  if ( usage == "destination" && frm.placeState_origin && frm.placeState_origin.value != "" ) {
    sParams += "&placeState_origin=" + frm.placeState_origin.value;
  }
  if ( usage == "destination" && frm.name_origin && frm.name_origin.value != ""  ) {
    sParams += "&name_origin=" + frm.name_origin.value;
  }
  if ( usage == "destination" && frm.nameState_origin && frm.nameState_origin.value != "" ) {
    sParams += "&nameState_origin=" + frm.nameState_origin.value;
  }
  if ( usage == "destination" && frm.type_origin && frm.type_origin.value != ""  ) {
  	var type_origin = frm.type_origin.value;
  	if(type_origin == undefined) {
  		if(frm.type_origin_stop.checked == true) type_origin = "stop";
  		if(frm.type_origin_address.checked == true) type_origin = "address";
  	}	 	
    sParams += "&type_origin=" + type_origin;
  }

  if (sUsageBack == undefined) usage = "origin";

  if ( usage == "origin" && frm.place_destination && frm.place_destination.value != ""  ) {
    sParams += "&place_destination=" + frm.place_destination.value;
  }
  if ( usage == "origin" && frm.placeState_destination && frm.placeState_destination.value != "" ) {
    sParams += "&placeState_destination=" + frm.placeState_destination.value;
  }
  if ( usage == "origin" && frm.name_destination && frm.name_destination.value != ""  ) {
    sParams += "&name_destination=" + frm.name_destination.value;
  }
  if ( usage == "origin" && frm.nameState_destination && frm.nameState_destination.value != "" ) {
    sParams += "&nameState_destination=" + frm.nameState_destination.value;
  }
  if ( usage == "origin" && frm.type_destination && frm.type_destination.value != ""  ) {
  	var type_destination = frm.type_destination.value;
  	if(type_destination == undefined) {
  		if(frm.type_destination_stop.checked == true) type_destination = "stop";
  		if(frm.type_destination_address.checked == true) type_destination = "address";
  	} 
    sParams += "&type_destination=" + type_destination;
  }


  if ( frm.itdTimeHour && frm.itdTimeHour.value != ""  ) {
    sParams += "&itdTimeHour=" + frm.itdTimeHour.value;
  }
  if ( frm.itdTimeMinute && frm.itdTimeMinute.value != ""  ) {
    sParams += "&itdTimeMinute=" + frm.itdTimeMinute.value;
  }
  if ( frm.itdDateDay && frm.itdDateDay.value != ""  ) {
    sParams += "&itdDateDay=" + frm.itdDateDay.value;
  }
  if ( frm.itdDateMonth && frm.itdDateMonth.value != ""  ) {
    sParams += "&itdDateMonth=" + frm.itdDateMonth.value;
  }
  if ( frm.itdDateYear && frm.itdDateYear.value != ""  ) {
    sParams += "&itdDateYear=" + frm.itdDateYear.value;
  }
  if ( frm.itdTripDateTimeDepArr && frm.itdTripDateTimeDepArr.length > 0 ) {
    for (iCount=0; iCount<frm.itdTripDateTimeDepArr.length;iCount++) {
      if (frm.itdTripDateTimeDepArr[iCount].checked) {
         sParams += "&itdTripDateTimeDepArr=" + frm.itdTripDateTimeDepArr[iCount].value;
         break;
      }
    }
  }

  //alert(sParams);
  return sParams;
}

// get plain layer object
function getLayer(id)
{
    // if id is already the layer object just return the id
    if( (typeof id) == "object" ) return id;

        if(is.dom) return document.getElementById(id);
        else if (is.ns4) return findObject(id);
        else return document.all[id];
}

// get style object of layer (for ns4 it's the layer object itself)
function getLayerStyle(id)
{
        if(is.ns4) return getLayer(id);
        else return getLayer(id).style;
}

// rewrite html-code of layer
function writeLayer(id, htmlText)
{
        if(is.ns4)
    {
                layObj = getLayer(id);
                layObj.document.open();
                layObj.document.write(htmlText);
                layObj.document.close();
        }
    else getLayer(id).innerHTML = htmlText;
}

// Anzahl der Tage eines Monats
function getDaysInMonth(dateObj)
{
    var month = dateObj.getMonth();
    var year  = dateObj.getFullYear();

    if (month==0 || month==2 || month==4 || month==6 || month==7 || month==9 || month==11) days=31;
    else if(month==3 || month==5 || month==8 || month==10) days=30;
    else if (month==1)
    {
        if (isLeapYear(year)) days=29;
        else days=28;
    }
    return (days);
}
//prueft ob year schaltjahr
function isLeapYear (year)
{
    if(((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0))return true;
    else return false;
}

function setDate()
{
    var d=document.forms.frm.itdDateDay.value;
    var m=document.forms.frm.itdDateMonth.value;
    var y=document.forms.frm.itdDateYear.value;
    calDate = new Date(y,m-1,d);
    displayCalendar();
}

function setDateToForm()
{
    document.forms.frm.itdDateDay.value = calDate.getDate();
    document.forms.frm.itdDateMonth.value = calDate.getMonth()+1;
    document.forms.frm.itdDateYear.value = calDate.getFullYear();
}


// setzt den Kalender neu und setzt das highlight;
function setCal(dateObj)
{
    calDate = dateObj;
    displayCalendar();// Kalender neu darstellen
}

// setzt das highligh im Kalender;
function setDay(d)
{
    calDate.setDate(d);
    if(is.dom || document.all) setCal(calDate);// nicht fuer ns4
        setDateToForm();
}

//Setzt Kalender um einen Monat zurueck
function setPrevMonth()
{
        var dateNextMonth=new Date(calDate.getFullYear(),calDate.getMonth()-1);
        dateNextMonth.setDate(Math.min(calDate.getDate(),getDaysInMonth(dateNextMonth)));
        setCal(dateNextMonth);
        setDateToForm();

}

//Setzt Kalender um einen Monat vor
function setNextMonth()
{
        var dateNextMonth=new Date(calDate.getFullYear(),calDate.getMonth()+1);
        dateNextMonth.setDate(Math.min(calDate.getDate(),getDaysInMonth(dateNextMonth)));
        setCal(dateNextMonth);
        setDateToForm();
}

//Funktion die den kalender darstellt und den Tag markiert
function displayCalendar()
{

    var m = calDate.getMonth();
    var y = calDate.getFullYear();
    var d = calDate.getDate();

    var date1        = new Date (y,m,1);
    var firstOfMonth = date1.getDay();
    var daysInMonth  = getDaysInMonth(calDate);
    var days         = daysInMonth + firstOfMonth;
    var nDay         = 1;
    var strMonth     = (modulFormTexts['text.months'][m]) + "&nbsp;" + y;
    //Tabellenkopf
    var strCalTable = "<table cellspacing='0' cellpadding='0' border='0'>"
    strCalTable    += "<TR><TD width='19'><IMG src='img/trans.gif' width='19' height='1'></TD><TD width='19'><IMG src='img/trans.gif' width='19' height='1'></TD><TD width='19'><IMG src='img/trans.gif' width='19' height='1'></TD><TD width='19'><IMG src='img/trans.gif' width='19' height='1'></TD><TD width='19'><IMG src='img/trans.gif' width='20' height='1'></TD><TD width='20'><IMG src='img/trans.gif' width='20' height='1'></TD><TD width='20'><IMG src='img/trans.gif' width='20' height='1'></TD></TR><tr>";
    //Leiste mit den Tagen
    for(var k=0;k<7;k++)
    {
        strCalTable +="<td class='calBold'><center>"+modulFormTexts['text.shortDayNames'][k]+"</center></td>";
    }

    // die ersten leeren tds
    for (i = 0; i < firstOfMonth-1; i++)  // firstOfMonth-1 : -1 = deutsche Z?hlweise bei Tagen (MO - SO)
    {
        if ( i%7 == 0 ) strCalTable += "</tr><tr>";
        strCalTable += "<td>&nbsp;</td>";
    }
    if ( firstOfMonth-1 < 0 ) {  // deutsche Z?hlweise bei Tagen (MO - SO)
      strCalTable += "</tr><tr>";
      strCalTable += "<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>";
    }
    // die besetzten tds
    for (i = firstOfMonth-1; i < days; i++)  // firstOfMonth-1 : -1 = deutsche Z?hlweise bei Tagen (MO - SO)
    {
        if ( i%7 == 0 ) strCalTable += "</tr><tr>";
        strCalTable += "<td align='center' id='t"+nDay+"'";

        colorClass = "";
        if(nDay == d && (is.dom || document.all)) {
          strCalTable += " class='hellgrau'>";
          colorClass = "class='calBoldHead'";
        } else {
          strCalTable += ">";
        }

        strCalTable += "<a "+colorClass+" onfocus='this.blur()' href='javascript://'";

        if(nDay == d  && (is.dom || document.all)) strCalTable += " class='calNormal' ";
        else          strCalTable += " class='calNormal' ";

        if (nDay <= daysInMonth) {    // deutsche Z?hlweise bei Tagen (MO - SO)
            strCalTable += "id='d"+nDay+"' onmouseup='setDay(\""+nDay+"\");'>"+nDay+"</a></td>";
        } else {
            strCalTable += "id='d"+nDay+"' onmouseup='setDay(\""+nDay+"\");'>&nbsp;</a></td>";
        }
        nDay++;
    }

  // die restlichen tds
    for (i=days; i<42; i++)
    {
        if ( i%7 == 0 ) strCalTable += "</tr><tr>";
        strCalTable += "<td>&nbsp;</td>";
    }
    strCalTable += "</tr></table>";
    strMonth = '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="center"><span  class="calBoldHead">' + strMonth+ '</span></td></tr></table>';

    writeLayer("calendarDays", strCalTable);
    writeLayer("calendarMonthYear", strMonth);

}

function setVisibleCalendar(portalInfo, bVisible, closeText, altText) {
   if(bVisible == 'true') {
	   var strCalTable = '<table cellspacing="0" cellpadding="0" border="0">';
	   strCalTable += '         <tr>';
	   strCalTable += '             <td class="hellgrau"><img src="img/trans.gif" width="1" height="1"/></td>';
	   strCalTable += '             <td class="hellgrau"><img src="img/trans.gif" width="16" height="1"/></td>';
	   strCalTable += '             <td class="hellgrau"><img src="img/trans.gif" height="1"/></td>';
	   strCalTable += '             <td class="hellgrau"><img src="img/trans.gif" width="16" height="1"/></td>';
	   strCalTable += '             <td class="hellgrau"><IMG src="img/trans.gif" width="1" height="1"/></td>';
	   strCalTable += '         </tr>';
	   strCalTable += '         <tr>';
	   strCalTable += '             <td class="hellgrau"><img src="img/trans.gif" width="1" height="1"/></td>';
	   strCalTable += '             <td align="center" class="hellgrau"><a href="javascript://" onmouseup="setPrevMonth();"><img id="previousYear2" src="img/'+portalInfo+'pfeil_links.gif" border="0"/></a></td>';
	   strCalTable += '             <td align="center" class="hellgrau"><div id="calendarMonthYear"></div></td>';
	   strCalTable += '             <td align="center" class="hellgrau"><a href="javascript://" onmouseup="setNextMonth();"><img id="previousYear4" src="img/'+portalInfo+'pfeil_rechts.gif" border="0"/></a></td>';
	   strCalTable += '             <td class="hellgrau"><img src="img/trans.gif" width="1" height="1"/></td>';
	   strCalTable += '         </tr>';
	   strCalTable += '         <tr>';
	   strCalTable += '             <td class="hellgrau" colspan="5"><img src="img/trans.gif" width="1" height="1"/></td>';
	   strCalTable += '         </tr>';
	   strCalTable += '         <tr>';
	   strCalTable += '             <td class="hellgrau" width="1"><img src="img/trans.gif" width="1" height="1"/></td>';
	   strCalTable += '             <td colspan="3" align="center"><div id="calendarDays"></div></td>';
	   strCalTable += '             <td class="hellgrau" width="1"><img src="img/trans.gif" width="1" height="1"/></td>';
	   strCalTable += '         </tr>';
	   strCalTable += '         <tr>';
	   strCalTable += '             <td class="hellgrau" colspan="5"><img src="img/trans.gif" width="1" height="1"/><span class="calBoldHead" style="float:right; padding-bottom:2px; padding-right:5px; cursor:pointer;" onClick="setVisibleCalendar(\''+portalInfo+'\',\'false\',\''+closeText+'\', \''+altText+'\');">['+closeText+']</span></td>';
	   strCalTable += '         </tr>';
	   strCalTable += '     </table>';
	
	   writeLayer("calendar", strCalTable);
	   setDate();
  	}
  	else {
  	  var calendarIcon = '<A HREF="javascript:setVisibleCalendar(\''+portalInfo+'\', \'true\', \''+closeText+'\', \''+altText+'\');"><IMG SRC="img/kalender.gif" height="19px" alt="'+altText+'" title="'+altText+'" style="vertical-align:middle;"/></A>';
	  writeLayer("calendar", calendarIcon);
	}
}

function setInvisibleCalendar(portalInfo) {
	alert(portalInfo);
	var calendarIcon = '<A HREF="javascript:setVisibleCalendar('+portalInfo+');"><IMG SRC="img/kalender.gif" height="19px" alt="&textID_calendar_alt;" title="&textID_calendar_alt;" style="vertical-align:middle;"/></A>';
	writeLayer("calendar", calendarIcon);
}

function selectRadioButton(evt, source) {
	if(evt.keyCode == 72) {
		if(source == 'type_origin') {
			document.frm.type_origin[0].checked = true;
		}
		if(source == 'type_destination') {
			document.frm.type_destination[0].checked = true;
		}
	}
	if(evt.keyCode == 83) {
		if(source == 'type_origin') {
			document.frm.type_origin[1].checked = true;
		}
		if(source == 'type_destination') {
			document.frm.type_destination[1].checked = true;
		}
	}
}

function setVisibleStopSequence(routeNumber, mode) {
	element = document.getElementById("stopSequence_"+routeNumber);	
	element.style.visibility = mode;
}

function setVisiblePrintOptions(mode, index) {
	element = document.getElementById("printOptions"+index);	
	element.style.visibility = mode;
}

function showStopSequencePopup(routeNumber, style) {
    var stylesheet = 'efaportal';
    if(style != 'efaportal_') {
       stylesheet = 'efaneutral';
    }
	var content = document.getElementById('stopSequence_'+routeNumber).innerHTML;
	var newWin = window.open();
	//with (newWin.document) {
	//	open();
	//	write("<link rel='stylesheet' type='text/css' href='styles/efaportal.css'/><script type='text/javascript' src='kalender.js'></script>");
	//	var content = document.getElementById('stopSequence_'+routeNumber).innerHTML;
	//	write(content);
	//	getElementById('popupCloseIcon').onclick = function(){newWin.close();};
	//	getElementById('popupCloseButton').onclick = function(){newWin.close();};
	//	getElementById('popupPrintButton').style.visibility = 'hidden';	
	
	newWin.document.open();
	//alert("open");
	//newWin.document.write("<html><link rel='stylesheet' type='text/css' href='styles/"+stylesheet+".css'/><script type='text/javascript' src='kalender.js'></script><body>");				
	//alert("write 1");
	newWin.document.write(content);
	//alert("write 2");
	//newWin.document.write("</body></html>");
	//alert("write 3");
	newWin.document.close();
	//alert("close");

	
}

function ajaxGetWeatherData(usage, x, y, hour, year, month, day, language) {
	var xmlHttp;
	//alert(usage + ' ' + x + ' ' + y + ' ' + hour + ' ' + language);
	try
	  {
	  // Firefox, Opera 8.0+, Safari
	  xmlHttp=new XMLHttpRequest();
	  }
	catch (e)
	  {
	  // Internet Explorer
	  try
	    {
	    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	    }
	  catch (e)
	    {
	    try
	      {
	      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	      }
	    catch (e)
	      {
	      alert("Your browser does not support AJAX!");
	      return false;
	      }
	    }
	  }
	  
	   xmlHttp.onreadystatechange=function()
	    {
	    if(xmlHttp.readyState==4)
	      {
	      document.getElementById('weather_'+usage).innerHTML=xmlHttp.responseText;
	      }
	    }
	  xmlHttp.open("GET","wetter.jsp?x="+x+"&y="+y+"&hour="+hour+"&year="+year+"&month="+month+"&day="+day+"&language="+language);
	  xmlHttp.send(null); 
}

/*
        <table cellspacing="0" cellpadding="0" border="0">
            <tr>
                <td class="hellgrau"><img src="img/trans.gif" width="1" height="1"/></td>
                <td class="hellgrau"><img src="img/trans.gif" width="16" height="1"/></td>
                <td class="hellgrau"><img src="img/trans.gif" height="1"/></td>
                <td class="hellgrau"><img src="img/trans.gif" width="16" height="1"/></td>
                <td class="hellgrau"><IMG src="img/trans.gif" width="1" height="1"/></td>
            </tr>
            <tr>
                <td class="hellgrau"><img src="img/trans.gif" width="1" height="1"/></td>
                <td align="center" class="hellgrau"><a href="javascript://" onmouseup="setPrevMonth();"><img id="previousYear2" src="img/pfeil_links.gif" border="0"/></a></td>
                <td align="center" class="hellgrau"><div id="calendarMonthYear"></div></td>
                <td align="center" class="hellgrau"><a href="javascript://" onmouseup="setNextMonth();"><img id="previousYear4" src="img/pfeil_rechts.gif" border="0"/></a></td>
                <td class="hellgrau"><img src="img/trans.gif" width="1" height="1"/></td>
            </tr>
            <tr>
                <td class="hellgrau" colspan="5"><img src="img/trans.gif" width="1" height="1"/></td>
            </tr>
            <tr>
                <td class="hellgrau" width="1"><img src="img/trans.gif" width="1" height="1"/></td>
                <td colspan="3" align="center"><div id="calendarDays"></div></td>
                <td class="hellgrau" width="1"><img src="img/trans.gif" width="1" height="1"/></td>
            </tr>
            <tr>
                <td class="hellgrau" colspan="5"><img src="img/trans.gif" width="1" height="1"/></td>
            </tr>
        </table>
    </div>
*/
