//--------------------------------------------------->
//------Browser Type -------------------------------->
var inlink = 0;
var moz1_5,ns4,ns6,ns7,ie4,ie5,ie5_5,ie,iex,ns,win,ie6,aol,opera,icab,omniWeb,linux,Mac,safari,da_text;
var nUser=navigator.userAgent.toLowerCase();
var bname = navigator.appName.toLowerCase();
var ver = navigator.appVersion;
var int_ver = parseInt(ver);
if (nUser.indexOf('linux')!=-1){linux = true;}
if (nUser.indexOf('konqueror')!=-1){linux = true;}
if (nUser.indexOf('omniWeb')!=-1){omniWeb = true;}
if (nUser.indexOf('opera')!=-1){opera = true;}
if (nUser.indexOf('icab')!=-1){icab = true;}
if (nUser.indexOf('aol')!=-1){aol = true;}
if (nUser.indexOf('mac')!=-1){Mac = true;}
if (nUser.indexOf('Safari/') >0) safari =1;
if (bname.indexOf("netscape") >= 0 && int_ver == 4) ns4 = true;/*netscape 4 +*/
if (nUser.indexOf("gecko/") != -1 && (nUser.indexOf("netscape/6")!=-1 || nUser.indexOf("netscape6/")!=-1)){ns6 = true;}/*netscape 6*/
if (nUser.indexOf("gecko/") != -1 && nUser.indexOf("netscape/7")!=-1){ns7 = true;}/*netscape 7*/
if (nUser.indexOf("gecko/200") != -1 && int_ver == 5 && (nUser.indexOf("netscape/6")==-1 && nUser.indexOf("netscape/7")==-1)){moz1_5 = true;}/*mozilla 1.5 7*/
if (nUser.indexOf('compatible; msie 5.22; mac_powerpc')>0){iex=true}
if (nUser.indexOf('msie 4') >0){ie4 = 1;}/*internet explorer 4*/
if (nUser.indexOf('msie 5') >0){ie5 = 1;}/*internet explorer 5*/
if (nUser.indexOf('msie 5.5') >0){ie5_5 = 1;}/*internet explorer 5*/
if (nUser.indexOf('msie 6') >0){ie6 = 1;}/*internet explorer 6*/
var win = ((nUser.indexOf("win")!=-1) || (nUser.indexOf("32bit")!=-1));
var ie  = (nUser.indexOf("msie") != -1);
function linkpopUp(bgc,da_header,da_content,third)
{
	var CE = event.srcElement;
	inlink = 1;
	da_text = '<table cellspacing=0 cellpadding=1 border=0 width=200><tr><td bgcolor="'+bgc+'">';
	da_text += '<table width=100% cellspacing=0 cellpadding=2 border=0 bgcolor=#DDDDDD><tr><td align="justify"><font class="bodysmall">';
	da_text += da_content+third;
	da_text += '</font></td></tr></table></td></tr></table>';
	
	/*alert("this is the head:\n"+da_header+ "this is the content: \n"+da_content+ " this is the third :\n" +third+ "this is the fourth:\n"+fourth);*/
	
	/*if (ns4) {
	        document.layers['linkDiv'].visibility = "visible";
	        document.layers['linkDiv'].document.open();
	        document.layers['linkDiv'].document.writeln(da_text);
	        document.layers['linkDiv'].document.close();
	} else */
	if(!IsEmpty(third))
	{
		if (ie6||ie5||ns6||ns7)
		{
				linkDiv.style.visibility = "visible";
				linkDiv.innerHTML = da_text;
		}
		CE.style.cursor = "hand";
	}
}
function linkpopDown()
{
	inlink = 0;
	/*if (document.layers) {
			document.layers['linkDiv'].visibility = "hidden";
			document.layers['linkDiv'].document.open();
			document.layers['linkDiv'].document.writeln("");
			document.layers['linkDiv'].document.close();
	} else*/ 
	if(ie6||ie5||ns6||ns7)
	{
			linkDiv.style.visibility = "hidden";
			//popupDiv.innerHTML = "";
	}
}
function daMouseCapture(e)
{ 
		/*if (document.layers) { alert();*/
		/*alert();*/
		if((ie6||ie5||ns6||ns7) && (inlink != 0))
		{
			linkDiv.style.left = window.event.clientX + document.body.scrollLeft  - 10//+ 5; 
			linkDiv.style.top = window.event.clientY + document.body.scrollTop - 48;
		}
		/*if(ns4){document.layers['linkDiv'].left = e.pageX -60; document.layers['linkDiv'].top = e.pageY - 53;}*/
}

//--------------------------------------------------->
//--------------------------------------------------->
//----------------------------------------->
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Copyright (C) Paul Johnston 1999 - 2000.
 * Updated by Greg Holt 2000 - 2001.
 * See http://pajhome.org.uk/site/legal.html for details.
 */
var hex_chr = "0123456789abcdef";
function MD5(str)
{
  x = str2blks_MD5(str);
  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;
 
  for(i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;

    a = ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    d = ff(d, a, b, c, x[i+ 1], 12, -389564586);
    c = ff(c, d, a, b, x[i+ 2], 17,  606105819);
    b = ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    a = ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    d = ff(d, a, b, c, x[i+ 5], 12,  1200080426);
    c = ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    b = ff(b, c, d, a, x[i+ 7], 22, -45705983);
    a = ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
    d = ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    c = ff(c, d, a, b, x[i+10], 17, -42063);
    b = ff(b, c, d, a, x[i+11], 22, -1990404162);
    a = ff(a, b, c, d, x[i+12], 7 ,  1804603682);
    d = ff(d, a, b, c, x[i+13], 12, -40341101);
    c = ff(c, d, a, b, x[i+14], 17, -1502002290);
    b = ff(b, c, d, a, x[i+15], 22,  1236535329);    

    a = gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    c = gg(c, d, a, b, x[i+11], 14,  643717713);
    b = gg(b, c, d, a, x[i+ 0], 20, -373897302);
    a = gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    d = gg(d, a, b, c, x[i+10], 9 ,  38016083);
    c = gg(c, d, a, b, x[i+15], 14, -660478335);
    b = gg(b, c, d, a, x[i+ 4], 20, -405537848);
    a = gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
    d = gg(d, a, b, c, x[i+14], 9 , -1019803690);
    c = gg(c, d, a, b, x[i+ 3], 14, -187363961);
    b = gg(b, c, d, a, x[i+ 8], 20,  1163531501);
    a = gg(a, b, c, d, x[i+13], 5 , -1444681467);
    d = gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    c = gg(c, d, a, b, x[i+ 7], 14,  1735328473);
    b = gg(b, c, d, a, x[i+12], 20, -1926607734);
    
    a = hh(a, b, c, d, x[i+ 5], 4 , -378558);
    d = hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    c = hh(c, d, a, b, x[i+11], 16,  1839030562);
    b = hh(b, c, d, a, x[i+14], 23, -35309556);
    a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    d = hh(d, a, b, c, x[i+ 4], 11,  1272893353);
    c = hh(c, d, a, b, x[i+ 7], 16, -155497632);
    b = hh(b, c, d, a, x[i+10], 23, -1094730640);
    a = hh(a, b, c, d, x[i+13], 4 ,  681279174);
    d = hh(d, a, b, c, x[i+ 0], 11, -358537222);
    c = hh(c, d, a, b, x[i+ 3], 16, -722521979);
    b = hh(b, c, d, a, x[i+ 6], 23,  76029189);
    a = hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    d = hh(d, a, b, c, x[i+12], 11, -421815835);
    c = hh(c, d, a, b, x[i+15], 16,  530742520);
    b = hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    d = ii(d, a, b, c, x[i+ 7], 10,  1126891415);
    c = ii(c, d, a, b, x[i+14], 15, -1416354905);
    b = ii(b, c, d, a, x[i+ 5], 21, -57434055);
    a = ii(a, b, c, d, x[i+12], 6 ,  1700485571);
    d = ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    c = ii(c, d, a, b, x[i+10], 15, -1051523);
    b = ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    a = ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
    d = ii(d, a, b, c, x[i+15], 10, -30611744);
    c = ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    b = ii(b, c, d, a, x[i+13], 21,  1309151649);
    a = ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    d = ii(d, a, b, c, x[i+11], 10, -1120210379);
    c = ii(c, d, a, b, x[i+ 2], 15,  718787259);
    b = ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = add(a, olda);
    b = add(b, oldb);
    c = add(c, oldc);
    d = add(d, oldd);
  }
  return rhex(a) + rhex(b) + rhex(c) + rhex(d);
}
function LoginSystem()
{
	var Name = document.getElementById("txtUserName").value;
	var Pass = document.getElementById("txtPassword").value;
	var HPass = document.getElementById("hidPass");
	if(IsUNameAndPass(Name) && IsUNameAndPass(Pass))
	{
		frmLogin.action = "start.php";
		HPass.value = MD5(Pass)
		frmLogin.submit();
	}
	else
		alert("Not Valid")
}

/*
 * Convert a string to a sequence of 16-word blocks, stored as an array.
 * Append padding bits and the length, as described in the MD5 standard.
 */
function str2blks_MD5(str)
{
  nblk = ((str.length + 8) >> 6) + 1;
  blks = new Array(nblk * 16);
  for(i = 0; i < nblk * 16; i++) blks[i] = 0;
  for(i = 0; i < str.length; i++)
    blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);
  blks[i >> 2] |= 0x80 << ((i % 4) * 8);
  blks[nblk * 16 - 2] = str.length * 8;
  return blks;
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally 
 * to work around bugs in some JS interpreters.
 */
function add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * These functions implement the basic operation for each round of the
 * algorithm.
 */
function cmn(q, a, b, x, s, t)
{
  return add(rol(add(add(a, q), add(x, t)), s), b);
}
function ff(a, b, c, d, x, s, t)
{
  return cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function gg(a, b, c, d, x, s, t)
{
  return cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function hh(a, b, c, d, x, s, t)
{
  return cmn(b ^ c ^ d, a, b, x, s, t);
}
function ii(a, b, c, d, x, s, t)
{
  return cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
 * Convert a 32-bit number to a hex string with ls-byte first
 */
 

function rhex(num)
{
  str = "";
  for(j = 0; j <= 3; j++)
    str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) +
           hex_chr.charAt((num >> (j * 8)) & 0x0F);
  return str;
}

/*
 * Bitwise rotate a 32-bit number to the left
 */
function rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}
//----------------------------------------->
//--------------------------------------------------->
function BtnOver()
{
	var Obj = event.srcElement;
	Obj.style.cursor = 'hand';
}

function IsEmpty(Text)
{
	var i;
	for(i = 0; i < Text.length; i++)
		if(Text.charCodeAt(i) != 32)
			return false;
	return true;
}

function SetResolution()
{
	var Table = document.getElementById("tblContaner");
	var CWidth = screen.width;
	if(CWidth == 1024)
		Table.height = "450";
}
function IsDigit(Number)
{
	var Reg = /^[0-9]{1,}$/
	return Reg.test(Number)
}

function IsEmail(Str)
{
	var Reg = /^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/
	return Reg.test(Str)
}

function IsUNameAndPass(Str)
{
	var Reg = /^[a-zA-z_0-9]{5,15}$/
	return Reg.test(Str)
}
function IsEnglishStr(Str)
{
	var Reg = /^[a-zA-z_0-9 ]{1,}$/
	return Reg.test(Str)
}
function IsDate(Str)
{
	//83/01/05
	var my_regex = /^((\d{2}))\/((0*\d)|(1[0-2]))\/((0*\d)|(1[0-9])|(2[0-9])|(3[0-1]))$/
		return my_regex.test(Str)
	/*else
	{
		var my_regex = /^((\d{4})|(\d{2}))\-((0*\d)|(1[0-2]))\-((0*\d)|(1[0-9])|(2[0-9])|(3[0-1]))$/
		return my_regex.test(Str)
	}*/
}
//----------------------------------------->
//----------------------------------------->
//--- Calender Component	--------------->
function CheckDate(Status)
{
	var CE = event.srcElement;
	CE.dir = "ltr";
	var Temp = CE.value;
	var Str = "";
	if(Temp.indexOf("/"))
	{
		Str = Temp.split("/");
		Str = Str.join("");
		Temp = Str;
	}
	var ND = ValidDate(Temp);
	if(ND)
		CE.value = ND;
	else
	{
		CE.value = "";
		if(Status == "FORCE")
			CE.focus();
	}
		
}

function ValidDate(Temp)
{
	var i, Code;
	for(i = 0; i < Temp.length; i++)
	{
		Code = Temp.charCodeAt(i);
		if(Code < 48 || Code > 57)
			return null;
	}

	if(Temp.length < 8 || Temp.length > 8)
		return null;
	var Year = Temp.substr(0, 4);
	if(parseInt(Year) < 1200 || parseInt(Year) > 2000)
		return null;
	var Month = Temp.substr(4, 2);
	if(parseInt(Month) < 1 || parseInt(Month) > 12)
		return null;
	var Day = Temp.substr(6, 2);
	if(parseInt(Day) < 1 || parseInt(Day) > 31)
		return null;
	return Year + "/" + Month +"/" + Day;
}
function SetDate(Obj)
{
	var DateObject = document.getElementById(Obj)
	Str = DateObject.value
	var Str = Str.split("/");
	DateObject.value = Str.join("");
}

//----------------------------------------->
//----------------------------------------->
//----------------------------------------->
//--- Form Validation function	----------->
function Element(NewName, NewType, NewForce, NewFarsiName)
{
	this.Name = NewName;
	this.Type = NewType;
	this.Force = NewForce;
	this.FarsiName = NewFarsiName;
}
function FormValid()
{
	var i, j
	var Element
	var Temp = "";
	for(i = 0; i < ValidArray.length; i++)
	{
		if(ValidArray[i].Type != "CHECKBOX" && ValidArray[i].Type != "TABLE")
			Element = document.getElementById(ValidArray[i].Name);//ValidArray[i].Name;
		if(ValidArray[i].Force == 1)
		{
			if(ValidArray[i].Type != "CHECKBOX" && ValidArray[i].Type != "TABLE" && ValidArray[i].Type != "LISTBOX")
				if(IsEmpty(Element.value))
				{
					Temp = EMPTY_1 + ValidArray[i].FarsiName + EMPTY_2
					alert(Temp)
					Element.focus();
					Element.value = "";
					return false
				}
			switch(ValidArray[i].Type)
			{
				case "USERNAME_PASSWORD":
					if(!IsUNameAndPass(Element.value))
					{
						Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
						Element.focus();
						alert(Temp)
						return false;
					}
					break;
				case "STRING":
					Temp = Element.value
					Temp = Temp.toLowerCase();
					if(Temp.indexOf('script') >= 0)
					{
						Element.value = "";
						Element.focus();
						return false;
					}
					break;
				case "URL":
					break;
				case "LISTBOX":
					var lstObject = ValidArray[i].Name;
					var CE = document.getElementById(lstObject)
					if(CE.selectedIndex == -1)
					{
						Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
						alert(Temp)
						Element.focus();
						return false
					}
					break;
				case "DATE":
					if(!IsDate(Element.value))
					{
						Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
						alert(Temp)
						Element.focus();
						return false
					}
					break;
				case "DIGIT":
					if(!IsDigit(Element.value))
					{
						Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
						alert(Temp)
						Element.focus();
						return false
					}
					break;
				case "EMAIL":
					if(!IsEmail(Element.value))
					{
						Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
						alert(Temp)
						Element.focus();
						return false
					}
					break;
				case "ENGLISH_STRING":
					if(!IsEnglishStr(Element.value))
					{
						Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
						alert(Temp)
						Element.focus();
						return false
					}
					break;
				case "CHECKBOX":
					var NewArray = ValidArray[i].Name;
					for(j = 0; j < NewArray.length; j++)
					{
						var E = "chk" + NewArray[j]
						var CE = document.getElementById(E)
						if(CE.checked)
							return true
					}
					Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
					alert(Temp)
					return false
					break;
				case "TABLE":
					var NewArray = ValidArray[i].Name;
					NewArray = NewArray.split(":")
					var MyTableBody = document.getElementById(NewArray[0]).firstChild;
					if(MyTableBody.rows.length < parseInt(NewArray[1]) + 1)
					{
						Temp = EMPTY_1 + ValidArray[i].FarsiName + EMPTY_2
						alert(Temp)
						return false
					}
					break;
			}
		}
		else
		{
			if(!IsEmpty(Element.value))
			{
				switch(ValidArray[i].Type)
				{
					case "USERNAME_PASSWORD":
						if(!IsUNameAndPass(Element.value))
						{
							Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
							Element.focus();
							alert(Temp)
							return false;
						}
						break;
					case "STRING":
						Temp = Element.value
						if(Temp.indexOf('script') >= 0)
						{
							Element.value = "";
							Element.focus();
							return false;
						}
						break;
					case "URL":
						break;
					case "DATE":
						if(!IsDate(Element.value))
						{
							Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
							alert(Temp)
							Element.focus();
							return false
						}
						break;
					case "DIGIT":
						if(!IsDigit(Element.value))
						{
							Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
							alert(Temp)
							Element.focus();
							return false
						}
						break;
					case "EMAIL":
						if(!IsEmail(Element.value))
						{
							Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
							alert(Temp)
							Element.focus();
							return false
						}
						break;
				case "ENGLISH_STRING":
					if(!IsEnglishStr(Element.value))
					{
						Temp = VALID_1 + ValidArray[i].FarsiName + VALID_2
						alert(Temp)
						Element.focus();
						return false
					}
					break;
				}
			}
		}
	}
	return true
}
//----------------------------------------->
//----------------------------------------->
//----------------------------------------->
//----	Toplinks Functions	--------------->
	function TopLinks(Action)
	{
		var FormName = document.getElementsByTagName("form")[0];
		
		switch(Action)
		{
			case "NEWS":
				FormName.action = "newslist.php";
				break;
				
			case "operators":
				FormName.action = "operatorslist.php";
				break;
				
			case "RIGHT_LINKS":
				FormName.action = "rightlink.php";
				break;

			case "HOME":
				FormName.action = "index.php";
				break;

			case "CHANGE_PASS":
				FormName.action = "changepass.php";
				break;

			case "SUBJECT_MANAGE":
				FormName.action = "newsubject.php";
				break;

			case "LOGOUT":
				FormName.action = "logout.php";
				break;

			case "PAPERS":
				FormName.action = "paperlist.php";
				break;

			case "REPORTS":
				FormName.action = "reportlist.php";
				break;

			case "EMAIL":
				FormName.action = "email.php";
				break;
			case "SITE":
				FormName.action = "sitelist.php";
				break;
		}
		FormName.submit();
	}
