var STR_PB_BAE_HEADER = "9207";

var STR_LIMIT_AMOUNT	= "/[0-9]{1,11}[.|,]{0,1}[0-9]{0,2}/";
var STR_LIMIT_PLMTS	= "/[0-9]{1,11}[.|,]{0,1}[0-9]{0,2}/";
var STR_LIMIT_AMOUNT_NOTIF = "/[*]{1}|[0-9]{1,11}[.|,]{0,1}[0-9]{0,2}/";

var STR_LIMIT_BAE		= "/[0-9]{8}/";
var STR_LIMIT_PERSONID	= "/[0-9]{9}/";
var STR_LIMIT_FINCENTER	= "/.{1,7}/";
var STR_LIMIT_BIN		= "/[0-9]{10}|[?]{10}|[ ]|/";
var STR_LIMIT_ACCOUNT	= "/[0-9]{10}/";

var STR_LIMIT_ACCOUNT_F_CCY		= "/.{1,33}/";
var STR_LIMIT_PAYEE_NAME_F_CCY	= "/.{1,65}/";
var STR_LIMIT_CMN_NAME_F_CCY	= "/.{0,65}/";
var STR_LIMIT_PMT_CODE_F_CCY	= "/.{1,13}/";
var STR_LIMIT_CORR_BANK_F_CCY	= "/.{0,27}/";
var STR_LIMIT_DESCRIPTION_F_CCY = "/.{0,65}/";


var STR_LIMIT_MFNUMBER		= "/[0-9]{8}/";
var STR_LIMIT_BRBANKCODE	= "/.{0,10}/";
var STR_LIMIT_DT_KT_NAME	= "/.{1,26}/";
var STR_LIMIT_BENEF	= "/.{1,26}/";
var STR_LIMIT_EGN			= "/[0-9]{10}/";
var STR_LIMIT_BULSTAT		= "/[0-9]{13}|[0-9]{9}/";
var STR_LIMIT_TAXNUMBER		= "/[0-9]{10}/";
var STR_LIMIT_DATE			= "/[0-9]{2}[.]{1}[0-9]{2}[.]{1}[0-9]{4}/";
var STR_LIMIT_TEMPLATE_NAME = "/.{1,64}/";
var STR_LIMIT_DESCRIPTIONS	= "/.{1,126}/";

var STR_LIMIT_NUMBER_STANDART = "/[0-9]{1,10}/";
var STR_LIMIT_DOCUMENT_TYPE	= "/[1-9]{1}/";
var STR_LIMIT_PARAGRAPH	= "/[0-9]{6}/";
var STR_LIMIT_BIN_PAYEE	= "/[0-9]{10}|[?]{10}/";
var STR_LIMIT_DOCUMENT_NUMBER	= "/.{0,33}/";
var STR_LIMIT_SHNAME	= "/.{1,32}/";

var STR_EXPDAYS	= "/[0-9]{1,2}/";

var STR_LIMIT_16	= "/[0-9]{1,16}/";
var STR_LIMIT_35	= "/.{1,35}/";
var STR_LIMIT_32	= "/.{1,32}/";
var STR_LIMIT_60	= "/.{1,60}/";
var STR_LIMIT_17	= "/[0-9]{1,17}/";
var STR_LIMIT_20	= "/.{1,20}/";
var STR_LIMIT_35_OPTIONAL	= "/.{0,35}/";
var STR_LIMIT_105	= "/.{1,105}/";
var STR_LIMIT_LATIN_35	= "/^[a-zA-Z0-9\"][a-zA-Z0-9\" ()-\\/,.]{1,35}/";
var STR_LIMIT_LATIN_105 = "/^[a-zA-Z0-9\"][a-zA-Z0-9\" ()-\\/,.]{1,105}/";
var STR_LIMIT_LATIN_140 = "/^[a-zA-Z0-9\"][a-zA-Z0-9\" ()-\\/,.]{1,105}/";
var STR_LIMIT_LATIN_140_OPTIONAL = "/[a-zA-Z0-9\" ()-\\/,.]{0,140}/";
var STR_LIMIT_LATIN_35_OPTIONAL	= "/[a-zA-Z0-9\" ()-\\/,.]{0,35}/";
var STR_LIMIT_CUSTOMERID = "/.{1,18}/";
var STR_LIMIT_CVV2 = "/[0-9]{3}|[*]{0}/";
var STR_LIMIT_ATLEAST_ONE = "/.+/";
/***************************************************************
*	CheckEGN()
*	Description:	Function for validating EGN.
*	Author:			Vasil Bachvarov
*	Company:		DAIS - Software, Electronics and Trade, Ltd.
*	Date:			08.10.2003
*	Example:		8103204285
****************************************************************/
function CheckEGN(sEGN)
{
	if (sEGN.length!=10) return false;
	
	var arrWeightVector = new Array(2,4,8,5,10,9,7,3,6);
	var sum = 0;
	
	for (var k=0; k<9; k++) { 
		sum += new Number(sEGN.charAt(k).valueOf()) * arrWeightVector[k]; 
	}
	
	sum = (sum % 11) % 10;
	
	if ((new String(sum))!=sEGN.charAt(9)) return false;
	
	var nDay = new Number(sEGN.substring(4, 6));
	var nMonth = new Number(sEGN.substring(2, 4));
	var nYear = new Number(sEGN.substring(0, 2));
	
	if (31<nDay) return false;
	
	if (!((nMonth>=1 && nMonth<=12) || (nMonth>=21 && nMonth<=32) || (nMonth>=41 && nMonth<=52))) return false
	
	return true;
}

function CheckSWIFT(sSWIFT)
{
	if (sSWIFT.length!=8 && sSWIFT.length!=11 ) return false;
	
	for (var k=0; k<6; k++)
	{
		var c = sSWIFT.charAt(k);
		
		if((c>='A' && c<='Z') || (c>='a' && c<='z')) 
			{
							
			}
		else
		{
			return false;
		}
	}

	
	return true;
}

/***************************************************************
*	CheckTaxNumber()
*	Description:	Function for validating tax number.
*	Author:			Vasil Bachvarov
*	Company:		DAIS - Software, Electronics and Trade, Ltd.
*	Date:			08.10.2003
*	Example:		1212121220
****************************************************************/
function CheckTaxNumber(sTaxNumber)
{
	if (sTaxNumber.length!=10) return false;

	var arrWeightVector = new Array(4,3,2,7,6,5,4,3,2);
	var sum = 0;
	
	for (var k=0; k<9; k++)
	{
		sum += new Number(sTaxNumber.charAt(k).valueOf()) * arrWeightVector[k];
	}
	
	sum = (11-sum%11)%10;
	
	if (1==sum) return false;
	
	return ((new String(sum))==sTaxNumber.charAt(9));
}

/***************************************************************
*	CheckBULSTAT_9()
*	Description:	Function for validating BULSTAT 9.
*	Author:			Vasil Bachvarov
*	Company:		DAIS - Software, Electronics and Trade, Ltd.
*	Date:			08.10.2003
*	Example:		121212114
****************************************************************/
function CheckBULSTAT_9(sBULSTAT)
{
	if (sBULSTAT.length!=9) return false;

	var arrWeightVector = new Array(1,2,3,4,5,6,7,8);
	var arrWeightVector1 = new Array(3,4,5,6,7,8,9,10);
	var sum = 0;
	
	for (var k=0; k<8; k++)
	{
		sum += new Number(sBULSTAT.charAt(k).valueOf()) * arrWeightVector[k];
	}
	
	sum = sum%11;
	
	if (10==sum)
	{
		sum = 0;
		for (var k=0; k<8; k++)
		{
			sum += new Number(sBULSTAT.charAt(k).valueOf()) * arrWeightVector1[k];
		}
		
		sum = (sum%11)%10;
	}
	
	return ((new String(sum))==sBULSTAT.charAt(8));
}

/***************************************************************
*	CheckBULSTAT_13()
*	Description:	Function for validating BULSTAT 9.
*	Author:			Vasil Bachvarov
*	Company:		DAIS - Software, Electronics and Trade, Ltd.
*	Date:			08.10.2003
*	Example:		1212121140008
****************************************************************/
function CheckBULSTAT_13(sBULSTAT)
{
	if (sBULSTAT.length!=13) return false;
	
	if (!CheckBULSTAT_9(sBULSTAT.substring(0, 9))) return false;

	var arrWeightVector = new Array(2,7,3,5);
	var arrWeightVector1 = new Array(4,9,5,7);
	var sum = 0;
	
	for (var k=8; k<12; k++)
	{
		sum += new Number(sBULSTAT.charAt(k).valueOf()) * arrWeightVector[k-8];
	}
	
	sum = sum%11;
	
	if (10==sum)
	{
		sum = 0;
		for (var k=8; k<12; k++)
		{
			sum += new Number(sBULSTAT.charAt(k).valueOf()) * arrWeightVector1[k-8];
		}
		
		sum = (sum%11)%10;
	}
	
	return ((new String(sum))==sBULSTAT.charAt(12));
}

function CheckBULSTAT(sBULSTAT)
{
	if (CheckBULSTAT_9(sBULSTAT)) return true;
	if (CheckBULSTAT_13(sBULSTAT)) return true;
	return false;
}

/***************************************************************
*	CheckAccountNumber()
*	Description:	Function for validating account number and BIN.
*	Author:			Vasil Bachvarov
*	Company:		DAIS - Software, Electronics and Trade, Ltd.
*	Date:			24.10.2003
*	Example:		1234567890
****************************************************************/
function CheckAccountNumber(strAccNo)
{
	
	if (strAccNo.length!=10) return false;
	
	var arrWeightVector = new Array(2,4,8,5,10,9,7,3,6);
	var sum = 0;
	
	for (var k=0; k<9; k++) { 
		sum += new Number(strAccNo.charAt(k).valueOf()) * arrWeightVector[k]; 
	}
	
	sum = (sum % 11) % 10;
	
	if ((new String(sum))!=strAccNo.charAt(9)) return false;
	
	return true;
}

function CheckBIN(strBIN)
{
	if (""==strBIN) return true;
	if ("0000000000"==strBIN) return true;
	return CheckAccountNumber(strBIN);
}

function Convert2BISERASymbols(str2)
{
	var str = str2.toUpperCase();
	var l = str.length;
	var res = "";
	
	
	for (var k=0; k<l; k++)
	{
		var c = str.charAt(k);
		var c2 = str2.charAt(k);
		if(" "==c || "!"==c || '"'==c || "%"==c || "&"==c || "'"==c || "("==c || ")"==c ||
			"*"==c || "+"==c || ","==c || "-"==c || "."==c || "/"==c || ":"==c || ";"==c ||
			"<"==c || "="==c || ">"==c || "?"==c || (c>='0' && c<='9') || (c>='A' && c<='Z') || (c>='А' && c<='Я')) 
			{
				res += c2;				
			}
		else
		{
			res += "?";
		}
	}
	return res;
}

function checkForBisera(strobj)
{

	var cnt = strobj.length;
	var testBisera="";

	for (var i=0; i<cnt; i++)
		{
			var str=eval("document.forms[0]."+strobj[i]+".value");//value to check
			
			if (str!="")
			{
				testBisera = Convert2BISERASymbols(str);
								
				if(str!=testBisera)
				{
					eval("document.forms[0]."+strobj[i]+".value='"+testBisera+"';");
					eval("document.forms[0]."+strobj[i]+".focus();");
					alert(STR_BISERA_CHECK);
					return true;
				}
			}		
		}	
	return false;
	
}


function checkemail( str){

var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(str))
	{
		return true	
	}
	
	return false
}
