var popped = new Array();

function pop_under( url )
{
	if ( url.length && !in_array( popped, url ) )
	{
		popped[ popped.length ] = url;
		window.open( url, '', 'height=550,width=830,toolbar=no,menubar=no,status=no,directories=no,scrollbars=yes,resizable=yes' );
		window.focus();
	}
}

function in_array( array, value )
{
	//if we dont pass in an array, make it one
	if ( array.constructor != Array )
	{
		array = [array];
	}

	for( var i = 0; i < array.length; i++ )
	{
		if ( array[ i ] == value )
		{
			return true;
		}
	}

	return false;
}

function min_size(value, size) {
	if (value.length < size) {
		for (i = 0; i < size - value.length; i++) {
			value = "0" + value;
		}
	}
	return value;
}

function auto_skip_input(from_input, to_input) {
	if (from_input.value.length >= from_input.maxLength) {
		to_input.focus();
	}
}

function is_numeric(value) {
	var validChars = "0123456789.-";
	var char;
	var result = true;
	if (value.length == 0) {
		return false;
	}
	for (i = 0; i < value.length && result == true; i++) {
		char = value.charAt(i);
		if (validChars.indexOf(char) == -1) {
			result = false;
		}
	}
	return result;
}

function validate( fields )
{
	/*	if ( document.getElementById( "first_name" ).value.length == 0 )
		{
		alert( "Enter first name." );
		return false;
		}
	 */
	//alert(fields);
	var errors = "";
	if( fields.search('name') !== -1)
	{
		if (document.getElementById("name").value == "") {
			errors += "Name\n";
		}
	}
	if( fields.search( 'email' ) !== -1 )
	{
		if (document.getElementById("email_address").value == "" || 
				!check_email(document.getElementById("email_address").value)) {
			errors += "Email Address\n";
		}
	}
	if( fields.search( 'address' ) !== -1 )
	{
		if (document.getElementById("street_address").value == "") {
			errors += "Mailing Address\n";
		}	
		if (document.getElementById("city").value == "") {
			errors += "City\n";
		}
		if (document.getElementById("state_province").value == "") {
			errors += "State\n";
		}
		if (document.getElementById("zip_postal").value == "") {
			errors += "Zip Code\n";
		}
	}
	if( fields.search( 'dob' ) !== -1 )
	{
		if (!is_numeric(document.getElementById("dob_year").value) ||
				!is_numeric(document.getElementById("dob_month").value) ||
				!is_numeric(document.getElementById("dob_day").value)) {
			errors += "Date of Birth\n";
		}
	}
	if( fields.search( 'phone' ) !== -1 )
	{
		if (document.getElementById("phone_area").value == "" ||
				document.getElementById("phone_prefix").value == "" ||
				document.getElementById("phone_suffix").value == "") {
			errors += "Phone Number\n";
		}
	}
	if (errors != "") {
		alert("These fields need to be filled in:\n" + errors);
		return false;
	}
	document.getElementById("date_of_birth").value = document.getElementById("dob_year").value + "-" + min_size(getElementById("dob_month").value, 2) + "-" + min_size(getElementById("dob_day").value, 2);
	document.getElementById("phone").value = document.getElementById("phone_area").value + getElementById("phone_prefix").value + getElementById("phone_suffix").value;

	return true;


/*if ( !check_email( document.getElementById( "email_address" ).value ) )
	{
		alert( "Enter a valid email address." );
		return false;
	}

	return true;
	*/
}

function check_email( value )
{
	var at="@";
	var dot=".";
	var lat=value.indexOf(at);
	var lvalue=value.length - 1;
	var ldot=value.indexOf(dot);
	if ( value.indexOf( at ) == -1 )
	{
		return false;
	}
	if (value.indexOf(at)==-1 || value.indexOf(at)==0 || value.indexOf(at)==lvalue)
	{
		return false;
	}
	if (value.indexOf(dot)==-1 || value.indexOf(dot)==0 || value.indexOf(dot)==lvalue)
	{
		return false;
	}
	if (value.indexOf(at,(lat+1))!=-1)
	{
		return false;
	}
	if (value.substring(lat-1,lat)==dot || value.substring(lat+1,lat+2)==dot)
	{
		return false;
	}
	if (value.indexOf(dot,(lat+2))==-1)
	{
		return false;
	}
	if (value.indexOf(" ")!=-1)
	{
		return false;
	}
	return true;
}

//select option generator ( used for lib_date_chooser )
function displayRangeOptions( from, to, set, size, prefix, postfix )
{
	if ( !prefix )
	{
		prefix = '';
	}
	if ( !postfix )
	{
		postfix = '';
	}
	direction = ( from < to ) ? 1 : -1;
	destination = to + direction;
	selected = '';
	for ( i = from; i != destination; i += direction )
	{
		display = i.toString();
		if ( size )
		{
			while ( display.length < size )
			{
				display = '0' + display;
			}
		}
		if ( set )
		{
			if ( set == display )
			{
				selected = ' selected';
			}
			else
			{
				selected = '';
			}
		}
		document.write( '<option value="' + display + '"' + selected + '>' + prefix + display + postfix + '</option>' );
	}
}


//set cookie
function set_cookie( name, value, time )
{
	var expires = '';
	if ( typeof( days ) == 'number' )
	{
		var d = new Date();
		d.setTime( d.getTime() + time );
		expires = '; expires=' + d.toGMTString();
	}
	document.cookie = name + '=' + escape( value ) + expires + '; path=/';
}

//delete cookie
function delete_cookie( name )
{
	set_cookie( name, '', -1 );
}

// populate dob drop down
function printSelect(from, to) 
{
	if (from > to) 
	{
		for (i = from; i >= to; i--) 
		{
			document.write("<option value=\"" + i + "\">" + i + "</option>");
		}
	} 
	else 
	{
		for (i = from; i <= to; i++) 
		{
			document.write("<option value=\"" + i + "\">" + i + "</option>");
		}
	}
}
