/******* Passenger/Room utility *********
 * This require jquery script library 
 */
function PromoPax(frm,err){
	this.maxPax = 7;
	this.maxAdult=7;
	this.maxChild=6;
	
	this.formObject = frm;
	this.errorObject = err;
}

PromoPax.prototype.setRooms = function(){
	var rr = $("select[name='roomCount']").val();
	if( rr == 1 ){		
		$("#r2Pax").fadeOut('fast');
		$("#r2AgeHelp").fadeOut('fast');
		$("#r2Age").fadeOut('fast');
	}
	else {
		var paxLeft = this.maxPax - this.getR1Pax();
		if( paxLeft > 0 ){
			$("#r2Pax").fadeIn('fast');
			this.setR2Adults();
			this.setR2Child();
		}
		else {
			$("select[name='roomCount']").val('1');
			if( this.errorObject ){
				this.errorObject.setInline('roomCountError').add("Total passengers exceed the maximum of "+this.maxPax,true);
			}
		}
	}
};

PromoPax.prototype.setR1Adults = function(){
	if( $("select[name='room1Adults']").val() > this.maxAdult ){
		if( this.errorObject ){
			this.errorObject.setInline('room1PassError').add("Adult passengers not to exceed "+this.maxAdult,true);
		}
		this.formObject.room1Adults.selectedIndex = 0;
		return;
	}
	if( this.getPax() > this.maxPax ){
		// If there are 2 rooms, reset room 2 values
		if( this.getR2Pax() > 0 ){
			this.setR2Adults();
			this.setR2Child();
		}
		else {
			this.setR1Child();
		}
	}
};
PromoPax.prototype.setR1Child = function(){
	if( $("select[name='room1Child']").val() > this.maxChild ){
		this.formObject.room1Child.selectedIndex = 0;
		if( this.errorObject ){
			this.errorObject.setInline('room1PassError').add("Child passengers not to exceed "+this.maxChild,true);
		}
		this.setR1ChildAges();
		return;
	}
	var px2 = this.getR2Pax();
	var px = this.getPax();
	if( px > this.maxPax ){
		this.formObject.room1Child.selectedIndex = 0;
		if( this.errorObject ){
			this.errorObject.setInline('room1PassError').add('Total passengers exceed the maximum of '+this.maxPax,true);
		}
	}
	if( px2 > 0 ){
		this.setR2Adults();
		this.setR2Child();
	}
	this.setR1ChildAges();
};
PromoPax.prototype.setR1ChildAges = function(){
	var r1c = parseInt($("select[name='room1Child']").val(),10);
	if( r1c <= 0 ){
		$("#r1AgeHelp").fadeOut('fast');
		$("#r1Age").fadeOut('fast');
	}
	else {
		$("#r1AgeHelp").fadeIn('fast');
		$("#r1Age").fadeIn('fast');
		for( var c = 1; c <= 6; c++ ) {
	    	if(  c <= r1c ){	$("select[name='room1ChildAge"+c+"']").fadeIn('fast');	}
	    	else {	$("select[name='room1ChildAge"+c+"']").fadeOut('fast');	}
		}
	}
};
PromoPax.prototype.setR2Adults = function(){
	var paxLeft = this.maxPax - this.getR1Pax();
	var adlLeft = this.maxAdult - parseInt($("select[name='room1Adults']").val(),10);
	if( adlLeft <= 0 ){
		if( this.errorObject ){
			this.errorObject.setInline('room1PassError').add('Adult passengers not to exceed '+this.maxAdult,true);
		}
		$("select[name='roomCount']").val('1');
		this.setRooms();
		return;
	}
	if(  paxLeft > 0 ){
		this.formObject.room2Adults.options.length = 0;
		for( var a = 0; a < paxLeft; a++ ) {
			this.formObject.room2Adults.options[a] = new Option(a+1,a+1);
		}
		this.formObject.room2Adults.options[0].selected = true;
	}
};
PromoPax.prototype.setR2Child = function(){
	var r2Adults = parseInt($("select[name='room2Adults']").val(),10);
	var paxLeft = this.maxPax - this.getR1Pax() - r2Adults;
	var cldLeft = this.maxChild - parseInt($("select[name='room1Child']").val(),10);
	this.formObject.room2Child.options.length = 0;
	this.formObject.room2Child.options[0] = new Option(0,0);
	if( cldLeft <= 0 ){
		if( this.errorObject ){
			this.errorObject.setInline('room2ChildAgeErr').add('Child passengers not to exceed '+this.maxChild,true);
		}
		this.formObject.room2Child.selectedIndex = 0;
		this.setR2ChildAges();
		return;
	}
	if( paxLeft > 0 ){
		for( var c = 1; c <= paxLeft; c++ ) {
			this.formObject.room2Child.options[c] = new Option(c,c);
		}
	}
	this.setR2ChildAges();
};
PromoPax.prototype.setR2ChildAges = function(){
	var r2c = parseInt($("select[name='room2Child']").val(),10);
	if( r2c == 0 ){
		$("#r2AgeHelp").fadeOut('fast');
		$("#r2Age").fadeOut('fast');
	}
	else {
		$("#r2AgeHelp").fadeIn('fast');
		$("#r2Age").fadeIn('fast');
		for( var c = 1; c <= 5; c++ ) {
	    	if(  c <= r2c ){	$("select[name='room2ChildAge"+c+"']").fadeIn('fast');	}
	    	else {	$("select[name='room2ChildAge"+c+"']").fadeOut('fast');	}
		}
	}
};
// Get total passengers
PromoPax.prototype.getPax = function(){
	return this.getR1Pax() + this.getR2Pax();
};
PromoPax.prototype.getR1Pax = function(){
	var r1Adults = parseInt($("select[name='room1Adults']").val(),10);
	var r1Child = parseInt($("select[name='room1Child']").val(),10);
	return r1Adults + r1Child;
};
PromoPax.prototype.getR2Pax = function(){
	var pxx = 0;
	if( parseInt($("select[name='roomCount']").val(),10) == 2 ){
		var r2Adults = parseInt($("select[name='room2Adults']").val(),10);
		var r2Child = parseInt($("select[name='room2Child']").val(),10);
		pxx = r2Adults + r2Child;
	}
	return pxx;
};
PromoPax.prototype.loadChildAges = function(){
	if( this.formObject ){
		setAges(this.formObject.room1ChildAge1,0,21);
		setAges(this.formObject.room1ChildAge2,0,21);
		setAges(this.formObject.room1ChildAge3,0,21);
		setAges(this.formObject.room1ChildAge4,0,21);
		setAges(this.formObject.room1ChildAge5,0,21);
		setAges(this.formObject.room1ChildAge6,0,21);
		setAges(this.formObject.room2ChildAge1,0,21);
		setAges(this.formObject.room2ChildAge2,0,21);
		setAges(this.formObject.room2ChildAge3,0,21);
		setAges(this.formObject.room2ChildAge4,0,21);
		setAges(this.formObject.room2ChildAge5,0,21);
	}
};
PromoPax.prototype.verifyR1ChildAges = function(){
	var r1err = '';
	for( var i1 = 1; i1 <= $("select[name='room1Child']").val(); i1++ ){
		if( $("select[name='room1ChildAge"+i1+"']").val() == '?' ){
			r1err = (r1err=='')?''+i1:r1err+','+i1;
		}
	}
	return r1err;
};
PromoPax.prototype.verifyR2ChildAges = function(){
	var r2err = '';
	if( $("select[name='roomCount']").val() == 2 ){
		for( var i2 = 1; i2 <= $("select[name='room2Child']").val(); i2++ ){
			if( $("select[name='room2ChildAge"+i2+"']").val() == '?' ){
				r2err = (r2err=='')?''+i2:r2err+','+i2;
			}
		}
	}
	return r2err;
};

PromoPax.prototype.validatePax = function(){
	if( this.getPax() > this.maxPax ){
		this.errorObject.setInline('room1PassError').add("Total passengers exceed the maximum of "+this.maxPax,true);
		return false;
	}
	var r1err = this.verifyR1ChildAges();
	var childErrMsg = 'Select age for ';
	if( r1err.length > 0 ){
		childErrMsg += (r1err.indexOf(',')>-1)?'children ':'child ';
		childErrMsg += r1err + ' in Room 1 ';
		this.errorObject.setInline('room1ChildAgeErr').add(childErrMsg,true);
		return false;
	}
	childErrMsg = 'Select age for ';
	var r2err = this.verifyR2ChildAges();
	if( r2err.length > 0 ){
		childErrMsg += (r1err.length>0)?'and ':'';
		childErrMsg += (r2err.indexOf(',')>-1)?'children ':'child ';
		childErrMsg += r2err + ' in Room 2';
		this.errorObject.setInline('room2ChildAgeErr').add(childErrMsg,true);
		return false;
	}
	return true;
};

function setAges(dropDown, min, max){
	if( dropDown ){
		var childAges = [];
		for( var a = min; a <= max; a++ ){
			childAges[childAges.length] = a;
		}
		for( var c = 0; c < childAges.length; c++) {
			dropDown.options[dropDown.options.length] = new Option(childAges[c],childAges[c]);
		}
	}
}
