// Title: Tigra Form Validator PRO
// URL: http://www.softcomplex.com/products/tigra_form_validator_pro/
// Version: 1.2
// Date: 05/18/2006
// Notes: Registration needed to use this script legally. Visit official site for details.

//Code prepared by Tigra Javascript Scrambler version 1.0 (http://www.softcomplex.com/products/tigra_code_compressor/)

var re_dt=/^(\d{1,2})\-(\d{1,2})\-(\d{4})$/,re_tm=/^(\d{1,2})\:(\d{1,2})\:(\d{1,2})$/,a_formats={'alpha':/^[a-zA-Z\.\-\s]*$/,'alphanum':/(\w(\s)?)+/,'unsigned':/^\d+$/,'integer':/^[\+\-]?\d*$/,'real':/^[\+\-]?\d*\.?\d*$/,'email':/^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/,'phone':/^[\d\.\s\-]+$/,'date':function(s_date){if(!re_dt.test(s_date))return false;if(RegExp.$1>31||RegExp.$2>12)return false;var dt_test=new Date(RegExp.$3,Number(RegExp.$2-1),RegExp.$1);if(dt_test.getMonth()!=Number(RegExp.$2-1))return false;return true;},'time':function(s_time){if(!re_tm.test(s_time))return false;if(RegExp.$1>23||RegExp.$2>59||RegExp.$3>59)return false;return true;}};function vconfig(){this.a_properties=['alert','alert_class','to_disable','messages'];this.alert=0;this.alert_class=[];this.to_disable=[];this.messages={'a_properties':['setup','fill','boxes','confirm'],'setup':['No form name passed to validator construction routine','No array of "%form%" form fields passed to validator construction routine','Form "%form%" can not be found in this document','Can not find area for error message box (id="error_%form%")','Incomplete "%n%" form field descriptor entry. Attribute "%attr%" is missing','Can not find form field "%n%" in the form "%form%"','Can not find label tag (id="%t%")','Can not verify match. Field "%m%" was not found'],'fill':['"%l%" is a required field','"%v%" is not valid value for "%l%"','Value for "%l%" must be %mn% characters or more','Value for "%l%" must be no longer than %mx% characters','"%l%" must match "%ml%"'],'boxes':['<table cellpadding="0" cellspacing="0" border="0" width="100%">'+'<tr><td bgcolor="#CCCC33"><table cellpadding="15" cellspacing="1" border="0" width="100%">'+'<tr><td bgcolor="#FFFFCC" style="color: red;">%error%</td></tr>'+'</table></td></tr><tr><td height="10">&nbsp;</td></tr></table>','<table cellpadding="0" cellspacing="0" border="0" width="100%">'+'<tr><td bgcolor="#CCCC33"><table cellpadding="15" cellspacing="1" border="0" width="100%">'+'<tr><td bgcolor="#FFFFCC" style="color: green; font-weight: bold;">Submitting ...</td></tr>'+'</table></td></tr><tr><td height="10">&nbsp;</td></tr></table>'],'confirm':['The "%form%" form is to be submitted. Are you sure?']}}function validator(s_form,a_fields,o_cfg){this.f_error=validator_error;var o_cfg_full=new vconfig();validator_build_cfg(o_cfg,o_cfg_full);this.o_cfg=o_cfg_full;this._alert=o_cfg_full.alert;this.f_alert=this._alert&4?function(s_msg){alert(s_msg);return false}:function(){return false};this.s_errcss=o_cfg_full.alert_class;if(!s_form)return this.f_alert(this.f_error('setup',0));this.s_form=s_form;if(!a_fields||typeof(a_fields)!='object')return this.f_alert(this.f_error('setup',1));this.a_fields=a_fields;this.a_2disable=o_cfg_full.to_disable;this.exec=validator_exec;}function validator_exec(){var o_form=document.forms[this.s_form];if(!o_form)return this.f_alert(this.f_error('setup',2));var e_errbox=get_element('error_'+this.s_form),b_dom=document.body&&document.body.innerHTML;if((this._alert&2)||(this._alert&8)){if(b_dom&&!e_errbox)return this.f_alert(this.f_error('setup',3));if(b_dom){e_errbox.style.display='none';e_errbox.innerHTML='';}}var a_reqattrs=['l'];for(var i=0;i<this.a_fields.length;i++){for(var j=0;j<a_reqattrs.length;j++)if(!this.a_fields[i][a_reqattrs[j]])return this.f_alert(this.f_error('setup',4,this.a_fields[i],{'attr':a_reqattrs[j]}));o_input=o_form.elements[this.a_fields[i].n];if(!o_input)return this.f_alert(this.f_error('setup',5,this.a_fields[i]));this.a_fields[i].o_input=o_input;}if(b_dom)for(var i=0;i<this.a_fields.length;i++){var o_field=this.a_fields[i];if(o_field.t){var s_labeltag=o_field.t,e_labeltag=get_element(s_labeltag);if(!e_labeltag)return this.f_alert(this.f_error('setup',6,o_field));o_field.o_tag=e_labeltag;e_labeltag.className=this.s_errcss[1];}}for(var i=0;i<this.a_fields.length;i++){o_field=this.a_fields[i];o_input=o_field.o_input;o_field.v=null;if(o_input.type=='checkbox'){if(o_input.checked&&o_input.value)o_field.v=o_input.value;}else if(o_input.value)o_field.v=o_input.value;else if(o_input.options&&o_input.selectedIndex>-1)o_field.v=o_input.options[o_input.selectedIndex].value;else if(o_input.length>0)for(var n_index=0;n_index<o_input.length;n_index++)if(o_input[n_index].checked){o_field.v=o_input[n_index].value;break;}}var n_errors_count=0,s_correct,o_another,o_format_check,b_format_func;for(var i=0;i<this.a_fields.length;i++){o_field=this.a_fields[i];o_format_check=o_field.f?(a_formats[o_field.f]?a_formats[o_field.f]:o_field.f):null;b_format_func=(o_format_check+'').indexOf('function')>-1;o_field.n_error=null;if(o_field.r&&!o_field.v){o_field.n_error=1;n_errors_count++;}else if(o_field.m){for(var j=0;j<this.a_fields.length;j++)if(this.a_fields[j].n==o_field.m){o_another=this.a_fields[j];break;}if(o_another==null)return this.f_alert(this.f_error('setup',7,o_field));if(o_another.v!=o_field.v){o_field.ml=o_another.l;o_field.n_error=5;n_errors_count++;}}else if(!o_field.v){continue;}else if(o_field.mn&&String(o_field.v).length<o_field.mn){o_field.n_error=3;n_errors_count++;}else if(o_field.mx&&String(o_field.v).length>o_field.mx){o_field.n_error=4;n_errors_count++;}else if(o_format_check&&((b_format_func&&(s_correct=o_format_check(o_field.v,o_form))!=true)||(!b_format_func&&o_field.v&&!o_format_check.test(o_field.v)))){o_field.n_error=typeof(s_correct)!='string'?2:s_correct;n_errors_count++;}}var s_html_message='',s_alert_message='',e_first_error;if(n_errors_count){for(var i=0;i<this.a_fields.length;i++){o_field=this.a_fields[i];var n_error_type=o_field.n_error,s_message='';if(n_error_type){s_message=this.f_error('fill',n_error_type-1,o_field);if(!s_message)s_message=n_error_type;}if(s_message){if(!e_first_error)e_first_error=o_form.elements[o_field.n];s_html_message+=s_message+'<br>';s_alert_message+=s_message+"\n";if(b_dom&&this.s_errcss&&o_field.o_tag)o_field.o_tag.className=this.s_errcss[0];}}s_html_message=this.f_error('boxes',0,{'error':s_html_message});if(typeof(this._alert)!='function'){if(this._alert&1)alert(s_alert_message);if(b_dom&&(this._alert&2)){e_errbox.innerHTML=s_html_message;e_errbox.style.display='block';}if(e_first_error.focus&&e_first_error.type!='hidden')e_first_error.focus();return false;}}if(typeof(this._alert)=='function')return this._alert(s_alert_message,s_html_message,e_errbox);else{if((this._alert&16)&&!confirm(this.f_error('confirm',0)))return false;if(b_dom&&(this._alert&8)){e_errbox.innerHTML=this.f_error('boxes',1);e_errbox.style.display='block';}for(var i=0;i<this.a_2disable.length;i++){var e_input=get_element(this.a_2disable[i]);if(e_input&&e_input.disabled!=null)e_input.disabled=true;}}return true;}function validator_build_cfg(o_fragment,o_fragment_def){var a_keys=o_fragment_def.a_properties;for(var i=0;i<(a_keys?a_keys.length:o_fragment.length);i++){var s_=a_keys?a_keys[i]:i;if(o_fragment[s_]!=null){if(typeof(o_fragment[s_])=='object'){if(typeof(o_fragment_def[s_])!='object')alert("Type mismatch ("+s_+"). Array in place of scalar.");validator_build_cfg(o_fragment[s_],o_fragment_def[s_]);}else{if(typeof(o_fragment_def[s_])=='object')alert("Type mismatch ("+s_+"). Scalar in place of array.");o_fragment_def[s_]=o_fragment[s_];}}}}function validator_error(s_group,n_index){var s_=this.o_cfg.messages[s_group][n_index],n_i=2,s_key;if(!s_)return false;if(typeof(s_)=='function')s_=s_(this.s_form);for(;n_i<arguments.length;n_i++)for(s_key in arguments[n_i])s_=s_.replace('%'+s_key+'%',arguments[n_i][s_key]);s_=s_.replace('%form%',this.s_form);return s_}function get_element(s_id){return(document.all?document.all[s_id]:(document.getElementById?document.getElementById(s_id):null));}
