// Title: Tigra Form Validator PRO
// URL: http://www.softcomplex.com/products/tigra_form_validator_pro/
// Version: 1.1
// Date: 08/03/2004 (mm/dd/yyyy)
// Notes: Registration needed to use this script legally. Visit official site for details.

var TV0=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,TV1=/^(\d{1,2})\:(\d{1,2})\:(\d{1,2})$/,TV44=/^(\d{1,2})\/(\d{1,2})\/(\d{4})\s(\d{1,2})\:(\d{1,2})\:(\d{1,2})$/,TV2={'alpha':/^[a-zA-Z\.\-]*$/,'alphanum':/^\w+$/,'unsigned':/^\d+$/,'integer':/^[\+\-]?\d*$/,'real':/^[\+\-]?\d*\.?\d*$/,'email':/^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/,'phone':/^[\d\.\s\-]+$/,'datetime':function(TV77){if (TV77 == null) {return true;}if(!TV44.test(TV77))return false;return true;},'date':function(TV3){if (TV3 == null) {return true;}if(!TV0.test(TV3))return false;if(RegExp.$1>31||RegExp.$2>12)return false;var TV4=new Date(RegExp.$3,Number(RegExp.$2-1),RegExp.$1);if(TV4.getMonth()!=Number(RegExp.$2-1))return false;return true;},'time':function(TV6){if(!TV1.test(TV6))return false;if(RegExp.$1>23||RegExp.$2>59||RegExp.$3>59)return false;return true;}};function TV7(){this.alert=0;this.alert_class=[];this.to_disable=[];this.messages={'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% est obligatoire','"%v%" est une valeur non valide pour "%l%"','La valeur de "%l%" doit être de %mn% caractère ou plus','La valeur de "%l%" ne doit pas dépasser %mx% caractères','"%l%" doit correspondre à "%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(TV8,TV9,TVA){this.TVB=TVC;var TVD=new TV7();TVE(TVA,TVD);this.TVA=TVD;this.TVF=TVD.alert;this.TVG=this.TVF&4?function(TVH){alert(TVH);return false}:function(){return false};this.TVI=TVD.alert_class;if(!TV8)return this.TVG(this.TVB('setup',0));this.TV8=TV8;if(!TV9||typeof(TV9)!='object')return this.TVG(this.TVB('setup',1));this.TV9=TV9;this.TVJ=TVD.to_disable;this.exec=TVK;}function TVK(){var TVL=document.forms[this.TV8];if(!TVL)return this.TVG(this.TVB('setup',2));var TVM=TVN('error_'+this.TV8),TVO=document.body&&document.body.innerHTML;if((this.TVF&2)||(this.TVF&8)){if(TVO&&!TVM)return this.TVG(this.TVB('setup',3));if(TVO){TVM.style.display='none';TVM.innerHTML='';}}var TVP=['l'];for(var TVQ in this.TV9){this.TV9[TVQ]['n']=TVQ;for(TVR in TVP)if(!this.TV9[TVQ][TVP[TVR]])return this.TVG(this.TVB('setup',4,this.TV9[TVQ],{'attr':TVP[TVR]}));TVS=TVL.elements[TVQ];if(!TVS)return this.TVG(this.TVB('setup',5,this.TV9[TVQ]));this.TV9[TVQ].TVS=TVS;}if(TVO)for(var TVQ in this.TV9)if(this.TV9[TVQ]['t']){var TVT=this.TV9[TVQ]['t'],TVU=TVN(TVT);if(!TVU)return this.TVG(this.TVB('setup',6,this.TV9[TVQ]));this.TV9[TVQ].TVV=TVU;TVU.className=this.TVI[1];}for(var TVQ in this.TV9){TVS=this.TV9[TVQ].TVS;this.TV9[TVQ]['v']=null;if(TVS.type=='checkbox'){if(TVS.checked&&TVS.value)this.TV9[TVQ]['v']=TVS.value;}else if(TVS.value)this.TV9[TVQ]['v']=TVS.value;else if(TVS.options&&TVS.selectedIndex>-1)this.TV9[TVQ]['v']=TVS.options[TVS.selectedIndex].value;else if(TVS.length>0)for(var TVW=0;TVW<TVS.length;TVW++)if(TVS[TVW].checked){this.TV9[TVQ]['v']=TVS[TVW].value;break;}}var TVX=0,TVY,TVZ,TV_,TVa;for(var TVQ in this.TV9){TVb=this.TV9[TVQ];TV_=TVb['f']?(TV2[TVb['f']]?TV2[TVb['f']]:TVb['f']):null;TVa=(TV_+'').indexOf('function')>-1;TVb.TVc=null;if(TVb['r']&&!TVb['v']){TVb.TVc=1;TVX++;}else if(TVb['mn']&&String(TVb['v']).length<TVb['mn']){TVb.TVc=3;TVX++;}else if(TVb['mx']&&String(TVb['v']).length>TVb['mx']){TVb.TVc=4;TVX++;}else if(TV_&&((TVa&&(TVY=TV_(TVb['v'],TVL))!=true)||(!TVa&&TVb['v']&&!TV_.test(TVb['v'])))){TVb.TVc=typeof(TVY)!='string'?2:TVY;TVX++;}else if(TVb['m']){for(var TVd in this.TV9)if(TVd==TVb['m']){TVZ=TVd;break;}if(TVZ==null)return this.TVG(this.TVB('setup',7,TVb));if(this.TV9[TVZ]['v']!=TVb['v']){TVb['ml']=this.TV9[TVZ]['l'];TVb.TVc=5;TVX++;}}}var TVe='',TVf='',TVg;if(TVX){for(var TVQ in this.TV9){var TVh=this.TV9[TVQ].TVc,TVi='';if(TVh){TVi=this.TVB('fill',TVh-1,this.TV9[TVQ]);if(!TVi)TVi=TVh;}if(TVi){if(!TVg)TVg=TVL.elements[TVQ];TVe+=TVi+'<br>';TVf+=TVi+"\n";if(TVO&&this.TVI&&this.TV9[TVQ].TVV)this.TV9[TVQ].TVV.className=this.TVI[0];}}TVe=this.TVB('boxes',0,{'error':TVe});if(typeof(this.TVF)!='function'){if(this.TVF&1)alert(TVf);if(TVO&&(this.TVF&2)){TVM.innerHTML=TVe;TVM.style.display='block';}if(TVg.focus&&TVg.type!='hidden')TVg.focus();return false;}}if(typeof(this.TVF)=='function')return this.TVF(TVf,TVe,TVM);else{if((this.TVF&16)&&!confirm(this.TVB('confirm',0)))return false;if(TVO&&(this.TVF&8)){TVM.innerHTML=this.TVB('boxes',1);TVM.style.display='block';}for(TVQ in this.TVJ){var TVj=TVN(this.TVJ[TVQ]);if(TVj&&TVj.disabled!=null)TVj.disabled=true;}}return true;}function TVE(TVk,TVl){for(var TVm in TVk)if(TVk[TVm]!=null){if(typeof(TVk[TVm])=='object'){if(typeof(TVl[TVm])!='object')alert("Type mismatch ("+TVm+"). Array in place of scalar.");TVE(TVk[TVm],TVl[TVm]);}else{if(typeof(TVl[TVm])=='object')alert("Type mismatch ("+TVm+"). Scalar in place of array.");TVl[TVm]=TVk[TVm];}}}function TVC(TVn,TVW){var TVm=this.TVA.messages[TVn][TVW],TVo=2,TVp;if(!TVm)return false;if(typeof(TVm)=='function')TVm=TVm(this.TV8);for(;TVo<arguments.length;TVo++)for(TVp in arguments[TVo])TVm=TVm.replace('%'+TVp+'%',arguments[TVo][TVp]);TVm=TVm.replace('%form%',this.TV8);return TVm}function TVN(TVq){return(document.all?document.all[TVq]:(document.getElementById?document.getElementById(TVq):null));}

var pop1;


function OpenPopupWindow() {
 pop1 = window.open('dev/wait.php','popup1','width=700,height=550,scrollbars,resizable');
}

function ReloadStep(parentformid) {
	
	
	if (document.form1.mode.value!='step') {
		document.form1.target = "";
		document.form1.mode.value='step';
		document.form1.steplayoutid.value=parentformid;		
		document.form1.submit();
		
		document.form1.mode.value='';
		document.form1.steplayoutid.value='';
	};
}


function ReloadZoneStep(zone,parentformid,OptParam) {
	
if (document.form1.mode.value!='stepzone') {

		document.form1.target = "COMM";
		document.form1.mode.value='stepzone';
		document.form1.params.value=OptParam;
		document.form1.steplayoutid.value=parentformid;		
		document.form1.zone.value=zone;
		
		document.form1.submit();
		
		document.form1.target = "";
		document.form1.mode.value='';
		document.form1.params.value='';
		document.form1.steplayoutid.value='';
		document.form1.zone.value='';
	};
}

function writeToLayer(id, sHTML) {
  //if (!page_loaded) return;

  var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;

  if (!el) {
  		  return;
  }

  var cntnt =urlDecode(sHTML);

  if (typeof el.innerHTML!="undefined") {
      el.innerHTML = cntnt;
  } else if (document.layers) {
			el.document.write(cntnt);
			el.document.close();
  }
}


function urlDecode(str){
    str=str.replace(new RegExp('\\+','g'),' ');
    return unescape(str);
}

function urlEncode(str){
    str=escape(str);
    str=str.replace(new RegExp('\\+','g'),'%2B');
    return str.replace(new RegExp('%20','g'),'+');
}


var END_OF_INPUT = -1;

var base64Chars = new Array(
    'A','B','C','D','E','F','G','H',
    'I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X',
    'Y','Z','a','b','c','d','e','f',
    'g','h','i','j','k','l','m','n',
    'o','p','q','r','s','t','u','v',
    'w','x','y','z','0','1','2','3',
    '4','5','6','7','8','9','+','/'
);


var reverseBase64Chars = new Array();
for (var i=0; i < base64Chars.length; i++){
    reverseBase64Chars[base64Chars[i]] = i;
}

var base64Str;


var base64Count;
function setBase64Str(str){
    base64Str = str;
    base64Count = 0;
}


function readBase64(){    
    if (!base64Str) return END_OF_INPUT;
    if (base64Count >= base64Str.length) return END_OF_INPUT;
    var c = base64Str.charCodeAt(base64Count) & 0xff;
    base64Count++;
    return c;
}


function encodeBase64(str) {
    setBase64Str(str);
    var result = '';
    var inBuffer = new Array(3);
    var lineCount = 0;
    var done = false;
    while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
        inBuffer[1] = readBase64();
        inBuffer[2] = readBase64();
        result += (base64Chars[ inBuffer[0] >> 2 ]);
        if (inBuffer[1] != END_OF_INPUT){
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
            if (inBuffer[2] != END_OF_INPUT){
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                result += (base64Chars [inBuffer[2] & 0x3F]);
            } else {
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                result += ('=');
                done = true;
            }
        } else {
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
            result += ('=');
            result += ('=');
            done = true;
        }
        lineCount += 4;
        if (lineCount >= 76){
            result += ('\n');
            lineCount = 0;
        }
    }
    return result;
}


function readReverseBase64() {   
    if (!base64Str) return END_OF_INPUT;
    while (true){      
        if (base64Count >= base64Str.length) return END_OF_INPUT;
        var nextCharacter = base64Str.charAt(base64Count);
        base64Count++;
        if (reverseBase64Chars[nextCharacter]){
            return reverseBase64Chars[nextCharacter];
        }
        if (nextCharacter == 'A') return 0;
    }
    return END_OF_INPUT;
}


function ntos(n) {
    n=n.toString(16);
    if (n.length == 1) n="0"+n;
    n="%"+n;
    return unescape(n);
}


function decodeBase64(str){
    setBase64Str(str);
    var result = "";
    var inBuffer = new Array(4);
    var done = false;
    while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
        && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
        inBuffer[2] = readReverseBase64();
        inBuffer[3] = readReverseBase64();
        result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
        if (inBuffer[2] != END_OF_INPUT){
            result +=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
            if (inBuffer[3] != END_OF_INPUT){
                result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
            } else {
                done = true;
            }
        } else {
            done = true;
        }
    }
    return result;
}


var digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
function toHex(n){
    var result = ''
    var start = true;
    for (var i=32; i>0;){
        i-=4;
        var digit = (n>>i) & 0xf;
        if (!start || digit != 0){
            start = false;
            result += digitArray[digit];
        }
    }
    return (result==''?'0':result);
}


function pad(str, len, pad){
    var result = str;
    for (var i=str.length; i<len; i++){
        result = pad + result;
    }
    return result;
}


function encodeHex(str){
    var result = "";
    for (var i=0; i<str.length; i++){
        result += pad(toHex(str.charCodeAt(i)&0xff),2,'0');
    }
    return result;
}


function decodeHex(str){
    str = str.replace(new RegExp("s/[^0-9a-zA-Z]//g"));
    var result = "";
    var nextchar = "";
    for (var i=0; i<str.length; i++){
        nextchar += str.charAt(i);
        if (nextchar.length == 2){
            result += ntos(eval('0x'+nextchar));
            nextchar = "";
        }
    }
    return result;
    
}

