var onLoadFunctions="";
function initOnLoadEvent(){
	eval(onLoadFunctions);
}
function addOnLoadEvent(functionString){
	onLoadFunctions += functionString;
}
window.onload =initOnLoadEvent;var ajaxReqURLs = new Array();
var runningAjaxReqs = new Array();
var ajaxReqFunctions = new Array();
var nextFunctionAJAX = new Array();
var lastMouseX = 0;
var lastMouseY = 0;
var MouseXAJAX = new Array();
var MouseYAJAX = new Array();
var ajaxLoader ="<img src='http://www.yachtcharterfinder.com/images/ajax-loader.gif' style='margin:auto;' />";
function AJAXgetForm(formName){
	var and=true;
	var elements = document.forms[formName].elements;
	var url=elements["AJAXURL"]!=null?elements["AJAXURL"].value:'';
	if(url.indexOf('?')==-1){url+='?';}
	for(var i=0;i<elements.length;i++){
		if(elements[i].name=="")continue;
		if(elements[i].name=="AJAXURL")continue;
		var value="";
		if(elements[i].type=="text" || elements[i].type=="textarea" || elements[i].type=="password" || elements[i].type=="hidden"){
			var temp = elements[i].value;
			temp = escape(temp);//(/\&/,"%26");
			temp = temp.replace(/\+/g , "%2B");
			value += elements[i].name+"="+temp;
		}else if(elements[i].type=="checkbox"){
			if(!elements[i].checked)continue;
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="radio"){
			if(!elements[i].checked)continue;
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="select-one"){
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="submit"){
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="button"){
			value += elements[i].name+"="+elements[i].value;
		}else{
			//alert('neues Element: ID '+elements[i].id+' Name '+elements[i].name+' Type '+elements[i].type+' Wert '+elements[i].value);
		}
		if(and)url +="&";
		else url += "?";
		url += value;
		and=true;
	}
	return url;
}
function AJAXsubmitForm(formName,target_id,nextFunction){
	url = AJAXgetForm(formName);
	AJAXloadHTMLinTarget(url,target_id,nextFunction,null);
}
function AJAXprocessForm(){
	var html = req.responseText;
	if(html==""){
		formParent=null;
		if(nextFunction!=null){
			eval(nextFunction);
			nextFunction=null;
		}
	}else{
		formParent.innerHTML="fehlerbehandlung!";
	}
}
function AJAXloadHTMLinTarget(url,target_id,nextFunction,e){
	AJAXsendRequest(url,"processReqLoadHTMLinTarget('"+target_id+"')",nextFunction,target_id,e);
}
function processReqLoadHTMLinTarget(target_id){
	var html = req.responseText;
	if(!document.getElementById(target_id) || document.getElementById(target_id)==null){alert('Target ID nicht gefunden:'+target_id)}
	document.getElementById(target_id).innerHTML=html;
	AJAXevalScripts(document.getElementById(target_id));
}
var AJAXtoAppend="";
function AJAXappendHTMLinTarget(url,target_id,nextFunction,e){
	AJAXtoAppend=document.getElementById(target_id).innerHTML
;	AJAXsendRequest(url,"processReqAppendHTMLinTarget('"+target_id+"')",nextFunction,target_id,e);
}
function processReqAppendHTMLinTarget(target_id){
	var html = req.responseText;
	document.getElementById(target_id).innerHTML=AJAXtoAppend+html;
	AJAXevalScripts(document.getElementById(target_id));
}
function AJAXcreateXMLHttpRequest() {
	var req;
	try{
		req = new XMLHttpRequest();
	}catch (e){
		try{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
			try{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (failed){
				 req = null;
				 alert("kein Ajax Request");
            }
        }
    }
	return req;
}
function AJAXevalScripts(html){
	var scripts = html.getElementsByTagName("script");
	for(var i=0;i<scripts.length;i++){
		eval(scripts[i].innerHTML);
	}
}
function AJAXsetRequestRunning(){
	var runningCount=0;
	for(var i=0;i<ajaxReqURLs.length;i++){
		var url = ajaxReqURLs[i];
		curReq = runningAjaxReqs[url];
		if(curReq==null)continue;
		/*0 : UNINITIALIZED/ 1 : LOADING/ 2 : LOADED/3 : INTERACTIVE/ 4 : COMPLETED */
		if(curReq.readyState == 4){
			ajaxReqURLs[i]=null;
			if(curReq.status == 200){
				var text = curReq.responseText;
				var indexOfError = text.indexOf("Exception");
				var indexOfLogin = text.indexOf("Login.jsp");
				if(indexOfError>-1){
					var errorText =text.substr(text.indexOf("<table"),text.length);
					document.getElementById("ajaxLoaderDiv").innerHTML=	errorText;
					showDiv("ajaxLoaderDiv");
				}else if(indexOfLogin>-1){
					window.location.reload();
					return;
				}else{
					req = runningAjaxReqs[url];
					eval(ajaxReqFunctions[url]);
					hideDiv("ajaxLoaderDiv");
					if(nextFunctionAJAX[url]!=null)eval(nextFunctionAJAX[url]);
				 }
				runningAjaxReqs[url]=null;
				ajaxReqFunctions[url]=null;				
			}else if(curReq.status == 503){//server down
				window.location.reload();		
			}else if(curReq.status == 0){//auch server down???
				window.location.reload();		
			}else{
				alert("Request Fail: Statustext:"+curReq.statustext+" Status:"+curReq.status+" readyState"+curReq.readyState+"\nText:"+curReq.responseText);
			}
		}else{
			runningCount++;
		}
	}
	if(runningCount==0){
		ajaxReqURLs = new Array();
		ajaxReqFunctions = new Array();
		runningAjaxReqs[url]=new Array();
	}
}
function AJAXsendRequest(url,processReq,nextFunction,target_id,e){
	if(!e)e = window.event;
	var curReq = AJAXcreateXMLHttpRequest();
	if(url.indexOf("?")<0){	url+="?";
	}else{url+="&";}
	url+="rand="+(new Date()).getTime();
	ajaxReqURLs.push(url);
	runningAjaxReqs[url]=curReq;
	ajaxReqFunctions[url]=processReq;
	if(e!=null){
		MouseXAJAX[url]=e.clientX;
		MouseYAJAX[url]=e.clientY;
		lastMouseX=e.clientX;
		lastMouseY=e.clientY;
	}
	if(nextFunction!=null)nextFunctionAJAX[url]=nextFunction;
	var ajaxLoaderDiv = document.getElementById("ajaxLoaderDiv");
	if(ajaxLoaderDiv==null){
		ajaxLoaderDiv = document.createElement("div");
		ajaxLoaderDiv.id="ajaxLoaderDiv";
		document.getElementsByTagName("body")[0].appendChild(ajaxLoaderDiv);
	}
	if(ajaxLoaderDiv!=null){
		var top=0;
		var left=0;
		if(window.innerHeight !=null){
			top= (window.innerHeight/2) ;
			left= (window.innerWidth/2) -150;
		}else{
			top= (screen.availHeight/3+ document.body.scrollTop) ;
			left= (document.body.clientWidth/2) ;
		}
		
		for(var i=0;i<ajaxReqURLs.length;i++){
			var url = ajaxReqURLs[i];
			if(url==null)continue;
		}
		if(target_id!=null){
			var tempAjaxLoader="<div style='background:url(http://www.yachtcharterfinder.com/images/ajax-loader.gif) center  no-repeat;"; 
			var targetWidth = parseInt(document.getElementById(target_id).style.width);
			var targetHeight = parseInt(document.getElementById(target_id).style.height);
			if(targetHeight>200)targetHeight=200;
			if(targetWidth>0){
				tempAjaxLoader +="width:"+targetWidth+"px;";
			}
			if(targetHeight>0){
				tempAjaxLoader +="height:"+targetHeight+"px;";
			}
			tempAjaxLoader +="' >"+"</div>";
			document.getElementById(target_id).innerHTML=tempAjaxLoader;
		}else{
			ajaxLoaderDiv.innerHTML+="<br />RQ"+url;
			ajaxLoaderDiv.innerHTML=ajaxLoader;
			ajaxLoaderDiv.style.position="absolute";
			ajaxLoaderDiv.style.top=top+"px";
			ajaxLoaderDiv.style.left=left+"px";
			showDiv("ajaxLoaderDiv");
		}
	}
	curReq.onreadystatechange=AJAXsetRequestRunning;
	curReq.open("GET",url,true);
	curReq.send(null);
}
var edit=0;
var a_links = new Array(document.getElementsByTagName("a").length);
function AJAXsetFormReadOnly(form){
	if(form.elements["oid_form"].value=="-1"){
		if(document.getElementById("ChangeButton")!=null)hideDiv("ChangeButton");
		if(document.getElementById("SaveButton")!=null)showDiv("SaveButton");
		return;
	}
	for(var i=0;i<form.elements.length;i++){
		element = form.elements[i];
		element.disabled=true;
		element.style.color='#000000';
		element.style.backgroundColor='#f0f0f0';
	}
	for(var i=0;i<document.getElementsByTagName("a").length;i++){
		if(a_links[i]==null || a_links[i]=="")continue;
		var atag = document.getElementsByTagName("a")[i];
		atag.href=a_links[i];
	}
	edit=0;
	if(document.getElementById("ChangeButton")!=null)document.getElementById("ChangeButton").innerHTML="bearbeiten";
	if(document.getElementById("SaveButton")!=null)hideDiv("SaveButton");
}
function AJAXbuttonChange(url,form){
	if(edit==0){
		changeFormAJAX =form;
		url += "&action=lock";
		AJAXsendRequest(url,"AJAXsetFormChange('"+form.id+"')",null);
	}else{
		setFormReadOnly(form);
		url += "&action=unlock";
		AJAXsendRequest(url,"");
	}
}
function AJAXsetFormChange(form_id){
	var error = getNodeValue(req.responseXML,"Error");
	if(error!=null){
		alert(error);
		return;
	}
	//daten noch mal neu laden!!!!!!!!!!!!!!!!!!!
	var changeFormAJAX= document.getElementById(form_id);
	for(var i=0;i<changeFormAJAX.elements.length;i++){
		element = changeFormAJAX.elements[i];
		element.disabled=false;
		element.style.color="#000000";
		element.style.backgroundColor='#FFFF99';
	}
	for(var i=0;i<document.getElementsByTagName("a").length;i++){
		var atag = document.getElementsByTagName("a")[i];
		a_links[i]=atag.href;
		atag.href='javascript:alert("Bitte erst speichern oder abbrechen")';
	}
	if(document.getElementById("SaveButton")!=null)showDiv("SaveButton");
	edit=1;
	if(document.getElementById("ChangeButton")!=null)document.getElementById("ChangeButton").innerHTML="abbrechen";
}
function AJAXsetFormChange(form){
	for(var i=0;i<form.elements.length;i++){
		element = form.elements[i];
		element.disabled=false;
		element.style.color="#000000";
		element.style.backgroundColor='#FFFF99';
	}
	for(var i=0;i<document.getElementsByTagName("a").length;i++){
		var atag = document.getElementsByTagName("a")[i];
		a_links[i]=atag.href;
		atag.href='javascript:alert("Bitte erst speichern oder abbrechen")';
	}
	if(document.getElementById("SaveButton")!=null)showDiv("SaveButton");
	edit=1;
	if(document.getElementById("ChangeButton")!=null)document.getElementById("ChangeButton").innerHTML="abbrechen";
}
function showDiv(name){
	document.getElementById(name).style.visibility="visible";
	document.getElementById(name).style.display="block";
}
function hideDiv(name){
	document.getElementById(name).style.visibility="hidden";
	document.getElementById(name).style.display="none";
}
function string2date(string) {

    if(!string) return null;

    string += '';

    string = string.replace(/[-\/]/g, '.'); // Trennzeichen normalisieren

    string = string.replace(/[^0-9.: ]/g, ''); // ungültige Zeichen entfernen

    string = string.replace(/ +/g, ' '); // doppelte Leerzeichen entfernen

    var uhr = string.split(" "); // Uhrzeit abtrennen

    var split = uhr[0].split(".");

    var day = parseInt(split[0], 10);

    var month = parseInt(split[1] || 0, 10);

    var year = parseInt(split[2] || 0, 10);



    if(isNaN(year)) year = getFullYear();



    var check = new Date(year, month - 1, day);

    if(uhr[1]) {

         var uhr = uhr[1].split(':');

         check.setHours( uhr[0] || 0 );

         check.setMinutes( uhr[1] || 0 );

         check.setSeconds( uhr[2] || 0 );

    }



    var day2 = check.getDate();

    var year2 = getFullYear(check);

    var month2 = check.getMonth() + 1;



    return ( year2 == year && month == month2 && day == day2 ) ? check

    : null;

}
function getFullYear(date){
    if(!date) date = new Date();
    if(typeof date.getFullYear != 'undefined') return date.getFullYear();
    var year = date.getYear();
    if(year < 1000) year += 2000;
    return year;
}
function checkEMail(s) {
  var a = false;
  var res = false;
  if(typeof(RegExp) == 'function')
    {
    var b = new RegExp('abc');
    if(b.test('abc') == true){a = true;}
    }

  if(a == true)
    {
    reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                     '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                     '(\\.)([a-zA-Z]{2,4})$');
    res = (reg.test(s));
    }
  else
    {
    res = (s.search('@') >= 1 &&
           s.lastIndexOf('.') > s.search('@') &&
           s.lastIndexOf('.') >= s.length-5)
    }
  return(res);
  }

