/**
* dispatch the booking form action
*
@ return void
*/
function bookingFrom(){
	var roomSel=new initRoomSel();
	var infoForm=new personInfoFrom();
	var cantactCheck=new viewContantForm();
	//var cleanForm=new cleanCountForm();
	var enableChildSelect=new enableChildSel();
	var cusLand=new customLand();
	//var servicePrc=new checkPriceCount();
	var loadCount=new loadCountPric();

	/*
	inputs=document.getElementsByTagName("input");

	for(var i=0;i<inputs.length;i++)
	{
		inputs[i].onkeypress=function(e){
			var e = e || window.event;
			return e.keyCode !== 13;
		}
	}
	*/

}


function customLand(){
	var p=document.getElementById("custom_land");
	if(!p) return;

	var landInput=document.getElementById("another_land");
	if(!landInput) return;

	var landSel=document.getElementById("cant_land");
	if(!landSel) return;

	if(landSel.value=='otherland') p.style.display='';

	landSel.onchange=function(){

		if(this.value=='otherland'){
			p.style.display='';
		}else{
			p.style.display='none';
		}
	}

}
/**
* Booking form validate function
*
*/
function formValid(formObj){

	var eles=formObj.elements;

	this.VALID=true;

	var cantCheck=document.getElementById("same_contact");

	/*
	if(cantCheck){
		if(cantCheck.checked){cantCheck.checked=0;}
	}
	*/

	// check the require element
	this.init=function(){

		for(var i=0;i<eles.length;i++){
			if(classUility.hasClass(eles[i],'must_require')){

				if(cantCheck){
					if(eles[i].id=="cant_street"&&!cantCheck.checked) break;
				}

				if(!this.fieldValid(eles[i])&&this.VALID){

					this.VALID=false;
				}

			}

			if(classUility.hasClass(eles[i],'mail_format')){

				if(!this.mailValid(eles[i])&&this.VALID) this.VALID=false;
			}
		}//end for

		if(!this.VALID){
			this.addWarningMess();
			return false;		// if execution arrive here means that the form no pass the validation
		}else{
			var warnSpace=document.getElementById("warn_space");
			var secondWarnSpace=document.getElementById("warn_space_second");

			if(secondWarnSpace)
				secondWarnSpace.innerHTML="";
			if(warnSpace)
				warnSpace.innerHTML="";
		}


		return true;	// Form validation pass
	}// end this.init

	this.mailValid=function(ele){

		var confirmField=document.getElementById(ele.name+"_confirm");
		if(!confirmField) return true;
		//var reg=/^[\w]+(\.[\w]+)*@([\w]+\.)+[a-z]{2,7}$/i;
		//var reg=/^[a-zA-Z]([a-zA-Z0-9]*[-_.]?[a-zA-Z0-9]+)+@([\w-]+\.)+[a-zA-Z]{2,}$/i;
		//var reg=/^(([\-\w]+)\.?)+@(([\-\w]+)\.?)+\.[a-zA-Z]{2,4}$/;
		var reg = /^(([\-\w]+)\.?)+@(([\-\w]+)\.?)+\.[a-zA-Z]{2,4}$/;

		field_value=classUility.trim(ele.value);
		field_value_confirm=classUility.trim(confirmField.value);
		/*
		if(ele.value!='' && confirmField!=''&& classUility.trim(ele.value)==classUility.trim(confirmField.value) && reg.test(classUility.trim(ele.value)) && reg.test(classUility.trim(confirmField.value))){
		*/

		if(ele.value!='' && confirmField!=''&& classUility.trim(ele.value)==classUility.trim(confirmField.value) && field_value.match(reg) && field_value_confirm.match(reg)){
			this.addWarnClass(ele,false);
			this.addWarnClass(confirmField,false);
				return true;
		}else{
			this.addWarnClass(ele,true);
			this.addWarnClass(confirmField,true);

			return false;
		}

	}
	/**
	* Validate the field and add warning class
	*
	* @return boolean
	*/
	this.fieldValid=function(ele){

		if(ele.type=="radio"){

			return this.validateRadio(ele);
		}

		if(ele.type=="checkbox"){

			return this.validateCheck(ele);
		}

		var preEle=classUility.prev(ele);

		if(preEle.tagName=='LABEL'){
			if(!ele.value){
				classUility.addClass(preEle,"error_notice");
			}else{
				classUility.removeClass(preEle,"error_notice");
			}

			if(ele.name=="broth_date" || ele.name=="broth_month" || ele.name=="broth_year"){
				if(ele.form.elements.broth_date.value!=''&&ele.form.elements.broth_month.value!=''&&ele.form.elements.broth_year.value!='')
				{
					classUility.removeClass(preEle,"error_notice");
				}else{
					classUility.addClass(preEle,"error_notice");
				}
			}
		}

		if(!ele.value)
			return false;
		else
			return true;

	}

	/**
	* Add red class on label
	*/
	this.addWarnClass=function(ele,b){

		var preEle=classUility.prev(ele);

		if(preEle.tagName=='LABEL'){
			if(b){

				classUility.addClass(preEle,"error_notice");
			}else{
				classUility.removeClass(preEle,"error_notice");
			}
		}
	}
	
	this.normalRadioValid=function(radioObj){
		
		var currentRadios = document.getElementsByName(radioObj.name);

		var sel=false;

		for(var i=0;i<currentRadios.length;i++){
			
			
			if(currentRadios[i].checked){

				sel=true;

				break;
			}
		}
		
		
		var preSet=new Array("_label_one","_label_two");
		var labelSet='';
		for(var j=0;j<preSet.length;j++){
			
			labelSet=document.getElementById(radioObj.name+preSet[j]);
			
			if(!labelSet) continue;
			
			if(!sel)
				classUility.addClass(labelSet,"error_notice");
			else
				classUility.removeClass(labelSet,"error_notice");				
		}
		
		return sel;
	}
	
	/**
	* Radio element check method is different from others
	*
	* @return Boolean
	*/
	this.validateRadio=function(radioObj){

		if(radioObj.name=='person_sex')
		{
			//var personSex=radioObj.form.elements.person_sex;
			var personSex=document.getElementsByName("person_sex");
		}else if(radioObj.name=='agree_print'){
			//var personSex=radioObj.form.elements.agree_print;
			var personSex=document.getElementsByName("agree_print");
		}else{
			return this.normalRadioValid(radioObj);	
		}

		//var personSex=radioObj.form.elements.person_sex;
		if(!personSex) return true;

		var sel=false;

		for(var i=0;i<personSex.length;i++){

			if(personSex[i].checked){

				sel=true;

				break;
			}
		}

		preEle=classUility.prev(radioObj);

		//alert(preEle.tagName);

		if(preEle.tagName=='LABEL'){
			if(!sel)
				classUility.addClass(preEle,"error_notice");
			else
				classUility.removeClass(preEle,"error_notice");

		}

		return sel;
	}
	/**
	* Add warning message in warning space
	*
	* @return void
	*/
	this.addWarningMess=function(){
		var warnSpace=document.getElementById("warn_space");
		var secondWarnSpace=document.getElementById("warn_space_second");

		if(cantCheck && !cantCheck.checked&&secondWarnSpace){
			secondWarnSpace.innerHTML="Bitte füllen Sie alle Pflichtfelder aus!";
		}else{
		if(!warnSpace) return;
			warnSpace.innerHTML="Bitte füllen Sie alle Pflichtfelder aus!";
			if(cantCheck&&secondWarnSpace) secondWarnSpace.innerHTML="";
		}
	}
	this.validateCheck=function(ele)
	{
		//if(ele.checked) return true;

		var next=classUility.next(ele);

		if(next.tagName=='LABEL'){
			if(!ele.checked){
				classUility.addClass(next,"error_notice");
				return false;
			}else{
				classUility.removeClass(next,"error_notice");

				return true;
			}
		}

		if(ele.checked)
			return true;
		else
			return false;

	}

	return false;
}
/**
* Use the a link to submit the person form
*
* @return false
*/
function personInfoFrom(){
	//var buttonLink=document.getElementById("personinfo_sub");
	//if(!buttonLink) return;

	/*
	var infoForm=document.getElementById("person_info");
	if(!infoForm) return;

	var inputs=infoForm.elements;
	for(var i=0;i<inputs.length;i++)
	{
		if(inputs[i].type=="button" && classUility.hasClass(inputs[i],'subbutton'))
		{
			inputs[i].onclick=function(){
				//var self=this;
				//this.form.onsubmit=function(){
					//var currentValid=new formValid(self.form)
					//return currentValid.init();
				//}
				this.form.submit();
			}
		}
	}
	*/
	/*
	var aTagLink=document.getElementsByTagName("a");


	for(var i=0;i<aTagLink.length;i++)
	{
		if(!classUility.hasClass(aTagLink[i],"personinfo_sub")) continue;
		aTagLink[i].onclick=function(){
			//alert(aTagLink[i]);
			var currentValid=new formValid(infoForm);
				if(currentValid.init()) infoForm.submit();
				return false;
		}
	}
	*/
}

function subform(){

	var infoForm=document.getElementById("person_info");
	var currentValid=new formValid(infoForm);

	//return currentValid.init();

	if(currentValid.init()){
		var btn1= document.getElementById("sub_btn_4");
		if(btn1){
			btn1.disabled=true;
			//alert(btn1.disabled);
		}
		/*
		var btn2= document.getElementById("cont_sub_button");
		if(btn2){
			btn2.disabled=true;
			//alert(btn2.disabled);
		}

		var btn3= document.getElementById("sub_btn_2");
		if(btn3){
			btn3.disabled=true;
			//alert(btn3.disabled);
		}

		var btn4= document.getElementById("sub_btn_3");
		if(btn4){
			btn4.disabled=true;
			//alert(btn4.disabled);
		}
		*/
		return true;
	}else{
		return false;
	}
}
/**
* insert the room selected value in form for submitting
*
* @return false No dispatch the link only for submit forom
*/
function RoomSel(aObj){
		this.aObj=aObj;

		roomValue=document.getElementById("room_value");
		if(!roomValue) return;
		priceValue=document.getElementById("price_value");
		if(!priceValue) return;
		roomValue.value=this.aObj.rel;
		priceValue.value=this.aObj.rev;
		// If form validated submit the form
		touristForm=document.getElementById("tourist_form");
		var oFormValid=new formValid(touristForm);
		if(!touristForm || !oFormValid.init()) return false;
		touristForm.submit();

		return false;
}
/**
* bind the submit method to all link
*
* @return void
*/
function initRoomSel(){
	var roomTable=document.getElementById("room_table");
	if(!roomTable) return;
	var roomLink=roomTable.getElementsByTagName("a");
	if(!roomLink) return;

	for(i=0;i<roomLink.length;i++)
	{
		 roomLink[i].onclick=function(){
			RoomSel(this);
			return false;
		 }

	}
}
/**
* Hide or display the contact form
*
* @return void
*/
function viewContantForm(){

	var sameCheckbox=document.getElementById("same_contact");
	if(!sameCheckbox) return;
	var contFieldset=document.getElementById("contact_fieldset");
	if(!contFieldset) return;
	var subButton=document.getElementById("cont_sub_button");
	if(!subButton) return;

	if(sameCheckbox.checked) sameCheckbox.checked=0;

	sameCheckbox.onclick=function(){
		if(sameCheckbox.checked){
			contFieldset.style.display="";
			subButton.style.display="none";
		}else{
			contFieldset.style.display="none";
			subButton.style.display="";
		}
			setFooterStyle()
	}

}
/**
*
*
*/
function loadCountPric()
{
	var f=document.getElementById("person_info");
	if(!f) return;

	eles=f.elements;

	var reg=/^server.+/;

	for(var i=0;i<eles.length;i++)
	{
		if(reg.test(eles[i].name)){

			checkPriceCount(eles[i]);
		}
	}
}
/**
* Exact severice price counting
*
* @return void
*/
function checkPriceCount(checkObj){

	var arrSplit=checkObj.name.split("_");

	var sumSpace=document.getElementById(arrSplit[0]+"_"+arrSplit[1]+"_count");
	if(!sumSpace) return;
	var serviceTotalValue=document.getElementById("service_total_value");
	if(!serviceTotalValue) return;
	var sumHidden=document.getElementById(arrSplit[0]+"_"+arrSplit[1]+"_count_pass");
	if(!sumHidden) return;


	var totalValue=document.getElementById("service_total");
	if(!totalValue) return;


	srcValue=checkObj.src.toString();

	srcValue=srcValue.split("/");
	srcValue=srcValue[srcValue.length-1];


	if(checkObj.checked){
		sumSpace.innerHTML=parseInt(sumSpace.innerHTML)+parseInt(srcValue);
		sumHidden.value=parseInt(sumHidden.value)+parseInt(srcValue);
		totalValue.innerHTML=parseInt(totalValue.innerHTML)+parseInt(srcValue);
	}else{
		if(parseInt(sumSpace.innerHTML)>0)
		{
			sumSpace.innerHTML=parseInt(sumSpace.innerHTML)-parseInt(srcValue);
			sumHidden.value=parseInt(sumHidden.value)-parseInt(srcValue);
			totalValue.innerHTML=parseInt(totalValue.innerHTML)-parseInt(srcValue);
		}
	}

	serviceTotalValue.value=parseInt(totalValue.innerHTML);

}
/**
* Clean Form if is need
*
*/
function cleanCountForm(){
	var fs=document.forms;
	for(var i=0;i<fs.length;i++){
		if(classUility.hasClass(fs[i],'clean_form')){
			fs[i].reset();
		}
	}
}
/**
* Enable the child select when the adult is no selected
*
* @return void
*/
function enableChildSel(){

	var adultsSel=document.getElementById("adults");
	if(!adultsSel) return;

	var _self=this;
	adultsSel.onchange=function(){
		loadRoom(adultsSel.value);
		_self.initEnable();
	}

	this.initEnable=function(){
		var eles=adultsSel.form.elements;

		for(var i=0;i<eles.length;i++)
		{
			if(!adultsSel.value && classUility.hasClass(eles[i],'must_enable')){
				eles[i].disabled="disabled";
			}else{
				eles[i].disabled='';
			}
		}
	}
	this.initEnable();
}

function loadRoom(selValue)
{
	var param_termineId = $("termine_id").value;
	//var param_pid = $("page_id").value;
	var param_pid = 75;
	var param_reiseCode = $("page_code").value;
	var param_travelerNum = selValue;
	//var url = 'http://dav-webserver.anexia.at/beta/typo3conf/ext/fe_travel_introduction/pi1/inc/ArrangeRoom_simple.php?termine='+param_termineId+'&travelersNum='+param_travelerNum+'&pid='+param_pid+'&reiseCode='+param_reiseCode+"&cHash="+(new Date()).getTime();
	var url = 'http://www.dav-summit-club.de/typo3conf/ext/fe_travel_introduction/pi1/inc/ArrangeRoom_simple.php?termine='+param_termineId+'&travelersNum='+param_travelerNum+'&pid='+param_pid+'&reiseCode='+param_reiseCode+"&cHash="+(new Date()).getTime();
	//var url = 'http://localhost/beta/typo3conf/ext/fe_travel_introduction/pi1/inc/ArrangeRoom_simple.php?termine='+param_termineId+'&travelersNum='+param_travelerNum+'&pid='+param_pid+'&reiseCode='+param_reiseCode+"&cHash="+(new Date()).getTime();
	var roomTable = $("room_table");
	new Ajax.Request(url, {
					 method: 'get',
					 onCreate: function() {roomTable.innerHTML = 'Loading...'},
					 /*
				     onSuccess: function(transport) {
						roomTable.innerHTML = transport.responseText;
						var ajaxAbind=new initRoomSel();
						setFooterStyle();
					 },
					 */
					 onComplete: function(transport) {
						roomTable.innerHTML = transport.responseText;
						var ajaxAbind=new initRoomSel();
						var clidPic=new createChildPrice();
						setFooterStyle();
					 }
	});
}
/**
* Class property process object
*
*
*/
var classUility={
	hasClass:function(ele,cls){
		return ele.className.match('(\\s|^)'+cls+'(\\s|$)');
	},
	addClass:function(ele,cls){
		if(!classUility.hasClass(ele,cls)) ele.className+=" "+cls;
	},
	removeClass:function(ele,cls){

		if(classUility.hasClass(ele,cls)){

			var reg=new RegExp('(\\s|^)'+cls+'(\\s|$)');

			ele.className.replace(reg,' ');

			ele.className='';
		}
	},
	prev:function(ele){
		var preEle=ele.previousSibling;

		if(preEle.nodeType!=1||preEle.tagName=='SELECT'||preEle.tagName=='INPUT')
		{
			preEle=classUility.prev(preEle);
		}

		return preEle;
	},
	next:function(ele){
		var nextEle=ele.nextSibling;

		if(nextEle.nodeType!=1) nextEle=classUility.next(nextEle);

		return nextEle;
	},
	ltrim:function(s){
		return s.replace( /^\s*/, "");
	},
	rtrim:function(s){
		return s.replace( /\s*$/, "");
	},
	trim:function(s){
		return classUility.rtrim(classUility.ltrim(s));
	}
}

/*
function createChildPrice()
{


	var adultsSel=document.getElementById("adults");
	//if(!adultsSel) return;

	var childPric=document.getElementById("child_price");
	//if(!childPric) return;


	var eles=adultsSel.form.elements;

	for(var i=0;i<eles.length;i++){
		if(classUility.hasClass(eles[i],'child_check_box'))
		{
			eles[i].onchange=function()
			{
				var stepTwo=document.getElementById("step2");
				var span=stepTwo.getElementsByTagName("span");

					for(var j=0;j<span.length;j++){
						//alert(span[j].className);
						if(classUility.hasClass(span[j],'price_space'))
						{

							if(this.value!='')
								span[j].innerHTML='+ € '+childPric.value+',- (pro Kind)';							else
								span[j].innerHTML="";
						}
					}
			}
		}
	}

}
*/

function createChildPrice()
{


	var adultsSel=document.getElementById("adults");
	//if(!adultsSel) return;

	var childPric=document.getElementById("child_price");
	//if(!childPric) return;


	var eles=adultsSel.form.elements;

	for(var i=0;i<eles.length;i++){
		if(classUility.hasClass(eles[i],'child_check_box'))
		{
			eles[i].onchange=function()
			{
				var stepTwo=document.getElementById("step2");
				var span=stepTwo.getElementsByTagName("span");

					for(var j=0;j<span.length;j++){
						//alert(span[j].className);
						if(classUility.hasClass(span[j],'price_space'))
						{

							if(this.value!='')
							{
								span[j].innerHTML='+ € '+childPric.value+',- (pro Kind)';
							}else
							{
								var ocheck=false;
								for(var o=0;o<eles.length;o++)
								{
									if(classUility.hasClass(eles[o],'child_check_box')&&eles[o].value) ocheck=true;

								}
								 if(!ocheck) span[j].innerHTML="";

							}
						}
					}
			}
		}
	}

}