// VALIDATION FUNCTIONS

function validateRequiredField(fieldName, errorStr, form) {
	field = form[fieldName];
	if(!field) alert('The field "' + fieldName + '" was not found in the form.');
	var type = field.type;
	if(!type) {
		if(field[0].type=='radio') {
			var blank = true;
			for(var i = 0; i<field.length; i++) {
		        if (field[i].checked) blank = false;
		    }
		    if(blank) return '<li>'+errorStr+'</li>';
		}
	}
	else {
		switch(field.type) {
			case 'checkbox': if(!field.checked) return '<li>'+errorStr+'</li>'; break;
			case 'select':   if(!field.options[field.selectedIndex].value) return '<li>'+errorStr+'</li>'; break;
			case 'radio':	var checked = false;
							 var buttons = field.getElementsByTagName('input');
							 for(i=0;i<buttons.length;i++) if(buttons[i].checked == true) checked = true;
							 if(checked == false) return '<li>'+errorStr+'</li>'; break;
			default: 	 if(!field.value || field.className == 'subLabel') { return '<li>'+errorStr+'</li>'; break; }
		}
	}
	return '';
}

// Compare two fields and make sure their values match
function validateMatchingFields(fieldName1, fieldName2, errorStr, form) {
	var field1 = form[fieldName1];
	var field2 = form[fieldName2];
	if(field1.value != field2.value) return '<li>'+errorStr+'</li>';
	return '';
}

// Make sure a field's value meets the minimum number of characters
function validateMinLengthField(fieldName, length, errorStr, form) {
	var val = form[fieldName].value;
	if(val.length < length) return '<li>'+errorStr+'</li>';
	return '';
}

// Make sure a field's value does not exceed the maximum number of characters
function validateMaxLengthField(fieldName, length, errorStr, form) {
	var val = form[fieldName].value;
	if(val.length > length) return '<li>'+errorStr+'</li>';
	return '';
}

// Radio Button Validation
// copyright Stephen Chapman, 15th Nov 2004,14th Sep 2005
// you may copy this function but please keep the copyright notice with it
function valButton(btn) {
    var cnt = -1;
    for (var i=btn.length-1; i > -1; i--) {
        if (btn[i].checked) {cnt = i; i = -1;}
    }
    if (cnt > -1) return btn[cnt].value;
    else return null;
}
                  

function validateRegex(fieldName, pattern, errorStr, form) {
	var val = form[fieldName].value;
	if(val != '' && !val.match(pattern)) return '<li>'+errorStr+'</li>';
	else return '';
}


/* COOKIE VALIDATION */

function checkForCookies(errorMsg) {
	// name, value, expires, path, domain, secure
	var cookie_test;
	Set_Cookie('test', 'none', '', '/', '', '' );
	if(Get_Cookie('test')) cookie_test = true;
	else cookie_test = false;
	Delete_Cookie('test', '/', '');
	if(cookie_test) return '';
	else return errorMsg;
}


// Courtesy of: http://techpatterns.com/downloads/javascript_cookies.php

// this function gets the cookie, if it exists
function Get_Cookie( name ) {
	
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) )
	{
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

/*
only the first 2 parameters are required, the cookie name, the cookie
value. Cookie time is in milliseconds, so the below expires will make the 
number you pass in the Set_Cookie function call the number of days the cookie
lasts, if you want it to be hours or minutes, just get rid of 24 and 60.

Generally you don't need to worry about domain, path or secure for most applications
so unless you need that, leave those parameters blank in the function call.
*/
function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	// if the expires variable is set, make the correct expires time, the
	// current script below will set it for x number of days, to make it
	// for hours, delete * 24, for minutes, delete * 60 * 24
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	//alert( 'today ' + today.toGMTString() );// this is for testing purpose only
	var expires_date = new Date( today.getTime() + (expires) );
	//alert('expires ' + expires_date.toGMTString());// this is for testing purposes only

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}