function PackageBuilder(url) {this.dataUrl = 'packagebuilder.php';this.init();};
PackageBuilder.prototype.calculate = function(boxes) {
	var urlX = '&x=';
	var urlI = '&i=';
	var urlQ = '&q=';
	var c = 0;
	
	for (var i = 0; i < boxes.length; i++){
		if( boxes[i].checked ){
			c++;
			urlI += boxes[i].value + ',';
			if('undefined' != typeof(eval('document.forms[0].Quantity_' + boxes[i].value))){
				var s = document.getElementById('Quantity_' + boxes[i].value);
				urlQ += s.options[s.selectedIndex].text + ',';
			}else{
				urlQ += '1,';
			}
		}else{
			urlX += boxes[i].value + ',';
		}
	}
	
	if (c==0)
	{
		alert('You must first select something!');
		return false;
	}
	else if (c<3)
	{
		alert('You must select more than 2!');
		return false;
	}
	
	var xhr = new XMLHttpRequest();
	xhr.onreadystatechange = this.updateCallback.simpleBind(this, xhr);
	xhr.open("GET", this.dataUrl + '?' + urlI + urlQ + urlX);
	xhr.send("");
}
PackageBuilder.prototype.updateCallback = function(e) {if (e.readyState != 4) {return;}eval(e.responseText);}
PackageBuilder.prototype.init = function() {}
Function.prototype.simpleBind = function() {var __method = this;var args = [arguments[1]];var object = arguments[0];return function() {return __method.apply(object, args);}}

function recalculate(){
	if (document.getElementById('CalculateButton').style.display=='none')
	{
		document.getElementById('CalculatedValue').innerHTML='&nbsp;';
		document.getElementById('hidCalculatedValue').value='';
		document.getElementById('ContinueText').innerHTML='&nbsp;';
		document.getElementById('CalculateButton').value='Re-Calculate';
		document.getElementById('CalculatedRow').style.display='none';
		document.getElementById('ContinueButton').style.display='none';
		document.getElementById('CalculateButton').style.display='block';
	}
}










function LTrim(sString)
{
	while (sString.substring(0,1) == ' ')
		sString = sString.substring(1, sString.length);

	return sString;
}

function RTrim(sString)
{
	while (sString.substring(sString.length-1, sString.length) == ' ')
		sString = sString.substring(0,sString.length-1);

	return sString;
}

function Trim(sString)
{
	sString = LTrim(sString);
	sString = RTrim(sString);
	return sString;
}



function isValidEmail( value, field, msg )
{
	var regExpression = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
	var oForm = document.forms[0];
	var Email;
	var NewString = '';
	var x = 0;
	var HasInvalid = false;
	
	if ( value != '' )
	{		
		if( value.indexOf(',') > 0 )
		{
			NewString = value;
			do 
			{ 
			   	x = NewString.indexOf(',')
				if( x == -1 )
				{
					Email = NewString
				} else {
					Email = NewString.slice(0,x)
				}			   
				
				if (! regExpression.test( Trim(Email) ) )
				{		
					HasInvalid = true;
				}				   
				   
				NewString = NewString.slice(x + 1, NewString.length)	   
			} 
			while(x > 0);		
		
			if ( HasInvalid )
			{		
				eval("oForm." + field + ".className = 'invalid'");
				alert( msg );
				return false;
			} else {
				eval("oForm." + field + ".className = ''");
			}		
		} else {
			if (! regExpression.test( value ) )
			{		
				eval("oForm." + field + ".className = 'invalid'");
				alert( msg );
				return false;
			} else {
				eval("oForm." + field + ".className = ''");
			}		
		}	
	} else { 
		eval("oForm." + field + ".className = ''");
	}
	
	return true;
}



function isValidLength( value, field, len, msg )
{
	var oForm = document.forms[0];
	
	if ( value.length < len )
	{
		eval("oForm." + field + ".className = 'invalid'");
		alert( msg );
		return false;
	} else { 
		eval("oForm." + field + ".className = ''");
	}
	return true;
}



function isRequired( value, field, msg )
{
	var oForm = document.forms[0];
	
	if ( Trim(value) == '' )
	{
		eval("oForm." + field + ".className = 'required'");
		alert( msg );
		eval("oForm." + field + ".value='';");
		return false;
	} else { 
		eval("oForm." + field + ".className = ''");
	}
	return true;
}


function ValidateEmail()
{
	var oForm = document.forms[0];
	
	if( !isRequired( oForm.f_firstname.value, 'f_firstname', 'Sorry, you must enter your first name before continuing.') )	
		return false;
	if( !isRequired( oForm.f_lastname.value, 'f_lastname', 'Sorry, you must enter your last name before continuing.') )	
		return false;
	
	if( !isRequired( oForm.f_email.value, 'f_email', 'Sorry, you must enter your email address before continuing.') )	
		return false;
	if( !isValidEmail( oForm.f_email.value, 'f_email', 'Invalid email address, please try again!') )
		return false;
	
	if( !isRequired( oForm.f_homephone.value, 'f_homephone', 'Sorry, you must enter your phone number before continuing.') )	
		return false;
	if( !isValidLength( oForm.f_homephone.value, 'f_homephone', 10, 'Invalid phone number, your must enter your phone number including the area code, please try again!') )
		return false;

	return true;
}

function ValidateContact()
{
	var oForm = document.forms[0];
	
	if( !isRequired( oForm.f_name.value, 'f_name', 'Sorry, you must enter your name before continuing.') )	
		return false;
	
	if( !isRequired( oForm.f_email.value, 'f_email', 'Sorry, you must enter your email address before continuing.') )	
		return false;
	if( !isValidEmail( oForm.f_email.value, 'f_email', 'Invalid email address, please try again!') )
		return false;
	
	if( !isRequired( oForm.f_phone.value, 'f_phone', 'Sorry, you must enter your phone number before continuing.') )	
		return false;
	if( !isValidLength( oForm.f_phone.value, 'f_phone', 10, 'Invalid phone number, your must enter your phone number including the area code, please try again!') )
		return false;

	return true;
}

function ValidateBook()
{
	var oForm = document.forms[0];
	
	if( !isRequired( oForm.f_firstname.value, 'f_firstname', 'Sorry, you must enter your first name before continuing.') )	
		return false;
	if( !isRequired( oForm.f_lastname.value, 'f_lastname', 'Sorry, you must enter your last name before continuing.') )	
		return false;
	
	if( !isRequired( oForm.f_email.value, 'f_email', 'Sorry, you must enter your email address before continuing.') )	
		return false;
	if( !isValidEmail( oForm.f_email.value, 'f_email', 'Invalid email address, please try again!') )
		return false;
	
	if( !isRequired( oForm.f_homephone.value, 'f_homephone', 'Sorry, you must enter your phone number before continuing.') )	
		return false;
	if( !isValidLength( oForm.f_homephone.value, 'f_homephone', 10, 'Invalid phone number, your must enter your phone number including the area code, please try again!') )
		return false;

	return true;
}