/** Open Link in new window **/
function popUp( url, name, winargs ) {

	if( typeof( url ) !== 'undefined' && url != "" ) {

		if( typeof( name ) !== 'undefined' || name == "" ) {

			name = "_blank";
		}

		if( typeof( winargs ) === 'undefined' || winargs === "" ) {

			newwindow = window.open( url, name );
		} else {

			newwindow = window.open( url, name, winargs );
		}

		if( window.focus ) {

			newwindow.focus();
		}
	}

	return false;
}

/** Add onblur/onfocus items to all input(text) **/
//Focus color
var setFocusColor = "#cccccc";
var setFocusBorder = "1px solid #ff0000";
//Blur color
var setBlurColor = "#ffffff";
var setBlurBorder = "1px solid #000000";

document.observe( "dom:loaded", setUpSubmissionFormItems );

function setUpSubmissionFormItems() {

	var formElement = document.getElementById( 'submissionForm' );

	if( formElement != null ) {

		for( var i = 0; i < formElement.elements.length; i++ ) {

			if( formElement.elements[i].type == "text" || formElement.elements[i].nodeName == "TEXTAREA" ) {

				formElement.elements[i].observe( 'focus', focusOnInput );
				formElement.elements[i].observe( 'blur', blurOnInput );
			}
		}
	}
}

function focusOnInput( e ) {

	this.style.background = setFocusColor;
	this.style.border = setFocusBorder;
}

function blurOnInput( e ) {

	this.style.background = setBlurColor;
	this.style.border = setBlurBorder;
}

/** Form Verification **/
/**********REWRITE**********/
var formErrorColor = "#ffa0a0";

//onsubmit="return verifyForm( this );"
function verifyForm( f ) {

	var msg;
	var empty_fields = "";
	var badFormatting = "";
	var badCheckbox = "";

	for( var i = 0; i < f.elements.length; i++ ) {

		var e = f.elements[i];

		if( e.nodeName == "INPUT" || e.nodeName == "TEXTAREA" ) {

			if( /\bverifyMe\b/.test( e.className ) ) {
			//Does item belong to the.className 'verifyMe'

				if( e.type == "text" || e.nodeName == "TEXTAREA" ) {
				//text input or textarea

					if( ( e.value == null ) || ( e.value == "" ) || isblank( e.value ) ) {
					//Required field is empty

						empty_fields += "\n          " + e.id.replace( /_/g, " " );
						e.style.backgroundColor = formErrorColor;
						continue;
					} else {

						e.style.backgroundColor = setBlurColor;

						//Check for formatting
						if( /\bverifyMeForEmail\b/.test( e.className ) ) {
						//Email

							if( !isEmail( e.value ) ) {

								badFormatting += " \"" + e.value + "\" is an invalid email.\n";
								e.style.backgroundColor = formErrorColor;
							} else {

								e.style.backgroundColor = setBlurColor;
							}
						}

						if( /\bverifyMeForInteger\b/.test( e.className ) ) {
						//Integer

							if( Math.round( e.value ) != e.value ) {

								badFormatting += " \"" + e.value + "\" must be an integer.\n";
								e.style.backgroundColor = formErrorColor;
							} else {

								e.style.backgroundColor = setBlurColor;
							}
						}

						if( /\bverifyMeForPhoneNumber\b/.test( e.className ) ) {
						//Phone Number

							if( !isPhoneNumber( e.value ) ) {

								badFormatting += " \"" + e.value + "\" must be of the format (XXX) XXX-XXXX.\n";
								e.style.backgroundColor = formErrorColor;
							} else {

								e.style.backgroundColor = setBlurColor;
							}
						}
					}
				} else if( e.type=="checkbox" || e.type=="radio" ) {
					//make sure one of me is checked

					var boxChecked = false;

					while( f.elements[i + 1].name == e.name ) {

						if( f.elements[i].checked ) {

							boxChecked = true;
						}

						i++;
					}

					if( f.elements[i].checked ) {

						boxChecked = true;
					}

					if( !boxChecked ) {

						badCheckbox += " A \"" + e.name + "\" button must be checked.\n";
					}
				}
			} else {

				if( ( e.value != null ) && ( e.value != "" ) && !isblank( e.value ) ) {

					//Check for formatting//
					if( /\bverifyMeForEmail\b/.test( e.className ) ) {
					//Email

						if( !isEmail( e.value ) ) {

							badFormatting += " \"" + e.value + "\" is an invalid email.\n";
							e.style.backgroundColor = formErrorColor;
						} else {

							e.style.backgroundColor = setBlurColor;
						}
					}

					if( /\bverifyMeForInteger\b/.test( e.className ) ) {
					//Integer

						if( Math.round( e.value ) != e.value ) {

							badFormatting += " \"" + e.value + "\" must be an integer.\n";
							e.style.backgroundColor = formErrorColor;
						} else {

							e.style.backgroundColor = setBlurColor;
						}
					}

					if( /\bverifyMeForPhoneNumber\b/.test( e.className ) ) {
					//Phone Number

						if( !isPhoneNumber( e.value ) ) {

							badFormatting += " \"" + e.value + "\" must be of the format (XXX) XXX-XXXX.\n";
							e.style.backgroundColor = formErrorColor;
						} else {

							e.style.backgroundColor = setBlurColor;
						}
					}
				}
			}
		}
	}

	//Display Errors
	if( !empty_fields && !badFormatting && !badCheckbox && !hrefFound ) {

		return true;
	} // end if

	msg = "_________________________________________________________\n\n";
	msg += "The form was not submitted because of the following error(s).\n";
	msg += "Please correct these error(s) as shown by the red input fields\n";
	msg += "and re-submit.\n";
	msg += "_________________________________________________________\n\n";

	if( empty_fields ) {

		msg += "- The following required field(s) are empty:"
				+ empty_fields + "\n";

		if( badFormatting ) {

			msg += "\n";
		}
	}

	msg += badFormatting + badCheckbox;

	alert( msg );

	return false;
}

function isEmail( s ) {

	if( /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/.test( s ) ){

		return( true )
	}

	return false;
}

function isPhoneNumber( s ) {

	if( /^\(?[1-9]\d{2}\)?\s?\d{3}\-?\d{4}$/.test( s ) ){

		return( true )
	}

	return false;
}

function isblank( s ) {

	for( var i = 0; i < s.length; i++ ) {

		var c = s.charAt( i );
		if( (c != ' ' ) && ( c != '\n' ) && ( c != '\t' ) ) {

			return false;
		}
	}

	return true;
}
