﻿    
    var strAllowedChars = "@.-_ '\"";
    var strAllowedCharsForDate = "/.-"; 
    var strAlef = "א";
    var strTaf = "ת";
    var strALower = "a";
    var strAUpper = "A";
    var strZLower = "z";
    var strZUpper = "Z";
    var strZero = "0";
    var strNine = "9";
    var intAlef = strAlef.charCodeAt(0);
    var intTaf = strTaf.charCodeAt(0);
    var intALower = strALower.charCodeAt(0);
    var intAUpper = strAUpper.charCodeAt(0);
    var intZLower = strZLower.charCodeAt(0);
    var intZUpper = strZUpper.charCodeAt(0);    
    var intZero = strZero.charCodeAt(0);
    var intNine = strNine.charCodeAt(0);      

    
    function IsDigit(charCode)
    {
        //allow delete
        if (charCode==8)
            return true;
            
        return charCode>=intZero && charCode<= intNine;
    }
    
    function IsLetter(charCode)
    {
        //allow delete
        if (charCode==8)
            return true;
                
        return (charCode>=intAlef && charCode<= intTaf) ||
                (charCode>=intALower && charCode<= intZLower) ||
                (charCode>=intAUpper && charCode<= intZUpper)
    }
    
    function IsAllowedDateSpecialChar(charChar)
    {                
        return strAllowedCharsForDate.indexOf(charChar)!=-1;
    }
    
    function IsAllowedSpecialChar(charChar)
    {
        return strAllowedChars.indexOf(charChar)!=-1;
    }
        
    
    function IsDigitKey(evt)
    {
        var charCode = (evt.which) ? evt.which : event.keyCode
        
        return IsDigit(charCode);
    }
    
    function IsDateKey(evt)
    {
        
        var charCode = (evt.which) ? evt.which : event.keyCode
        
        //allow delete
        if (charCode==8)
            return true;
                    
        var keychar = String.fromCharCode(charCode);
        
        return IsDigit(charCode) || IsAllowedDateSpecialChar(keychar);
        
    }    

    function IsTextKey(evt)
    {
        var charCode = (evt.which) ? evt.which : event.keyCode
        
        //allow delete
        if (charCode==8)
            return true;
                    
        var keychar = String.fromCharCode(charCode);
        
        return IsDigit(charCode) || IsLetter(charCode) || IsAllowedSpecialChar(keychar);
    }        
        
    function FixNumericField(obj)
    {
        var str = obj.value;
        var strNew = "";
        for(var i=0;i<str.length;i++)
            if (IsDigit(str.charCodeAt(i)))
                strNew+=str.charAt(i);
        
        obj.value = strNew;
    }
    
    function FixDateField(obj)
    {
        var str = obj.value;
        var strNew = "";
        for(var i=0;i<str.length;i++)
            if (IsDigit(str.charCodeAt(i)) || IsAllowedDateSpecialChar(str.charAt(i)))
                strNew+=str.charAt(i);
        
        obj.value = strNew;
    }    
    
    function FixTextField(obj)
    {
        var str = obj.value;
        var strNew = "";
        for(var i=0;i<str.length;i++)
            if (IsDigit(str.charCodeAt(i)) || IsLetter(str.charCodeAt(i)) || IsAllowedSpecialChar(str.charAt(i)))
                strNew+=str.charAt(i);
        
        obj.value = strNew;
    }        
    
    function ValidateDateField(str)
    {
        if(str=="" || str==null)
            return true;
            
        var re = new RegExp("^(0[1-9]|[12][0-9]|3[01])([-/.])(0[1-9]|1[012])\\2(19|20)\\d\\d$","gi");
        return str.match(re)!=null;
    }
        
    function ValidateEmailField(str)
    {
        if(str=="" || str==null)
            return true;
            
        var re = new RegExp("^.*@.*\\..*$","gi");
        return str.match(re)!=null;
    }
            
    function ValidateIDField(str)
    {

        var R_ELEGAL_INPUT = -1;
        var R_NOT_VALID = -2;
        var R_VALID = 1; 

       // Just in case -> convert to string
       var IDnum = String(str);

       // Validate correct input
       if ((IDnum.length > 9) || (IDnum.length < 5))
          return false; 
       if (isNaN(IDnum))
          return false;

       // The number is too short - add leading 0000
       if (IDnum.length < 9)
       {
          while(IDnum.length < 9)
          {
             IDnum = '0' + IDnum;         
          }
       }

       // CHECK THE ID NUMBER
       var mone = 0, incNum;
       for (var i=0; i < 9; i++)
       {
          incNum = Number(IDnum.charAt(i));
          incNum *= (i%2)+1;
          if (incNum > 9)
             incNum -= 9;
          mone += incNum;
       }
       if (mone%10 == 0)
          return true;
       else
          return false;

    
    }    
        
    
    function ValidateFileExtension(strFile,strAllowedExtensions)
    {                
        if (strFile==null) strFile = "";        
        if (strFile.indexOf(".")==-1)
        {
            return false;
        }
        else
        {
            var arr = strFile.split(".");
            var strExtension = arr[arr.length-1].toLowerCase();
            strExtension = ";" + strExtension + ";";
            strAllowedExtensions = ";" + strAllowedExtensions + ";";
            if (strAllowedExtensions.indexOf(strExtension)==-1)
                return false;
            else
                return true;    
        }
        
    }
        
    function ValidateSkills(strCheckboxPrefix, strDropdownPrefix, strMessage, strLabelId)
    {
        var arrAllInputs = document.getElementsByTagName('INPUT');
        for (var i=0;i<arrAllInputs.length;i++)
        {
            if (arrAllInputs[i].id.indexOf(strCheckboxPrefix)==0)
            {                var chkSkill = arrAllInputs[i];
                if (chkSkill.checked)
                {
                    var strSkillID = chkSkill.value;
                    var ddlSkill = document.getElementById(strDropdownPrefix + strSkillID);
                    if (ddlSkill.value=="")
                    {
                        var strSkillName = GetNextSibling(chkSkill.parentNode).innerHTML;
                        strMessage = strMessage.replace("{0}",strSkillName);
                        DisplayValidationError(ddlSkill,strMessage,strLabelId);
                        return false;
                    }       
                }        
                    
            }
        }
        
        return true;
      
    }
        
    function ValidateComparingDates(strStartDate, strEndDate)
    {
        if (strEndDate=="" || strStartDate=="")
            return true;
            
        var dtmStart = ConvertToDate(strStartDate);
        var dtmEnd = ConvertToDate(strEndDate);
        
        return dtmEnd > dtmStart;
            
    }
    
    function ValidateLanguages(strRadioButtonNamePrefix, strMessage, strLabelId)
    {
                   
        var arrAllInputs = document.getElementsByTagName('INPUT');
        var arrLanguagesRadioButtons = new Array();
        
        for (var i=0;i<arrAllInputs.length;i++)
        {
            if (arrAllInputs[i].id.indexOf(strRadioButtonNamePrefix)==0)
            {
                var strRadioButtonName = arrAllInputs[i].name;
                if (!ArrayContains(arrLanguagesRadioButtons,strRadioButtonName))
                    arrLanguagesRadioButtons.push(strRadioButtonName);                      
            }
        }
        
        for (var i=0;i<arrLanguagesRadioButtons.length;i++)
        {
                
             //checking if one of the radio buttons of language is checked:
             strRadioButtonName = arrLanguagesRadioButtons[i];
            var arrRadioButtons = document.getElementsByName(strRadioButtonName);
            
            var trLanguageRow = arrRadioButtons[0].parentNode.parentNode;
            if (trLanguageRow.style.display=="none")
                continue;
                
            var blnChecked = false;
            for (var j=0;j<arrRadioButtons.length;j++)
            {
                if (arrRadioButtons[j].checked)
                {
                    blnChecked = true;
                    break;
                }
            }
                        
            if (!blnChecked)
            {
                var strLanguageName = trLanguageRow.firstChild.firstChild.innerHTML;
                strMessage = strMessage.replace("{0}",strLanguageName);
                DisplayValidationError(arrRadioButtons[0],strMessage,strLabelId);
                return false;

            }                
        }
        return true;
      
    }
            
    function GetRadioButtonValue(strParentId)
    {
        var objContainer = document.getElementById(strParentId);
        if (objContainer==null)
            return "";
            
        if (objContainer!=null)
        {
            var arrRadioButtons = objContainer.getElementsByTagName("input");
            for(var i=0;i<arrRadioButtons.length;i++)
                if (arrRadioButtons[i].checked)
                    return arrRadioButtons[i].value;                                
        }
        
        return "";
        
    }
    
    
    function DisplayValidationError(objInput,strMessage,strLabelId,blnScrollIntView)
    {
    
        //setting focus to field:
        SetFocusToObject(objInput)
        
        //putting the error in label:
        if (strLabelId!=null && strLabelId!="")
        {
            try
            {
                document.getElementById(strLabelId).innerHTML = strMessage;
            }
            catch (err)
            {
            }
        }
        
        //displaying the message
        alert(strMessage);
            
        //setting focus again because the alert:
        SetFocusToObject(objInput)
        
    }
    
    
function SetFocusToObject(obj)
{
    //displaying the item in case it is hidden:
    try
    {
        var elem = obj;
        while (elem!=null)
        {
            if (elem.style!=null)
                if (elem.style.display=="none")
                    elem.style.display = "";
            elem = elem.parentNode;
        }    
    }
    catch(err) {}
    
    //scroll into view (in case we cant focus)
    try
    {
        obj.scrollIntoView(true);
    }
    catch (err) {}
    
    //focus:
    try
    {
        obj.focus();
    }
    catch (err) {}
                     
}

function AddStarForRequired(strLabelId)
{       
    try
    {
        var objLabel = document.getElementById(strLabelId);
        if (objLabel==null)
            return;
        var objStarSpan = GetNextSibling(objLabel);
        var blnNeedToCreate = false;
        if (objStarSpan==null)
            blnNeedToCreate = true;
        else if (objStarSpan.className.toLowerCase()!="starforrequired")
            blnNeedToCreate = true;
        
        if (blnNeedToCreate)
        {
            var objSpan = document.createElement("SPAN");
            objSpan.innerHTML = "*";
            objSpan.className = "starforrequired";
            objLabel.parentNode.insertBefore(objSpan,GetNextSibling(objLabel));
        }    
        else //showing if needed:
        {
            objStarSpan.style.visibility="visible";
        }
    }
    catch (err)
    {}
}

function RemoveStarForRequired(strLabelId)
{       
    try
    {
        var objLabel = document.getElementById(strLabelId);
        if (objLabel==null)
            return;
        var objStarSpan = GetNextSibling(objLabel);    
        if (objStarSpan==null)
            return;
        if (objStarSpan.className.toLowerCase()=="starforrequired")
            objStarSpan.style.visibility="hidden";
            //RemoveElement(objStarSpan);   
    }
    catch (err) {}
}

function dropdown_UpdateTextDiv(objSelect,strText)
{    
    //getting the div object:    
    var objDiv = dropdown_GetTextDiv(objSelect);
    objDiv.style.display = "";
    //updating text:
    objDiv.innerHTML = strText;       
}

function dropdown_HideTextDiv(objSelect)
{    
    var objDiv = dropdown_GetTextDiv(objSelect);
    objDiv.innerHTML = "";
    objDiv.style.display = "none";
}    
