/* AJAX-Form 2.0.0 */

// for validation
var regexp = [];
var fields = [];

$(document).ready(function() {
	$('head').append('<link rel="stylesheet" type="text/css" href="ajaxform/style/form.css" />');
	$.getJSON("ajaxform/form.php?load=form", function(data) {
		$("#formholder").html(data.form);
		fields = data.fields;
		regexp = data.regexp;
		$('#the-form').ajaxForm({
			beforeSubmit: validateInput,
			dataType: 'json',
			success: getResponse,
		});
		$('#form-loading-div').append('<img src="ajaxform/style/ajax-loader.gif" alt="Loading..." />');
		$('#form-loading-div').hide();
		$('#message-box').hide();
	});
});

function validateInput(data) {
	$('#form-submit-button').hide();
	var curRegexp = new RegExp();
	var failed = false;
	var itemValue = [];
	for(i=0; i<fields.length;i++) {
		itemValue = $('[@name="' + fields[i] + '"]').fieldValue();
		itemValue = itemValue[0];
		if(regexp[i] != "")
			curRegExp = new RegExp(regexp[i],"i");
		else
			curRegExp = null;
		if( curRegExp && itemValue == "" || curRegExp && !itemValue.match(curRegExp)) {
			$('[@name=' + fields[i] + ']').css('background','red');
			failed = true;
		}
		else
			$('[@name=' + fields[i] + ']').css('background','none');
	}
	if( failed ) {
		$('#form-loading-div').hide();
		$('#form-submit-button').show();
		return false;
	}
	else {
		$('#form-loading-div').show();
		$('#form-submit-button').hide();
	}
}

function getResponse(data) {
	$('#form-loading-div').hide();
	$('#slide-form').slideUp("slow");
	$('#message-box').html(data.success);
	$('#message-box').fadeIn("slow");
}

/*
* Copyright (c) 2009 Colby Klein <shakesoda@gmail.com>
* 
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
* 
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
