var req;
var page;

function checkAccom(thisselect){
	var val = thisselect.options[thisselect.selectedIndex].value;
	if((val==3)||(val==4)){
		alert('Fully booked - Volgeboekt - Ausgebucht - Plus des chambres');
		thisselect.selectedIndex=0;
	}
}


function bookBed(actie,bedid,accid){
	document.formnaam.action='bookbed.php';
	search='lettersearch'+bedid;
	if(getObject(search)!=null) document.formnaam.zoek.value=getObject(search).value;
	document.formnaam.bedid.value=bedid;
	document.formnaam.accid.value=accid;
	document.formnaam.actie.value=actie;
	if((actie=='del')||(trim(getObject(search).value)!="")) document.formnaam.submit();
}

function checkSubmit(thispage){
	page=thispage;
	php='ajax/change'+ucfirst(thispage)+'.php';
	post=getFields(thispage);
	if(!empty(post)) postAjax(php,'checkSubmitPost',post);
}
function checkSubmitPost(){
	if (req.readyState==4) {
		if (page=='gastgezin'){
			history.go(-1);
			alert('Uw gegevens zijn geregistreerd. Bedankt voor uw hulp, we nemen contact met u op.');
		}
		
	}
}

function getFields(thispage){
	post='';
	n=1;
	celid="id"+n;
	while(cel=getObject(celid)){
		if((cel.className=='verplicht')&&(trim(cel.value)=='')){
			alert('Uw aanmelding is nog niet vastgelegd, \nwant niet alle verplichte gegevens \n(de rode vakjes) zijn ingevuld.\n');
			return '';
		};
		post+=cel.name+'=';
		post+=trim(cel.value)+'&';
		n++;
		celid="id"+n;
	}
 return post;
}

function checkdate(datum, nonull){
	msgobj=getObject('msg'+datum.id);
	datestring=datum.value;
	if((trim(datestring).length==0)||(trim(datestring)=='00-00-0000')){
		if(nonull){
			msgobj.innerHTML='Verplicht';
			return false;
		}else{
			msgobj.innerHTML='';
			return true;
		}
	}
	if (datestring.length < 5){
		msgobj.innerHTML='Ongeldige datum. Gebruik dd-mm-jjj svp.';
		return false;
	}else{
		datestring=datestring.replace(/\//g,'-');
		arrayOfStrings = datestring.split('-');
		dd = arrayOfStrings[0];
		mm = arrayOfStrings[1];
		if (arrayOfStrings[2]== null){
			msgobj.innerHTML='Ongeldige datum. Gebruik dd-mm-jjj svp.';
			return false;
		}else{
			jjjj = arrayOfStrings[2];
		}
		if (dd.length==1) dd='0'.concat(dd);
		if (mm.length==1) mm='0'.concat(mm);
		if (jjjj.length==1) jjjj='200'.concat(jjjj);
		if (jjjj.length==2){
			if (jjjj>'20'){
				jjjj='19'.concat(jjjj);
			}else{
				jjjj='20'.concat(jjjj);
			}
		}
		datum.value=dd.concat('-',mm,'-',jjjj);
		if (!checkDateFormat(dd, mm, jjjj)){
			msgobj.innerHTML='Ongeldige datum. Gebruik dd-mm-jjj svp.';
			return false;
		}else{
			var thisDate= maakDatum(jjjj,mm,dd);
			if(datum.name.indexOf('begin')!=-1){
				eind=datum.name.replace('begin', 'eind');
				eindObject=document.getElementsByName(eind)[0]
				laatst=trim(eindObject.value);
				if((laatst.length!=0)&&(laatst!='00-00-0000')){
					lastDate=maakDatum(laatst);
					if(thisDate>=lastDate){
						lastDate.setDate(lastDate.getDate()+1); 
						eindObject.value=lastDate.getDate()+'-'+(lastDate.getMonth()+1)+'-'+lastDate.getFullYear();
						msgobj.innerHTML='De begindatum moet voor de einddatum liggen. Einddatum aangepast';
						return false;
					}else{
						msgobj.innerHTML='';
						return true;
					}
				}
			}else if(datum.name.indexOf('eind')!=-1){
				begin=datum.name.replace('eind', 'begin');
				beginObject=document.getElementsByName(begin)[0]
				eerst=trim(beginObject.value);
				if((eerst.length!=0)&&(eerst!='00-00-0000')){
					firstDate=maakDatum(eerst);
					if(thisDate<=firstDate){
						thisDate.setDate(firstDate.getDate()+1); 
						datum.value=thisDate.getDate()+'-'+(thisDate.getMonth()+1)+'-'+thisDate.getFullYear();
						msgobj.innerHTML='Einddatum moet voorbij de begindatum liggen. Einddatum aangepast';
						return false;
					}else{
						msgobj.innerHTML='';
						return true;
					}
				}
			}
		}
	}
	msgobj.innerHTML='';
	return true;
}
function checkDateFormat(dd, mm, jjjj) {
		if (dd<29 && mm<13){
				return 1;
		}else if ((dd == 29 && mm != 2) || ((dd == 29) && (jjjj%4 == jjjj/4))){
				return 1;
		}else if(dd == 30 && mm !=2){
				return 1;
		} else if (dd == 31 && (mm == 1 || mm==3 || mm==5 || mm==7 || mm==8 || mm==10 || mm==12)){
				return 1;
		}else{
				return 0;
		}
}


// Check visibility
function checkDisplay(obj) {
  // step 1: Get object
  obj = getObject( obj );
  if (obj==null) return;

  // step 2: Check object visibility
  return((obj.style.visibility) =='visible')

}

// Check input in editscreen
function checkInput(obj, mask, nonull){
	reValidString='';
	msgobj=getObject('msg'+obj.id);
	str=obj.value;
	if(trim(str).length==0){
		if(nonull){
			obj.style['borderColor']='#f00';
			msgobj.innerHTML='Verplicht';
			return false;
		}else{
			msgobj.innerHTML='';
			return true;
		}
	}
	obj.style['border']='1px solid #000';
	switch (mask) {
		case "digits" :
			reValidString = /^[\d ]*$/ ;
			reMessage ='Alleen cijfers svp';
		break;
		case "letters" :
			reValidString = /^[ a-zA-Z\.-]*$/ ;
			reMessage ='Alleen letters svp';
		break;
		case "email" :
			reValidString = /^.+@.+\.[a-zA-Z]{2,}$/ ;
			reMessage ='Onjuist mailadres';
		break;
		case "telefoon"	:
			reValidString = /^0\d{1,3}-\d{6,8}$/ ;
			reMessage ='Gebruik formaat\n 0123-123456\n of 010-1234567\n of 06-12345678 svp';
		break;
		case "mobiel"	:
			reValidString = /^06-\d{8}$/ ;
			reMessage ='Gebruik formaat\n 06-12345678 svp';
		break;
		case "postcode"	:
			str=str.replace(/ /g,"");
			reValidString = /^\d{4}[a-zA-Z]{2}$/ ;
			reMessage ='Gebruik formaat 1234 AB svp';
		break;
	}
   if(str.search(reValidString) == -1) {
		//obj.select();
		//obj.focus();
		msgobj.innerHTML=reMessage;
		return false;
   }else{
		msgobj.innerHTML='';
		return true;
   }
}

// Toggle visibility   show is a boolean switch
function displayObject( objId, show ) {
//alert( 'function Displayobject '+show);
	  // step 1: Get object
	  obj = getObject( objId );
	  if (obj==null) return;

	  // check if frame wants to close (show=false) when there are unsaved changes (changeFlag==1) in an editFrame (objId==doFrame)
	if( show || (objId!=='doFrame') || (changeFlag==0) || confirm('Sluiten zonder opslaan?')){

		// Bij het sluiten van de frames het "kruimelpad" weer bijstellen
		if(!show){
			if(getObject('pad')){
				if(objId=='flagFrame'){ 
					padtext=getObject('pad').innerHTML.replace(' / Markeren', '');
					if(getObject('pad')) getObject('pad').innerHTML=padtext;
				}else if(objId=='entryFrame'){
					padtext=getObject('pad').innerHTML.replace(' / Gegevens toevoegen', '');
					if(getObject('pad')) getObject('pad').innerHTML=padtext;
				}else if(objId=='selectFrame'){ 
					padtext=getObject('pad').innerHTML.replace(' / Kiezen', '');
					if(getObject('pad')) getObject('pad').innerHTML=padtext;
				}else if(objId=='doFrame'){
					padtext=getObject('pad').innerHTML.replace(' / Wijzigen', '');
					padtext=padtext.replace(' / Verwijderen', '');
					padtext=padtext.replace(' / Tonen', '');
					padtext=padtext.replace(' / Kopieren', '');
					if(getObject('pad')) getObject('pad').innerHTML=padtext;
				}
			}
		}
		
		// step 2: Show or hide object
		obj.style.display = show ? 'block' : 'none';
		obj.style.visibility = show ? 'visible' : 'hidden';
	}
}

// Get object from ID
function getObject( obj ) {
  //alert(obj);
  // Most browsers
  if ( document.getElementById ) {
    obj = document.getElementById( obj );
			//alert(obj);

  // IE4
  } else if ( document.all ) {
    obj = document.all.item( obj );
			//alert(obj);

  //Didn't work
  } else {
    obj = null;
			//alert('Not found');
  }

 return obj;
}

// Go to next or previous formpage
// hidden field gonow is defined in /view/body.html
function goNow(target){
	document.formnaam.gonow.value=target;
	document.formnaam.submit();
	
}

// Go to next or previous formpage
// hidden field gonow is defined in /view/body.html
function goAndMail(id, lang, mestype){
	php='ajax/confirmMail.php';
	post='accountID='+id+'&l='+lang+'&messagetype='+mestype;
	postAjax(php,'goAndMailPost',post);
	document.formnaam.gonow.value='next';
	document.formnaam.submit();

}
function goAndMailPost(){
	//if(!empty(req.responseText)) alert(req.responseText);
	alert('An e-mail message confirming your registration has been sent.');
}

// Go to next or previous formpage
// hidden field gonow is defined in /view/body.html
function goRemove(target){
	document.formnaam.gonow.value='registration_remove_member';
	document.formnaam.remove_member_id.value=target;
	document.formnaam.submit();
	
}

// Start paymentprocess
function goPay(target){
	document.formnaam.action=target;
	document.formnaam.submit();
}

// Make XMLHTTP object and post to php script with POST
function postAjax(php, postproces, query){
    // branch for native XMLHttpRequest object
	//alert(php+'-'+query);
    if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (req) {
		req.open("POST", php, true);
		eval("req.onreadystatechange ="+postproces);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
		req.send(query);
	}else{
		alert('Je browser is te oud om met deze applicatie te werken');
		return;
    }
}

// Let object appear relative to mouse
function showNearMouse( obj, e) {
  // step 1: Initialise
  var tempX = 0;
  var tempY = 0;
  var offset = 10;				// offset from mouse position
  var objHolder = obj;

  // step 2: Get object
  obj = getObject( obj );
  if (obj==null) return;

  // step 3: Get mouse coordinates (exception for IE)
  if (document.all) {
    tempX = event.clientX	+ document.body.scrollLeft;
    tempY = event.clientY	+ document.body.scrollTop;
  } else {
    tempX = e.pageX;
    tempY = e.pageY;
  }

  // step 4: Stay on the screen
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}

  // step 5: new coordinates
  obj.style.top  = (tempY + offset) + 'px';
  obj.style.left = (tempX + offset) + 'px';

  // step 6: show
  displayObject( objHolder, true );
}

// equivalent of php explode function
function explode(splitter, text){
	return text.split(splitter);
}

// equivalent of php function
function echo(text){
	alert(text);
}

// equivalent of php function
function empty(x){
	if(typeof x=="undefined") return true;
	if(typeof x==null) return true;
	if(x=='') return true;
	if(x==0) return true;
 return false;
}

function sort(kol){
	document.formnaam.thispage.value=1;
	document.formnaam.sorteer.value=kol;
	document.formnaam.submit();
}

// Make first uppercase
function ucfirst(text){
	return text.replace(/^./, text.match(/^./)[0].toUpperCase());
}

// Display or hide object identified by id
function toggleDisplay(objectId, button){
	// step 1: Get object
	obj = getObject( objectId);
	if (obj==null) return;
	
	// step 2: Show or hide object
	obj.style.display= (obj.style.display == 'block') ? 'none' : 'block';
	obj.style.visibility= (obj.style.visibility =='visible') ? 'hidden' : 'visible';
	if(button!==undefined) button.src= (isin(button.src,'add')) ? replace(button.src,'add', 'delete') : replace(button.src,'delete', 'add');
}

// Strip spaces
function trim(value) {
	if(value!=undefined){
		value = value.replace(/^\s+/,'');
		value = value.replace(/\s+$/,'');
	}else{
		value='';
	}
	return value;
}

// Checks if a substring is in a string
function isin(sentence, word){
	if (sentence.indexOf(word)!=-1) return true;
	return false;
}

// Replaces a substring
function replace(sentence, word, newword){
	return sentence.replace(word, newword);
}

// maak een datum
function maakDatum(jjjj, mm, dd){
	var myDate=new Date();
	if((!mm)&&(jjjj.length==10)){
		dd=jjjj.substring(0,2);
		mm=jjjj.substring(3,5);
		jjjj=jjjj.substring(6,10);
	}
	myDate.setDate(dd);
	myDate.setMonth(mm-1); // January = 0
	myDate.setFullYear(jjjj); 
	return myDate;
}

// open een nieuw gecentreerd window
function centerWin(winObject, w, h)
{
  wleft = (screen.width - w) / 2;
  wtop = (screen.height - h) / 2;
  winObject.resizeTo(w, h);
  winObject.moveTo(wleft, wtop);
}

