﻿var blackList = "^[$€@()!?#.`~%-*=+_,;:\r\n 0-9A-Za-zא-ת]+$";

function CheckBlackListText(text)
{
    
    var flag=true;
    var blackListArr=blackList.split(',');
    for(var i=0;i<blackListArr.length&&flag==true;i++)
    {
        
        if(text.indexOf(blackListArr[i])!=-1)
        {
            flag=false;
        }
    }
    return flag;
}

function ValidateIsraelID(source, arguments)
{
    var idnum = arguments.Value;
    
    var idNumVal = parseInt(idnum, 10);
      
    // if ok, check the id by the algorithm.
    while(idnum.length < 9){idnum= "0" + idnum;}
    
      var idnum1                    = idnum.substr(0,1)*1;
      var idnum2                    = idnum.substr(1,1)*2;
      var idnum3                    = idnum.substr(2,1)*1;
      var idnum4                    = idnum.substr(3,1)*2;
      var idnum5                    = idnum.substr(4,1)*1;
      var idnum6                    = idnum.substr(5,1)*2;
      var idnum7                    = idnum.substr(6,1)*1;
      var idnum8                    = idnum.substr(7,1)*2;
      var idnum9                    = idnum.substr(8,1)*1;

      if (idnum1>9) idnum1    = (idnum1%10) + 1;
      if (idnum2>9) idnum2    = (idnum2%10) + 1;
      if (idnum3>9) idnum3    = (idnum3%10) + 1;
      if (idnum4>9) idnum4    = (idnum4%10) + 1;
      if (idnum5>9) idnum5    = (idnum5%10) + 1;
      if (idnum6>9) idnum6    = (idnum6%10) + 1;
      if (idnum7>9) idnum7    = (idnum7%10) + 1;
      if (idnum8>9) idnum8    = (idnum8%10) + 1;
      if (idnum9>9) idnum9    = (idnum9%10) + 1;

      var sumval                    = idnum1+idnum2+idnum3+idnum4+idnum5+idnum6+idnum7+idnum8+idnum9;
      sumval                              = sumval%10;

      //if(sumval>0)                  return false;
      //else                          return true;
      
      arguments.IsValid = (idnum.length == 9 && idNumVal != 0 && sumval == 0) && arguments.Value.trim()!="";
}


String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };


// extract elements from string
function ExtractTargetObjects(source, attribute)
{
    var tmp = source.id.split("_");
    tmp.pop();
    var clientPrefix = tmp.join("_") + "_";
    tmp = source.getAttribute(attribute).split("|");
    var retArr = new Array();
    for (i=0; i<tmp.length; i++)
    {
        var e = document.getElementById(clientPrefix + tmp[i]);
        if (e == null) continue;
        retArr.push(e);
    }
    return retArr;
}




function ValidateORAction(source, arguments)
{
    var objects = ExtractTargetObjects(source, "ObjectsToValidate");
    for (i=0; i<objects.length; i++)
    {
        if (objects[i].value.trim() != "")
        {
            arguments.IsValid = true;
            return;
        }
    }
    arguments.IsValid = false;
}



function ValidateORActionPrivelege(source, arguments)
{
    var objects = ExtractTargetObjects(source, "ObjectsToValidate");
    if (objects.length < 2)
    {
        arguments.IsValid = false;
        return;
    }
    
    var primaryEmpty = (objects[0].value.trim() == "");
    objects.reverse();
    objects.pop();
    objects.reverse();
    
    var secondaryNotEmptyCount = 0;
    
    for (i=0; i<objects.length; i++)
    {
        if (objects[i].value.trim() != "")
            secondaryNotEmptyCount++;
    }
    var secondaryEmpty = (secondaryNotEmptyCount != objects.length);        
    
    if ((primaryEmpty && !secondaryEmpty) ||
        (!primaryEmpty && secondaryEmpty) ||
        (!primaryEmpty && !secondaryEmpty))
        arguments.IsValid = true;
    else
        arguments.IsValid = false;
}




function CheckPhoneIsValid(source, arguments)
{
    var objects = ExtractTargetObjects(source, "ObjectsToValidate");
    if (objects.length < 2) return;
    var prefix = objects[0].value;
    var number = objects[1].value;
    
    if (prefix.trim() == "" && number.trim() != "")
        arguments.IsValid = false;
    else
        arguments.IsValid = true;    
}


function IsNumber(value)
{
    var tmp = new String(value);
    for (i=0; i<tmp.length; i++)
        if (isNaN(tmp.charAt(i)))
            return false;
    return true;
}

function CheckIsEmpty(value)
{
    return (value.trim() != "");
}





function CheckMaxLength(source, arguments)
{
    //arguments.IsValid = (arguments.Value.length == 0) || (arguments.Value.length <= parseInt(source.getAttribute("MaxLength")));
    arguments.IsValid = (arguments.Value.length <= parseInt(source.getAttribute("MaxLength")));
}





/*
function MaxLengthExtIE(e)
{
    if (e != null)
    {
        var maxLen = e.getAttribute("maxlength");
        if (maxLen != null)
        {
            return !(e.value.length > (maxLen-1));
        }
    }    
    return false;
}

function MaxLengthExtOPIE(e)
{
    if (e != null)
    {
        var maxLen = e.getAttribute("maxlength");
        if (maxLen != null)
        {
            var data = window.clipboardData.getData("text");
            if (MaxLengthExtIE(e))
            {
                var wanted = data.substr(0, (maxLen - e.value.length));
                var s = document.selection.createRange();
                if (s != null)
                {
                    s.text = wanted;
                }
            } 
        }
        return false;
    }
    return false;    
}



function MaxLengthExtMozilla(e, __e)
{
    if (e != null)
    {
        var maxLen = e.getAttribute("maxlength");
        if (maxLen != null)
        {
            return !(e.value.length > (maxLen-2)) || IsCharacter(__e);
        }
    }    
    return false;
}
function MaxLengthExtOPMozilla(e, __e)
{
        // 1. get the clipboard service
        var clipboard = Components.classes["component://netscape/widget/clipboard"].getService();
        if ( clipboard ) clipboard = clipboard.QueryInterface(Components.interfaces.nsIClipboard);

        // 2. create the transferable
        var trans = Components.classes["component://netscape/widget/transferable"].createInstance();
        if ( trans )
          trans = trans.QueryInterface(Components.interfaces.nsITransferable);

        if ( trans && clipboard ) {

          // 3. register the data flavors you want, highest fidelity first!
          trans.addDataFlavor("text/html");
          trans.addDataFlavor("text/unicode");

          // 4. get transferable from clipboard
          clipboard.getData ( trans );

          // 5. ask transferable for the best flavor. Need to create new JS
          //    objects for the out params.
          var dataObj = new Object();
          var bestFlavor = new Object();
          var len = new Object();
          trans.getAnyTransferData ( bestFlavor, dataObj, len );
          if ( bestFlavor.value == "text/html" ||
                bestFlavor.value == "text/unicode" ) {
            if ( dataObj )
              dataObj = dataObj.value.QueryInterface(Components.interfaces.nsISupportsWString);
            if ( dataObj ) {
              // ...do something with the data. remember len is in bytes, not chars
              //var id = dataObj.data.substring(0, len.value / 2);
              ;
            }
          }
        }

alert("dvd");


    if (e != null)
    {
        var maxLen = e.getAttribute("maxlength");
        if (maxLen != null)
        {
       
            var data = window.clipboardData.getData("text");
            if (MaxLengthExtMozilla(e, __e))
            {
                 alert(data);
                var wanted = data.substr(0, (maxLen - e.value.length));
                var s = document.selection.createRange();
                if (s != null)
                {
                    s.text = wanted;
                }
            } 
        }
        return false;
    }
    return false;    
}


function IsCharacter(__e)
{
    return (__e.keyCode > 32 && __e.keyCode < 127) || __e.keyCode == 8;
}

function IsIE()
{
    return window.navigator.userAgent.toUpperCase().indexOf("MSIE") > 0;
}

function MaxLengthExt(e, __e)
{
    if (IsIE())
    {
        return MaxLengthExtIE(e);    
    }
    else
    {
        return MaxLengthExtMozilla(e, __e);
    }
}
function MaxLengthExtOP(e, __e)
{
    if (IsIE())
    {
        return MaxLengthExtOPIE(e);
    }
    else
    {
        return MaxLengthExtOPMozilla(e, __e);
    }

    /*
    if (e != null)
    {
        var maxLen = e.getAttribute("maxlength");
        if (maxLen != null)
        {
            var data = window.clipboardData.getData("text");
            if (MaxLengthExt(e, __e))
            {
                var wanted = data.substr(0, (maxLen - e.value.length));
                var s = document.selection.createRange();
                if (s != null)
                {
                    s.text = wanted;
                }
            } 
        }
        return false;
    }
    return false;
    *-/
}
*/
function ValidateClientBlackList(source,arg)
{
    var flag=true;
    var text=arg.Value;
    var blackListArr=blackList.split(',');
    for(var i=0;i<blackListArr.length&&flag==true;i++)
    {
        
        if(text.indexOf(blackListArr[i])!=-1)
        {
            flag=false;
        }
    }
    
    arg.IsValid=(flag && text.length>1);
}

