var STR_PB_BAE_HEADER = "STSA";

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_BULSTAT_EGN_BOTH		= "/[0-9]{9}([0-9]{4}|[0-9]{1}){0,1}/";
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]{1,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_10	= "/[0-9]{10}/";
var STR_LIMIT_11	= "/[0-9]{11}/";
var STR_LIMIT_7	= "/[0-9]{7}/";
var STR_LIMIT_16	= "/[0-9]{1,16}/";
var STR_LIMIT_25	= "/.{1,25}/";
var STR_LIMIT_30	= "/.{1,30}/";
var STR_LIMIT_35	= "/.{1,35}/";
var STR_LIMIT_CYR_35	= "/[^a-zA-Z]{1,35}/";
var STR_LIMIT_40	= "/.{1,40}/";
var STR_LIMIT_32	= "/.{1,32}/";
var STR_LIMIT_60	= "/.{1,60}/";
var STR_LIMIT_15	= "/[0-9]{1,15}/";
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_105_OPTIONAL	= "/.{0,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_CYR_105 =  "/[^a-zA-Z]{1,105}/";
var STR_LIMIT_CYR_105_OPTIONAL =  "/[^a-zA-Z]{0,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 = "/.+/";
var STR_LIMIT_NUMBER_OPTIONAL = "/[0-9]{0,12}/";
var STR_LIMIT_AMOUNT_OPTIONAL= "/[0-9]{1,9}[.|,]{0,1}[0-9]{0,2}|.{0}/";

var STR_LIMIT_IBAN = "/BG{1}[0-9]{2}[A-Z0-9]{18}/";
var STR_LIMIT_BIC = "/[A-Z]{6}[A-Z0-9]{2}/";
var STR_LIMIT_SWIFTN = "/[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3}){0,1}|.{0}/";//old swift davahme i malki bukwi

var STR_LIMIT_SWIFT_FCCY = "/^[A-Z0-9]{1,11}$/";
var STR_LIMIT_SWIFT_LATIN_35 = "/^[A-Za-z0-9\/?:\(\)-.,\'\+ ]{1,35}$/";
var STR_LIMIT_VALUE_DATE_F_CCY = "/SPT|TDY|TOM/";

var STR_LIMIT_128	= "/.{1,128}/";
var STR_LIMIT_4 = "/([1-9]{1}[0-9]{3})|([0-9]{1}[1-9]{1}[0-9]{2})|([0-9]{2}[1-9]{1}[0-9]{1})|([0-9]{3}[1-9]{1})/";

var STR_LIMIT_HOUR = "/[0-9]{2}[:][0-9]{2}/";
var STR_LIMIT_BNB_NUMBER = "/[0-9]{10}|.{0}/";
var STR_LIMIT_EMAIL = "/.{1,}[@]{1}.{1,}[.]{1}[a-zA-Z]{2,4}|.{0}/";
var STR_LIMIT_EMAIL_MANDATORY = "/.{1,}[@]{1}.{1,}[.]{1}[a-zA-Z]{2,4}/";
var STR_LIMIT_SPECIAL ="/[^a-zA-Z<>\+_\|\{\}\(\)~!@\$%\^&\*\[\\]]{1,35}/";
var STR_LIMIT_SPECIAL_105 ="/[^a-zA-Z<>\+_\|\{\}\(\)~!@\$%\^&\*\[\\]]{1,105}/";
var STR_LIMIT_LATIN_LETTERS_35 = "/[a-zA-Z\" ()-\\/,.]{1,35}/";
var STR_LIMIT_PHONE = "/[0-9 +]{1,35}/";
var STR_LIMIT_PHONE_OPTIONAL = "/[0-9 +]{0,35}/";
var STR_LIMIT_BNB_NUMBER_OBLIGATORY = "/[0-9]{10}/";

var STR_LIMIT_NOT_EMPTY_512 = "/.{1,512}|.{0}/"
var STR_LIMIT_NOT_EMPTY_1024 = "/.{1,1024}|.{0}/"
var STR_LIMIT_NOT_EMPTY_256 = "/.{1,256}|.{0}/"
var STR_LIMIT_NOT_EMPTY = "/..*/";


var STR_LIMIT_16_20	= "/[0-9]{13,20}/";
var STR_LIMIT_LATIN_60	= "/[a-zA-Z0-9 ]{1,60}/";
var STR_LIMIT_CVV2 = "/[0-9]{3}/";

var STR_LIMIT_NUMBER2 = "/[0-9]{1,2}/";
var STR_LIMIT_YEAR1 = "/[1-7]{1}/";
/***************************************************************
*	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			
			
			str=TrimString(str);		
					
			if (str!="") 
			{
				testBisera = Convert2BISERASymbols(str);
				
				if(testBisera.charAt(0)=="-")
					testBisera="?"+testBisera.substring(1);
								
				if(str!=testBisera)
				{					
					eval("tmp = document.forms[0]."+strobj[i]);				
					tmp.value = testBisera;
					tmp.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
}
/***************************************************************
*	CheckIBAN()		
*	Description:	Function for validating BG IBANs
*	Author:			Anelia Brezoeva, Vladi kaza kak da smqtam modul-a
*	Company:		DAIS - Software
*	Date:			12.4.2006
*	Example:		BG33AAAA12311012345678
****************************************************************/
function CheckIBAN(sIBAN)
{
	if (sIBAN.length==0) return true;
	
	if (sIBAN.length!=22) return false;
	
	var arrLettersToNumbers = new Array();	
	arrLettersToNumbers[65] = 10;
	arrLettersToNumbers[66] = 11;
	arrLettersToNumbers[67] = 12;
	arrLettersToNumbers[68] = 13;
	arrLettersToNumbers[69] = 14;
	arrLettersToNumbers[70] = 15;
	arrLettersToNumbers[71] = 16;
	arrLettersToNumbers[72] = 17;
	arrLettersToNumbers[73] = 18;
	arrLettersToNumbers[74] = 19;
	arrLettersToNumbers[75] = 20;
	arrLettersToNumbers[76] = 21;
	arrLettersToNumbers[77] = 22;
	arrLettersToNumbers[78] = 23;
	arrLettersToNumbers[79] = 24;
	arrLettersToNumbers[80] = 25;
	arrLettersToNumbers[81] = 26;
	arrLettersToNumbers[82] = 27;
	arrLettersToNumbers[83] = 28;
	arrLettersToNumbers[84] = 29;
	arrLettersToNumbers[85] = 30;
	arrLettersToNumbers[86] = 31;
	arrLettersToNumbers[87] = 32;
	arrLettersToNumbers[88] = 33;
	arrLettersToNumbers[89] = 34;
	arrLettersToNumbers[90] = 35;
	
	//първите 4 знака се преместват на края
	modifiedIBAN = sIBAN.substring(4,sIBAN.length)+ sIBAN.substring(0,4);
	
	transformedIBAN="";
	//буквите се заменят с числа v transformedIBAN
	for (var k=0; k<sIBAN.length; k++)
	{
		var c = modifiedIBAN.charAt(k);
		if(c>='A' && c<='Z') 
		{
			//letter
			transformedIBAN += arrLettersToNumbers[modifiedIBAN.charCodeAt(k)];
		}
		else if(c>='0' && c<='9')
		{
			//number
			transformedIBAN += c;
		}
		else
			return false;			
	}
		
	strbase = transformedIBAN.substring(0,transformedIBAN.length-2)	+ "00";
	
	//ostatyk za base (bez controlno chislo)
	
	k=DAISModule(strbase,97);
	
	var ctrlNumber = new Number(sIBAN.substring(2,4))
	
	if((98 - k)!=ctrlNumber)
		return false;//controlno chislo ne sywpada s izchislenoto
	
	//ostatyk za IBAN
	k = DAISModule(transformedIBAN,97)
		
	if(k!=1)
		return false;//newalidno kontrolno chislo

	return true;
}

function DAISModule(strBigNumber,SmallNumber)
{
	k=0;
	for (var i=0; i<strBigNumber.length; i++)
	{		
		k=(10*k + new Number(strBigNumber.charAt(i))) % SmallNumber;		
	
	}
	return k;
}

function dateCompare(d1,d2)
	{
		if (d1>d2)
		return false;
		else
		return true;
	}
	
	function string2date(sDate)
	{
	var dDate;
	
	var dtCh= ".";
	var pos1=sDate.indexOf(dtCh);
	var pos2=sDate.indexOf(dtCh,pos1+1);
	var strDay=sDate.substring(0,pos1);
	var strMonth=sDate.substring(pos1+1,pos2);
	var strYear=sDate.substring(pos2+1);
	
	dDate = new Date(strYear,strMonth-1,strDay);
		
	return dDate;
	}


