﻿//-------------------------------------
// Change page querystring
//-------------------------------------

function mergeParameters(name, val, query){
	var pObj = {}
	pObj[name] = {"name":name, "value":val}
	
	if(typeof query == "undefined") query = $.getAllQueryStrings();
	return $.extend(true,query, pObj);	
}

function ChangePageQuerystring(name, val){	
	var query = mergeParameters(name, val);
	var query_arr = [];
	for(var param in query){
		query_arr.push(query[param]);
	}
	var query_str = $.param(query_arr);

	var location = window.location.href;
	if(location.indexOf("#")>-1) location = location.split("?")[0];
	if(location.indexOf("?")>-1) location = location.split("?")[0];	
	
	window.location.href = location+"?"+query_str
}


//-------------------------------------
// initfindChooserTabs
//-------------------------------------
function initAttractionsChooser() {
	if($('#chooser').length == 0) return
	$("#chooser input:checkbox").click(function(){
		finderSelectOnMap($(this).val(), this.checked)
	})	
	$("#chooser a#resetButton").click(function(){
		$("#chooser input:checkbox").map(function(){
			this.checked = false
		});
	})	
}

//-------------------------------------
// initfindChooserTabs
//-------------------------------------
function initFinder() {
	if($('#finder').length == 0) return
	$("#finder input:checkbox").click(function(){
		finderSelectOnMap($(this).val(), this.checked)
	})	
	$("#finder div.ui-tabs").tabs({
		fx: {
			opacity: 'toggle',
			duration: 'fast'
		},
		 collapsible: true,
		 selected: 0
	});
	$("#finder div.ui-tabs").tabs( 'select' , 0 )
	$("#finder a#resetButton").click(function(){
		$("#finder input:checkbox").map(function(){
			this.checked = false
		});
		$("#finder #finderSelect option:first")[0].selected = true;	 
	})
	

}
//-------------------------------------
// setOrderForm
//-------------------------------------
function setOrderForm(){
	if($('#orderBrochure').length == 0) return
	//
	var $SendButton = $("#orderForm a#sendButton");
	$SendButton.map(function(){
		$(this).attr("mshref",$(this).attr("href").split(":")[1]);
		$(this).attr("href","javascript:void(0)")
	});
	$SendButton.click(function(event) {
		var $Div = $("#orderForm div.ErrorText");
		checkAndSubmitForm($("#orderBrochure"), $(this).attr("mshref"), $Div);
	});
	
	var $ResetButton = $("#orderForm a#resetButton");
	$ResetButton.click(function(){
		$("#orderBrochure input:checkbox").map(function(){
			this.checked = false
		});		
		$("#orderBrochure select").map(function(){
			$("option:first", this)[0].selected = true;
		});
		$("#orderBrochure input:text").val("")
		hideErrors()
		hideErrorTexts()
	})
}
//-------------------------------------
// setSearchEvents
//-------------------------------------
function setSearchEvents(){
	if($('#searchBox').length == 0) return
	//
	var $SearchInput = $('#searchInputBg input');

	$SearchInput.focus(function() {
		$('#searchInputBg').attr("class","searchInputBg_focus");
	});	
	$SearchInput.blur(function() {
		$('#searchInputBg').attr("class","searchInputBg_out");
	});	
	$SearchInput.keydown(function(event) {
		if (event.keyCode == 13) {
			$('#searchButton').click();
			return true
		} 
	});
}
//-------------------------------------
// Check and submit form
//-------------------------------------
function checkAndSubmitForm($Container, formFunction, $Div) {
	var errorCount = 0;		
	hideErrors()
	hideErrorTexts()

	var $TextInputs = $("input:text, input:password, textarea", $Container)
	$TextInputs.each( function(index) {
		if(checkForm($(this), $Div)){			
			displayError($(this), true);
			errorCount++;
			return false;
		}
	});
	if(errorCount==0){
		if($(".BrochureList input:checked", $Container).length == 0 ) {
				displayErrorText($Div, "Vælg brochure nedenunder")
				errorCount++;
				return false;
		}	
	}
	if(errorCount==0){
		eval(formFunction);
	}	
}
function displayError($Input, error){
	if (error) {
		$Input[0].focus();
		$Input[0].select()
		$Input.addClass("error")
		$Input.parent().addClass("labelError")
	} else {
		$Input.removeClass("error")
		$Input.parent().removeClass("labelError")
	}
}
function displayErrorText($Div, error_str){
	if (error_str != "" || $Div.text() != "") {
		$Div.text(error_str)
		$Div.show()
	} else {
		$Div.hide()
	}
}
function hideErrors(){
	$("label.labelError").removeClass("labelError")
	$("input.error").removeClass("error")
}
function hideErrorTexts(){
		$(".ErrorText").text("");
		$(".ErrorText").hide();
}
function checkForm($Input, $Div) {
	if ($Input.parent().find("em").length > 0 && $Input.val() == "") {		
		displayErrorText($Div, "Det markerede inputfelt skal udfyldes")
		return true;
	}	
	var RegExPnr= new RegExp("pnr");
	if (RegExPnr.test($Input.attr("id"))) {
			if($Input.val() != "" && isNaN($Input.val())){
				displayErrorText($Div, "Postnummer skal kun være cifre")
				return true;
			}else if($Input.val().length != 4){
				displayErrorText($Div, "Postnummer består af 4 cifre")
				return true;
			}
	}	
	var RegExEmail= new RegExp("email");
	if (RegExEmail.test($Input.attr("id"))) {
		if (checkEmail($Input.val())) {
			displayErrorText($Div, "Dette er en ugyldig e-mail adresse")
			return true;
		}
	}	
	return false;
}
function checkEmail(txt, msg) {
	var RegExFilter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (RegExFilter.test(txt)) {
		if (txt.length >= 7) {
			if (txt.indexOf("@") >= 0) {
				if ((txt.indexOf("@") + 2) < txt.lastIndexOf(".")) {
					if (txt.lastIndexOf(".") < (txt.length - 2)) {
						return false;
					}
				}
			}
		}
	}
	return true;
}

//-------------------------------------
// Run form scripts
//-------------------------------------
function runFormScripts(){
	setOrderForm();
	setSearchEvents();
	initFinder();
	initAttractionsChooser();
}
