/* rx.library * rx-form.js : 12/08/09 */

// RX_autoHide : 12/08/09
// - hides default value on :focus
// - restores default value if unchanged on :blur
jQuery.fn.RX_autoHide = function() {
	jQuery.noConflict();
	function populateElement(selector, defvalue) {
		jQuery(selector).focus(function() {
			if (jQuery(selector).val() == defvalue) {
				jQuery(selector).val('');
			}
		});

		jQuery(selector).blur(function() {
			if (jQuery.trim(jQuery(selector).val()) == '') {
				jQuery(selector).val(defvalue);
			}
		});
	};

	return this.each(function() {
		populateElement(jQuery(this), jQuery(this).val());
	});
}
//

var global_formError = false;

// RX_formValidate : 12/08/09
// - simple form validator
jQuery.fn.RX_formValidate = function() {
	jQuery.noConflict();
	function validateNoempty(text) {
    if (!text || text.length < 3) { return false;	}
		return true;
	}
	//

	function validateText(text) {
		
    if (!validateNoempty(text)) { return false; }
		var re_text = /[^A-Za-z0-9\s]/;
		if (text.match(re_text) != null ) { return false; }
		return true;
	}
	//

	function validateEmail(email) {
		
		if (!validateNoempty(email)) { return false; }

		if(email.indexOf('@') == -1 || email.indexOf('.') == -1) { return false; }else { return true; }
	}
	//

	function validateSelect(select) {
		if (select != -255) {
			return true;
		}
		return false;
	}
	//

	function validateInteger(number) {
		var numRegExp  = /\d+jQuery/;
	  return numRegExp.test(number);
	}
	//

	return this.each(function() {
		
		jQuery(this).click(function(e) {
			e.preventDefault();
			error = false;

			function set_error(node) {
				node.animate( { opacity: 0.2 }, 175 ).animate( { opacity: 1 }, 150 );
				error = true;
			}

			function set_errorSelect(node) {
				if (node.parents('.rx-js-select').hasClass('rx-select-on') ) {
					node.parents('.rx-select-on').animate( { opacity: 0.2 }, 175 ).animate( { opacity: 1 }, 150 );
					error = true;
				} else {
					set_error(node);
				}
			}

			jQuery(this).parents('form').find('.v-noempty, .v-text, .v-email, .v-select, .v-integer').each( function() {
				if (jQuery(this).hasClass('v-noempty')) {
					if (!validateNoempty(jQuery(this).val())) {
						set_error(jQuery(this));
					}
				} else if (jQuery(this).hasClass('v-text')) {
					if (!validateText(jQuery(this).val())) {
						set_error(jQuery(this));
					}
				} else if (jQuery(this).hasClass('v-email')) {
					if (!validateEmail(jQuery(this).val())) {
						set_error(jQuery(this));
					}
				} else if (jQuery(this).hasClass('v-select')) {
					if (!validateSelect(jQuery(this).val())) {
						set_errorSelect(jQuery(this));
					}
				} else if (jQuery(this).hasClass('v-integer')) {
					if (!validateInteger(jQuery(this).val())) {
						set_error(jQuery(this));
					}
				}
			});

			global_formError = error;

			if (!error) {
				jQuery(this).parents('form').submit();
			}

		});

	});
	//
}
//

// RX_limitChars : 12/08/09
// - limits number of chars for input field
jQuery.fn.RX_limitChars = function(Q) {
	jQuery.noConflict();
	this.each(function() {
		var ax = jQuery(this).attr('class').match(/lim\-\d{2,4}/),
				i, j, k;

		if (!ax) { return; }
		k = ax.toString().substr(4);

		jQuery(this).keydown(function() {
			if (jQuery(this).val().length >= k) {
				jQuery(this).val( jQuery(this).val().substr(0, k-1) );
			}
		});

		i = jQuery(this);
		j = i.parents(Q.par).find(Q.cnt);

		setInterval( function() { j.html(k - i.val().length); }, 200 );

	});
}
//

jQuery(document).ready(function($) {
	jQuery('.rx-auto input, .rx-auto textarea').RX_autoHide();

	jQuery('.rx-validate a, a.rx-validate').RX_formValidate();


	jQuery('.v-limit').RX_limitChars({
		par : 'p', // closest parent to limited field and counter
		cnt : 'em' // counter tag
	});
	

});
/* */
