function findPos(obj) {
     var curleft = curtop = 0;
     if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
         while (obj = obj.offsetParent) {
               curleft += obj.offsetLeft
               curtop += obj.offsetTop
         }
     }
     return [curleft,curtop];
}

function EnableChars(e,chars_str) {
    chars_arr = chars_str.split(',');
    for (var i=0; i<chars_arr.length; i++) {
        var charCode = chars_arr[i];
        var keynum;
        if(window.event) // MSIE
        {
            keynum = e.keyCode
        }
        else if(e.which) // Firefox
        {
            keynum = e.which
        }
        if (keynum == charCode) {
            e.returnValue = true;
            return true;
        }
    }
    e.returnValue = false;
    return false;
}

function DisableChars(e,chars_str) {
    chars_arr = chars_str.split(',');
    for (var i=0; i<chars_arr.length; i++) {
        var charCode = chars_arr[i];
        var keynum;
        if(window.event) // MSIE
        {
            keynum = e.keyCode
        }
        else if(e.which) // Firefox
        {
            keynum = e.which
        }
        if (keynum == charCode) {
           e.returnValue = false;
           return false;
        }
    }
    e.returnValue = true;
    return true;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function SetEditDiv(rowid,dbtable,url){
         var row = document.getElementById(dbtable+"_row"+rowid);
         var myDiv = document.getElementById("ActionDiv_"+dbtable);
         var myDivFrame = document.getElementById("ActionDivFrame_"+dbtable);

         var RowPos = findPos(row);

         var x = RowPos[0]+1;
         var y = RowPos[1];
         myDiv.style.width = row.offsetWidth;
         myDiv.style.top = y+row.offsetHeight;
         myDiv.style.left = x;

         myDivFrame.src = url;
         myDiv.style.display = "block";

}

function changeColor(tdName, className) {
     document.getElementById(tdName).className=className;
}

function PasswordStrength(passwd)
{
		var intScore   = 0
		var strVerdict = "חלשה מאוד"
		var	objLabel_Password = document.getElementById("lblPass");		

		if (passwd.length<5)
		{
			intScore = (intScore+3)
		}
		else if (passwd.length>4 && passwd.length<8)
		{
			intScore = (intScore+6)
		}
		else if (passwd.length>7 && passwd.length<16)
		{
			intScore = (intScore+12)
		}
		else if (passwd.length>15)  
		{
			intScore = (intScore+18)
		}
		
		
		if (passwd.match(/[a-z]/))
		{
			intScore = (intScore+1)
		}

		if (passwd.match(/[א-ת]/))
		{
			intScore = (intScore+1)
		}


		if (passwd.match(/[A-Z]/))
		{
			intScore = (intScore+5)
		}
		

		if (passwd.match(/\d+/))
		{
			intScore = (intScore+5)
		}
		
		if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/))
		{
			intScore = (intScore+5)
		}
		
		
		if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))
		{
			intScore = (intScore+5)
		}
		

		if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
		{
			intScore = (intScore+5)
		}
	
		

		if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))
		{
			intScore = (intScore+2)
		}

		if (passwd.match(/(\d.*\D)|(\D.*\d)/))                
		{
			intScore = (intScore+2)
		}
 

		if (passwd.match(/([a-zA-Z0-9א-ת].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9א-ת])/))
		{
			intScore = (intScore+2)
		}
	
	
		if(intScore < 12)
		{
		   strVerdict = "חלשה מאוד";
		   changeColor("td_P1", "PasswordWhite");
		   changeColor("td_P2", "PasswordWhite");
		   changeColor("td_P3", "PasswordWhite");
		   changeColor("td_P4", "PasswordWhite");		   
		}
		else if (intScore > 11 && intScore < 21)
		{
		   strVerdict = "חלשה";
		   changeColor("td_P1", "PasswordRed");
		   changeColor("td_P2", "PasswordWhite");
		   changeColor("td_P3", "PasswordWhite");
		   changeColor("td_P4", "PasswordWhite");		   
		}
		else if (intScore > 20 && intScore < 31)
		{
		   strVerdict = "בינונית";
		   changeColor("td_P1", "PasswordOrange");
		   changeColor("td_P2", "PasswordOrange");
		   changeColor("td_P3", "PasswordWhite");
		   changeColor("td_P4", "PasswordWhite");		   
		}
		else if (intScore > 30 && intScore < 41)
		{
		   strVerdict = "חזקה";
		   changeColor("td_P1", "PasswordGreen");
		   changeColor("td_P2", "PasswordGreen");
		   changeColor("td_P3", "PasswordGreen");
		   changeColor("td_P4", "PasswordWhite");		   
		}
		else
		{
		   strVerdict = "חזקה מאוד";
		   changeColor("td_P1", "PasswordDarkGreen");
		   changeColor("td_P2", "PasswordDarkGreen");
		   changeColor("td_P3", "PasswordDarkGreen");
		   changeColor("td_P4", "PasswordDarkGreen");		   
		}
	
	objLabel_Password.innerHTML= (strVerdict);

}

function URLDecode(encoded)
{
   var HEXCHARS = "0123456789ABCDEFabcdef";
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
}