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;
		
		this.initPolicyParamsForm(us, req, serv);
		//
		if( $('chkAnnual') )
			$('chkAnnual').parentNode.parentNode.style.display = 'none';
		
		if( us.user_id && us.user_id != 0){	
			$("quoteButton").onclick = function(){chkOfflineData(true);};
	  		$("customerInfoTable").style.display = "";	
	  		$("newsLetterDetails").style.display = "none";
	  		$("user_id").value = us.user_id;
	  		//$("newsLetterText").style.display = "none";
		}else{
			$("quoteButton").onclick = function(){checkData(true);return false;};
		  	$("customerInfoTable").style.display = "none";
		  	$("newsLetterDetails").style.display = "block";
		  	
		  	//$("newsLetterText").styleText = "text-align:left;width:450px;padding-left:5px;padding-top:5px; padding-bottom:5px;";
		}
		
		serverDate = new Date("+year+","+month+","+day+");	 
		
		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);

	  	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){}
	},
	
	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'),$('aged18to65'),$('aged66to70'),$('aged71to75'),$('aged76to80'),$('aged81to85')];
		for( var sel = 0; sel < ageSelects.length; sel++ ){
			var select = ageSelects[sel];
			for( var num = 0; num < 10; num++ ){
				var o = document.createElement( 'option' );
				o.value = num;
				o.innerHTML = num;
				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;
		if( us.aged2to17 )
			$('aged2to17').value = us.aged2to17;
		if( us.aged18to65 )
			$('aged18to65').value = us.aged18to65;
		if( us.aged66to70 )
			$('aged66to70').value = us.aged66to70;
		if( us.aged71to75 )
			$('aged71to75').value = us.aged71to75;
		if( us.aged76to80 )
			$('aged76to80').value = us.aged76to80;
		if( us.aged81to85 )
			$('aged81to85').value = 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 );
			for( var i = 1; i <= 100; 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];
			for( var i = 3; i <= 18; i++ ){
				var o = document.createElement( 'option' );
				o.value = longstayDays[i-3];
				o.innerHTML = i + 'mth';
				daysSelect.appendChild( o );
			}
		}
		
	},
	
	tripTypeRadioChanged: function(){
		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 ){
			$('landingType').value = 'wintersports';
		} else if( $('tripTypeAnnual').checked ){
			$('aged66to70').parentNode.style.display = '';
			$('aged71to75').parentNode.style.display = '';
			$('aged76to80').parentNode.style.display = '';
			$('aged81to85').parentNode.style.display = '';
			$('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){
	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];	
}

