var days = 0;
var voucherprice = 0;
var persons = 1;
var gesamtprice = 0;
var offerprice = 199.99;
var ZusatzOptions = 0;
var porto = 2.5;
var bookedOffer = new Object();

function openOptions(url){
	openPopup('680','500','ZubuchbareOptionen',url);
}

function buildZusatzRow(b_id,name,preis){
	if(persons > 0){
		costs = getZusatzPrice(b_id,days,persons);
		name_container = 'b_'+b_id;
		name_container_id = b_id;
		input2 = Builder.node('b',name);
		input3 = Builder.node('input',{'id':'buchbare[]','type':'hidden','value':name_container_id,'name':'buchbare[]'} );
		img1 = Builder.node('img',{'style':'cursor: pointer','src':'/Images/delete.png','onclick':'delZusatz(\''+b_id+'\')'} );
		td1 = Builder.node('td',{width: '8%',nowrap: 'nowrap',valign:'top'},[img1]);
		td2 = Builder.node('td',{width: '57%'},[input2,input3]);
		td3 = Builder.node('td',{width: '35%'},preis);
		var tr = Builder.node('tr',{id: name_container},[td1,td2,td3]);
		$('zusatz').appendChild(tr);
		return true;
	}else{
		return false;
	}
}

function delZusatz(b_id){
	name_id_container = $("b_"+b_id);
	if(b_id && name_id_container){
		check = confirm("Option wirklich löschen?");
		if(check){
			removeZusatzPrice(b_id,days,persons);
			$(name_id_container).remove();
		}
	}
}

function changeRooms(name,text){
	var selVal = $F(name);
	addOfferPrice(name,text);
}

function addOfferPrice(name,text){
	var selVal = $F(name);
	var calc = 0;
	calc = $F(name)*offerprice[name]["price"];
	bookedOffer[name] = false;
	bookedOffer[name] = new Object();
	bookedOffer[name]["r_id"]		= name;
	bookedOffer[name]["name"]		= text;
	bookedOffer[name]["price"]		= offerprice[name]["price"];
	bookedOffer[name]["val"]		= selVal;
	bookedOffer[name]["gesamtprice"]= calc;
	calcGesamtPrice();
}

function calcGesamtPrice(){
//	gesamtprice = ($("anzahl").value*offerprice)+ZusatzOptions+porto;
	gesamtprice = 0;
	persons = 0;
	var einzel = "";
	for (var bookedOfferTmp in bookedOffer){
		einzel = (bookedOffer[bookedOfferTmp]["val"]+" x "+formatZahl(bookedOffer[bookedOfferTmp]["price"], 2, true)+" EUR " + bookedOffer[bookedOfferTmp]["name"] + "<br>")+einzel;
		gesamtprice = bookedOffer[bookedOfferTmp]["gesamtprice"]+gesamtprice;
		persons += parseFloat(bookedOffer[bookedOfferTmp]["val"]);
	}
	gesamtprice = gesamtprice+ZusatzOptions+porto-voucherprice;
	$("einzelpreis").innerHTML = einzel;
	$("zusatzoptionen").innerHTML = formatZahl(ZusatzOptions, 2, true)+" EUR";
	$("gesamtprice").innerHTML = formatZahl(gesamtprice, 2, true)+" EUR";
	$("gutscheinwert").innerHTML = formatZahl(voucherprice, 2, true)+" EUR";
	$("porto").innerHTML = formatZahl(porto, 2, true)+" EUR";
}

function EMail(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);
}
function removeZusatzPrice(b_id,day,person){
	var price;
	var opt = {
		method: 'post',
		postBody: 'process=get_zusatz_price&b_id=' + b_id + '&day=' + day + '&person=' + person,
		onComplete: function(transport) {
			ZusatzOptions = ZusatzOptions-parseFloat(transport.responseText);
			calcGesamtPrice();
		}
	}
	new Ajax.Request('/ajax/', opt);

}

function getZusatzPrice(b_id,day,person){
	var price;
	var opt = {
		method: 'post',
		postBody: 'process=get_zusatz_price&b_id=' + b_id + '&day=' + day + '&person=' + person,
		onComplete: function(transport) {
			ZusatzOptions = ZusatzOptions+parseFloat(transport.responseText);
			calcGesamtPrice();
		}
	}
	new Ajax.Request('/ajax/', opt);

}

function getVoucherPrice(){
	voucher = $("voucher").value;
	if(voucher.length == 10){
		var opt = {
			method: 'post',
			postBody: 'process=get_voucher_price&voucher=' + voucher,
			onComplete: function(transport) {
				if(transport.responseText == "not_activ"){
					remove_field_err("voucher");
					single_field_err("voucher","<br>GutscheinCode wurde noch nicht bezahlt!!!");
				}
				if(transport.responseText == "not_found"){
					remove_field_err("voucher");
					single_field_err("voucher","<br>GutscheinCode wurde nicht gefunden!!!");
				}
				if(transport.responseText != "not_found" || transport.responseText != "not_activ"){
					voucherprice = parseFloat(transport.responseText);
					calcGesamtPrice();
				}
			}
		}
		new Ajax.Request('/ajax/', opt);
	}
}

function openOffer(url){
	openPopup('475','600','AnreiseTag',url);
}

function setOffer(datum,room_id,room_price){
	$("room_id").value = room_id;
	$("arrival").value = datum;
	$("arrival_label").innerHTML = " "+datum+" ";
	offerprice = parseFloat(room_price);
	calcGesamtPrice();
}

function openVersicherung(){
	openPopup('620','700','versichung','http://www.travdo.de/versicherung.php');
}


function selectInsurance(){
	if($("insurance").checked){
		ZusatzOptions = ZusatzOptions+25;
	}else{
		ZusatzOptions = ZusatzOptions-25;
	}
	calcGesamtPrice();
}

function formatZahl(zahl, k, fix){
    if(!k) k = 0;
    var neu = '';
    var f = Math.pow(10, k);
    zahl = '' + parseInt( zahl * f + (.5 * (zahl > 0 ? 1 : -1)) ) / f ;
    var idx = zahl.indexOf('.');
    if(fix){
         zahl += (idx == -1 ? '.' : '' )
         + f.toString().substring(1);
    }
    idx = zahl.indexOf('.');
    if( idx == -1) idx = zahl.length;
    else neu = ',' + zahl.substr(idx + 1, k);
    while(idx > 0){
        if(idx - 3 > 0)
        neu = '.' + zahl.substring( idx - 3, idx) + neu;
        else
        neu = zahl.substring(0, idx) + neu;
        idx -= 3;
    }
    return neu;
}

function single_field_err(ele, text){
	$(ele).setStyle({border: '1px solid #CC3300'});
	if(!$('error_' + ele)){
  		new Insertion.After(ele, '<span id=\"error_' + ele + '\" style=\"color:#CC3300\"> <b>'+text+'</b></span>');
	}
}

function remove_field_err(ele){
	$(ele).removeAttribute("style");
	$(ele).setStyle({width: '175px'});
	if($('error_' + ele)){
  		$('error_' + ele).remove();
	}
}

function remove_field_err2(ele){
	$(ele).removeAttribute("style");
	$(ele).setStyle({width: '50px'});
	if($('error_' + ele)){
  		$('error_' + ele).remove();
	}
}

function remove_field_err3(ele){
	$(ele).removeAttribute("style");
	$(ele).setStyle({width: '107px'});
	if($('error_' + ele)){
  		$('error_' + ele).remove();
	}
}

function checkBooking(e){
	var its_alright_mama = true;
	var toStep = 0;
	Event.stop(e);
	if($("mainname").value == ""){
		single_field_err("mainname","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err("mainname");
	}
	if($("prename").value == ""){
		single_field_err("prename","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err("prename");
	}
	if($("street").value == ""){
		single_field_err("street","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err("street");
	}
	if($("city").value == ""){
		single_field_err("city","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err3("city");
	}
	if($("zip").value == ""){
		single_field_err("zip","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err2("zip");
	}
	if($("phone").value == ""){
		single_field_err("phone","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err("phone");
	}
	if($("elektronische_post").value == ""){
		single_field_err("elektronische_post","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err("elektronische_post");
	}
	if(!EMail($("elektronische_post").value)){
		single_field_err("elektronische_post","*");
		its_alright_mama = false;
		if(toStep>3 || toStep==0) toStep = 3;
	}else{
		remove_field_err("elektronische_post");
	}
	
	if($("other_adress")){
		if($("booking").getInputs("radio", "other_adress").find(function(r){return r.checked}).value == "on"){
			if($("other_name").value == ""){
				single_field_err("other_name","*");
				its_alright_mama = false;
				if(toStep>4 || toStep==0) toStep = 4;
			}else{
				remove_field_err("other_name");
			}
			if($("other_prename").value == ""){
				single_field_err("other_prename","*");
				its_alright_mama = false;
				if(toStep>4 || toStep==0) toStep = 4;
			}else{
				remove_field_err("other_prename");
			}
			if($("other_street").value == ""){
				single_field_err("other_street","*");
				its_alright_mama = false;
				if(toStep>4 || toStep==0) toStep = 4;
			}else{
				remove_field_err("other_street");
			}
			if($("other_zip").value == ""){
				single_field_err("other_zip","*");
				its_alright_mama = false;
				if(toStep>4 || toStep==0) toStep = 4;
			}else{
				remove_field_err2("other_zip");
			}
			if($("other_city").value == ""){
				single_field_err("other_city","*");
				its_alright_mama = false;
				if(toStep>4 || toStep==0) toStep = 4;
			}else{
				remove_field_err3("other_city");
			}
		}
	}
	if($("arrival").value == ""){
		if(!$('error_arrival')){
			$("arrival_label").innerHTML = '<span id=\"error_arrival\" style=\"color:#CC3300\"> <b>Bitte wählen Sie hier ihr Datum aus</b></span>';
		}
		if(toStep>1 || toStep==0) toStep = 1;
		its_alright_mama = false
	}
	if(gesamtprice < 3){
		its_alright_mama = false
	}	
	if(toStep>0) $("order_step_"+toStep).scrollTo();
	if(its_alright_mama) $("booking").submit();
}

Event.observe(window, 'load', function() {
	if($("other_city")){
  		Event.observe('booking', 'submit', checkBooking);
	}
});


function openPopup(w,h,head,site){
	x = screen.availWidth/2-w/2;
	y = screen.availHeight/2-h/2;
	popupWindow = window.open(site,head,'width='+w+',height='+h+',left='+x+',top='+y+',screenX='+x+',screenY='+y+',scrollbars=yes');
}
