function getSiteLang ()
{
	// Default language
	var lang = 'sv';
	
/*	var meta = $jq('meta[http-equiv=Content-Language]');
	
	if (meta == null || meta.length < 1)
		return lang;
	
	var metaLang = meta.attr('content');
	if (metaLang != null && metaLang.length > 0)
		return metaLang;
	else
		return lang;
*/

	var meta = $jq('html').attr('lang');
	if (meta == null || meta.length < 1)
		return lang;
	else
		return meta;
}

/* Replace headlines with exotic fonts */
Cufon.replace('h1');
Cufon.replace('h2');
Cufon.replace('h3');
Cufon.replace('h4');
Cufon.replace('#bookingWrapper span');

Cufon.replace('.progressBarLabel');

// var BOOKING_BASE_URL = 'http://www4.skistar.com/app/projects/common/templates/timebooking/';
var BOOKING_BASE_URL = '/app/projects/common/templates/timebooking/';

var selectedSite = "salen";
var progressBarCurrentWidth = 0;
var animateTicker = true;
var pauseAnimation = false;
var currentSlideURL = "";
var numSteps = 6;
var currentStep = 1;
var slideDirection = true;
var getParams = {site: selectedSite, lang: getSiteLang()};
var slideVertical = false;
var loginAttempt = 0;
var loginMode = 0; // Determines the render mode in step 2 where 0=LoginChoice, 1=LoginForm and 2=registerForm
var printAllErrors = false;
var errorMessageTimer = false;
var emailAddressEntry = "";
var userSelectedSite = false;

// Booking ariables
var bookingValueTime = "";
var bookingValuePool = "";
var bookingValueDate = "";

var OmniturePageNameBase;

function setSite (currentSite)
{
	userSelectedSite = true;
	$jq('#bookingSplash').hide();
	
	$jq('a.folder_lindvallen').addClass('folder_salen_lindvallen');
	$jq('a.folder_tandadalen').addClass('folder_salen_tandadalen');
	
	$jq('#destinationFolders a').removeClass("selected");
	
	selectedSite = currentSite;
	getParams.site = selectedSite;
	
	$jq('#destinationFolders a.folder_' + currentSite).addClass("selected");
	
	loadStep (1);
}

function addErrorMessage (errorHeadline, errorInfo)
{
	$jq('.errorMessages').append('<span><em>'+errorHeadline+'</em>'+errorInfo+'</span>');
	
	clearTimeout(errorMessageTimer);
	errorMessageTimer = setTimeout('showErrorMessages()', 50);
}

function showErrorMessages()
{
	Cufon.replace('.errorMessages');
	
	if (!$jq('.errorMessages').is(':visible'))
	{
		$jq('.errorMessages').fadeIn(100, function(){
			fitErrorMessages ();
		});
	}
	else
	{
		fitErrorMessages();
	}
}

function clearErrorMessages ()
{
	$jq('.errorMessages').fadeOut(200, function () { $jq(this).html('') });
}

function fitErrorMessages ()
{
	var margin  = $jq('.errorMessages').height() - 5;
	
	//$jq('#bookingSlide').height($jq('#bookingSlide').height + margin);
	
	$jq('#bookingSlide').css('padding-top', margin + 'px');
}

function verifyExit()
{
	return 'Vill du avbryta din påbörjade bokning?';
}

function initBooking()
{
	OmniturePageNameBase = s.pageName;
	// Create a holder div for the error messages
	$jq('#progressBar').after('<div class="errorMessages"></div>');	
	
	// Register ajax fail handler
	$jq("#bookingSlide").ajaxError(function(event, request, settings){
	   //alert("Ett fel uppstod vid laddning av sida: " + settings.url);
	 });
	
	loadStep (1);
	
	animateBooking();
}

function setBookingInfo(header, body)
{
	$jq('#bookingInfoHeader').html(header);
	$jq('#bookingInfoBody').html(body);
	
	Cufon.replace('#bookingInfo');
}

function showLoginChoice ()
{
	slideDirection = false;
	
	loginMode = 0;
	loadStep(2);
}

function showLoginForm (email)
{
	emailAddressEntry = email;
	loginMode = 1;
	
	loadStep (2);
}

function showRegisterForm ()
{
	loginMode = 2;
	
	currentStep = 4;
	loadStep(4);
}

function animateBooking ()
{
		if (pauseAnimation)
		{
			setTimeout("animateBooking()", 700);
			return;
		}
	
		if (animateTicker)
			var increment = 2;
		else
			var increment = -2;
	
		if (progressBarCurrentWidth == 0)
			progressBarCurrentWidth = $jq('#progressBarCurrent').width();
		
		newWidth = progressBarCurrentWidth + increment;
		
		animateTicker = !animateTicker;
		
		$jq('#progressBarCurrent').animate({width:newWidth}, 700);
		
		setTimeout("animateBooking()", 700);
}

function refreshHeight()
{
	if (($jq('#bookingSlide').height() + 40) > $jq('.bookingWrapper').height())
		$jq('.bookingWrapper').height($jq('#bookingSlide').height() + 40);

}

function setBarWidth (newWidth)
{
	var e = '#progressBarComplete';
	
	pauseAnimation = true;	
	
	$jq(e).animate({width:newWidth}, 300);
	setTimeout("pauseAnimation=false", 300);
}

function updateWeek ()
{
	slideVertical = true;
	
	getParams.date= $jq('#selectWeek').val();
	loadStep (1);
}

function setCursorBarWidth (newWidth)
{
	var e = '#progressBarCurrent';
	
	progressBarCurrentWidth = newWidth;
	
	pauseAnimation = true;	
	
	$jq(e).animate({width:newWidth}, 300);
	setTimeout("pauseAnimation=false", 300);
}

function nextStep ()
{
	if (currentStep >= numSteps)
		return;
	
	currentStep++;

	loadStep (currentStep);
}

function nextStepValidate()
{
	// Highlight all errors
	printAllErrors = true;	
	
	doValidateForm ();
	
	if (formValidatorState)
	{
		setCursorBarWidth (430);

		getParams.name1 = $jq("input[name=name1]").val();
		getParams.name2 = $jq("input[name=name2]").val();
		getParams.addr1 = $jq("input[name=addr1]").val();
	    getParams.addr3 = $jq("input[name=addr3]").val();
	    getParams.addr4 = $jq("input[name=addr4]").val();
	    getParams.addr5 = $jq("select[name=addr5]").val();
	    getParams.email = $jq("input[name=email]").val();
	    getParams.upwd = $jq("input[name=upwd]").val();
	    getParams.upwd2 = $jq("input[name=upwd2]").val();
	    getParams.phone3 = $jq("input[name=phone3]").val();
	    getParams.ctrlAddrlid = $jq("input[name=addrlid]").val();
		
		currentSlideURL = "register.php";
		
		currentStep = 3;
		
		$jq('#bookingInfo .inner').fadeOut('fast', loadStepSlide);
		
	//	nextStep();
	}
}

function backStep()
{
	currentStep--;
	
	if (currentStep < 1)
		currentStep = 1;
	
	slideDirection = false;
	
	loadStep(currentStep);
}

function loadBackStep (step)
{
	slideDirection = false;
	
	loadStep(step);
}

function loadStep (step)
{
	//console.log("loadStep " + step);
	
	currentStep = step;
	
	clearErrorMessages();
	
	printAllErrors = false;
	
	switch (step)
	{
	    case 1:
	        currentSlideURL = "matrix.php";
		
	        $jq('#progressBar').toggleClass('currentStep3', false);
	        $jq('#progressBar').toggleClass('currentStep2', false);
	        $jq('#progressBar').toggleClass('currentStep1', true);
			
	        setBarWidth(0);
			
	        //$jq('#progressBarLabel1').html('VÄLJ TID');
	        //Cufon.refresh('.progressBarLabel');
			
			break;

	    case 2:
			
			//window.onbeforeunload = verifyExit;
			
	        currentSlideURL = "loginForm.php";			
			
			if (loginMode == 1)
			{
				currentSlideURL = "loginForm.php?mode=login";
			}
			
			if (loginMode == 2)
			{
				currentSlideURL = "loginForm.php?mode=register";
			}
			
			$jq('#progressBar').toggleClass('currentStep1', false);
			$jq('#progressBar').toggleClass('currentStep3', false);
			$jq('#progressBar').toggleClass('currentStep2', true);
			
			//getParams.email = $jq("input[name=email]").val();
			
			setBarWidth (352);
			
			var timeSplit = bookingValueTime.split('_');
			bookingValuePool = timeSplit[0];
			bookingValueDate = timeSplit[1];
			
			getParams.datefom = bookingValueTime;
			getParams.arrdate = bookingValueDate;
			//getParams.not = $jq("select[name=not]").val();
			
			//$jq('#progressBarLabel1').html('ANPASSA TID: TORSDAG V 42 ');
			Cufon.refresh('.progressBarLabel');

			break;


        case 3:
		    
			break;


        case 4:
            currentSlideURL = "registerForm.php";
			setCursorBarWidth (350);
			
			break;


        case 5:
            currentSlideURL = "confirm.php";
	    
			setCursorBarWidth (430);

			getParams.name1 = $jq("input[name=name1]").val();
			getParams.name2 = $jq("input[name=name2]").val();
			getParams.addr1 = $jq("input[name=addr1]").val();
			getParams.addr3 = $jq("input[name=addr3]").val();
			getParams.addr4 = $jq("input[name=addr4]").val();
			getParams.addr5 = $jq("select[name=addr5]").val();
			getParams.email = $jq("input[name=email]").val();
			getParams.upwd = $jq("input[name=upwd]").val();
			getParams.upwd2 = $jq("input[name=upwd2]").val();
			getParams.phone3 = $jq("input[name=phone3]").val();
			
			break;


        case 6:
			
			window.onbeforeunload = null;

            currentSlideURL = "book.php";
	    
			$jq('#progressBar').toggleClass('currentStep1', false);
			$jq('#progressBar').toggleClass('currentStep2', false);
			$jq('#progressBar').toggleClass('currentStep3', true);
			
			getParams.campaigncode = $jq("input[name=campaigncode]").val();
			
			Cufon.refresh('.progressBarLabel');
			
			setBarWidth (800);
			
			break;
	}
	
	//console.log("Email: " + getParams.email);
	
	//console.log(getParams);
	
	if (slideVertical)	
		loadStepSlide();
	else
		$jq('#bookingInfo .inner').fadeOut('fast', loadStepSlide);
}

	function sendOmnitureStat(pn)
	{		
		s.pageName = OmniturePageNameBase + ":" + pn;
		s.t();
	}
	
	function loadStepSlide()
	{
		if (slideDirection)
			var slideOffset = (0 - $jq(document).width());
		else
			var slideOffset = $jq(document).width();
		
		$jq('.bookingStep').css("background-image", "url(/Projects/VacationClub/Images/loader.gif)");
		
		if (slideVertical)
			$jq('#bookingSlide').fadeOut(500, loadStepContent);
		else
			$jq('#bookingSlide').animate({left: slideOffset}, 500, "swing", loadStepContent);
					
	}
		function loadStepContent ()
		{
			var fullURL = BOOKING_BASE_URL + currentSlideURL;			
			
			$jq.get(fullURL, getParams, function (data) 
			{	
				$jq('#bookingSlide').html(data);
				
				// Dim the content on the first load
				if (!userSelectedSite)
				{
					$jq('#bookingSplash').show();
				}	
				
				Cufon.refresh('#bookingSlide');
				
				if (slideVertical)
				{
					$jq('#bookingSlide').fadeIn(500, loadStepComplete);
				}
				else
				{
					if (slideDirection)
						$jq('#bookingSlide').css('left', $jq(document).width());
					else
						$jq('#bookingSlide').css('left', (0 - $jq(document).width()));
				
					$jq('#bookingSlide').animate({left:0}, 500, "swing", loadStepComplete);
				}
			});
		}
		
		function loadStepComplete()
		{
			$jq('.bookingStep').css("background-image", "none");
			
			jQuery("#bookingSlide select").select_skin();
			
			Cufon.refresh('#bookingInfo .inner');
			
			// ADD LISTENERS
			$jq('.weekDays li a').click(function (){
				selectTime(this);
			});
			
			$jq('.weekDays li a.disabled').unbind('click');
			
			if (!slideVertical)
				$jq('#bookingInfo .inner').fadeIn();
			
			slideDirection = true;
			slideVertical = false;
			emailCheckDuplicate = false;
		}
		
		function selectTime(e)
		{
			$jq('.weekDays li a').removeClass('selected');
			
			$jq(e).toggleClass('selected', true)
			
			$jq('.bookingWrapper a.buttonNext').click(function () { nextStep() });	
			
			$jq('.bookingWrapper a.buttonNext').toggleClass('activated', true);
			
			bookingValueTime = e.id;
		}
		
		function doLogin()
		{
			if (loginFormStatus())
			{
				currentSlideURL = 'login.php';

				var username = $jq("input[name=addrlid]").val();
				var password = $jq("input[name=upwd]").val();

				getParams.datefom = bookingValueTime;
				getParams.selectedPool = bookingValuePool; 
				getParams.date = bookingValueDate;
				getParams.addrlid = username;
				getParams.upwd = password;

				// Show the login form if bounced back
				loginMode = 1;

				loginAttempt = 1;

				currentStep++;
				loadStep(currentStep);
			}
		}
		
		function doRegister()
		{
			doValidateForm ();
			
			if (!formValidatorState)
				return;
			
			currentSlideURL = 'registerForm.php';
			
			var email1 = $jq("input[name=email]").val();
			var email2 = $jq("input[name=email2]").val();
			
			getParams.datefom = bookingValueTime;
			getParams.selectedPool = bookingValuePool;
			getParams.date = bookingValueDate
			getParams.email = email1;
			
			currentStep++;
			loadStep(currentStep);
		}



		(function ($jq) {

		    $jq.fn.select_skin = function (select_skin_w) {
		        return $jq(this).each(function(i) {
		            var select_skin_s = $jq(this);

		            // create the container
		            select_skin_s.wrap('<div class="cmf-skinned-select"></div>');
		            select_skin_c = select_skin_s.parent();
		            select_skin_c.children().before('<div class="cmf-skinned-text">&nbsp;</div>').each(function() {
		                if (this.selectedIndex >= 0) $jq(this).prev().text(this.options[this.selectedIndex].innerHTML)
		            });
		            select_skin_c.width(select_skin_s.outerWidth()-2);
		            select_skin_c.height(select_skin_s.outerHeight()-2);

		            // skin the container
		            select_skin_c.css('background-color', select_skin_s.css('background-color'));
		            select_skin_c.css('position', 'relative');

		            // hide the original select
		            select_skin_s.css( { 'opacity': 0,  'position': 'relative', 'z-index': 100 } );

		            // get and skin the text label
		            var select_skin_t = select_skin_c.children().prev();
		            select_skin_t.height(select_skin_c.outerHeight()-select_skin_s.css('padding-top').replace(/px,*\)*/g,"")-select_skin_s.css('padding-bottom').replace(/px,*\)*/g,"")-select_skin_t.css('padding-top').replace(/px,*\)*/g,"")-select_skin_t.css('padding-bottom').replace(/px,*\)*/g,"")-2);
		            select_skin_t.width(select_skin_c.innerWidth()-select_skin_s.css('padding-right').replace(/px,*\)*/g,"")-select_skin_s.css('padding-left').replace(/px,*\)*/g,"")-select_skin_t.css('padding-right').replace(/px,*\)*/g,"")-select_skin_t.css('padding-left').replace(/px,*\)*/g,"")-select_skin_c.innerHeight());
		            select_skin_t.css('color', select_skin_s.css('color'));
		            select_skin_t.css('font-size', select_skin_s.css('font-size'));
		            select_skin_t.css('font-family', select_skin_s.css('font-family'));
		            select_skin_t.css('font-style', select_skin_s.css('font-style'));
		            select_skin_t.css( { 'opacity': 100, 'overflow': 'hidden', 'position': 'absolute', 'text-indent': '0px', 'z-index': 1, 'top': 0, 'left': 0 } );

		            // add events
		            select_skin_c.children().click(function() {
		                select_skin_t.text(this.options[this.selectedIndex].innerHTML);
		            });
		            select_skin_c.children().change(function() {
		                select_skin_t.text(this.options[this.selectedIndex].innerHTML);
		            });
		        });
		    }
		}(jQuery));   
		
		
		var emailCheckDuplicate = false;
		var formValidatorState = true;
		
		
		function doValidateFormLogin()
		{
			// Clean up login form
			$jq('.inputGroup.email').toggleClass('error', false);
			$jq('.inputGroup.password').toggleClass('error', false);
	
			// Only activate the next-button if the password is populated and the username contains an email address or a numeric ID
			var loginStatus = loginFormStatus();
			$jq('a.buttonNext').toggleClass('activated', loginStatus);
		}
		
		function loginFormStatus ()
		{
			var loginStatus = true;
			
			if ($jq('input[name=upwd]').val() != "")
			{
				if ($jq('input[name=addrlid]').val() != "")
				{
					var chkEmail = validateEmail($jq('input[name=addrlid]').val());
					var chkNumeric = /^[0-9]+$/.test($jq('input[name=addrlid]').val());
					
					if (chkEmail | chkNumeric)
					{
						loginStatus = true;
					}
					else
					{
						loginStatus = false;
					}
				}
				else
				{
					loginStatus = false;
				}
			}
			else
			{
				loginStatus = false;
			}
			
			return loginStatus;
		}	
		
		
		var validateChangeTimer = false;
		function doValidateChange()
		{
			clearTimeout(validateChangeTimer);
			
			if (printAllErrors)
			{
				validateChangeTimer = setTimeout('doValidateForm()', 500);
			}
				
		}
		
		function doValidateForm()
		{
			formValidatorState = true;
			
			$jq('.errorMessages').hide().html('');
			//$jq('#bookingSlide').css('padding-top', 0);
				
			// Check for empty fields
			$jq(".step4 input[type=text]").each(function(element)
			{
				if ($jq(this).val() == "")
				{
					formValidatorState = false;
            
					if (printAllErrors)
						$jq(this).parents('.inputGroup').toggleClass('error', true);
					else
						$jq(this).parents('.inputGroup').toggleClass('verified', false);
            		
					formValidatorState = false;
				}
				else
				{
					$jq(this).parents('.inputGroup').toggleClass('verified', true);
					$jq(this).parents('.inputGroup').toggleClass('error', false);
				}
			});	
			
			// Error messages
			if ($jq(".step4 input[name=name1]").val() == "")
				addErrorMessage('Förnamn:', 'Fältet får inte lämnas tomt');
				
			if ($jq(".step4 input[name=name2]").val() == "")
				addErrorMessage('Efternamn:', 'Fältet får inte lämnas tomt');
				
			if ($jq(".step4 input[name=addr1]").val() == "")
				addErrorMessage('Adress:', 'Fältet får inte lämnas tomt');
				
			if ($jq(".step4 input[name=addr3]").val() == "")
				addErrorMessage('Postnr:', 'Fältet får inte lämnas tomt');
					
			if ($jq(".step4 input[name=addr4]").val() == "")
				addErrorMessage('Postort:', 'Fältet får inte lämnas tomt');
			
			// OLD STEP 2
			
			// EMAIL
			var emailCheck = chkEmail();
			var parsedEmail = echeck($jq("input[name=email]").val());
				
			$jq('.inputGroup.emailRegister2').toggleClass('verified', emailCheck);
			
			if ($jq("input[name=email2]").val() != "")
			{
				$jq('.inputGroup.emailRegister2').toggleClass('verified', emailCheck);
				$jq('.inputGroup.emailRegister2').toggleClass('error', (!emailCheck));
			}
			else
			{
				$jq('.inputGroup.emailRegister').toggleClass('verified', true);
				
				if (printAllErrors)
				{
					$jq('.inputGroup.emailRegister2').toggleClass('verified', false);
					$jq('.inputGroup.emailRegister2').toggleClass('error', true);
				}
				
				formValidatorState = false;
			}

			if (!emailCheck)
			{
				if (!emailCheckDuplicate)
				{
					if (parsedEmail)
						addErrorMessage('E-post:', 'Du har inte skrivit samma adress');
				}
			}
		
			if (emailCheckDuplicate)
			{
				$jq('.inputGroup.emailRegister').toggleClass('verified', false);
				$jq('.inputGroup.emailRegister').toggleClass('error', true);
				
				addErrorMessage('E-post:', 'E-postadressen finns redan registrerad');
				
				if ($jq("input[name=email2]").val() != "")
				{
					$jq('.inputGroup.emailRegister2').toggleClass('verified', false);
					$jq('.inputGroup.emailRegister2').toggleClass('error', false);
				}
			}
			else
			{
				if (!parsedEmail)
				{
					$jq('.inputGroup.emailRegister').toggleClass('verified', false);
					$jq('.inputGroup.emailRegister').toggleClass('error', true);
					
					addErrorMessage('E-Post:', 'Du måste ange en e-postadress');
				}
			}
			
			formValidatorState = (formValidatorState && ((!emailCheckDuplicate) && emailCheck && parsedEmail));
			
			
			// PHONE
			if (chkPhoneNumbers($jq('input[name=phone3]').val()))
			{
				$jq('.inputGroup.phone').toggleClass('error', false);
				$jq('.inputGroup.phone').toggleClass('verified', true);
			}
			else
			{
				$jq('.inputGroup.phone').toggleClass('error', true);
				$jq('.inputGroup.phone').toggleClass('verified', false);
				
				addErrorMessage('Mobiltelefon:', 'Du måste ange ett giltigt telefonnummer (endast siffror)');
				
				formValidatorState = false;
			}
			
			// PASSWORD
			if ($jq('input[name=upwd]').val() != $jq('input[name=upwd2]').val())
			{
				formValidatorState = false;
				 
				$jq('.inputGroup.password, .inputGroup.password2').toggleClass('verified', false);
				
				if ($jq('input[name=upwd2]').val() != "")
				{
					$jq('.inputGroup.password, .inputGroup.password2').toggleClass('error', true);
				}
				else
				{
					$jq('.inputGroup.password').toggleClass('error', false);
					
					if (printAllErrors)
						$jq('.inputGroup.password, .inputGroup.password2').toggleClass('error', true);
					else
						$jq('.inputGroup.password, .inputGroup.password2').toggleClass('error', false);
				}
				
				addErrorMessage('Lösenord:', 'Du har inte skrivit samma lösenord');
					
				formValidatorState = false;
			}
			else
			{
				if ($jq('input[name=upwd]').val() != "")
				{
					$jq('.inputGroup.password, .inputGroup.password2').toggleClass('verified', true);
					$jq('.inputGroup.password, .inputGroup.password2').toggleClass('error', false);
				}
				else
				{
					$jq('.inputGroup.password, .inputGroup.password2').toggleClass('verified', false);
					$jq('.inputGroup.password, .inputGroup.password2').toggleClass('error', true);
					formValidatorState = false;
					
					addErrorMessage('Lösenord:', 'Du måste ange ett lösenord');
				}
			}
			
			if ($jq("input[name=email1]").val() == "")
				formValidatorState = false;
				
			if ($jq("input[name=email2]").val() == "")
				formValidatorState = false;
				
			// END OLD STEP 2
			
			if (formValidatorState)
				$jq('a.buttonNext').toggleClass('activated', true);
			else
				$jq('a.buttonNext').removeClass('activated');
		}
		

		/* VALIDTION METHODS */		
				
		var r = null;
 
		   function validateEmail (value) 
		   {
			return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
		   }

		spaceRemover=function(string) {
 			var tstring = "";
 			string = '' + string;
 			splitstring = string.split(" ");
 			for(i = 0; i < splitstring.length; i++)
				tstring += splitstring[i];
 			
			return tstring;
		}


		chkEmail=function() 
		{
	  		var str1 = $jq("input[name=email]").val();
			var str2 = $jq("input[name=email2]").val();
			
			if(str1.toLowerCase() == str2.toLowerCase()) 
			{
				return true;
			}

			return false;                    
 		}

			chkPhoneNumbers=function(value)
			{
				var pattern = /^\+?[0-9]+\-?\/?[0-9]+$/
				var str = spaceRemover(value);
				if(!str.match(pattern)) {
					//alert ("<?=str_replace('"','\"',$bAppLang->getText("TXT".strtoupper(substr($bSite,0,1))."BOKUS008","R2"));?>");

					return false;
				} 
			return true;
		}

	sendEmailValidationRequest=function()
	{
		var email  = $jq("input[name=email]").val();
		var addrlid = 0; // Todo
 
		if(addrlid > 0)
		{
 			// OK, exiting user, we will only check
 			// if email is changed
			if(orgemail == email)
				return;
		}
 
		var url    = "/app/projects/common/templates/user/loginAjaxHandler.php";
		var params = { site: selectedSite,lang: getSiteLang(), email: email };
		
		$jq.get(url, params, function (data){
	
			emailCheckDuplicate = (data == "existingEmail");
			
			if (emailCheckDuplicate)
			{
				$jq('.inputGroup.emailRegister').toggleClass('verified', false);
				$jq('.inputGroup.emailRegister').toggleClass('error', true);
				
				if (!printAllErrors)
				{
					$jq('.errorMessages').html('');
					addErrorMessage('E-post:', 'E-postadressen finns redan registrerad, <em><a href="javascript:void showLoginForm($jq(\'input[name=email]\').val());" style="text-decoration:underline !important;color:#A70909 !important;">klicka här för att logga in</a></em>');
				}
				
			}
						
			if (printAllErrors)
				doValidateChange();
		});
	}

function echeck(str) {

	 var filter=/^.+@.+\..{2,3}$/

	 if (filter.test(str))
	    testresults=true
	 else {
	    testresults=false
	}
	 return (testresults)
}

var updateMailTimer;
updateMail=function(check_mail)
{
	clearTimeout(updateMailTimer);
	
	clearTimeout(validateChangeTimer);
	
	updateMailTimer = setTimeout('sendEmailValidationRequest()', 200);;
}
	
	
function sendPasswordReminder()
{
	var url    = "/app/projects/common/templates/timebooking/pwdReminder.php";
	var params = { name1: $jq("input[name=name1]").val(),name2: $jq("input[name=name2]").val(), email2: $jq("input[name=email3]").val() };
	
	$jq('.errorMessages').fadeOut(50);
	
	$jq.get(url, params, function (data){
		
		if (data == "true")
		{
			$jq('.passwordReminder .message .mailDisplayContainer').html($jq("input[name=email3]").val());
			
			Cufon.refresh('.passwordReminder');
			
			$jq('.passwordReminder .message').fadeIn();
		}
		else
		{
			$jq('.errorMessages').html('');
			addErrorMessage('Tyvärr hittade vi inga kunduppgifter som överensstämmer helt med de du har angivit.', 'Vänligen kontrollera uppgifterna eller ring 0771-84 00 00 för hjälp');
		}		
	}); 
	
}

function showPasswordReminder ()
{
	clearErrorMessages();
	
	Cufon.replace('.passwordReminder span, .passwordReminder h2');
	
	$jq('div.passwordReminder').fadeIn(100, function ()
	{
		$jq('a.buttonNext').hide();
	});
}

function hidePasswordReminder ()
{
	$jq('a.buttonNext').show();
	
	clearErrorMessages();
	
	$jq('div.passwordReminder').fadeOut(100, function() {
		
		$jq('.passwordReminder .message').hide();
		
	});
}



