
var gen_debug=false;

function ClickApplyButton()
{
    var elems = document.getElementsByTagName("INPUT");
    
    for(var i=0;i<elems.length;i++)
        if ( elems[i].name.indexOf("_AppBtn") > 0 )
            {
                elems[i].click();
            }
}

function ShowMessageID(wp,msgid,caption)
{
    var dv = document.getElementById("dv_" + wp)
    dv.style.display = "block";

    if (caption != null) {
        eval("document.getElementById(\"dv_" + wp + "\").innerText = \"יש לבחור " + caption + "\"");
    }
    else {
        eval("document.getElementById(\"dv_" + wp + "\").innerText = " + msgid);
    }
    
}

function ShowClearMessage(wp,msg)
{
    var dv = document.getElementById("dv_" + wp)
    dv.style.display = "block";
    dv.innerText = msg;
}

function SendForm(wp)
{
    var elems = document.getElementsByTagName("INPUT");
    var xml = "<FormsGenerator";
    var includeFile = false;
    
    //check required fields
    for(var i=0;i<elems.length;i++)
    {
        if ( elems[i].id.indexOf("tb_" + wp + "_") == 0 )
        {
            var elem = elems[i];
            
            if ( elem.getAttribute("Required") != null )
            {
                if ( !validateNotEmpty( elem.value ) )
                {
                    ShowMessageID(wp,'FIELD_REQUIRED');
                    elem.focus();
                    return false;
                }
             }
        }
        else if( elems[i].id.indexOf("ff_" + wp) >= 0 )
        {
            includeFile = true;
            xml += " IncludeFile=\"True\"";
            var elem = elems[i];
                        if ( elem.getAttribute("Required") != null )
                xml += " FileRequired=\"True\"";
            else
                xml += " FileRequired=\"False\"";
        }
        else if (elems[i].id.indexOf("rb_" + wp) >= 0 && elems[i].type == "hidden" ) {

            var elem = elems[i];
            var caption = elem.getAttribute("Caption");
            
            //radio button's header
            if (elem.getAttribute("Required") != null) {

                //get radio button elements
                var radio = document.getElementsByName(elem.id);

                var isChecked = false;

                //loop on all items
                for (var j = 0; j < radio.length; j++) {
                    if (radio[j].checked) {
                        isChecked = true;
                        break;
                    }
                }

                if (!isChecked) {
                    ShowMessageID(wp, 'FIELD_REQUIRED', caption);
                    return false;
                }
            }
        }
    }
    
    if ( includeFile == false )
        xml += " IncludeFile=\"False\" FileRequired=\"False\" IsNGN=\"{0}\" IsADSL=\"{1}\" SubID=\"{2}\" CheckedPhone=\"{3}\"";

    xml += ">";

    //check for select inputs
    elems = document.getElementsByTagName("SELECT");
    //check required fields
    for(var i=0;i<elems.length;i++)
    {
        if ( elems[i].id.indexOf("re_" + wp + "_") == 0 )
        {
            var elem = elems[i];
            
            if ( elem.getAttribute("Required") != null )
            {
                if ( !validateNotEmpty( elem.value ) )
                {
                    ShowMessageID(wp,'FIELD_REQUIRED');
                    elem.focus();
                    return false;
                }
             }
        }
    }

    elems = document.getElementsByTagName("TEXTAREA");

    //check required fields
    for(var i=0;i<elems.length;i++)
    {
        if ( elems[i].id.indexOf("ta_" + wp + "_") == 0 )
        {
            var elem = elems[i];
            
            if ( elem.getAttribute("Required") != null )
            {
                if ( !validateNotEmpty( elem.value ) )
                {
                    ShowMessageID(wp,'FIELD_REQUIRED');
                    elem.focus();
                    return false;
                }
            }
        }
    }

    //debugger;

    //check all inputs
    elems = document.getElementsByTagName("INPUT");
    
    //check validation
    for(var i=0;i<elems.length;i++)
    {
        if ( elems[i].id.indexOf("tb_" + wp + "_") == 0)
        {
            var elem = elems[i];
            
            if ( trimAll(elem.value) != "" )
            {
                if ( elem.getAttribute("TelephoneField") != null || elem.getAttribute("TelephoneValidationField") != null)
                {
                    var fullNumber;
                    
                    if ( !validatePhone( elem.value ) )
                    {
                        ShowMessageID(wp,'INVALID_TELEPHONE');
                        elem.focus();
                        return false;
                    }
                    
                    fullNumber = elem.value;

                    var cbelem = elem.nextSibling; //get cb
                    
                    fullNumber = cbelem.value + fullNumber;

                    if ( !validateNotEmpty( cbelem.value ) )
                    {
                        ShowMessageID(wp,'INVALID_TELEPHONE_PREFIX');
                        cbelem.focus();
                        return false;
                    }
                    
                    if ( elem.getAttribute("TelephoneValidationField") != null ) {

                        var phoneOwnerIDElem = getPhoneOwnerIDElement(wp);
                        var phoneOwnerIDVal = null;

                        if (phoneOwnerIDElem != null) {

                            if (!validateNotEmpty(phoneOwnerIDElem.value)) {
                                ShowMessageID(wp, 'INVALID_OWNERID');
                                phoneOwnerIDElem.focus();
                                return false;
                            }

                            if (!validateOwnerID(phoneOwnerIDElem.value)) {
                                ShowMessageID(wp, 'INVALID_OWNERID');
                                phoneOwnerIDElem.focus();
                                return false;
                            }

                            phoneOwnerIDVal = phoneOwnerIDElem.value;
                        }

                        var jsonData = GetCSMJSon(fullNumber, phoneOwnerIDVal);
                        var oResultData;

                        try
                        {
                            oResultData = eval('(' + jsonData + ')');
                        }
                        catch(e) {
                            var msg = "חלה שגיאה בנסיון בדיקת הקו - אנא נסה מאוחר יותר";

                            if (gen_debug)
                                msg = e.Message + "\nJSON:" + jsonData;

                            ShowClearMessage(wp, msg);
                            return false;
                        }

                        if (oResultData.AisCsmError == true) {
                            ShowClearMessage(wp, oResultData.AuserMessage);
                            elem.focus();
                            return false;
                        }
                        else {
                            if (oResultData.AisValidationError == true) {
                                ShowClearMessage(wp, oResultData.AuserMessage);
                                elem.focus();
                                return false;
                            }
                            else {
                                //replace attributes

                                var reg = /\{0\}/g;
                                xml = xml.replace(reg, oResultData.AisNGN);

                                reg = /\{1\}/g;
                                xml = xml.replace(reg, oResultData.AisADSL);

                                reg = /\{2\}/g;
                                xml = xml.replace(reg, oResultData.AsubID);

                                reg = /\{3\}/g;
                                xml = xml.replace(reg, oResultData.AphoneNumber);
                            }
                        }
                    }

                    xml += "\r\n<Field TelephoneField=\"True\" InternalName=\"" + elem.id + "\">" + cbelem.value + "-" + elem.value + "</Field>";
                }
                else if ( elem.getAttribute("CellularField") != null)
                {
                    if ( !validatePhone( elem.value ) )
                    {
                        ShowMessageID(wp,'INVALID_CELLULAR');
                        elem.focus();
                        return false;
                    }

                    var cbelem = elem.nextSibling; //get cb
                    
                    if ( !validateNotEmpty( cbelem.value ) )
                    {
                        ShowMessageID(wp,'INVALID_CELLULAR_PREFIX');
                        cbelem.focus();
                        return false;
                    }

                    xml += "\r\n<Field CellularField=\"True\" InternalName=\"" + elem.id + "\">" + cbelem.value + "-" + elem.value + "</Field>";
                }
                else if ( elem.getAttribute("EmailField") != null )
                {
                    if ( !validateEmail( elem.value ) )
                    {
                        ShowMessageID(wp,'INVALID_EMAIL');
                        elem.focus();
                        return false;
                    }

                    xml += "\r\n<Field InternalName=\"" + elem.id + "\">" + elem.value + "</Field>";
                }
                else
                {
                    //in case other text box
                    if ( elem.value.length < 2 )
                    {
                        ShowMessageID(wp,'INVALID_FIELD');
                        elem.focus();
                        return false;
                    }

                    xml += "\r\n<Field InternalName=\"" + elem.id + "\">" + elem.value + "</Field>";
                }
            }
        }
        else if ( elems[i].id.indexOf("ch_" + wp + "_") == 0 )// check box
        {
            var elem = elems[i];
            
            if ( elem.checked )
                xml += "\r\n<Field InternalName=\"" + elem.id + "\">True</Field>"
            else
                xml += "\r\n<Field InternalName=\"" + elem.id + "\">False</Field>"
        }
        else if (elems[i].id.indexOf("rb_" + wp) >= 0 && elems[i].type == "hidden" )
        {
            var elem = elems[i];

            //get radio button elements
            var radio = document.getElementsByName(elem.id);

            var radio_val = '';

            //loop on all items
            for (var j = 0; j < radio.length; j++) {
                if (radio[j].checked) {
                    radio_val = radio[j].value;
                    break;
                }
            }

            if (radio_val != '')
                xml += "\r\n<Field InternalName=\"" + elem.id + "\">" + radio_val + "</Field>"

        }
    }

    //check for select inputs
    elems = document.getElementsByTagName("SELECT");

    for(var i=0;i<elems.length;i++)
    {
        if ( elems[i].id.indexOf("se_" + wp + "_") == 0 )
        {
            var elem = elems[i];
            xml += "\r\n<Field InternalName=\"" + elem.id + "\">" + elem.value + "</Field>";
        }
        else if ( elems[i].id.indexOf("re_" + wp + "_") == 0 ) //recipient
        {
            var elem = elems[i];
            xml += "\r\n<Field InternalName=\"" + elem.id + "\" IsRecipient=\"True\">" + elem.value + "</Field>";
        }
    }


    //check for text area
    elems = document.getElementsByTagName("TEXTAREA");

    for(var i=0;i<elems.length;i++)
    {
        if ( elems[i].id.indexOf("ta_" + wp + "_") == 0 )
        {
            var elem = elems[i];
            xml += "\r\n<Field InternalName=\"" + elem.id + "\">" + elem.value + "</Field>";
        }
    }
    
    xml += "</FormsGenerator>";
    
    //in case values still here
    var reg = /\{0\}/g;
    xml = xml.replace(reg, "");

    reg = /\{1\}/g;
    xml = xml.replace(reg, "");

    reg = /\{2\}/g;
    xml = xml.replace(reg, "");

    reg = /\{3\}/g;
    xml = xml.replace(reg, "");
    
    //OK - send form
    document.getElementById(wp + "_leadsSendRequest").value = xml;

    try {
        //before action - call webtrend method
        eval("webTrend" + wp + "()");
    }
    catch (e) {
    }

    //submit the form
    return true;
}

function getPhoneOwnerIDElement(wp) {

    //check all inputs
    var elems = document.getElementsByTagName("INPUT");
    var phoneOwnerElem = null;
    
    //check validation
    for (var i = 0; i < elems.length; i++) {
        if (elems[i].id.indexOf("tb_" + wp + "_") == 0) {
            var elem = elems[i];

            if (elem.getAttribute("PhoneOwnerIDValidationField") != null) {
                phoneOwnerElem = elem;
                break;
            }
        }
    }

    return phoneOwnerElem;
}


//------------------------------------------------------------------------
//---- VALIDATING JAVA SCRIPT UTILITIES ----------------------------------
//------------------------------------------------------------------------

function  validatePhone( strValue )
{
	var objRegExp  =  /(^\d{7}$)/;
	return objRegExp.test(strValue);
}

function validateOwnerID( strValue ) {
    var objRegExp = /(^\d{9}$)/;
    return objRegExp.test(strValue);
}

function validateEmail( strValue)
{
    if ( strValue == "" )
        return true;
	var objRegExp  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
	return objRegExp.test(strValue);
}

function validateNotEmpty( strValue )
{
   var strTemp = strValue;
   strTemp = trimAll(strTemp);
   if(strTemp.length > 0){
     return true;
   }
   return false;
}

function validateDate( strValue )
{
  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/

  //check to see if in correct format
  if(!objRegExp.test(strValue))
    return false; //doesn't match pattern, bad date
  else{
    return true;

    var strSeparator = strValue.substring(2,3) //find date separator
    var arrayDate = strValue.split(strSeparator); //split date into day, month, year
    //create a lookup for months not equal to Feb.
    var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
                        '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
    var intDay = parseInt(arrayDate[1]);

    //check if month value and day value agree
    if(arrayLookup[arrayDate[1]] != null) {
      if(intDay <= arrayLookup[arrayDate[1]] && intDay != 0)
        return true; //found in lookup table, good date
    }

    //check for February (bugfix 20050322)
    var intMonth = parseInt(arrayDate[1]);
    if (intMonth == 2) { 
       var intYear = parseInt(arrayDate[2]);
       if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
          return true; //Feb. had valid number of days
       }
  }
  return false; //any other values, bad date
}

function rightTrim( strValue )
{
var objRegExp = /^([\w\W]*)(\b\s*)$/;

      if(objRegExp.test(strValue))
      {
       //remove trailing a whitespace characters
       strValue = strValue.replace(objRegExp, '$1');
      }
  return strValue;
}

function leftTrim( strValue )
{
var objRegExp = /^(\s*)(\b[\w\W]*)$/;

      if(objRegExp.test(strValue))
      {
       //remove leading a whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
	  }
  return strValue;
}


function validateFilterFileType(field, ext)
{
    if (field.value.indexOf('.' + ext) == -1)
    {
        return false;
    }
    return true;
}

function trimAll( strValue )
{
 var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue))
    {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue))
   {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
   }
   
   var reg = /"/g;
   strValue = strValue.replace(reg,"&quot;");
  return strValue;
}

function setDebug(val)
{ gen_debug = val; }

function GetCSMJSon(phone, owner)
{
    var xmlhttp=null;
    var debug = gen_debug ? "?Debug=1&" : "?" ;
    
    if (window.XMLHttpRequest)
      {// code for all new browsers
      xmlhttp=new XMLHttpRequest();
      }
    else if (window.ActiveXObject)
      {// code for IE5 and IE6
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }

      var url = "/_layouts/Bezeq.Internet.WebParts/Common/CheckPhoneCSM/Check.aspx" + debug + "Phone=" + phone + "&cache=" + Math.random();

      if (owner != null)
          url += "&Owner=" + owner;

      if (gen_debug)
          alert("Calling to : " + url);
    
    if (xmlhttp!=null)
      {
      xmlhttp.open("GET",url,false);
      xmlhttp.send(null);
      }
    else
      {
      return "Your browser does not support XMLHTTP.";
      }

    if ( gen_debug)
        alert("|" + xmlhttp.responseText + "|")

     return xmlhttp.responseText;
}


