var IndexPage = Class.create( {
	jsonServlet: '/index-service',	
	
	updatePage: function(){
		lockInputs();
		var urlParam = window.location;
		new Ajax.Request( URL.servicePath + this.jsonServlet, {
			method: 'POST',
			parameters: "serverUrl=" + urlParam + "&_t=" + new Date().getTime() ,
			onSuccess: this.doUpdate.bind(this)
		});
	},
	
	doUpdate: function( transport ){
		//processing server data
		this.serverState = null;
		try{ this.serverState = eval( '(' + transport.responseText + ')' ); }
		catch( e ) { alert( 'Error evaluating server response: \n' + e) };
		//alert( this.serverState );
		
		var us = this.serverState.userSession;
		var req = this.serverState.request;
		var serv = this.serverState.service;

		if( serv.doRedirect && serv.doRedirect != ''  && !(getCookie('noRedirect') == 'true' ) )
			window.location = serv.doRedirect;
		
		var isNewDesign = parseFloat('1.1') && parseFloat('1.1') >= 1.1  ? true : false;
		
		this.initPolicyParamsForm(us, req, serv);
		//
		if( $('chkAnnual') )
			$('chkAnnual').parentNode.parentNode.style.display = 'none';
		
		if( !isNewDesign ) {
			if( us.user_id && us.user_id != 0 ){	
				$("quoteButton").onclick = function(){chkOfflineData(true);};
		  		$("customerInfoTable").style.display = "";
		  		//
		  		if( us.organiser_forename )	$("offlineFname").value 	= us.organiser_forename;
		  		if( us.organiser_surname )	$("offlineLname").value 	= us.organiser_surname;
		  		if( us.organiser_email ) 	$("offlineEmail").value = us.organiser_email;
		  		if( us.organiser_day_phone ) $("offlineTelephone").value = us.organiser_day_phone;
		  		if( us.organiser_postcode ) $("TxtContactPostCode").value = us.organiser_postcode;
		  		if( us.organiser_address1 ) $("TxtContactAddress1").value = us.organiser_address1;
		  		if( us.organiser_address2 ) $("TxtContactAddress2").value = us.organiser_address2;
		  		if( us.organiser_town ) 	$("TxtContactCity").value = us.organiser_town;
		  		if( us.organiser_county ) 	$("TxtContactRegion").value = us.organiser_county;
		  		if( us.organiser_country ) 	$("TxtContactCountry").value = us.organiser_country;
		  		
		  		$("newsLetterDetails").style.display = "none";
		  		$("user_id").value = us.user_id;
			}else{
				$("quoteButton").onclick = function(){checkData(true);return false;};
			  	if( $("customerInfoTable") ) 
			  		$("customerInfoTable").style.display = "none";
			  	if( $("newsLetterDetails") )
			  		$("newsLetterDetails").style.display = "block";
			}
		} else {
			if( us.user_id && us.user_id != 0 ){
				//call centre users
				jQuery('#webQuoteForm').hide();
				jQuery('#personalDataForm').show();
				jGet("quoteButton").onclick = function(){checkData(true);return false;};
			} else {
				//web
				jQuery('#webQuoteForm').show();
				jQuery('#personalDataForm').hide();
				jGet("webQuoteButton").onclick = function(){checkData(true);return false;};
				if('INSME'!= 'EXPAT'){		
					jGet('btnAccept').onclick= function(){document.frmStep1.submit();return false;};
				}	
				
			}
		}
		
		if( "retry" == req.redirect )
			alert('Sorry we could not complete your transaction. Please retry.');
		
	  	var affiliate = serv.affiliate;
	  	if (affiliate && affiliate.length > 0){
	  		if (affiliate == "cj") {
	  			$("affiliate").value = affiliate;
	  			$("wrongReturnMessage").styleText = "position: relative; left: 290px; top: -670px; width: 171px; height: 60px; z-index:1;display:none";
	  		}
	  	}
	  	
	  	$('frmStep1').action = serv.nextPage;
	  
	  	setCountryDropDown(serv, us);
	  	setDestination();
	  	
	  	//check couple/family/spf if found in session	
		if( !isNewDesign ) {
		  	$("couple").checked =  
				(us.couple && us.couple == 'yes') ? true : false;
			$("family").checked = 
				(us.family && us.family == 'yes') ? true : false;
			$("single_parent_family").checked = 
				(us.single_parent_family && us.single_parent_family == 'yes') ? true : false;
		} else {
			$('partyTypeCouple').checked = us.couple && us.couple == 'yes' ? true : false;
			$('partyTypeFamily').checked = us.family && us.family == 'yes' ? true : false;
			$('partyTypeSpf').checked = us.single_parent_family && us.single_parent_family == 'yes' ? true : false;
			
			if( us.partyType ) {
				if( us.partyType == 'individual' )
					$('partyTypeIndividual').checked = true;
				else if( us.partyType == 'couple' )
					$('partyTypeCouple').checked = true;
				else if( us.partyType == 'family' )
					$('partyTypeFamily').checked = true;
				else if( us.partyType == 'single_parent_family')
					$('partyTypeSpf').checked = true;
				else if( us.partyType == 'group' )
					$('partyTypeGroup').checked = true;
				else if( us.partyType == 'other' )
					$('partyTypeOther').checked = true;
			} 
		}
		
	  	
	  	unlockInputs();
	  	
	  	try{//setting event handlers for newsletter controls
	  		//nwsEmailFname
	  		jGet('nwsEmailFname').value = 'Enter your first name';
	  		jGet('nwsEmailFname').onclick = function(){
	  			if( jGet('nwsEmailFname').value == 'Enter your first name' )
	  				jGet('nwsEmailFname').value = '';
	  		};
	  		jGet('nwsEmailFname').onblur = function(){
	  			if( jGet('nwsEmailFname').value == '' ){
	  				jGet('nwsEmailFname').value = 'Enter your first name';
	  			}
	  		};
	  		//nwsEmailLname
	  		jGet('nwsEmailLname').value = 'Enter your last name';
	  		jGet('nwsEmailLname').onclick = function(){
	  			if( jGet('nwsEmailLname').value == 'Enter your last name' )
	  				jGet('nwsEmailLname').value = '';
	  		};
	  		jGet('nwsEmailLname').onblur = function(){
	  			if( jGet('nwsEmailLname').value == '' )
	  				jGet('nwsEmailLname').value = 'Enter your last name';
	  		};
	  		//nwsEmail
	  		jGet('nwsEmail').value = 'Enter your email address';
	  		jGet('nwsEmail').onclick = function(){
	  			if( jGet('nwsEmail').value == 'Enter your email address' )
	  				jGet('nwsEmail').value = '';
	  		};
	  		jGet('nwsEmail').onblur = function(){
	  			if( !( jGet('nwsEmail').value == 'Enter your email address' || jGet('nwsEmail').value == '' ) ){ 
	  				//if user entered something, but does not seem to be an email address
	  				var objRegExpEmail = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+$/;
	  				if( objRegExpEmail.test(jGet('nwsEmail').value) == false ) {
	  					alert("Please enter a valid email address");
	  					//jGet('nwsEmail').focus();
	  				}
	  			}else{
	  				jGet('nwsEmail').value = 'Enter your email address';
	  			}
	  		};
	  		//nwsTelephone
	  		jGet('nwsTelephone').value = 'Enter your telephone number';
	  		jGet('nwsTelephone').onclick = function(){
	  			if( jGet('nwsTelephone').value == 'Enter your telephone number' )
	  				jGet('nwsTelephone').value = '';
	  		};
	  		jGet('nwsTelephone').onblur = function(){
	  			if( !(jGet('nwsTelephone').value == 'Enter your telephone number'  || jGet('nwsTelephone').value == '' ) ){
	  				var telephoneChars = /^[0-9\-\+\(\)\\\/ ]*$/;
		  			if( !telephoneChars.test( jGet('nwsTelephone').value ) ){
		  				alert('Please enter a valid telephone number!');
		  				//jGet('nwsTelephone').focus();
		  			}
	  			} else jGet('nwsTelephone').value = 'Enter your telephone number';
	  		};
	  		
	  	}catch(e){}
	  	
	  	if( isNewDesign ) {
	  		//populate organiser data fields
	  		if( us.organiser_title )
	  			jGet('organiserTitle').value = us.organiser_title;
	  		if( us.organiser_forename ) {
	  			jGet('organiserFirstName').value = us.organiser_forename;
	  			if( jGet('organiserFirstNameWeb') )
	  				jGet('organiserFirstNameWeb').value = us.organiser_forename; 
	  		}
	  		if( us.organiser_surname ) {
	  			jGet('organiserLastName').value = us.organiser_surname;
	  			if( jGet('organiserLastNameWeb') )
	  				jGet('organiserLastNameWeb').value = us.organiser_surname;
	  		}
	  		if( us.dobString )
	  			jGet('organiserDateOfBirth').value = us.dobString;
	  		else {
	  			//init with now - 50 years but not leap day
	  			/*
	  			var now = new Date();
	  			var y = now.getFullYear() - 50;
	  			var m = now.getMonth();
	  			var d = now.getDate();
	  			if( m == 1 && d == 29 )
	  				d == 28;
	  			jGet('organiserDateOfBirth').value = padWithZero(d) + "/" + padWithZero( m + 1 ) + "/" + y;
	  			*/
	  			jGet('organiserDateOfBirth').value = "dd/mm/yyyy";
	  		}
	  		if( us.organiser_day_phone ) {
	  			jGet('organiserHomePhone').value = us.organiser_day_phone;
	  			if( jGet('organiserHomePhoneWeb') )
	  				jGet('organiserHomePhoneWeb').value = us.organiser_day_phone;
	  		}
	  		if( us.organiser_email ) {
	  			jGet('organiserEmail').value = us.organiser_email;
	  			if( jGet('organiserEmailWeb') )
	  				jGet('organiserEmailWeb').value = us.organiser_email;
	  		}
	  		if( us.organiser_email_confirm )
	  			jGet('organiserConfirmEmail').value = us.organiser_email_confirm;
	  		if( us.organiser_postcode )
	  			jGet('organiserPostcode').value = us.organiser_postcode;
	  		if( us.organiser_address1 )
	  			jGet('organiserAddress1').value = us.organiser_address1;
	  		if( us.organiser_address2 )
	  			jGet('organiserAddress2').value = us.organiser_address2;
	  		if( us.organiser_county )
	  			jGet('organiserRegion').value = us.organiser_county;
	  		if( us.organiser_town )
	  			jGet('organiserCity').value = us.organiser_town;
	  		//if( us.organiser_country )
	  		//	jGet('organiserCountry').value = us.organiser_country;

	  		if( us.organiser_county )	  			
	  			jQuery('#organiserAddressFields').show();
	  	}
				
	},
	
	initPolicyParamsForm: function(us, req, serv){
		//selecting radio
	  	if( req.tripType.toLowerCase() == 'longstay'){
	  		$('tripTypeLongstay').checked = 'checked';
	  		$("landingType").value = 'longstay';
	  	}else if( req.tripType.toLowerCase() == 'winter'){
	  		$('tripTypeWinter').checked = 'checked';
	  		$("landingType").value = 'wintersports';
	  	}else if( req.tripType.toLowerCase() == 'annual'){
	  		$('tripTypeAnnual').checked = 'checked';
	  		$("landingType").value = 'normal';
	  	}else{
	  		$('tripTypeSingle').checked = 'checked';
	  		$("landingType").value = 'normal';
	  	}
	  	if( us.tripType ){
		  	if( us.tripType.toLowerCase() == 'longstay'){
		  		$('tripTypeLongstay').checked = 'checked';
		  		$("landingType").value = 'longstay';
		  	}else if( us.tripType.toLowerCase() == 'winter'){
		  		$('tripTypeWinter').checked = 'checked';
		  		$("landingType").value = 'wintersports';
		  	}else if( us.tripType.toLowerCase() == 'annual'){
		  		$('tripTypeAnnual').checked = 'checked';
		  		$("landingType").value = 'normal';
		  	}else{
		  		$('tripTypeSingle').checked = 'checked';
		  		$("landingType").value = 'normal';
		  	}
	  	}
	  	this.tripTypeRadioChanged();
		//adding onchange listener
		$('tripTypeLongstay').onchange = this.tripTypeRadioChanged.bind(this);
		$('tripTypeWinter').onchange = this.tripTypeRadioChanged.bind(this);
		$('tripTypeAnnual').onchange = this.tripTypeRadioChanged.bind(this);
		$('tripTypeSingle').onchange = this.tripTypeRadioChanged.bind(this);
		
		$('tripTypeLongstay').onclick = this.tripTypeRadioChanged.bind(this);
		$('tripTypeWinter').onclick = this.tripTypeRadioChanged.bind(this);
		$('tripTypeAnnual').onclick = this.tripTypeRadioChanged.bind(this);
		$('tripTypeSingle').onclick = this.tripTypeRadioChanged.bind(this);
		
		//fill age selects
		var ageSelects = [$('under2'),$('aged2to17'),$('aged18to30'),$('aged31to55'),$('aged56to65'),$('aged18to65'),$('aged66to70'),$('aged71to75'),$('aged76to80'),$('aged81to85')];
		var ageSelectValues = [us.under2, us.aged2to17, us.aged18to30, us.aged31to55, us.aged56to65, us.aged18to65, us.aged66to70, us.aged71to75, us.aged76to80, us.aged81to85 ]
		for( var sel = 0; sel < ageSelects.length; sel++ ){
			var select = ageSelects[sel];
			if(select){
				for( var num = 0; num < 10; num++ ){
					var o = document.createElement( 'option' );
					o.value = num;
					o.innerHTML = num;
					if( ageSelectValues[sel] == num )
						o.selected = true;
					select.appendChild( o );
				}
			}
		}
		
		//if this request is a result of a 'back' button click, try to populate certain fields
		if( us.depart_date )
			$('depart_date').value = us.depart_date;
		if( us.return_date )
			$('return_date').value = us.return_date;
		
		/*
		if( us.under2 )
			//$('under2').value = us.under2;
			setSelect( 'under2', us.under2 );
		if( us.aged2to17 )
			//$('aged2to17').value = us.aged2to17;
			setSelect( 'aged2to17', us.aged2to17 );
		//AXA
		if( us.aged18to30 && $('aged18to30') )
			//$('aged18to30').value = us.aged18to30;
			setSelect( 'aged18to30', us.aged18to30 );
		if( us.aged31to55 && $('aged31to55') )
			//$('aged31to55').value = us.aged31to55;
			setSelect( 'aged31to55', us.aged31to55 );
		if( us.aged56to65 && $('aged56to65') )
			//$('aged56to65').value = us.aged56to65;
			setSelect( 'aged56to65', us.aged56to65 );
		if( us.aged18to65 && $('aged18to65') )
			//$('aged18to65').value = us.aged18to65;
			setSelect( 'aged18to65', us.aged18to65 );
		if( us.aged66to70 )
			//$('aged66to70').value = us.aged66to70;
			setSelect( 'aged66to70', us.aged66to70 );
		if( us.aged71to75 )
			//$('aged71to75').value = us.aged71to75;
			setSelect( 'aged71to75', us.aged71to75 );
		if( us.aged76to80 )
			//$('aged76to80').value = us.aged76to80;
			setSelect( 'aged76to80', us.aged76to80 );
		if( us.aged81to85 )
			//$('aged81to85').value = us.aged81to85;
			setSelect( 'aged81to85', us.aged81to85 );
		*/
		//days select
		this.updateDaysSelect();
		returnDateChange();
		/*if( us.days )
			$('days').value = us.days; */
	},
	
	updateDaysSelect: function(){
		var daysSelect = $('days');
		while( daysSelect.hasChildNodes() )
			daysSelect.removeChild( daysSelect.firstChild );
		
		if( $('tripTypeWinter').checked || $('tripTypeSingle').checked ) {//1-100
			var o = document.createElement( 'option' );
			o.value = '';
			o.innerHTML = '';
			daysSelect.appendChild( o );
			var singleTripMaxDays = 100;
			if( 'INSME' == 'TIMUK' ) 
				singleTripMaxDays = 90;
			for( var i = 1; i <= singleTripMaxDays; i++ ){
				var o = document.createElement( 'option' );
				o.value = i;
				o.innerHTML = i;
				daysSelect.appendChild( o );
			}
		} else if( $('tripTypeAnnual').checked ) {//AMT
			var o = document.createElement( 'option' );
			o.value = 365;
			o.innerHTML = 'AMT';
			daysSelect.appendChild( o );
		} else if( $('tripTypeLongstay').checked ) {//3-18mth
			var longstayDays = [93, 123, 153, 184, 215, 245, 276, 306, 337, 366, 397, 428, 458, 489, 519, 550];
			if( 'INSME' == 'TIMUK' )
				longstayDays = [93, 123, 153, 180];
			for( var i = 3; i <= longstayDays.length + 2; i++ ){
				var o = document.createElement( 'option' );
				o.value = longstayDays[i-3];
				o.innerHTML = i + 'mth';
				daysSelect.appendChild( o );
			}
		}
		
	},
	
	tripTypeRadioChanged: function(){
		var isNewDesign = ( 'INSME' == 'STS01' || 'INSME' == 'TIMUK' ) && parseFloat('1.1') && parseFloat('1.1') >= 1.1  ? true : false;
		this.updateDaysSelect();
		$('return_date').value = 'dd/mm/yyyy';
		daysChange( $('days') );
		
		if( $('tripTypeLongstay').checked ){
			$('aged66to70').parentNode.style.display = '';
			$('aged71to75').parentNode.style.display = '';
			$('aged76to80').value = 0;
			$('aged76to80').parentNode.style.display = 'none';
			$('aged81to85').value = 0;
			$('aged81to85').parentNode.style.display = 'none';
			$('landingType').value = 'longstay';
		} else if( $('tripTypeWinter').checked ){
			$('aged66to70').value = 0;
			$('aged66to70').parentNode.style.display = 'none';
			$('aged71to75').value = 0;
			$('aged71to75').parentNode.style.display = 'none';
			$('aged76to80').value = 0;
			$('aged76to80').parentNode.style.display = 'none';
			$('aged81to85').value = 0;
			$('aged81to85').parentNode.style.display = 'none';
			$('landingType').value = 'wintersports';
		} else if( $('tripTypeAnnual').checked ){
			$('aged66to70').parentNode.style.display = '';
			$('aged71to75').parentNode.style.display = '';
			$('aged76to80').parentNode.style.display = '';
			$('aged81to85').parentNode.style.display = '';
			if( 'INSME' == 'STS01' && isNewDesign ) {
				$('aged81to85').parentNode.style.display = 'none';
			}
			$('landingType').value = 'normal';
		} else {//single
			$('aged66to70').parentNode.style.display = '';
			$('aged71to75').parentNode.style.display = '';
			$('aged76to80').parentNode.style.display = '';
			$('aged81to85').parentNode.style.display = '';
			$('landingType').value = 'normal';
		}
		displayHideSelect();
	}
	
});

var indexPage = new IndexPage();


function myCallB(address){
	try{
		document.getElementById("TxtContactAddress1").value = address[0];
		document.getElementById("TxtContactAddress2").value = address[1];
		document.getElementById("TxtContactCity").value = address[2];
		document.getElementById("TxtContactRegion").value = address[3];
		document.getElementById("TxtContactPostCode").value = address[4];
		document.getElementById("TxtContactCountry").value = address[5].toUpperCase();
	} catch(e) {
		//this func is not used by Expat, so we can set the country to UK
		document.getElementById("TxtContactCountry").value = "UK";
	}
}

function callbackFillOrganiserAddress(address){
	$("organiserAddressFields").style.display = "block";
	try{
		$("organiserAddress1").value = address[0];
		$("organiserAddress2").value = address[1];
		$("organiserCity").value = address[2];
		$("organiserRegion").value = address[3];
		$("organiserPostCode").value = address[4];
		//$("organiserCountry").value = address[5].toUpperCase();	
		//$("organiserCountry").readOnly = "readonly";
		$("organiserCountry").value = "UK";
	} catch(e) {
		$("organiserCountry").value = "UK";
		//$("organiserCountry").readOnly = "readonly;";
	}
}

function padWithZero( str ) {
	var p = ("00" + str.toString() );
	return p.substr( p.length - 2)
}



