String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}


function updateReqFields(fieldname,modify) {
	
	var reqfieldlist = $('#required').val();
	var reqfields = reqfieldlist.split(",");
	
	if (modify=='remove') {
		var newreqfieldlist = new Array();
		for (var i=0;i<reqfields.length;i++) {			
			if (fieldname==reqfields[i]) continue;
			newreqfieldlist.push(reqfields[i]);
		}
	}
	if (modify=='add') {
		var newreqfieldlist = new Array(reqfields);
		newreqfieldlist.push(fieldname);	
	}
	
	$('#required').val(newreqfieldlist.toString());

}



function turn(elmAction) {
	switch (elmAction) {
		case 'city-on':
			$('#cityRow').removeClass('hide');
			$('#city').addClass('required');
			updateReqFields('city','add');
		break;
		case 'city-off':
			$('#cityRow').addClass('hide');
			$('#city').removeClass('required');
			updateReqFields('city','remove');
			$('#city').value = "";
		break;
		case 'state-on':
			$('#stateRow').removeClass('hide');
			$('#state').addClass('required validate-selection');
			updateReqFields('state','add');		
		break;
		case 'state-off':
			$('#stateRow').addClass('hide');
			$('#state').removeClass('required validate-selection');
			updateReqFields('state','remove');
			$('state').selectedIndex = 0;
		break;
		case 'zipcode-on':
			$('#ZIPcodeRow').removeClass('hide');
			$('#ZIPcode').addClass('required validate-zipcode');
			updateReqFields('ZIPcode','add');		
		break;
		case 'zipcode-off':
			$('#ZIPcodeRow').addClass('hide');
			$('#ZIPcode').removeClass('required validate-zipcode');
			updateReqFields('ZIPcode','remove');
			$('ZIPcode').value = "";
		break;
		case 'provence-on':
			$('#canadaProvence').addClass('required validate-selection');
			$('#canadaProvenceRow').removeClass('hide');
			updateReqFields('canadaProvence','add');
		break;
		case 'provence-off':
			$('#canadaProvence').removeClass('required validate-selection');
			$('#canadaProvenceRow').addClass('hide');
			updateReqFields('canadaProvence','remove');
			$('canadaProvence').selectedIndex = 0;
		break;
		case 'postcode-on':
			$('#postcode').addClass('required validate-canadapostalcode');
			$('#canadaPostalCode').removeClass('hide');
			updateReqFields('postcode','add');
		break;
		case 'postcode-off':
			$('#postcode').removeClass('required validate-canadapostalcode');
			$('#canadaPostalCode').addClass('hide');
			updateReqFields('postcode','remove');
			$('postcode').value = "";
		break;
		case 'parkingspots-off':
			$('#parking_spots').removeClass('required validate-selection');
			$('#parkingRow').addClass('hide');
			updateReqFields('parking_spots','remove');
			$('#parking_spots').value = "";
		break;
		case 'parkingspots-on':
			$('#parking_spots').addClass('required validate-selection');
			$('#parkingRow').removeClass('hide');
			updateReqFields('parking_spots','add');
		break;
		case 'others-off':
			$('#others').removeClass('required');
			$('#othersRow').addClass('hide');
			updateReqFields('others','remove');
			$('#others').value = "";
		break;
		case 'others-on':
			$('#others').addClass('required');
			$('#othersRow').removeClass('hide');
			updateReqFields('others','add');
		break;
	}
}


function countryChangeFunction(countryName) {

	updateReqFields('city','remove');
			
	switch (countryName) {				
		case 'United States of America':
			turn('city-on');
			turn('state-on');
			turn('zipcode-on');
			turn('provence-off');
			turn('postcode-off');
			break;
		case 'Canada':
			turn('city-on');
			turn('state-off');
			turn('zipcode-off');
			turn('provence-on');
			turn('postcode-on');
			break;
		default:
			turn('city-on');
			turn('state-off');
			turn('zipcode-off');
			turn('provence-off');
			turn('postcode-off');
			break;
	}
 } 
 
 function parkingChangeFunction(parking) {
	
	switch (parking) {				
		case 'no':
			turn('parkingspots-off');
			break;
		case 'yes':
			turn('parkingspots-on');
			break;
		default:
			turn('parkingspots-off');
			break;
	}
 }
 
function transportationChangeFunction(transportation) {
	
	switch (transportation) {				
		case 'yes':
			turn('parkingspots-on');
			break;
		default:
			turn('parkingspots-off');
			break;
	}
}

function dancersChangeFunction(dancers) {
	
	switch (dancers) {				
		case '':
			turn('others-off');
			break;
		case '1':
			turn('others-off');
			break;
		default:
			turn('others-on');
			break;
	}
}
 
 /*
 to strip out commas
 	if (elm.hasClassName('stripcommas')) {
			var tmpValue = elm.value;
			elm.value = tmpValue.replace(/,/g,';');
			alert(elm.value);
		};
 */