/* javascript functions */

var doFromSubmit = {
	def_settings: {
		formid: "",
		formfields: "",		// "item1, item2, item3, etc"
		fieldsreq: {		// required fields
			isreq: "0",		// set to 1 if there are required fields
			reqitems: ""	// if set to 1, list of required fields
		}
	},

	checked: {error: "0", message: ""},

	performCheck: function($, settings){
		if(settings.formid == ""){
			this.checked.error = "1";
			this.checked.message += "* Please define form id to submit\r\n"; // form id is empty
		}
		else if(settings.formid != ""){
			if($("#"+settings.formid).attr("method") == "" || ($("#"+settings.formid).attr("method").toUpperCase() != "POST" && $("#"+settings.formid).attr("method").toUpperCase() != "GET")){
				this.checked.error = "1";
				this.checked.message += "* Please define correct method for form: method='[POST|GET]'\r\n"; // form submit type is empty
			}
		}
		if(settings.formfields == ""){
			this.checked.error = "1";
			this.checked.message += "* Please define fields to submit: [fieldid1, fieldid2, etc]"; // form field id's id empty
		}
		if(settings.fieldsreq.isreq > "0" && settings.fieldsreq.reqitems == ""){
			this.checked.error = "1";
			this.checked.message += "* Please define required fields: [fieldid1, fieldid2, etc]"; // form field id's id empty
		}
		return this.checked;
	},

	checkRequiredFilled: function($, settings){
		var error_cnt = "0";

		if(settings.fieldsreq.isreq > "0"){
			reqitemstmp = settings.fieldsreq.reqitems.split(",");
			arrsize = reqitemstmp.length;
			i = "0";
			while(i < arrsize){
				reqitemstmp[i] = reqitemstmp[i].replace(/ /, "");
				if($("#"+reqitemstmp[i]).val() == ""){
					error_cnt = "1";
					break;
				}
				i++;
			}
		}

		if(error_cnt > "0")
			return "All fields marked with * are required.";
		else
			return "";
	},
/*
	_preventDefault: function(event){
		if(event && event.preventDefault) event.preventDefault();
		else event.returnValue = false;
	},
*/
	init: function(options){
		var settings = {};
		settings = jQuery.extend(settings, this.def_settings, options);

		$(document).ready(function($){
			/* function that calls ajax form to appear. comment out, if not needed */
			$(".thickbox").click(function(){
				/* set error to nothing again */
				doFromSubmit.checked.error = "0";
				doFromSubmit.checked.message = "";
			});

			$checked = doFromSubmit.performCheck($, settings);
			if($checked.error == "1"){
				alert($checked.message);

				$("form").submit(function(){
					alert($checked.message);
					return false;
				});
			}
			else if($checked.error == "0"){
				/* define basic form actions */
				settings.sendtype = $("#"+settings.formid).attr("method").toUpperCase();
				settings.formurl = escape($("#"+settings.formid).attr("action"));

				$("#"+settings.formid).submit(function(){
					/* remove error div */
					$("#errormsgdiv").remove();

					/* check required fields filled */
					checkReq = doFromSubmit.checkRequiredFilled($, settings);
					if(checkReq != ""){
						alert(checkReq);
						return false;
					}

					/* build up variables to sent */
					fieldstmp = settings.formfields.split(",");
					arrsize = fieldstmp.length;
					i = "0";
					var dataString = "";
					while(i < arrsize){
						fieldstmp[i] = fieldstmp[i].replace(/ /, "");
						dataString += fieldstmp[i]+"="+$("#"+fieldstmp[i]).val();
						i++;
						if(i != arrsize) dataString += "&";
					}

					$.ajax({
						type: settings.sendtype,
						url: settings.formurl,
						data: dataString,
						success: function(returned){
							if(returned != "OK"){
								$("#"+settings.formid).before("<div id=\"errormsgdiv\" style=\"color: #FF0000; font-size: 12px;\">"+returned+"</div>");
								return false;
							}
							else{
								/* remove popup divs. Comment out, if not needed */
								$("#TB_overlay").remove();
								$("#TB_window").hide("200");
								setTimeout("$('#TB_window').remove()", 1000);
							}
						}
					});
					return false;
				});
			}
		});
	}
}
