$(function()
{
	
	$(".tour_images").lightBox();
	$(".tour_map").lightBox();
	
	/* Contact us from on tour_info.php */
	$("#aContactUs").click(function(event) {
		event.preventDefault();
		$("#divContactUs").slideToggle();
	});
	
	$("#divContactUs .close").livequery("click", function(event) {
		event.preventDefault();
		$("#divContactUs").slideUp();
	});	
	
	$("#btnContactUs").click(function(event) {
		var fields = new Array("txtFromMail","txtFromName","txtQuestion");
		var types = new Array("email","text","text");
		var valid = validateForm(fields,types);
		if(valid) {
			ajaxContent("#divContactUsContent","/include/ajax/user/contact_us.php","email="+$("#txtFromMail").val()+"&name="+$("#txtFromName").val()+"&msg="+$("#txtQuestion").val()+"&tourID="+$("#tourID").val()+"&tour_name="+$("#tour_name").val()+"&tour_ext_id="+$("#tour_ext_id").val()+"&request_uri="+$("#request_uri").val()+"&request_host="+$("#request_host").val());
		}
	});	
	
	/* Login functions */
	
	$("#btnLogin").click(function(event) {
		var login = ajaxValue("/include/ajax/user/login.php", "user="+$("#txtUsername").val()+"&pass="+$("#txtPassword").val());
		if(login==1) {
			if($("#hidReturnPath").val().length>0) goToUrl($("#hidReturnPath").val());
			else goToUrl(window.location.href);
		}
		else {
			alert("Kunde inte logga in!");
		}
	});	
	$("#btnLogout").click(function(event) {
		var login = ajaxValue("/include/ajax/user/logout.php", "");
		goToUrl(window.location.href);
	});	
	
	$(".aLostPassword").livequery("click", function(event) {
		ajaxContent("#dialog","/password_reminder.php", "", "dialog_open()");
	});

	$("#btnPasswordReminder").livequery("click", function(event) {
		var fields = new Array("txtEmail");
		var types = new Array("email");
		var valid = validateForm(fields,types);
		if(valid) {
			ajaxContent("#frmPasswordReminder","/include/ajax/user/password_reminder.php","email="+$("#txtEmail").val());
		}
	});
	
	$("#txtUsername").focus( function(){
		if(this.value == this.alt){
			this.value = "";	
		}			
	});
	
	$("#txtUsername").blur( function(){
		if(this.value == ""){
			this.value = this.alt;	
		}			
	});

	$("#txtPassword").focus( function(){
		if(this.value == this.alt){
			this.value = "";	
		}			
	});
	
	$("#txtPassword").blur( function(){
		if(this.value == ""){
			this.value = this.alt;	
		}			
	});

	/* Account infortmation */
	$("#btnUpdateAccountProfile").click(function(event) {	
		$("#divSubmit").slideUp();
		var fields = new Array("txtMyEmail","txtFirstname","txtNewPassword;txtNewPasswordC");
		var types = new Array("email","text","new_password");
		var valid = validateForm(fields,types);

		if(valid) {
			newsletter = $('#cbNewsletter').attr('checked') ? 1 : 0;
			sms = $('#cbSms').attr('checked') ? 1 : 0;
			ajaxContent("#divSubmit","/include/ajax/user/update_account_profile.php","email="+$("#txtMyEmail").val()+"&password="+$("#txtNewPassword").val()+"&firstname="+$("#txtFirstname").val()+"&lastname="+$("#txtLastname").val()+"&adress="+$("#txtAdress").val()+"&zip="+$("#txtZip").val()+"&city="+$("#txtCity").val()+"&phone="+$("#txtPhone").val()+"&country="+$("#txtCountry").val()+"&newsletter="+newsletter+"&sms="+sms);
			$("#divSubmit").slideDown();
		}
	});	
	
	/* Sign up */
	$("#btnSignUp").click(function(event) {	
		$("#divSubmit").slideUp();
		var fields = new Array("txtEmail");
		var types = new Array("email");
		var valid = validateForm(fields,types);

		if(valid) {
			$("#frmSignUp").hide();
			ajaxContent("#divSubmit","/include/ajax/user/sign_up.php","email="+$("#txtEmail").val());
			$("#divSubmit").slideDown();
		}
	});	
	
	/* Links */
	$(".aMyAccount").click(function(event) {
		goToUrl("/my_account.php");
	});
	
	$("#ddlCabinType").change(function () {	
		$("#imgLoadCabinType").show();
		if($("#ddlCabinType").val()==0) {
			$("#ddlPriceDate").attr("disabled", true);
			if($("#ddlPriceDate").val()!=0) $("#divPriceDate").slideUp();
		}
		else {
			if($("#ddlPriceDate").val()!=0) $("#divPriceDate").slideUp();
			$("#ddlPriceDate").attr("disabled", false);
		}
		var date = $("#ddlCabinType").val().split(";");
		ajaxContent("#ddlPriceDate","/include/ajax/tour/tour_price_date_cabintype.php","tourID="+date[0]+"&cabin_type="+date[1],"$(\"#imgLoadCabinType\").hide()");
	});
	
	$("#ddlPriceDate").change(function () {
		$("#imgLoadPriceDate").show();
		if($("#ddlPriceDate").val()!=0) {
			var date = $("#ddlPriceDate").val().split(";");	
			ajaxContent("#divPriceDate","/include/ajax/tour/tour_price_date.php","tourID="+date[0]+"&start_date="+date[1]+"&end_date="+date[2]+"&cabin_type="+date[3],"$(\"#imgLoadPriceDate\").hide()");
			$("#divPriceDate").slideDown();	
		}
		else {
			$("#divPriceDate").slideUp();
			$("#imgLoadPriceDate").hide();
		}
	});	
	
	
	$("#ddlSearchCountry").change(function () {	
		$("#imgLoadTourCities").show();
		if($("#ddlSearchCountry").val()==0) {
			$("#ddlSearchCity").attr("disabled", true);
			//if($("#ddlPriceDate").val()!=0) $("#divPriceDate").slideUp();
		}
		else {
			//if($("#ddlPriceDate").val()!=0) $("#divPriceDate").slideUp();
			$("#ddlSearchCity").attr("disabled", false);
		}
		ajaxContent("#ddlSearchCity","/include/ajax/tour/tour_city_select.php","id="+$("#ddlSearchCountry").val(),"$(\"#imgLoadTourCities\").hide()");
	});
	
	/* Inquiry functions */
	$("#ddlInquiryTravellers").change(function () {	
		var nr = $("#hidNrTravellers").val();										
		for(var i=1;i<=nr;i++) {
			if($("#ddlInquiryTravellers").val()>=i) $("#divTraveller"+i).show();
			else $("#divTraveller"+i).hide();
		}
	});	
	
	$("#btnInquiry").livequery("click", function(event) {
		var date = $("#ddlPriceDate").val().split(";");						
		goToUrl("/inquiry.php?id="+date[0]+"&start_date="+date[1]+"&end_date="+date[2]+"&cabin_type="+date[3]);
	});

	$("#btnSendInquiry").click(function(event) {
		var fields = new Array("txtMyEmail","txtFirstname","txtLastname","txtPhone","cbTerms","ddlInquiryTravellers");
		var types = new Array("email","text","text","text","checkbox","notzero");
		
		for(var i=1;i<=$("#ddlInquiryTravellers").val();i++) {
			fields[fields.length] = "txtTrvFirstname"+i;
			types[types.length] = "text";
			fields[fields.length] = "txtTrvLastname"+i;
			types[types.length] = "text";
			fields[fields.length] = "txtDOB"+i;
			types[types.length] = "shortdate_age";
		}
		
		var valid = validateForm(fields,types);
		if(valid) {
			$("#btnSendInquiry").attr("disabled",true)
			$("#frmSendInquiry").attr("action","inquiry_send.php");
			$("#frmSendInquiry").attr("method","POST");
			$("#frmSendInquiry").submit();
		}
	});
	
	$("#btnConfirmInquiry").click(function(event) {
		var fields = new Array('txtEmergName','txtEmergPhone');
		var types = new Array('text','text');
		
		for(var i=0;i<$("#pax").val();i++) {
			fields[fields.length] = "txtPass"+i;
			types[types.length] = "text";
			fields[fields.length] = "txtPassIssue"+i;
			types[types.length] = "shortdate_age";
			fields[fields.length] = "txtPassUntil"+i;
			types[types.length] = "shortdate_after";
		}
		
		var valid = validateForm(fields,types);
		if(valid) {
			$("#btnConfirmInquiry").attr("disabled",true)
			$("#frmConfirmInquiry").attr("action","inquiry_confirm_send.php");
			$("#frmConfirmInquiry").attr("method","POST");
			$("#frmConfirmInquiry").submit();
		}
	});
	
	$(".aHelp").livequery("click", function(event) {
		pageTracker._trackEvent('QuickHelp', 'Show', $(this).attr("rel"));						
		ajaxContent("#dialog","/help.php","name="+$(this).attr("rel"), 'dialog_open()');
	});	

	$("#start_date").datepicker({dateFormat: 'yy-mm-dd', minDate: +1, firstDay: 1});
	$("#end_date").datepicker({dateFormat: 'yy-mm-dd', minDate: +2, firstDay: 1});

	$("#dialog").dialog({
		bgiframe: true,
		width: 500,
		height: 400,
		modal: true,
		autoOpen: false,
		sizeable: false,
		overlay: {
			backgroundColor: '#000',
			opacity: 0.5
		}
	});
	
	

});

function ajaxContent(id,path,vars,callback) {
	 $.ajax({
	   type: "POST",
	   url: path,
	   data: vars,
	   success: function(html){
		$(id).html(html);
		if(callback!="") eval(callback);
	   }
	 });
}

function ajaxValue(path, vars) {
	var html = $.ajax({
	type: "POST",
	url: path,
	data: vars,
	cache: false,
	async: false
	}).responseText;	

	return html;
}

function goToUrl(url) {
	if(url!="") window.location.href = url;
}


function validateForm(fields, types) {
	var form_valid = true;
	if(fields.length==types.length) {
		for(var i=0;i<fields.length;i++) {
			switch(types[i]) {
				case "text": 			if($("#"+fields[i]).val().length==0) {
												form_valid = false;
												$("#"+fields[i]).addClass("error");
										}
										else $("#"+fields[i]).removeClass("error");
										break;
										
				case "email": 			if($("#"+fields[i]).val().length==0 || !validateEmail($("#"+fields[i]).val())) {
												form_valid = false;
												$("#"+fields[i]).addClass("error");
										}
										else $("#"+fields[i]).removeClass("error");
										break;
				case "checkbox":		if($("#"+fields[i]).attr("checked")) $("#"+fields[i]).removeClass("error");
										else {
											form_valid = false;
											$("#"+fields[i]).addClass("error");
										}
										break;
										
				case "notzero":			if($("#"+fields[i]).val()>0) $("#"+fields[i]).removeClass("error");
										else {
											form_valid = false;
											$("#"+fields[i]).addClass("error");
										}
										break;
				case "shortdate_age":	var d = new Date();
										if($("#"+fields[i]).val().length==10 && $("#"+fields[i]).val().substring(4,5)=="-" && $("#"+fields[i]).val().substring(7,8)=="-" && parseInt($("#"+fields[i]).val().substring(5,7),10)>=1 && parseInt($("#"+fields[i]).val().substring(5,7),10)<=12 && parseInt($("#"+fields[i]).val().substring(8,10),10)>=1 && parseInt($("#"+fields[i]).val().substring(8,10),10)<=31 && parseInt($("#"+fields[i]).val().substring(0,4))>=(d.getFullYear()-100) && parseInt($("#"+fields[i]).val().substring(0,4))<=d.getFullYear()) {
											 $("#"+fields[i]).removeClass("error");	
										}
										else {
											form_valid = false;
											$("#"+fields[i]).addClass("error");
										}
										break;
				case "shortdate_after":	var d = new Date();
										if($("#"+fields[i]).val().length==10 && $("#"+fields[i]).val().substring(4,5)=="-" && $("#"+fields[i]).val().substring(7,8)=="-" && parseInt($("#"+fields[i]).val().substring(5,7),10)>=1 && parseInt($("#"+fields[i]).val().substring(5,7),10)<=12 && parseInt($("#"+fields[i]).val().substring(8,10),10)>=1 && parseInt($("#"+fields[i]).val().substring(8,10),10)<=31 && parseInt($("#"+fields[i]).val().substring(0,4))>=d.getFullYear() && parseInt($("#"+fields[i]).val().substring(0,4))<=(d.getFullYear()+100)) {
											 $("#"+fields[i]).removeClass("error");	
										}
										else {
											form_valid = false;
											$("#"+fields[i]).addClass("error");
										}
										break;
										
				case "password":		if(validatePassword($("#"+fields[i]).val())) $("#"+fields[i]).removeClass("error");
										else {
											form_valid = false;
											$("#"+fields[i]).addClass("error");
										}
										break;	
										
				case "new_password": 	fields[i] = fields[i].split(";");
										if($("#"+fields[i][0]).val()!=$("#"+fields[i][1]).val()) {
											form_valid = false;
											$("#"+fields[i][0]).addClass("error");
											$("#"+fields[i][1]).addClass("error");
										}
										else {
											if($("#"+fields[i][0]).val().length>0) {
												if(validatePassword($("#"+fields[i][0]).val())) {
													$("#"+fields[i][0]).removeClass("error");
													$("#"+fields[i][1]).removeClass("error");
												}
												else {
													form_valid = false;
													$("#"+fields[i][0]).addClass("error");
													$("#"+fields[i][1]).addClass("error");
												}
											}
											else {
												$("#"+fields[i][0]).removeClass("error");
												$("#"+fields[i][1]).removeClass("error");
											}
										}
										break;		
			}
		}
		return form_valid;
	}
	else return false;
}

function validatePassword(password) {
	if(password.length>=6) {
		var test_val = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
		var ok = true;
		for(var j=0;j<password.length;j++) {
			if(test_val.indexOf(password.charAt(j),0) == -1) ok = false;	
		}
		return ok;
	}
	else {
		return false;
	}
}

function validateEmail(address) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   return reg.test(address);
}

function dialog_open() {
	$("#dialog").dialog('open');
}
