
/*********************************************
*
*	prepare_form
*
*********************************************/

function prepare_form(tgt){
	if(arguments[1]){
		var values = arguments[1];
		//alert_test("1");
	}else{
		var values = data_fields;
		//alert_test("2");
	}

	//alert_test(gettype(tgt, true));

	if(gettype(tgt, true) == "Form"){
		return get_form_data(tgt, values);
	}else{
		return get_area_data(tgt, values);
	}

}

/*********************************************
*
*	get_area_data
*
*********************************************/

function get_area_data(tgt, values){

	var tags = Array("input", "textarea", "select");

	//alert_test(tgt.getElementsByTagName("textarea").length);
	//alert_test(tags.length);

	var data = "";
	var all_valid = true;

	for(var k=0; k<tags.length; k++){
		for(var i=0; i<tgt.getElementsByTagName(tags[k]).length; i++){

			//alert_test(gettype(tgt.getElementsByTagName("input")[i], true));

			if(tgt.getElementsByTagName(tags[k])[i].name != ""){

				var valid = true;

				for(var j=0; j<values.length; j++){
					if(values[j][1] == tgt.getElementsByTagName(tags[k])[i].id){

						valid = check_value(tgt.getElementsByTagName(tags[k])[i], values[j], tgt);

						if(!valid){
							//alert_test("nay");
							return false;
						}
							//alert_test("yay");
					}
					//tgt.getElementsByTagName("input")[i].style.backgroundColor = selected;
				}

				if(valid){
					data += get_data(tgt.getElementsByTagName(tags[k])[i]);
				}else{
					all_valid = false;
					return false;
				}
			}
		}
	}

	if(all_valid){
		return data;
	}else{
		return false;
	}
}

/*********************************************
*
*	get_form_data
*
*********************************************/

function get_form_data(tgt){

	if(arguments[1]){
		var values = arguments[1];
		//alert_test("1");
	}else{
		var values = data_fields;
		//alert_test("2");
	}

	if(check_data(tgt, values)){

		var data = "";
		//alert_test("length = " + tgt.length);

		for(var i=0; i<tgt.length; i++){
			data += get_data(tgt[i]);
		}
		//alert_test(data);
		return data;
	}else{
		return false;
	}
}

/*********************************************
*
*	clean_form_data
*
*********************************************/

function clean_form_data(data){

	data = data.replace(/\+/g,'%2B');
	data = data.replace(/&/g,'%26');

	return data;
}

/*********************************************
*
*	get_data
*
*********************************************/

function get_data(tgt){

	var data = "";

	if(tgt.name){
		//alert_test(tgt.name + " is " + tgt.value);

		var add_value = true;

		if(gettype(tgt, true) == "checkbox"){
			if(!tgt.checked){
				add_value = false;
			}
		}

		if(gettype(tgt, true) == "radio"){
			if(!tgt.checked){
				add_value = false;
			}
		}

		if(gettype(tgt, true) == "select"){
			if(tgt.getAttribute("multiple")){
				//alert_test(tgt[i].getElementsByTagName("option").length);

				for(var j=0; j<tgt.getElementsByTagName("option").length; j++){
					var option = tgt.getElementsByTagName("option")[j];

					if(option.selected){
						data += "&" + tgt.name + "=" + option.value;
					}
				}

				add_value = false;
			}
		}

		if(add_value){

			//alert_test(tgt.name + " is " + tgt.value);

			/*
			new_value = new_value.replace(/\\/g, "%26#92;%26#92;%26#92;%26#92;%26#92;%26#92;%26#92;%26#92;");
			new_value = new_value.replace(/&/g, "%26amp;");
			new_value = new_value.replace(/\</g, "%26lt;");
			new_value = new_value.replace(/\</g, "%26gt;");
			new_value = new_value.replace(/\'/g, "\\\'");
			new_value = new_value.replace(/\"/g, "%26#92;%26#92;%26#92;%26#92;%26#92;%26#92;%26#92;%26quot;");
			*/

			var tgt_value = tgt.value;
			//tgt_value = tgt_value.replace(/&/g,'&amp;');

			tgt_value = clean_form_data(tgt_value);

			//tgt_value = tgt_value.replace(/\+/g,'%2B');
			//tgt_value = tgt_value.replace(/&/g,'%26');

			//tgt_value = tgt_value.replace(/&/g,'%26#92;%26#92;%26#92;%26#92;%26#92;%26#92;%26#92;%26quot;');
			//tgt_value = tgt_value.replace(/</g,'&lt;');
			//tgt_value = tgt_value.replace(/>/g,'&gt;');
			data += "&" + tgt.name + "=" + tgt_value;
		}
	}

	return data;
}

/*********************************************
*
*	check_value
*
*********************************************/

function check_value(field, value, tgt){

	var val = field.value;

	//alert_test(value[0] + ", " + value[1] + ", " + value[2] + ", " + value[3]);

	switch(value[2]){

		case "email":
			if(!emailCheck(trimWhiteSpace(val))){

				if(value[4]){
					eval(value[4]);
				}
				alert(value[0] + " is incorrect\n" + error_message);
				field.style.backgroundColor = selected;
				field.focus();
				return false;
			}else{
				field.style.backgroundColor = "#FFFFFF";
			}
			break;

		case "Currency":
		case "number":
			if(!Number(val) && val != "0"){

				if(value[4]){
					eval(value[4]);
				}
				alert(value[0] + " is incorrect\nThis is not a valid number");
				field.style.backgroundColor = selected;
				field.focus();
				return false;
			}else{
				field.style.backgroundColor = "#FFFFFF";
			}
			break;

		case "list":
			if(value[3] == 1){

				//alert_test("oi");

				checked = false;

				if(gettype(tgt, true) == "Form"){
					for(var j=0; j<tgt.length; j++){
						if(tgt[j].type == "checkbox" && tgt[j].id == value[1]){
							//alert_test(tgt[j].id + ", " + values[i][1]);
							if(tgt[j].checked == true){
								checked = true;
								j = tgt.length;
							}
						}
					}
				}else{

					checked = $("input:checkbox[id=" + value[1] + "]:checked", tgt).length > 0;
					//alert_test((checked ? "yes" : "no") + "\n" + $("input:checkbox[id=" + value[1] + "]:checked", tgt).length);

					var boxes = Array();

					/*
					var boxes = tgt.getElementsByTagName("checkbox");

					for(var j=0; j<boxes.length; j++){
						if(boxes[j].id == value[1]){
							if(boxes[j].checked == true){
								checked = true;
								j = boxes.length;
							}
						}
					}
					*/
				}


				if(checked == false){

					/*if(value[4]){
						eval(value[4]);
					}*/
					alert(value[0] + " is incorrect\nAt least one value must be checked");
				}

				if(gettype(tgt, true) == "Form"){
					for(var j=0; j<tgt.length; j++){
						if(tgt[j].type == "checkbox" && tgt[j].id == value[1]){
							if(checked == false){
								tgt[j].style.backgroundColor = selected;
								return false;
							}else{
								tgt[j].style.backgroundColor = "#FFFFFF";
							}
						}
					}
				}else{

					var bg = checked ? "#FFFFFF" : selected;

					$("input:checkbox[id=" + value[1] + "]", tgt).each(function(item){

						$(this)
						.parent()
						.css("background-color", bg);

					});

					/*
					alert_test(boxes.length);

					for(var j=0; j<boxes.length; j++){
						if(boxes[j].id == value[1]){
							if(checked == false){
								boxes[j].style.backgroundColor = selected;
								return false;
							}else{
								boxes[j].style.backgroundColor = "#FFFFFF";
							}
						}
					}
					*/
				}

				if(checked == false){

					return false;

				}

			}else{

				//alert_test("no");
				if(trimWhiteSpace(val) == ""){

					if(value[4]){
						eval(value[4]);
					}
					alert(value[0] + " is incorrect\nA value must be entered");
					field.style.backgroundColor = selected;
					field.focus();
					return false;
				}else{
					field.style.backgroundColor = "#FFFFFF";
				}
			}
			break;

		case "file":
			if(trimWhiteSpace(val) == ""){

				if(value[4]){
					eval(value[4]);
				}
				alert(value[0] + " is incorrect\nYou need to select a file");
				field.focus();
				field.style.backgroundColor = selected;
				return false;
			}else{
				field.style.backgroundColor = "#FFFFFF";
			}
			break;

		case "password":

			//alert_test("here");

			if(document.getElementById("change_password_" + value[1]).value == "yes"){

				var check1 = document.getElementById(value[1] + "_check1");
				var check2 = document.getElementById(value[1] + "_check2");
				if(trimWhiteSpace(check1.value) == ""){

					if(value[4]){
						eval(value[4]);
					}
					alert(value[0] + " is incorrect\nA value must be entered");
					check1.style.backgroundColor = selected;
					check1.focus();
					return false;
				}
				if(trimWhiteSpace(check2.value) == ""){

					if(value[4]){
						eval(value[4]);
					}
					alert("Confirm " + value[0] + " is incorrect\nA value must be entered");
					check2.style.backgroundColor = selected;
					check2.focus();
					return false;
				}
				//alert_test(check2.value + ", " + );
				if(check2.value != check1.value){

					if(value[4]){
						eval(value[4]);
					}
					alert(value[0] + " does not match");
					check1.style.backgroundColor = selected;
					check2.style.backgroundColor = selected;
					check1.focus();
					return false;
				}
				field.value = check1.value;
			}else{
				field.value = "";
			}
			if(document.getElementById(check1)){
				check1.style.backgroundColor = "#FFFFFF";
				check2.style.backgroundColor = "#FFFFFF";
			}
			break;

		default:
			if(trimWhiteSpace(val) == ""){

				//alert_test(value[4]);

				if(value[4]){
					eval(value[4]);
				}

				alert(value[0] + " is incorrect\nA value must be entered");
				field.style.backgroundColor = selected;
				field.focus();
				return false;
			}else{
				field.style.backgroundColor = "#FFFFFF";
			}
			break;
	}

	return true;
}

