function validateForm(formname) { //v4.0
	var p, formname, varname, vartype, varvalue, varcap, errors='', args=validateForm.arguments;
	for (i=1; i<(args.length-2); i+=3) { 
		varname = args[i];
		varcap = args[i+1];
		vartype = args[i+2];
		if( vartype != "checkboxes" && vartype != "P"  && vartype != "Z" )
			varvalue = eval( 'document.'+formname+'.'+varname+'.value' );
		
//			alert( varcap + "    " + vartype );
		
		if( vartype == "R" ) {
			if( varvalue.length == "0" )
				errors += '- '+varcap+' is required.\n'
		} else if( vartype == "N" ) {
			if( varvalue.length == 0 || isNaN(varvalue) )
				errors += '- '+varcap+' must contain a number.\n'
		} else if( vartype == "P" ) {
			varvalue1 = eval( 'document.'+formname+'.'+varname+'1.value' );
			varvalue2 = eval( 'document.'+formname+'.'+varname+'2.value' );
			varvalue3 = eval( 'document.'+formname+'.'+varname+'3.value' );
			if( varvalue1.length < 3 || varvalue2.length < 3 || varvalue3.length < 4 ||
			  	  isNaN(varvalue1) || isNaN(varvalue2) || isNaN(varvalue3) )
				errors += '- '+varcap+' must be a valid phone number.\n'
		} else if( vartype == "Z" ) {
			varvalue1 = eval( 'document.'+formname+'.'+varname+'1.value' );
			varvalue2 = eval( 'document.'+formname+'.'+varname+'2.value' );
			if( varvalue1.length < 5 || isNaN(varvalue1) || isNaN(varvalue2) || ( varvalue2.length != 0 && varvalue2.length!=4 ) )
				errors += '- '+varcap+' must be a valid zip code.\n'
		} else if( vartype == "Drop" ) {
			if( varvalue == "default" )
				errors += '- '+varcap+' must contain a valid selection.\n';
		} else if( vartype == "Email" ) {
			p = varvalue.indexOf('@');
    		if (p<1 || p==(varvalue.length-1))
    			errors+='- '+varcap+' must contain an e-mail address.\n';
		} else if( vartype == "checkboxes" ) {
			var elements = eval( 'document.'+formname+'.elements' );
			var size = elements.length;
			var good = false;
			for( p = 0; p < size; p++ ) {
				if( elements[p].name.substring(0,varname.length) == varname )
					if( elements[p].checked == true )
						good = true;
			}
			if( good == false )
				errors+='- '+varcap+' must contain a valid selection.\n';
		}
	}
	if (errors != "" ) {
		alert('The following error(s) occurred:\n'+errors);
		return false;
	} else
		return true;
}

function update(formname,sources,destination) { //v4.0
	fields = explode(sources,",",false);
	var retval = "";
	for( x = 0; x<fields.length;x++) {
		value = eval( 'document.'+formname+'.'+fields[x]+'.value');
		if( retval.length == 0 )
			retval += value;
		else
			retval += ' '+value;
	}
	eval( 'document.'+formname+'.'+destination+'.value = "'+retval+'"');
}

function explode(inputstring, separators, includeEmpties) {
	inputstring = new String(inputstring);
	separators = new String(separators);

	if(separators == "undefined") {
		separators = " :;";
	}

	fixedExplode = new Array(1);
	currentElement = "";
	count = 0;

	for(x=0; x < inputstring.length; x++) {
		charac = inputstring.charAt(x);
		if(separators.indexOf(charac) != -1) {
			if ( ( (includeEmpties <= 0) || (includeEmpties == false)) && (currentElement == "")) {
			} else {
				fixedExplode[count] = currentElement;
				count++;
				currentElement = "";
			}
		} else {
			currentElement += charac;
		}
	}

	if (( ! (includeEmpties <= 0) && (includeEmpties != false)) || (currentElement != "")) {
		fixedExplode[count] = currentElement;
	}
	return fixedExplode;
}

function disableclear(formname,source,value,destination) {
	var check = eval( 'document.'+formname+'.'+source+'.value' );

	if( check == value ) {
		eval( 'document.'+formname+'.'+destination+'.disabled = false' );
	} else {
		eval( 'document.'+formname+'.'+destination+'.disabled = true' );
		eval( 'document.'+formname+'.'+destination+'.value = ""' );
	}
}

function disablecheck(formname,source,destination) {
	var check = eval( 'document.'+formname+'.'+source+'.checked' );
	destinations = explode(destination,",",false);

	if( check == true ) {
		for( x = 0; x<destinations.length;x++)
			eval( 'document.'+formname+'.'+destinations[x]+'.disabled = false' );
	} else {
		for( x = 0; x<destinations.length;x++)
			eval( 'document.'+formname+'.'+destinations[x]+'.disabled = true' );
	}
}

function disable(formname,source,value,destination) {
	var check = eval( 'document.'+formname+'.'+source+'.value' );
	destinations = explode(destination,",",false);

	if( check != value ) {
		for( x = 0; x<destinations.length;x++)
			eval( 'document.'+formname+'.'+destinations[x]+'.disabled = false' );
	} else {
		for( x = 0; x<destinations.length;x++)
			eval( 'document.'+formname+'.'+destinations[x]+'.disabled = true' );
	}
}

function subtract(formname,val1,val2,destination) {
	var val1val = eval('document.'+formname+'.'+val1+'.value');
	var val2val = eval('document.'+formname+'.'+val2+'.value');
	var answer = val1val - val2val;
	eval( 'document.'+formname+'.'+destination+'.value = '+answer );
}


function multiply(formname,val1,val2,destination) {
	var val1val = eval('document.'+formname+'.'+val1+'.value');
	var val2val = eval('document.'+formname+'.'+val2+'.value');
	var answer = val1val * val2val;
	eval( 'document.'+formname+'.'+destination+'.value = '+answer );
}

function update(formname,val1,destination) {
	var val1val = eval('document.'+formname+'.'+val1+'.value');
	eval( 'document.'+formname+'.'+destination+'.value = '+val1val );
}

function updateFromArray(formname,source,values,destination) {
	var sourceval = eval('document.'+formname+'.'+source+'.value');
	var arr = new Array(1);
	
	events = explode(values,";",false);
	for( y = 0; y<events.length; y++) {
		//event_id|price
		vals = explode(events[y],'|',false);
		arr[vals[0]] = vals[1];
	}

	var answer = arr[sourceval];
	eval( 'document.'+formname+'.'+destination+'.value = '+answer );
}

function confdelete(name)
{
	var doyou = confirm("Are you sure you want to delete this "+name+"? (OK = Yes   Cancel = No)");
	if (doyou == true)
		return true;
	else if (doyou == false)
		return false;
}