function CustomPopup(theURL,features) { 
   window.open(theURL,'',features); 
} 

var sPublicationId=237;
var sPublicationUrl="/com";
var sLang="en";



var sLocale="com";
var cityTemplateId=12227
var countryTemplateId=12221




EMA=(typeof(EMA)!="undefined")?EMA:{maps:{debug:false},airports:{},cities:{}};
EMA.day=86400000;/*a day represented in milliseconds*/
EMA.lz=function(str){return ((str.toString().length==1)?('0'+str):str);};/*Leading zero function*/
EMA.parseDate=function(date){
	//parseDate is used here because the flash always returns the first day of the month
	sDepartureDate=(typeof(sDepartureDate)=='undefined')?new Date():sDepartureDate;
	var d=new Date(date);
	return d.getUTCFullYear()+"/"+(d.getMonth()+1)+"/"+EMA.lz(sDepartureDate.getDate());
};
EMA.outputDate=function(date,format){
	date=(typeof(date)=="string")?new Date(date):date;
	format=(typeof(format)=="undefined")?"":format;
	switch (format.toLowerCase()){
		case "dd-mm-yyyy":return (EMA.lz(date.getDate()).toString()+'-'+EMA.lz((parseInt(date.getMonth(),10)+1)).toString()+'-'+date.getUTCFullYear().toString());break;
		case "js":return date;break;
		default:return (date.getUTCFullYear().toString()+'/'+EMA.lz((parseInt(date.getMonth(),10)+1)).toString()+'/'+EMA.lz(date.getDate()).toString());break;
	}
};

EMA.getRandomPoint=function(){
	/*Needed for random points - can be removed after*/
	var lat=(Math.round(Math.random())?-1:1)*Math.round(Math.random()*80);
	var lng=(Math.round(Math.random())?-1:1)*Math.round(Math.random()*170);
	return {lat:lat,lng:lng};
};

EMA.addScript=function(url){
	var se=document.createElement('script');
		se.src=url;
		se.type="text/javascript";
		document.getElementsByTagName('head')[0].appendChild(se); 
};

EMA.loadGmaps=function(callback){
	var se=document.createElement('script');
		se.src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAANs_UwNKTVOmQ50aBrKb0yxToB-ElLBssKQoFLJWozt1dxrhnORRdkG7cso5jGswN_P7LR8rWBAGd1w&async=2&callback="+callback;
		se.type="text/javascript";
		document.getElementsByTagName('head')[0].appendChild(se); 
};
EMA.needMethod=function(elm,method,callback){
	if (typeof(elm)!="undefined"&&typeof(elm[method])!="function"){
		setTimeout(function(){EMA.needMethod(elm,method,callback)},100);return false;
	} else {
		try {(callback)()} catch(e){};
		return true;
	}
}
EMA.parseCountries=function(o){
	/*parse cities destination list*/
	EMA.continents=(!EMA.continents)?{}:EMA.continents;
	EMA.countries=(!EMA.countries)?{}:EMA.countries;
	$(o.C).each(function(){
		//C:[["Europe","Europe"]
		EMA.continents[this[1]]={name:this[0],countries:[],cities:[]};
	});
	$(o.c).each(function(){
		//c:[["Angola","AO","Africa",,,,13260]
		//c:[["United Kingdom","UK","Europe",(longitude country),(latitude country),(zoom level country),13319,isDestinations]
		EMA.continents[this[2]].countries.push(this[1]);
		EMA.countries[this[1]]=(!EMA.countries[this[1]])?{}:EMA.countries[this[1]];
		EMA.countries[this[1]].name=this[0];
		EMA.countries[this[1]].continent=this[2];
		EMA.countries[this[1]].id=this[6];
		EMA.countries[this[1]].isDestination=this[7];
		var lat=(typeof(this[4])=="undefined")?EMA.getRandomPoint().lat:this[4];//this[4];
		var lng=(typeof(this[3])=="undefined")?EMA.getRandomPoint().lng:this[3];//this[3];
		var zoom=(typeof(this[5])=="undefined")?2:this[5];
		EMA.countries[this[1]].p={"lat":lat,"lng":lng,"z":zoom};
		EMA.continents[this[2]].cities.push(EMA.countries[this[1]].cities);
	});
EMA.initCountries=true;
};

EMA.parseCities=function(o){
	/*parse cities destination list*/
	EMA.cities=(!EMA.cities)?{}:EMA.cities;
	EMA.countries=(!EMA.countries)?{}:EMA.countries;
	EMA.cityNames=(!EMA.cityNames)?{}:EMA.cityNames;
	$(o).each(function(){
		//["Milan","MIL","IT",13209]
		//["Abidjan","ABJ","CI",,,,13150]
		var lat=(typeof(this[4])=="undefined")?EMA.getRandomPoint().lat:this[4];//this[4];
		var lng=(typeof(this[3])=="undefined")?EMA.getRandomPoint().lng:this[3];//this[3];
		var zoom=(typeof(this[5])=="undefined")?2:this[5];
		EMA.cities[this[1]]={id:this[6],name:this[0],code:this[1],p:{"lat":lat,"lng":lng,"z":zoom}};
		EMA.cities[this[1]].airports=(typeof(EMA.cities[this[1]].airports)=="undefined")?[]:EMA.cities[this[1]].airports;
		EMA.countries[this[2]]=(!EMA.countries[this[2]])?{cities:[]}:EMA.countries[this[2]];
		EMA.countries[this[2]].cities.push(this[0]);
		EMA.cityNames[this[0]]=this[6];
	});
	EMA.initCities=true;
};


EMA.parseAirports=function(o){
	/*parse airports destination list 
	- only if request is made
	- only if not in session variable*/
	EMA.airports=(!EMA.airports)?{}:EMA.airports;
	EMA.cities=(!EMA.cities)?{}:EMA.cities;
	$(o).each(function(){
		EMA.cities[this[2]]=(!EMA.cities[this[2]])?{airports:[]}:EMA.cities[this[2]];
		//["Abidjan","ABJ","ABJ","Felix HouphouÃ«t-Boigny",,,13039]
		var lat=(typeof(this[5])=="undefined")?EMA.getRandomPoint().lat:this[5];//this[5];
		var lng=(typeof(this[4])=="undefined")?EMA.getRandomPoint().lng:this[4];//this[4];
		EMA.airports[this[6]]={id:this[6],name:this[0],code:this[1],p:{"lat":lat,"lng":lng},longName:this[3],cityCode:this[2]};
		EMA.cities[this[2]].airports.push(this[6]);
	});
	EMA.initAirports=true;
};

EMA.showList=function(type,targetId){
/**
* display a list of countries/cities
*
* @author		mga
* @name			EMA.showList()
* @params		type: string "countries"||"cities"
* @params		targetId: string id of element that will receive the lists
* @example		 onclick="EMA.showList('countries','tab_countries');"; // returns fill countries list inside a <div id="tab_countries"></div>
*/

	EMA.listInit=(typeof(EMA.listInit)=="undefined")?{}:EMA.listInit;
	//if (EMA.listInit[type]===true){return true;} MGA 20090916 BAIRVII-900
	switch (type.toLowerCase()){
		case "countries":
			var wr="<div class=\"box box_tabbed box_text\">\n";
				wr+="		<div class=\"cols\">\n";
			for (var c in EMA.continents){
				wr+="<div class=\"col col_25\">";
				wr+="<h2>"+EMA.continents[c].name+"<\/h2><ul class=\"arrow\">";
				$(EMA.continents[c].countries).each(function(){
					if(EMA.countries[this].isDestination){//only current destinations are put
						wr+="<li><a href=\""+"/dynalink.aspx?puburl="+sPublicationUrl+"&compid="+EMA.countries[this].id+"&tempid="+countryTemplateId+"&pubid="+sPublicationId+"\">"+EMA.countries[this].name+"<\/a><\/li>\n";
					}
				});
				wr+="<\/ul><\/div>";
			}
			wr+="		<\/div>\n";
			wr+="	<\/div>\n";
			$("#"+targetId).html(wr);
			EMA.listInit[type]=true;
			return true;
			break;
		case "cities":
			var wr="<div class=\"box box_tabbed box_text\">\n";
				wr+="	<div class=\"cols\">\n";
			/*var wr0="<div class=\"col col_25\"><ul class=\"arrow\">\n";
			var wr1="<div class=\"col col_25\"><ul class=\"arrow\">\n";
			var wr2="<div class=\"col col_25\"><ul class=\"arrow\">\n";
			var wr3="<div class=\"col col_25\"><ul class=\"arrow\">\n";
			var counter=0;
			for (var c in EMA.cities){
				counter++;
				var str="<li><a href=\""+"/dynalink.aspx?compid="+EMA.cities[c].id+"&tempid="+cityTemplateId+"&pubid="+sPublicationId+"\">"+EMA.cities[c].name+"<\/a><\/li>\n";
				switch (counter){
					case 1:wr0+=str;
						break;
					case 2:wr1+=str;
						break;
					case 3:wr2+=str;
						break;
					case 4:wr3+=str;
						counter=0;
						break;
					default:
						break;
				}
			}
			wr0+="		<\/ul><\/div>\n";
			wr1+="		<\/ul><\/div>\n";
			wr2+="		<\/ul><\/div>\n";
			wr3+="		<\/ul><\/div>\n";
			wr+=wr0+wr1+wr2+wr3+"<\/div><\/div>\n";*/
			for (var c in EMA.continents){
				wr+="<div class=\"col col_25\">";
				wr+="<h2>"+EMA.continents[c].name+"<\/h2><ul class=\"arrow\">";
					var cities=EMA.continents[c].cities.toString().split(",").sort();
					$(cities).each(function(){
						if(this!=""){
							wr+="<li><a href=\""+"/dynalink.aspx?puburl="+sPublicationUrl+"&compid="+EMA.cityNames[this]+"&tempid="+cityTemplateId+"&pubid="+sPublicationId+"\">"+this+"<\/a><\/li>\n";
						}
					})
				wr+="<\/ul><\/div>";
			}
			
			wr+="		<\/div>\n";
			wr+="	<\/div>\n";
			$("#"+targetId).html(wr);
			EMA.listInit[type]=true;
			return true;
			break;
		default:return true;
	}
};
EMA.tabs=(function(){
	var getContentId=function(elm){return "#"+elm.rel;};
	return {
		init:function(){
			$(".js_tabs").each(function(){
				//dynamic tabs group holder
				EMA.tabs[$(this).attr("id")]=[];
				$("li",this).each(function(){
					if($(this).attr("class")!="title"){
						var tabs_node=$(this).parent().attr("id");
						EMA.tabs[$(this).parent().attr("id")].push({
							elm:$(this),
							content_id:getContentId($(this).find("a")[0])
						});
						$(this).find("a").bind("click",function(e){
							//removing classes on other active
							$(EMA.tabs[tabs_node]).each(function(){
								if(this.elm.hasClass("active")){
									this.elm.removeClass("active");
									$(this.content_id).hide();
								}
							});
							//activating tab 
							var trg;
							if (e.target.tagName.toLowerCase()==="span"){trg=$(e.target).parent("a");}
							if (e.target.tagName.toLowerCase()==="a"){trg=$(e.target);}
							//showing content
								$(e.target).parents().filter("li").addClass("active");
/*@cc_on //fixing IE6 width bug
	if(parseInt($.browser.version)<=6){
		var li=$(e.target).parents().filter("li")
		li.find(".rr").css("width",li.get(0).offsetWidth+'px');
	}
@*/								
                                $(getContentId(this)).show();
								try{EMA.maps.map.checkResize();}catch(e){}
								try{EMA.maps.map.setCenter(new GLatLng(EMA.countries[countryCode].p.lat,EMA.countries[countryCode].p.lng),EMA.countries[countryCode].p.z);}catch(e){}
							return false;
						});
						//hiding content
						if(!$(this).hasClass("active")){$(getContentId($(this).find("a")[0])).hide();}
					}
				});
			});
		}
	};
})();

EMA.gallery=(function(){
	function getMarkup(gallery){
		var pl=(!EMA.labels.gallery||typeof(EMA.labels.gallery.previous)=="undefined")?"Previous":EMA.labels.gallery.previous;
		var nl=(!EMA.labels.gallery||typeof(EMA.labels.gallery.next)=="undefined")?"Next":EMA.labels.gallery.next;
		var wr="";
			wr+="<div class=\"mini_gallery\">\n";
			wr+="	<img id=\"ii_"+gallery.id+"\" src=\""+gallery.i[gallery.current].src+"\" alt=\""+gallery.i[gallery.current].alt+"\" />\n";
		if (gallery.i.length>1){
			//displaying nav only if there are several images
			wr+="	<div class=\"links_left_right\">\n";
			wr+="		<a href=\"#previous\" onclick=\"EMA.gallery.navigate('"+gallery.id+"','previous');return false;\" rel=\""+gallery.id+"\" class=\"a a_previous link_left\"><span class=\"i\">&nbsp;<\/span> "+pl+"<\/a>\n";
			wr+="		<a href=\"#next\" onclick=\"EMA.gallery.navigate('"+gallery.id+"','next');return false;\" rel=\""+gallery.id+"\" class=\"a a_next link_right\">"+nl+" <span class=\"i\">&nbsp;<\/span><\/a>\n";
			wr+="	<\/div>\n";
		}
			wr+="<\/div>\n";
		return wr;
	}
	function updateCounter(gallery,dir){
		var dir=(dir==="previous")?-1:1;
		gallery.current=gallery.current+dir;
		gallery.current=(gallery.current<0)?gallery.i.length-1:gallery.current;
		gallery.current=(gallery.current>gallery.i.length-1)?0:gallery.current;
		return true;
	}
	return {
		init:function(selector){
			/*prefilling EMA.galleries*/
			EMA.galleries=(!EMA.galleries)?{}:EMA.galleries;
			$(selector).each(function(){
				var id=$(this).attr("id");
				EMA.galleries[id]=(typeof(EMA.galleries[id])=="undefined")?{i:[],current:0,id:id}:EMA.galleries[id];
				$(this).find("img").each(function(){
					EMA.galleries[id].i.push(this);
				});
				if(EMA.galleries[id].i.length){
					//must have images
					$(this).parent("div").prepend(getMarkup(EMA.galleries[id]));
				}
			});
		},
		navigate:function(id,dir){
			/*changes the image according to the updated counter*/
			var g=EMA.galleries[id];
			updateCounter(g,dir);
			$("#ii_"+id).get(0).src=g.i[g.current].src;
			$("#ii_"+id).get(0).alt=g.i[g.current].alt;
		}
	};
})();



EMA.vibe=(function(){
	/*Handles the VIBE radios*/
	var getFormE=function(e){return $("#frm_"+e.id.split("_")[1]);}
	var handleVis=function(c,elm){
		if (c){getFormE(elm).hide();}else{getFormE(elm).show()}
	}
	var _airports=(function(){
		/*Handles warning per airport see BAIRVII-85258*/
		var msg=[];
		var warnUser=function(o){
			var wr="",blocking=false,_callbacks=[],submitBtn=o.ids.submitBtn;
			for (var i=0,j=msg.length;i<j;i++){
				//setting alert message
				wr+="<p style=\"margin-bottom:1em;\">"+msg[i].msg+"<\/p>";
				if (typeof(msg[i].callback)=="function"){
					_callbacks.push(msg[i].callback)
				}
				//setting the return of the function if true the alert is a blocking alert
				blocking=(msg[i].blocking=="true")?true:blocking;
			}
			EMA.vibe.airports.message.callback=function(){
				for (var i=0,j=_callbacks.length;i<j;i++){
					_callbacks[i].call();
				}
				//simulates button click when everything is displayed = form submit
				$("#"+submitBtn).trigger("click");
			};
			$("body").alert(wr,{callback:function(){EMA.vibe.airports.message.callback.call();}});
			return blocking;
		}
		var hasMessage=function(o){
			var w=EMA.labels.Vibe.warnings,submitBtn=o.ids.submitBtn,txtFrom=o.ids.txtFromCode,txtTo=o.ids.txtToCode;
			if (w.length==0) {
				return false;
			} else {
				//looping through all eventual messages blocks
				for (var i=0,j=w.length;i<j;i++){
					//airport is not present in this specific message block
					if ($.inArray($("#"+txtFrom).val(),w[i].airports)<0&&$.inArray($("#"+txtTo).val(),w[i].airports)<0){
					} else {
						msg.push(w[i]);
					}
				}
				return (msg.length<=0)?false:true;
			}
		}
		var _message=(function(){
			var _init=function(o){
				var submitBtn=o.ids.submitBtn,txtFrom=o.ids.txtFromCode,txtTo=o.ids.txtToCode,displayMessage=true;
				$("#"+submitBtn).bind("click",function(){
					if ((hasMessage(o)==true)&&(displayMessage==true)){
						//there is a message for the specific combination
						warnUser(o);
						//cleaning msg cue
						msg=[];
						//message has been displayed -> not needed next time
						displayMessage=false;
						return false;
					} else {
						//no message
						return true;
					};
				})
			}
			return {init:_init,callback:function(){}}
		})();
		return {message:_message}
	})();
	var init=function(){
		var radios=$("body.vibe_open input:radio[name=category]");
		var radios=$(".vibe_open").find("input:radio[name=category]")
		if (radios.length>0){/*vibe_open*/
			radios.each(function(){
				//assigning bindings
				$(this).bind("click",function(){
					var that=this;
					radios.each(function(){handleVis((that!=this),this)})
				});
				//toggle current checked
				handleVis((!this.checked),this);
			});
		} else {
			radios=$("input:radio[name=category]");
			radios.each(function(){
				$(this).bind("click",function(){
					var url;
					switch (this.id){
						case "category_hotel":url="/en_be/book/hotels/";break;
						case "category_car":url="/en_be/book/cars/";break;
						default:url="/en_be/book/flights/";break;
					}
					window.location.href=url;
				});
			})
		}
	}
	return {init:init,airports:_airports}
})();

EMA.addScript('http://www.brusselsairlines.com/staticcontent/_js/ema.fromto.js?t=7-13-2010--9-28-54AM');
EMA.addScript('http://www.brusselsairlines.com/staticcontent/_js/jc/jCal.js?t=7-13-2010--9-28-54AM');
EMA.addScript('http://www.brusselsairlines.com/staticcontent/_js/ema.calendar.js?t=7-13-2010--9-28-54AM');
EMA.addScript('http://www.brusselsairlines.com/staticcontent/_js/ema.shadowbox.js?t=7-13-2010--9-28-54AM');


$(function() {
	/*Allows js parallels downloads*/
                EMA.addScript('http://www.brusselsairlines.com/staticcontent/_js/jquery.autocomplete.js?t=7-13-2010--9-28-54AM');
	EMA.addScript('http://www.brusselsairlines.com/staticcontent/_js/jquery.bgiframe.pack.js?t=7-13-2010--9-28-54AM');

	EMA.vibe.init();
	
	/* all airport list is loaded into 
	fills EMA.airports static file
	AIRPORTS COME BEFORE CITIES
	*/
	if(!EMA.initAirports){EMA.addScript("/com/scripts/ema.airports.js?t=7-13-2010--9-28-54AM");}
	/*Loading cities*/
	if(!EMA.initCities){EMA.addScript("/com/scripts/ema.cities.js?t=7-13-2010--9-28-54AM");}
  EMA.tabs.init();
/*IE FIXES*/
/*@cc_on
	//all IE
	$(".tabs li:not(.title)").addClass("rounded");
	$(".tabs li:not(.title)").wrapInner("<div class=\"w\"><\/div>").prepend("<div class=\"rr rt\"><span class=\"tl\">&nbsp;<\/span><span class=\"tr\">&nbsp;<\/span><\/div>");
	//IE6
	if(parseInt($.browser.version)<=6){
		$(".thumbnail+.ib").css({"margin-left":"95px","zoom":1});
		$(".articles li:first-child").css({"border":"none","padding-top":0});
		$(".datagrid td:first-child").css({"width":"60px"});
		
		//handling crappy resize (wheelzoom)
		if($("#vibe_wrapper").length && $("#page_wrapper").length){
			$("#vibe_wrapper").get(0).onresize=function(){
				$("#page_wrapper").get(0).style.width=$("#vibe_wrapper").get(0).offsetWidth+$("#content_wrapper").get(0).offsetWidth+"px";
				return false;
			}
		}

	};
	//BAIRVII-837 20090710 MGA
	$(".sticker_low_fares").each(function(){
		var lnk=$(this).find("a").attr("href");
		$(this).css({"cursor":"pointer"}).bind("click",function(){window.location.href=lnk;})
	});
@*/


	try {
		/*extending ShadowBox*/
		$.fn.extend({
			confirm: function(txt,options) {
				var eHref=(typeof($(this).attr("callback"))!="undefined")?$(this).attr("callback"):$(this).attr("href");
				Shadowbox.open({
					player:'html',
					content:'<div class="shadowbox_message" style="padding:0;height:100%"><table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%"><tr><td valign="middle" style="width:200px;padding:0 25px">'+txt+''+
							'<div class="yn_w"><span class="y_w"><a href="'+eHref+'" onclick="Shadowbox.close();'+
							((/javascript/.test(eHref))?'':'window.location=\'')+
							''+eHref+
							((/javascript/.test(eHref))?'':'\'')+';return false;">'+EMA.labels['confirmYes']+'</a></span>'+
							'<span class="n_w"><a href="javascript:Shadowbox.close();">'+EMA.labels['confirmNo']+'</a></span></div></td></tr></table></div>',
					height:200,
					width:250});
				return this.sb_confirm;
			}
,
alert:function(text,options){
				//more flexible alert BAIRVII-85258
				var defaults={callback:function(){},width:250,height:200};
				var props=$.extend(defaults,options);
				Shadowbox.open({
					player:'html',
					content:'<div class="shadowbox_message" style="padding:0;height:100%"><table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%"><tr><td valign="middle" style="width:'+props.width+';padding:0 25px">'+text+
							'<div class="yn_w"><span class="y_w"><a href="javascript:Shadowbox.close();('+escape(props.callback)+').call()">'+EMA.labels['close']+'</a></span></div></td></tr></table></div>',
					height:props.height,
					width:props.width});
				return this.sb_confirm;
			}
		});
	}catch(e){throw "Shadowbox required";}

	$.fn.extend({
		/*extending dropdown*/
/**
* Adds option to a select box (or series of select boxes)
*
* @author		mga
* @name			optionAdd
* @type			jQuery
* @example		$("#myselect").optionAdd("text", "value"); // add single value
*/
		optionAdd:function(t,v){
			this.each(function(){
				if (this.tagName.toLowerCase()!="select"){return false;}
				var o=new Option(t,v);
				this.options[this.options.length]=o;
			});
			return this;
		},
/**
* Empties options in a select box (or series of select boxes)
*
* @author		mga
* @name			optionsRemove
* @type			jQuery
* @example		$("#myselect").optionsEmpty(); // remove every option
* @example		$("#myselect").optionsEmpty("text", "value"); // remove every option then adds a defautl
*/
		optionsEmpty:function(t,v){
			this.each(function(){
				if (this.tagName.toLowerCase()!="select"){return false;}
				while (this.options.length>0){this.options[this.options.length-1]=null;}
				if(typeof(t)!="undefined"){$(this).optionAdd(t,v);}
			});
			return this;
		}
	});
	$.fn.extend({
		heightDiff:function(){
/**
* Returns sum of vertical padding & top/bottom borders
*
* @author		mga
* @name			heightDiff
* @type			jQuery
* @example		$("#element").heightDiff()(); // returns integer padding-top+padding-bottom+margin-top+margin-bottom
*/
			var h=0;
			this.each(function(){
				var bT=(isNaN(parseInt($(this).css("border-top-width"),10)))?0:parseInt($(this).css("border-top-width"),10);
				var bB=(isNaN(parseInt($(this).css("border-bottom-width"),10)))?0:parseInt($(this).css("border-bottom-width"),10);
				var pT=parseInt($(this).css("padding-top"),10);
				var pB=parseInt($(this).css("padding-bottom"),10);
				h=bT+bB+pT+pB;
			});
			return h;
		}
	});
	
/*design extentions*/
	/*INIT PROMOS*/
	$(".promo_box, .price_box").each(function(){
		$(this).css("cursor","pointer").bind("click",function(elm){
			var as=$(this).find("a");
			if(as.length===1){
				var url=as.attr("href");
				if($(this).find("a[rel=external]").length){
					var xsd=window.open(url,"external");
					xsd.focus();
				}else{
					window.location.href=url;
				}
				return false;
			}
		});
	});
	/*Popups*/
	$("a[rel=external]").bind("click",function(){
		var xsd=window.open(this.href,"external");
			xsd.focus();
		return false;
	})
	/*same height on the horizontal boxes */
	$(".cols.boxes .box").each(function(){
		$(this).height($(this).parents(".boxes").height()-$(this).heightDiff());
	});
	
	/*Parse Content of .cms_gallery into clickable prev next*/
	if($(".cms_gallery").length){EMA.gallery.init(".cms_gallery");}
});

/*FORM VALIDATION*/
EMA.Form=(function(){
	var forms=[];
	var groupbooking;
	var fromCity;
	var toCity;
	var UserMessages;
	var id=function(i){return "#"+i;}
	var setUrl=function(frm,chk){$(id(frm)).attr("action",($("input"+id(chk)).get(0).checked)?EMA.labels.Vibe.url.privilege:EMA.labels.Vibe.url.regular);}
	var validate=function(){
		var v=true;
		var err="";
		$(forms).each(function(){//looping through all forms
			o=this;
			//removing enctype for forms with input[type=file]
			if ($("#"+o.form).attr("enctype").indexOf("multipart")>-1){
				$("#"+o.form).removeAttr("enctype");
				$("#content input[type=submit]").bind("click",function(){
					$("#"+o.form).attr("enctype","multipart/form-data");
					$("#"+o.form).attr("action","");//resets the default action (to current page)
				});
			}
			UserMessages=EMA.labels.Vibe.errors;
			 var c =  $("input"+id(o.chkBookWithMiles)).get(0).checked;		
			$("input"+id(o.txtFromCode)).attr("name",c?"fromCity":"origin");
			$("input"+id(o.txtToCode)).attr("name",c?"toCity":"destination");
			$(id(o.intAdults)).attr("name",c?"numberOfAdults":"numAdults");
			$(id(o.intChildren)).attr("name",c?"numberOfChildren":"numChildren");
			$(id(o.intInfants)).attr("name",c?"numberOfInfants":"numInfants");
			//check nr passengers
			var MaxNumberOfAdults=9;
			var MaxNumberOfChildren=4;
			var MaxNumberOfInfants=4;
			var MaxNumberOfPassengers=9;
			var intNumberOfAdults=defaultNbr(id(o.intAdults),0);
			var intNumberOfChildren=defaultNbr(id(o.intChildren),0);
			var intNumberOfInfants=defaultNbr(id(o.intInfants),0);
			var intNumberOfSeniors=defaultNbr(id(o.intSeniors),0);
			var intNumberOfYouths=defaultNbr(id(o.intYouths),0);
			fromCity=$(id(o.txtFromCode)).val();
			toCity=$(id(o.txtToCode)).val();			
			var dateDeparture=$(id(o.txtDateDeparture)).val();
			var dateReturn=$(id(o.txtDateReturn)).val();
			var today=new Date();
			var dateFormat=new RegExp(/^([0-2]?[0-9]|3[0-1])\/([0]?[1-9]|1[0-2])\/[2]\d{3}$/)
			
			function setMessage(n){
				err+="<p>"+UserMessages[n]+"</p>";
				v=false;
			}
			function defaultNbr(id,v){
				//check and returns if field exist and value is a numeric default
				return ($(id).length&&!isNaN($(id).val()))?parseInt($(id).val(),10):v;
			}
			/*start checks*/
			// check for group bookings
			if (intNumberOfAdults == 99){
				intNumberOfAdults  = 1;
				groupbooking = 1;
			}
			//maximum passenger checks
			
			/*all intNumbers are integers*/
			if ((isNaN(intNumberOfAdults)||(isNaN(intNumberOfChildren))||(isNaN(intNumberOfInfants)))) {setMessage(0);}
			if (intNumberOfChildren > MaxNumberOfChildren) {setMessage(3);}
			if(intNumberOfInfants > MaxNumberOfInfants) {setMessage(4);}
			//adult-child ratio
			if ((intNumberOfAdults == 0 && intNumberOfChildren > 0) || (intNumberOfAdults == 0 && intNumberOfInfants > 0)) {
				//if children or infants, must have adult
				setMessage(5);
			} else if (intNumberOfAdults < intNumberOfInfants) {
				//must have at least 1 adult for each infant
				setMessage(6);
			}
			//count total passengers
			var TotalNumberOfPassengers=(intNumberOfAdults+intNumberOfChildren+intNumberOfInfants+intNumberOfYouths+intNumberOfSeniors);
			if (TotalNumberOfPassengers > MaxNumberOfPassengers) {
				setMessage(7);
			} else if (TotalNumberOfPassengers == 0) {
				setMessage(8);
			}
			//check fromCity
			if (fromCity=='' || fromCity=='ZZZ') {setMessage(13);}
			//check toCity
			if (toCity==''|| toCity=='ZZZ') {setMessage(13);}
			//need date format
			if (dateFormat.test(dateDeparture)) {
				//comes in dd-MM-yyy format
				var validDeparture=true;
				var d=dateDeparture.split("/");
				var dd={y:d[2],m:parseInt(d[1],10)-1,d:parseInt(d[0],10)}
				var jsDpt=0;
				try {jsDpt=new Date(dd.y,dd.m,dd.d)} catch(e) {setMessage(14);validDeparture=false;}
				$(id(o.txtDateDepartYear)).val(dd.y);
				$(id(o.txtDateDepartMonth)).val(dd.m+1);
				$(id(o.txtDateDepartDay)).val(dd.d);
				$(id(o.txtDateDepartDate)).val(dd.y+"-"+(dd.m+1)+"-"+dd.d);
			} else {
				setMessage(14);
			}
			if ($(id(o.chkTypeOfFlightReturn)).get(0).checked && dateReturn != 'dd/mm/yyyy') {
				//need date format
				//^(([0-2]?[0-9]|3[0-1])/([0]?[1-9]|1[0-2])/[2]\d{3})
				if(dateFormat.test(dateReturn)&&jsDpt){
					//comes in dd-MM-yyy format
					var r=dateReturn.split("/");
					var rd={y:r[2],m:parseInt(r[1],10)-1,d:parseInt(r[0],10)}
					var jsRet=0;
					try {jsRet=new Date(rd.y,rd.m,rd.d)} catch(e) {setMessage(15);}
			
					$(id(o.txtDateReturnDate)).val(rd.y+"-"+(rd.m+1)+"-"+rd.d);
					$(id(o.txtJourneySpanReturn)).val(true);
					$(id(o.txtJourneySpan)).val("RT");
					
					//check depart before return
					if (jsDpt > jsRet) {setMessage(9);}
					//check return max 340 days in advance
					if (Math.ceil((jsRet.getTime()- today.getTime())/EMA.day)>340) {;setMessage(12);}
					//set form post parameters
					$(id(o.txtDateReturnYear)).val(rd.y);
					$(id(o.txtDateReturnMonth)).val(rd.m+1);
					$(id(o.txtDateReturnDay)).val(rd.d);
				} else {
					
					setMessage(15);

				}
			}
			else{
			//set radio button to one-way
			$(id('type_of_flight_oneway')).get(0).checked = true;
			}
			
			/*Default Promotion Code*/
			var promo_code=($("input"+id(o.txtPromoField)).val().length==0)?$("input"+id(o.txtPromoDefault)).val():$("input"+id(o.txtPromoField)).val();
			$("input"+id(o.txtPromoField)).val(promo_code);

                                                /*service type*/
                                                if(!!$(id(o.serviceType)).length){
				var typeOfService=$(id(o.serviceType)).val();
				if(typeOfService==""||typeOfService.toUpperCase()=="ANY"){
					setMessage(16);
				}
			}

		});
			
		if(err.length){//displaying message
			Shadowbox.open({player: "html",content: "<div class=\"shadowbox_message\">"+err+"</div>"});
		}
		else
		{
		if (groupbooking == 1) {
			if (confirm(UserMessages[2])) {
	                	// redirect to booking groups online contact form
			window.location.href = '/en_be/book/flights/group-bookings.aspx?origin=' + fromCity  + '&destination=' +toCity + '&departDateYear=' + document.forms['mainForm'].departDateYear.value + '&departDateMonth=' + document.forms['mainForm'].departDateMonth.value + '&departDateDay=' +  document.forms['mainForm'].departDateDay.value + '&returnDateYear=' + document.forms['mainForm'].returnDateYear.value + '&returnDateMonth=' + document.forms['mainForm'].returnDateMonth.value + '&returnDateDay=' + document.forms['mainForm'].returnDateDay.value;return false;              			} else v=false;
		}
		}		return v;
	}
		//hertzCarLease
	var hotelBooking=(function(){
		var hbforms=[];
		var validate=function(n){
			var o=hbforms[n];
			var valid=true,err="";
		/*
			currency:"product",
			city:"CityName2",
			dpt_date:"trip_departure_day3",
			ret_date:"trip_return_day3",
			A:"NumAdult2",
			C:"NumChild2",
			submit_btn:"hotelBooking_btn"
		*/
			var currency=$(id(o.currency)).val(),city=$(id(o.city)).val();
			if (currency=='') {
				err+="Select your currency<br />";
				valid=false;
			}
			if (city=='') { 
				err+="Select a city<br />";
				valid=false;
			}
			if (valid){
				/*Opening new win*/
				var url=currency+"&rffr=-52220";
					url+="&CityName="	+$(id(o.city)).val();
					url+="&Indate="		+$(id(o.dpt_date)).val();
					url+="&OutDate="	+$(id(o.ret_date)).val();
					url+="&NumAdult="	+$(id(o.A)).val();
					url+="&NumChild="	+$(id(o.C)).val();
				var opened=window.open(url);
				return false;
			} else {
				Shadowbox.open({player: "html",content: "<div class=\"shadowbox_message\">"+err+"</div>"});
			}
		}
		return {
			init:function(params){
				var o=params.ids;
				var n=hbforms.length;
				$(id(o.submit_btn)).bind("click",function(){
					EMA.Form.hotelBooking.validate(n);
					return false;
				})
				hbforms.push(o);
			},
			validate:validate
		}
	})();
	//hertzCarLease
	var carRental=(function(){
		var crforms=[];
		var validate=function(n){
			//variables
			var o=crforms[n];
		/*
			pu_code:"pickup_city_vibe_code",
			pu_date:"leftmenu_panelFlights_CarRentalPickup_Date",
			pu_h:"Phour",
			pu_m:"Pminute",
			do_code:"return_city_vibe_code",
			do_date:"leftmenu_panelFlights_CarRentalReturn_Date",
			do_h:"Rhour",
			do_m:"Rminute",
			privilege:"memberlevel",
			residence:"ddlHertzCountryVibe",
			submit_btn:"vibe_hertz_submit"
		*/
			
			var valid=true;
			var err="";
			var pick={
				location:$(id(o.pu_code)).val(),
				date:{
					d:$(id(o.pu_date)).val(),
					a:$(id(o.pu_date)).val().split("/"),
					h:$(id(o.pu_h)).val(),
					m:$(id(o.pu_m)).val()
				}
			}
			var drop={
				location:$(id(o.do_code)).val(),
				date:{
					d:$(id(o.do_date)).val(),
					a:$(id(o.do_date)).val().split("/"),
					h:$(id(o.do_h)).val(),
					m:$(id(o.do_m)).val()
				}
			}
			var privilege=$(id(o.privilege)).val();
			var CR=$(id(o.residence)).val();
			
			/*Location Logic*/
			if (pick.location==""){
				err+="Please choose a pickup location.<br/>";
				valid=false;
			}
			drop.location=(drop.location=="")?pick.location:drop.location;

			if (pick.date.d=="dd/mm/yyyy"||pick.date.d=="")	{
				err+="Pickup date is required.<br/>";
				valid=false;
			}
			
			if (drop.date.d=="dd/mm/yyyy"||drop.date.d=="")	{
				err+="Return date is required.<br/>";
				valid=false;
			}
			
			/*DATE Logic*/
			var today = new Date(); //only allow rentals 1 day from now
			var pickupdate=new Date(pick.date.a[2],pick.date.a[1]-1,pick.date.a[0],pick.date.h,pick.date.m,0);
			var returndate=new Date(drop.date.a[2],drop.date.a[1]-1,drop.date.a[0],drop.date.h,drop.date.m,0);
			if (pickupdate < today)	{
				err+="Pickup date  must be in the future.<br/>";
				valid=false;
			}	
			if (returndate <= pickupdate){
				err+="Return date must be after pickup date.<br/>";
				valid=false;
			}	
			
			CR=(CR=="COM")?"BE":((CR=="UK")?"GB":CR);//KCAMPS - snv-1447
			
			if (valid){
				/*Opening new win*/
				var url="http://link.hertz.com/link.html?id=1700007&LinkType=HZLK&TargetType=Vehicle&lang=en";
					url+="&PULoc="	+pick.location;
					url+="&PUDate="	+pick.date.a.reverse().join("");
					url+="&PUTime="	+pick.date.h+pick.date.m;
					url+="&POS="	+CR;
					url+="&DOLoc="	+drop.location;
					url+="&DODate="	+drop.date.a.reverse().join("");
					url+="&DOTime="	+drop.date.h+drop.date.m;
					url+=(privilege!="")?'&Corp_discount='+privilege:"";
				var opened=window.open(url);
				return false;
			} else {
				Shadowbox.open({player: "html",content: "<div class=\"shadowbox_message\">"+err+"</div>"});
			}
		}
		return {
			init:function(params){
				var o=params.ids;
				var n=crforms.length;
				$(id(o.submit_btn)).bind("click",function(){
					EMA.Form.carRental.validate(n);
					return false;
				})
				crforms.push(o);
			},
			validate:validate
		}
	})();
	return {
		init:function(params){
			var o=params.ids;
			forms.push(o);
			/*Booking with Miles*/
			$("input"+id(o.chkBookWithMiles)).bind("click",function(){
				var c=this.checked;//checked -> privilege
				//changing input names
				$("input"+id(o.txtFromCode)).attr("name",c?"fromCity":"origin");
				$("input"+id(o.txtToCode)).attr("name",c?"toCity":"destination");
				$(id(o.intAdults)).attr("name",c?"numberOfAdults":"numAdults");
				$(id(o.intChildren)).attr("name",c?"numberOfChildren":"numChildren");
				$(id(o.intInfants)).attr("name",c?"numberOfInfants":"numInfants");
				//booking with miles forces flexible flight
				if(!$("input"+id(o.chkFlexibleBooking)).get(0).checked){
					$("input"+id(o.chkFlexibleBooking)).trigger("click");
				}
				setUrl(o.form,o.chkBookWithMiles);
			});
			/*Flexible flight*/
			$("input"+id(o.chkFlexibleBooking)).bind("click",function(){
				var c=this.checked;//changing values
				$("input[name="+o.txtSearchType+"]").val(c?"FLEXIBLE":"NORMAL");
				$("input[name="+o.txtSearchTypeDate+"]").val(c?"FLEXIBLE":"NORMAL");
			});
		},
		validate:validate,
		setUrl:setUrl,
		carRental:carRental,
		hotelBooking:hotelBooking
	}
})();