function validate_any_form(frm){
	
		$(frm).find("IFRAME.mandatory_selected").contents().find("body").removeClass('mandatory_selected');
		$(frm).find("INPUT, SELECT, TEXTAREA, LABEL, IFRAME").removeClass('mandatory_selected');
		$(frm).find("DIV.form_err_message").hide();
		$(frm).find("DIV.form_err_message DIV.checkbox_mandatory_error").hide();
		
		$("INPUT[name='FORM_VALIDATOR']").addClass('mandatory');
		
		var msg = '';
			

		if ($(frm).find("INPUT.mail, INPUT#EMAIL").length){
			email_filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

			$(frm).find("INPUT.mail, INPUT#EMAIL").each(function(){
				if(($(this).attr('value')!='')&& !email_filter.test($(this).attr('value'))){
					$(this).addClass('mandatory_selected');
					if (msg=='')
						msg = 'Entered e-mail is wrong';
				}
			});
		}

		$(frm).find("DIV.form_err_message SPAN.form_email_error").hide();
		if (msg!='')
			$(frm).find("DIV.form_err_message SPAN.form_email_error").show();
		

		$(frm).find("DIV.form_err_message SPAN.form_currency_error").hide();	
		$(frm).find("INPUT.currency").each(function(){
			
			if(($(this).attr('value')!='') && (Number($(this).attr('value')).toFixed(2) != $(this).attr('value'))){
				//alert(Number($(this).attr('value')).toFixed(2) + ':' + $(this).attr('value'));
				$(this).addClass('mandatory_selected');
				if (msg!='') msg+="\n<br>";
					msg+= 'Wrong number format for currency field';
				$(this.form).find("DIV.form_err_message SPAN.form_currency_error").show();
			}
		});
		

		$(frm).find("DIV.form_err_message SPAN.form_password_error").hide();		
		$(frm).find("DIV.form_err_message SPAN.form_mandatory_error").hide();		
		$(frm).find("DIV.form_err_message SPAN.form_cc_error").hide();		
		
		if (($(frm).find("INPUT[TYPE=password]").length>1) &&
			$(frm).find("INPUT#PASSWORD1").length &&
			$(frm).find("INPUT#PASSWORD2").length &&
			($(frm).find("INPUT#PASSWORD1").attr('value') != $(frm).find("INPUT#PASSWORD2").attr('value'))
		){

			$(frm).find("INPUT#PASSWORD1").addClass('mandatory_selected');
			$(frm).find("INPUT#PASSWORD2").addClass('mandatory_selected');
			$(frm).find("DIV.form_err_message SPAN.form_password_error").show();
			if (msg) msg+='<br>';
			msg+= 'Passwords do not match, please try again...';
		}
		
		var checkbox_mandatory_error = '';
		var checkbox_mandatory_selected = false;
		$(frm).find("INPUT[TYPE=checkbox].mandatory").each(function(i,obj){
			if(!$(obj).attr('checked')) {
				$(obj).addClass('mandatory_selected');
				$('LABEL[FOR=' + $(obj).attr("id") + ']').addClass('mandatory_selected');
				if ($(obj).attr("title")!='') {
					if (checkbox_mandatory_error) checkbox_mandatory_error+='<br>';
					if (msg) msg+='<br>';
					msg+= checkbox_mandatory_error+= $(obj).attr("title");
				} else {
					checkbox_mandatory_selected = true;
				}
			}
		});
		if (checkbox_mandatory_error.length > 0) {
			if (!$(frm).find("DIV.form_err_message DIV.checkbox_mandatory_error").length)
				$(frm).find("DIV.form_err_message").prepend('<div class="checkbox_mandatory_error"></div>')
			$(frm).find("DIV.form_err_message DIV.checkbox_mandatory_error").html(checkbox_mandatory_error).show();
			$(frm).find("DIV.form_err_message").show();
		}
		
		$("TEXTAREA.mandatory").each(function(i,obj){
			var val1 = $(obj).val();
			var val2 = $(obj).val().trim();
			if(val2.length > 0 || val1 == val2)
				return;
			$(obj).val($(obj).val().trim());
			if($(obj).hasClass('editorBBCODE') && $(obj).data('bbcode_settings').editorVisible) {
			    $(obj).data('bbcode_settings').content = $(obj).val();
			    $(obj).bbcode2html();
			    $("#rte_" + $(obj).attr('id')).contents().find("body").html($(obj).data('bbcode_settings').content);
			}
		});
		if ($(frm).find("INPUT.mandatory, SELECT.mandatory, TEXTAREA.mandatory").not('[value!=""]').length || checkbox_mandatory_selected){
			if (msg) msg+='<br>';
			msg+= 'Please fill up missing fields below';
			$(frm).find("DIV.form_err_message SPAN.form_mandatory_error").show();
		}
		if ($(frm).find("INPUT.mandatory.on_focus_replace, TEXTAREA.mandatory.on_focus_replace").length){
			var err_on_focus_replace = false;
			$(frm).find("INPUT.mandatory.on_focus_replace, TEXTAREA.mandatory.on_focus_replace").each(function(i,obj){
				if($(obj).attr("value") == $(obj).attr("title")) {
					err_on_focus_replace = true;
					$(obj).addClass("mandatory_selected");
				}
			});
			if (err_on_focus_replace) {
				if (msg) msg+='<br>';
				msg+= 'Please fill up missing fields below';
				$(frm).find("DIV.form_err_message SPAN.form_mandatory_error").show();
			}
		}
		if ($(frm).find("INPUT#CC_NUMBER").length && $(frm).find("#CC_TYPE").length &&
			$(frm).find("INPUT#CC_NUMBER").hasClass('mandatory')){
			
			
			$(frm).find("DIV.form_err_message SPAN.form_cc_error").hide();
			cc_v = $(frm).find("INPUT.mandatory#CC_NUMBER").attr('value');
			cc_t = $(frm).find("#CC_TYPE").attr('value');
			if (!isValidCreditCard(cc_t, cc_v) || (cc_t!='ISRACARD' && !luhn_check(cc_v))){
				if (msg) msg+='<br>';
				msg+=' Credit Card is invalid';
				$(frm).find("DIV.form_err_message SPAN.form_cc_error").show();
				$(frm).find("INPUT.mandatory#CC_NUMBER").addClass('mandatory_selected');
			}
		
			
		}
	
		
		if (msg=='')
			return true;
		$(frm).find("INPUT.mandatory, SELECT.mandatory, TEXTAREA.mandatory").not('[value!=""]').addClass('mandatory_selected');
		$(frm).find(".mandatory_selected:first").focus();
		if (!$(frm).find("DIV.form_err_message").length){
			$(frm).prepend('<div class="form_err_message error_mesage">'+msg+'</div>');
		}
		$(frm).find("TEXTAREA.mandatory_selected.editorBBCODE").each(function(i,obj){
			var parent = $(obj).parents("*").get(0);
			$(parent).find("iframe.frm_editorBBCODE").addClass('mandatory_selected');
			$(parent).find("iframe.frm_editorBBCODE").contents().find("body").addClass('mandatory_selected');
		});
		$(frm).find("DIV.form_err_message").show();
		if ($(frm).find("DIV.form_err_message").html()=='')
			$(frm).find("DIV.form_err_message").html(msg);

		return false;
}

function init_form_validation(){
	
	if (!$("FORM:has(INPUT.mandatory), FORM:has(SELECT.mandatory), FORM:has(TEXTAREA.mandatory)").length)
		return;
	$("INPUT.currency").blur(function(){
		if (($(this).attr('value') != '') && (Number($(this).attr('value')).toFixed(2)!='0.00') && (Number($(this).attr('value')).toFixed(2)!='NaN'))
			$(this).attr('value', Number($(this).attr('value')).toFixed(2));
	});

	$("FORM:has(INPUT.mandatory), FORM:has(SELECT.mandatory), FORM:has(TEXTAREA.mandatory)").submit(function(){
		return validate_any_form(this);
	});
	$("TD.form_title + TD.form_field:has(INPUT.mandatory)").prev().find("SPAN").text('*').css('color','red');
	$("TD.form_title + :not(TD.form_field:has(INPUT.mandatory))").prev().find("SPAN").html('&nbsp; ').css('padding-left','2px');
}

function init_lightbox() {
	$(".lightbox_single").lightBox();
}


$(document).ready(
	function() {
		init_form_validation();
		init_lightbox();
		if (typeof(on_custom_jquery_init) != 'undefined')
			on_custom_jquery_init();
	}
);

