function doValidate(form){
	$(form.id).request({
		onSuccess: function(output){
			var result = output.responseText.evalJSON();
			if(result.valid==1){//valid
				$$('.valid_msg').each(function(obj){obj.innerHTML = "*";});
				$$('.valid_txt').invoke('removeClassName','valid_txt');
				if(form.id=="reservation-form"){doResConfirm(result);}
				if(form.id=="contact-form" || form.id=="lost-form" || form.id=="account-password" || form.id=="apply-form"){doSuccess(form.id);}
				if(form.id=="signin-form"){location.href="/accounts";}
			}else{
				alert("Some fields are missing or incomplete.");
				var msgcont = "";
				var msg = "";
				$$('#' + form.id + ' textarea, #' + form.id + ' input').each(function(i){									   
					if(typeof(result[i.id]) != "undefined"){
						i.addClassName('valid_txt');
						if(i.id =="phone"){
							$("phone1","phone2","phone3").invoke('addClassName', 'valid_txt')
						}
						msgcont = "<span class='valid_msg'></span>";
						msg = result[i.id];
						if(typeof(i.next('.valid_msg')) == "undefined"){
							i.insert({after:msgcont});
						}
						i.next('.valid_msg').innerHTML = msg;
					}else{
						if(typeof(i.up('li').down('.valid_msg')) != "undefined"){
							i.next('.valid_msg').innerHTML = "*";
						}
						i.removeClassName('valid_txt');	
						if(i.id =="phone"){
							$("phone1","phone2","phone3").invoke('removeClassName', 'valid_txt')
						}
					}
				});
				
			}
		}
	})
	return false;
}
function addressGet(obj,num){
	
	new Ajax.Request('/bin/address_get.php?id='+obj.value, {
	  onSuccess: function(output) {
		if(output.responseText=='fail'){
			alert("There was an error loading this address.");
		}else{
			var result = output.responseText.evalJSON();
			for (i=0; i<result.length; i++) {
				$(result[i].n+num).value = result[i].v;
			}
		}
	  }
	});	


}

function addressLoad(sID,sel,offset){
	var sID = sID || 0;
	var offset = offset || 0;
	var url = '/bin/address_load.php';
	var selectbox = sel || $('addressid');
	//selectbox.value = "";
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(transport) {
			selectbox.length = offset;
			var results = transport.responseText.evalJSON();
			for (i=0; i<results.length; i++) {
				selectbox[i+offset] = new Option(results[i]['t'],results[i]['v'],false)
			}			
			selectOption(sel,sID);
		}
	});	
}
function addressDelete(){
	if(!$('addressid').value){return false;}
	var url = '/bin/address_delete.php?id='+$('addressid').value;
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(transport) {
			addressLoad();
			$('address-form').reset();
		}
	});	
}
function addressAdd(){
	$('address-form').request({
		onSuccess: function(transport) {
			var sID = transport.responseText;
			addressLoad(sID);
		}
	});	
}
function addressUpdate(){
	if(!$('addressid').value){return false;}
	var sID = $('addressid').value;
	$('address-form').request({
		parameters: {id:sID},
		onSuccess: function(transport) {
			addressLoad(sID);
		}
	});	
}
function selectOption(sel,v){
	for (var i=0;i<sel.options.length;i++) {
		if (sel.options[i].value == v){
			sel.value = v;
			sel.options[i].selected = true;
		}
	}
}
function doResForm(){
	$('step2').hide();
	$('step1').show();	
}
function doResConfirm(result){
	if($('trip2').checked){$('cdate2').show()}else{$('cdate2').hide();}
	$$('.conftxt').each(function(i){
		i.innerHTML = result[i.id];						 
	 });
	$('step1').hide();
	$('step2').show();
}
function doResComplete(){
	new Ajax.Request('/bin/reservation_add.php', {
	  onSuccess: function(output) {
		if(output.responseText=='fail'){
			alert("There was an error submitting your reservation. Please go back and try again");
		}else{
			$('middle').innerHTML = output.responseText;
			pageTracker._trackPageview("/reservation_add" );
		}
	  }
	});	
}

function doSuccess(formid){
	$(formid).reset();
	new Effect.BlindDown($('success'), {duration:0.5});
	
}
//---- start autotab ----
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
    var keyCode = (isNN) ? e.which : e.keyCode;
    var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

    if(input.value.length >= len && !containsElement(filter,keyCode))

    {
        input.value = input.value.slice(0, len);
        input.form[(getIndex(input)+1) % input.form.length].focus();
    }
function containsElement(arr, ele) {
    var found = false, index = 0;
    while(!found && index < arr.length)
    if(arr[index] == ele)
    found = true;
else
    index++;
    return found;
}
function getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
    if (input.form[i] == input)index = i;
    else i++;
    return index;
    }

return true;
}
//---- end autotab ----

function numeralsOnly(evt) {
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :  ((evt.which) ? evt.which : 0));
    if ([49,50,51,52,53,54,55,56,57,48,37,39,46,9,8].include(charCode)) {
        return true;
    }
    return false;
}

function strJoin(prefix,cnt){
	var tempvar = "";
	$R(1, cnt).each(function(i) {
  		tempvar += $(prefix + i).value;
	});
	$(prefix).value = tempvar;
}
var isDown;
function showDate(){
	if($('trip2').checked){
		if(!isDown){
			isDown = true;
			new Effect.BlindDown($('ddatetime'), {duration:0.5});
		}
	}else{
		
		if(isDown){
			isDown = false;
			new Effect.BlindUp($('ddatetime'), {duration:0.5});
		}
	}
}
var arrBlind = new Array();
function toggleBlind(obj){
	if(typeof(arrBlind[obj]) == "undefined" || !arrBlind[obj]){
		new Effect.BlindDown($(obj), {duration:0.5});
		arrBlind[obj] = true;
	}else{
		new Effect.BlindUp($(obj), {duration:0.5});
		arrBlind[obj] = false;
	}
}

function minChar(obj,i){
	if(obj.value<i || !obj.value){
		obj.value = i;	
	}
}
function preZero(obj){
	if (obj.value.length==1) {
		obj.value = 0 + obj.value;
	}
}