function disable_enable_ende() {
	if (document.getElementById('disable_enable_ende_check').checked == true) {
			document.getElementById('datum_e_tag').disabled=false;
			document.getElementById('datum_e_jahr').disabled=false;
			document.getElementById('datum_e_monat').disabled=false;
			document.getElementById('zeit_e_h').disabled=false;
			document.getElementById('zeit_e_min').disabled=false;
	} else {
			document.getElementById('datum_e_tag').disabled=true;
			document.getElementById('datum_e_jahr').disabled=true;
			document.getElementById('datum_e_monat').disabled=true;
			document.getElementById('zeit_e_h').disabled=true;
			document.getElementById('zeit_e_min').disabled=true;
	};
}



function update_reiter(linkurl, reiter, reiter_array, path) {

// inaktive Elemente zurücksetzen
for (i=0; i< reiter_array.length; i++) {
 document.getElementById(reiter_array[i]).style.backgroundImage = 'url(../2008_gfx/navi_bg.gif)';
 document.getElementById(reiter_array[i]).style.color = '#777';
}


// aktives Element hervorheben
 document.getElementById(reiter).style.backgroundImage = 'url(../2008_gfx/navi_bg_hover.gif)';
 document.getElementById(reiter).style.color = '#fff';

  AsyncJsAndXml('GET',linkurl,path);
}

function update_this_reiter(linkurl) {
  AsyncJsAndXml('GET',linkurl,'reiter_anzeige');
}
function update_this_reiter2(linkurl) {
  AsyncJsAndXml('GET',linkurl,'reiter_anzeige2');
}
function update_mails() {
  AsyncJsAndXml('GET','content/intern/newsletter/content/reload_adressen.php','update_mail_anzeige');
}

/*
** Andis eigene ajax function ;)
*/
function AsyncJsAndXml(form_action,uri,domID,postParams,async) {
//if(req.readyState) { setTimeout(AsyncJsAndXml(form_action,uri,domID,postParams),100); return; }
if (typeof postParams == "undefined") { postParams = null; }
if (typeof async != "bool") { async = true; }

// TEIL A LADEN----------------------------
	try {
			req = new XMLHttpRequest();
			} catch(e) {
			try {
				req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				req = false;
			}
				req.overrideMimeType('text/xml');
		}
	}

 if (req) {
     req.open(form_action, uri, async);
     //req.overrideMimeType('text/xhtml; charset=iso-8859-1');
     //req.setRequestHeader("Content-Type","text/html; charset=iso-8859-1");
     if(form_action == 'POST'){
      //Send the proper header information along with the request
      req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      req.setRequestHeader("Content-length", postParams.length);
      req.setRequestHeader("Connection", "close");
     }
     req.onreadystatechange = function () {
         if (req.readyState == 4  && req.status == 200) {
	     document.getElementById(domID).innerHTML = req.responseText;
	     if(typeof postParams == "string" && postParams.indexOf('F_Org_Frueh_ID')>0) document.getElementById('tmpHtml').innerHTML = req.responseText;
         }
     }
     req.send(postParams);
 }
}

/* concurrent ajax requests can be handled by this. use by intern/reservierung.php
   TODO: get rid of AsyncJsAndXml()
*/
function AJAXInteraction(uri, callback) {
    var req = init();
    req.onreadystatechange = processRequest;

    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }

    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
	  if (callback) callback(req.responseText);
        }
      }
    }

    this.doGet = function() {
      req.open("GET", uri, true);
      //req.overrideMimeType('text/xhtml; charset=iso-8859-1');
      req.send(null);
    }

    this.doPost = function(postParams) {
      req.open("POST", uri, true);
      req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      req.setRequestHeader("Content-length", postParams.length);
      req.setRequestHeader("Connection", "close");
      req.send(postParams);
    }
}

function makeRequest(form_action,uri,domID,postParams) {
  var ai = new AJAXInteraction(uri, function(responseText) {
    document.getElementById(domID).innerHTML = responseText;});
  if(form_action.toUpperCase() == 'GET') ai.doGet();
  if(form_action.toUpperCase() == 'POST') ai.doPost(postParams);
}



/*  updateFbTable used by intern/flugbetrieb.php
    IE innerHTML horror story:
    The property is read/write for all objects except the following, for which it is read-only: COL, COLGROUP, FRAMESET, HEAD, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR. The property has no default value.”
    http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx
*/
function updateFbTable(currentRowId,fb_id_toProcess,user) {
  var lastId = document.getElementById('tmpId').innerHTML;
  document.getElementById('tmpId').innerHTML = currentRowId;
  var currentRow = document.getElementById(currentRowId);
  var lastRowContent = document.getElementById('tmpHtml').innerHTML;
  document.getElementById('tmpHtml').innerHTML = currentRow.innerHTML;
  if((lastId != currentRowId) && (lastId != 'firstClick')) {
    document.getElementById(lastId).style.height = document.getElementById(currentRowId).style.height
    document.getElementById(lastId).innerHTML = lastRowContent;
  }
  //document.getElementById(currentRowId).style.height = "60px;";
  var obj = document.getElementById(currentRowId)
  if(obj && obj.style) obj.style.height = "70px";

  AsyncJsAndXml('GET','/content/intern/flugbetrieb.php?ajax=1&fb_id_toProcess='+fb_id_toProcess+'&aktualisiert_von='+user,currentRowId);
  //document.getElementById('tmpId').innerHTML = currentRowId;
  /*document.getElementById('tmpHtml').innerHTML = document.getElementById(currentRowId).innerHTML;
  document.getElementById('tmpId').innerHTML = currentRowId;
   */
}
/* editFb used by intern/flugbetrieb.php
*/
function editFb(currentRowId,fb_id_toProcess,myform,aktualisiert_von) {
  AsyncJsAndXml("POST","/content/intern/flugbetrieb.php", currentRowId,encodeURI("ajax=1&ID="+fb_id_toProcess+"&db_table=int_fb&F_Org_Frueh_ID="+myform.F_Org_Frueh_ID.options[myform.F_Org_Frueh_ID.selectedIndex].value+"&F_Org_Nach_ID="+myform.F_Org_Nach_ID.options[myform.F_Org_Nach_ID.selectedIndex].value+"&F_WF_Frueh_ID="+myform.F_WF_Frueh_ID.options[+myform.F_WF_Frueh_ID.selectedIndex].value+"&F_WF_Nach_ID="+myform.F_WF_Nach_ID.options[myform.F_WF_Nach_ID.selectedIndex].value+"&aktualisiert_von="+aktualisiert_von));
  document.getElementById(currentRowId).innerHTML = '<div class="tablecell"><p class="erfolg">Bitte warten, die Daten werden verabeitet.</p></div>';
  document.getElementById(currentRowId).style.height = "31px";
}
/* editFi like editFb, just different php file: fluglehrer.php */
function editFi(currentRowId,fb_id_toProcess,myform) {
  //AsyncJsAndXml("POST","/content/intern/fluglehrer.php", currentRowId,encodeURI("ajax=1&ID="+fb_id_toProcess+"&db_table=int_fb&F_FI_GS_ID="+myform.F_FI_GS_ID.options[myform.F_FI_GS_ID.selectedIndex].value+"&F_FI_FB_ID="+myform.F_FI_FB_ID.options[myform.F_FI_FB_ID.selectedIndex].value)); // +"&F_FI_IS_ID="+myform.F_FI_IS_ID.options[+myform.F_FI_IS_ID.selectedIndex].value
  // make ajax request and save result to currentRowId AND tmpHtml
    var ai = new AJAXInteraction("/content/intern/fluglehrer.php", function(responseText) {
      document.getElementById(currentRowId).innerHTML = responseText; document.getElementById('tmpHtml').innerHTML = responseText;});
    ai.doPost(encodeURI("ajax=1&ID="+fb_id_toProcess+"&db_table=int_fb&F_FI_GS_ID="+myform.F_FI_GS_ID.options[myform.F_FI_GS_ID.selectedIndex].value+"&F_FI_FB_ID="+myform.F_FI_FB_ID.options[myform.F_FI_FB_ID.selectedIndex].value));
  document.getElementById(currentRowId).innerHTML = '<div class="tablecell"><p class="erfolg">Bitte warten, die Daten werden verabeitet.</p></div>';
  document.getElementById(currentRowId).style.height = "31px";
}
/* updateFiTable like updateFbTable, just different php file: fluglehrer.php */
function updateFiTable(currentRowId,fb_id_toProcess,user) {
  var lastId = document.getElementById('tmpId').innerHTML;
  document.getElementById('tmpId').innerHTML = currentRowId;
  var currentRow = document.getElementById(currentRowId);
  var lastRowContent = document.getElementById('tmpHtml').innerHTML;
  document.getElementById('tmpHtml').innerHTML = currentRow.innerHTML;
  if((lastId != currentRowId) && (lastId != 'firstClick')) {
    document.getElementById(lastId).style.height = document.getElementById(currentRowId).style.height
    document.getElementById(lastId).innerHTML = lastRowContent;
  }
  var obj = document.getElementById(currentRowId)
  if(obj && obj.style) obj.style.height = "70px";
  AsyncJsAndXml('GET','/content/intern/fluglehrer.php?ajax=1&fb_id_toProcess='+fb_id_toProcess,currentRowId);
}

/* editBs baustunden/baustunden.inc */
function editBs(formObj,selVal,user_id) {
  formObj.parentNode.style.backgroundColor='red';
  var tmp = formObj.name; var tblrow_id = tmp.match(/\d+/); var field_name = tmp.match(/[^\d+]/);
  var ai = new AJAXInteraction("/content/intern/baustunden.php",function(responseText) {
    if(responseText=='success') { formObj.parentNode.style.backgroundColor = formObj.parentNode.previousSibling.style.backgroundColor; }
  });
  ai.doPost(encodeURI("ajax=1&baustunden_id="+tblrow_id+"&field="+formObj.elements[0].name.match(/[^\d]+/)+"&value="+selVal+"&submitting_user_id="+user_id));
}
/* editWe werkstatt.php */
function editWe(formObj,selVal,user_id) {
  formObj.parentNode.style.backgroundColor='red';
  var tmp = formObj.name; var tblrow_id = tmp.match(/\d+/); var field_name = tmp.match(/[^\d+]/);
  var ai = new AJAXInteraction("/content/intern/werkstatt/ajax.php",function(responseText) {
    if(responseText=='success') {
      if(formObj.parentNode.previousSibling) {
	formObj.parentNode.style.backgroundColor = formObj.parentNode.previousSibling.style.backgroundColor;
      } else if(formObj.parentNode.previousSibling) {
	formObj.parentNode.style.backgroundColor = formObj.parentNode.nextSibling.style.backgroundColor;
      } else {
	formObj.parentNode.style.backgroundColor = 'blue';
      }
    }
  });
  ai.doPost(encodeURI("werkstatt_id="+tblrow_id+"&field="+formObj.elements[0].name.match(/[^\d]+/)+"&value="+selVal+"&submitting_user_id="+user_id));
}
/* quickCalendar called from elemente/quickCalendar.php with a unix timestamp as arg
*/
function quickCalendar(datum) {
  var MArr = ["Jan", "Feb", "M&auml;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
  var DArr = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnertag", "Freitag", "Samstag"];
  function LZ(n) { return (n!=null&&n<10&&n>=0?"0":"") + n }
  function WMdy(Ob) {
      with (Ob) {  return DArr[getDay()] + ", " + MArr[getMonth()] + " " + LZ(getDate()) + ", " + getFullYear(); }
  }

  var myTime = new Date(datum * 1000); // php does seconds, JS milliseconds since 01/01/1970
  var dateStr = WMdy(myTime);
  //myTime.getFullYear()//myTime.toLocaleString();
  document.getElementById('res_datum').innerHTML = "<input type='button' name='ReservierungsDatumButton' value='"+dateStr+"' onclick='quickCalendar("+datum+");'/>";

  loadDetails(datum);
}

function putReservierungsTyp(myForm) {
	i = myForm.Flugzeug.options.selectedIndex;
	if (myForm.Flugzeug.options[i].className == "ReservierungTypMotor") {
		myForm.ReservierungsTyp.value = "Motor";
	}
}


/*
*** ugly time calc: strUhrzeit = php timestamp (sec since '70)
***                 strDauerSeconds = time span to add to timestamp in seconds.
*** returns new time string (24hs), and duration in hours (e.g. "2.5")
*/
function dateCalculations (strUhrzeit,strDauerSeconds) {
	var returnString;
	var myTime = new Date(strUhrzeit * 1000); // php does seconds, JS milliseconds since 01/01/1970
	var dateStr = myTime.toTimeString();
	addMinutes = parseInt(strDauerSeconds) % 60; // 7200 -> 0
	addHours =  parseInt(strDauerSeconds/60/60) % 60; // 7200 -> 2
	hours = Number(dateStr.substr(0,2));
	minutes = Number(dateStr.substr(3,2));

	newHours = hours + addHours;
	newTotalMinutes = minutes + addMinutes; // 0
	newMinutes = newTotalMinutes % 60; // in case newTotalMinutes > 59

	returnString =  newHours + ":" + newMinutes.toFixed(2).substr(2,2) + " (" + (Number(addHours) + Number(addMinutes/60)).toFixed(1) + " Stunden)";
	return returnString;
}

/*
*** check if sailplane booking is allowed tomorrow. if not, disable corresponding entries
*** in document.ReservierungForm.Flugzeug.optione[]
*/
function manageSFReservierung(HeuteMorgen,myForm) {
	var myTime = new Date();
	var weekday = myTime.getDay(); //  0 = Sonntag, 6 = Samstag
	var daytime = myTime.getTime(); // milliseconds since '70
	var newStatus;
	myTime.setHours(7, 0); // 07:00
	if (myTime.getTime() >= daytime) { // vor 07:00 -> "nur heute"
		if (HeuteMorgen == 'Morgen') { newStatus = false } else { newStatus = true;} // if its before 07:00, disable booking sailplanes for today
		changeSFOptionStatus(myForm,newStatus);
	} else { // nach 07:00
		if (weekday == 5) { // donnerstag --> "nur heute ";
			if (HeuteMorgen == 'Morgen') { newStatus = true } else { newStatus = false;} // if booking is Morgen, disable sailplanes, else enable
			changeSFOptionStatus(myForm,newStatus);
		} else if (weekday == 0) { // sonntag ab 07:00 -> "nur morgen";
			if (HeuteMorgen == 'Heute') { newStatus = true } else { newStatus = false;} // if booking is Heute, disable sailplanes, else enable
			changeSFOptionStatus(myForm,newStatus);
		} else if (((weekday >= 1) && (weekday <= 4)) && parseInt(HeuteMorgen) == "NaN" ) { // montag bis donnerstag -> "heute und morgen";
			changeSFOptionStatus(myForm,false);
		}
	}
	if (parseInt(HeuteMorgen) > 1) { // if on preselected date, disable all sailplanes
		changeSFOptionStatus(myForm,true);
	}
}

function changeSFOptionStatus(myForm,newStatus) {
	for(i=0;i<myForm.Flugzeug.options.length;i++) {
		if (myForm.Flugzeug.options[i].className == "ReservierungTypSegel") {
			myForm.Flugzeug.options[i].disabled = newStatus;
			if(i == myForm.Flugzeug.options.selectedIndex && newStatus == true) {
				myForm.Flugzeug.options[0].selected = true;
			}
		}
	}
}

function showhide(name) {
 var display = document.getElementById(name).style.display;
 if (display == 'block') {
  document.getElementById(name).style.display='none';
 }else{
  document.getElementById(name).style.display='block';
 }
}
/* TODO: clean up redundant code */
function showonlyone(thechosenone,elementsName) {
       var sel_elements = document.getElementsByName(elementsName);
       for(var x=0; x<sel_elements.length; x++) {
               if (sel_elements[x].id == thechosenone) {
                       sel_elements[x].style.display = 'block';
               }
               else {
                       sel_elements[x].style.display = 'none';
               }
       }
}

function GB_close() {
document.getElementById("GB_window").style.visibility = "hidden";
document.getElementById("GB_overlay").style.visibility = "hidden";
}

/* validatePwd called by stammdaten/kennwort.php
<!-- Original:  Russ Swift (rswift220@yahoo.com) -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin */
function validatePwd(myForm) {
  var invalid = " "; // Invalid character is a space
  var minLength = 4; // Minimum length
  var pw1 = myForm.Kennwort;
  var pw2 = myForm.Verifizierung;
  // check for a value in both fields.
  if (pw1.value == '' || pw2.value == '') {
    alert('Passwort bitte in beide Felder eingeben');
    return false;
  }
  // check for minimum length
  if (pw1.length < minLength) {
    alert('Das Passwort sollte ' + minLength + ' Buchstaben haben.');
    return false;
  }
  // check for spaces
  if (pw1.value.indexOf(invalid) > -1) {
    alert('Bitte keine Leerzeichen im Passwort.');
    return false;
  }
  else {
    if (pw1.value != pw2.value) {
      alert ("In einem der zwei Felder hast du dich vertippt");
      return false;
    } else {
      return true;
    }
  }
}

