﻿// JavaScript Document

/**
 * Displays a confirmation box beforme activating the clicked link.
 * usage: 
 * <a href="JavaScript: confirmLink('http://www.delete.com', 'Are you sure to go there?')">www.delete.com</a>
 * @param   string   theLink
 * @param   string   theMessage
 *
 * @return  boolean  whether to run follow link or not
 */
function confirmLink(theLink, theMessage) {
    if (confirm(theMessage)) {
		document.location = theLink;
	}
} // end of the 'confirmLink()' function


/**
 * submits the given form to the given URL
 *
 */
function reloadForm(theURL, theForm) {
	document[theForm].action = theURL;
	document[theForm].submit();
}  // end of the 'reloadForm()' function


/**
 * Validates all fields specified by hidden fields in the given form.
 * If validation succeeds, form is submitted otherwise an errormessage is displayed.
 * the kind of validation is given with each fieldname
 * possible validation types are:
 * d=date, e=email, f=filename, n=number, x=not empty, z=not zero, u=url
 *
 * @param   object   form
 * @param   string   errormessage
 *
 * @return  boolean  whether to submit the form or not
 */
function checkForm(form, message_headline) {
	var message = "";
	var more_message = "";
	x = form.elements.length-1;
	for (var i = 0; i <= x; i++) {
		var messenger = form.elements[i].name;
		messenger = messenger.substring(0, 2);
		var fieldname = form.elements[i].name;
		fieldname = fieldname.substring(2);

		if (messenger == "r_") {
			more_message = r_check(form,x,fieldname,i);
		} else if (messenger == "z_") {
			more_message = z_check(form,x,fieldname,i);
		} else if (messenger == "i_") {
			more_message = i_check(form,x,fieldname,i);
		} else if (messenger == "b_") {
			more_message = b_check(form,x,fieldname,i);
		}

		if (more_message != "") {
			if (message == "") {
				message = more_message;
			} else {
				message = message + "\n" + more_message;
			}
			more_message="";
		}
	}

	//This code will prevent a submit if data is incorrect
	if (message > "") {
		alert(message_headline + "\n\n" + message);
		return false;
	} else {
		return true;
	}
}


// checks if a required field has been set
function r_check(form, x, fieldname, i) {
	var msg_addition = "";
	new_fieldname = fieldname;
	for (var y = 0; y <= x; y++) {
		if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == true)	{
			msg_addition = "";
			break;
		}	else if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == false) {
			msg_addition = form.elements[i].value;
		} else if (form.elements[y].type == "select-one") {
			var l = form.elements[y].selectedIndex;
			if (form.elements[y].name == fieldname && form.elements[y].options[l].value != "") {
				msg_addition = "";
				break;
			} else if (form.elements[y].name == fieldname && form.elements[y].options[l].value == "") {
				msg_addition = form.elements[i].value;
			}
		}	else if (form.elements[y].name == fieldname && form.elements[y].value == "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one") {
			msg_addition = form.elements[i].value;
			break;
		} else if (form.elements[y].name == fieldname && form.elements[y].value != "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one") {
			msg_addition = "";
		}
	}
	return(msg_addition);
}

// checks if a field is not zero
function z_check(form,x,fieldname,i) {
	for (var y = 0; y <= x; y++) {
		if (form.elements[y].name == fieldname) {
			break;
		}
	}

	var msg_addition = "";
	inputStr = form.elements[y].value.toString();

	if (inputStr == "0")	{
		msg_addition = form.elements[i].value;
	}
	
	return(msg_addition);
}

// checks if a field contains an integer
function i_check(form,x,fieldname,i) {
	for (var y = 0; y <= x; y++) {
		if (form.elements[y].name == fieldname);
		break;
	}

	var msg_addition = "";
	var decimal = "";
	inputStr = form.elements[y].value.toString();

	if (inputStr == "")	{
		//msg_addition = form.elements[i].value
	} else {
		for (var c = 0; c < inputStr.length; c++) {
			var oneChar = inputStr.charAt(c)
			if (c == 0 && oneChar == "-" || oneChar == "."  && decimal == "")	{
				if (oneChar == ".")	{
					decimal = "yes"
				}
				continue
			}
			if (oneChar < "0" || oneChar > "9")	{
				msg_addition = form.elements[i].value
			}
		}
	}
	return(msg_addition);
}

// checks if at least one checkbox of given list been checked
function b_check(form, x, fieldname, i) {
	var numBoxes = fieldname.substring(0, 2);
	fieldname = fieldname.substring(3);
	var letters = new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
	var msg_addition = form.elements[i].value;
	
	for (var j=0; j<numBoxes; j++) {
		new_fieldname = fieldname + letters[j];
		for (var y = 0; y <= x; y++) {
			if ((form.elements[y].type == "checkbox") && (form.elements[y].name == new_fieldname) && (form.elements[y].checked == true))	{
				msg_addition = "";
			}
		}
	}
	return(msg_addition);
}

