﻿//Function to find controls by adding attribute to the control (Server+Web Controls)
//Important: You need to manage uniqness

function newFind(name)
{
    var elems = document.getElementsByTagName('*'); 
    var num = elems.length; 
    for(var c=0;c<num;c++)
    {
        var val = elems[c].getAttribute('FISName'); 
        if(val!=null && val==name)
            return elems[c]; 
    }
}


//save who ever has sent this request
function OpenPopup(controlNum,controlName)
{
    var t = newFind("hdnFieldNum");
    t.value = controlNum;
    SetupPopupValues(controlName);
    newFind("btnHiddenTrigger").click();
}
//reset or update the values
function SetupPopupValues(controlName)
{
    var control = newFind(controlName);
    
    var ddlCountry = newFind("ddlCoutryPhoneCodes");
    var tbAreaCode = newFind("tbAreaCode");
    var tbLocalNumber = newFind("tbLocalNumber");
    var userID = newFind("hdnUserID");
    var countryID = newFind("hdnCountryID");
    //Clear string
    var spanNumberPreview = $get("spanNumberPreview");
    spanNumberPreview.innerHTML = "";
    /*if the textbox is empty clear values else show them for editing*/
    if(control.value == "")
    {
        //default
        ddlCountry.selectedIndex = -1;
        if (userID != null && userID.value != "-1")
        {
            UCContactDetails.GetCountryByUserID(userID.value, GetCoutrySucceeded, GetCoutryFailed, countryID);
        }
        else
        {
            GetCoutrySucceeded(countryID.value,countryID.value);
        }
        tbAreaCode.value = "";
        tbLocalNumber.value = "";
        UpdateNumber();
    }
    else
    {
        //asign values for editing
        var coutryCodePart = '';
        ddlCountry.selectedIndex = -1;
        var areaCodePart = '';
        tbAreaCode.value = areaCodePart;
        var LocalNumberPart = '';
        tbLocalNumber.value = LocalNumberPart;
        
        var countryID;
        var temp = control.value;
        if (temp.indexOf('+') == 0)
        {
            //assign the country
            coutryCodePart = temp.substring(temp.indexOf('+')+1,temp.indexOf(' '));
            //Get the info of the country code from the server by asyncRequest
            UCContactDetails.GetCountryIDByPrefix(coutryCodePart, GetCoutrySucceeded,GetCoutryFailed ,countryID);
            temp = temp.substring(temp.indexOf(' ')).trim();
        }
        else if (userID != null && userID.value != "-1")
        {
        
            // TODO: Get CountryID by user details or page information
            UCContactDetails.GetCountryByUserID(userID.value, GetCoutrySucceeded, GetCoutryFailed, countryID);
        }
        else
        {
            GetCoutrySucceeded(countryID.value,countryID.value);
        }
        if(temp.indexOf('(') != -1 && temp.indexOf(')') != -1 )
        {
            //truncare the rest
            temp = temp.substring(temp.indexOf('('));
            //assign the areaCodePart
            areaCodePart = temp.substring(temp.indexOf('(')+1,temp.indexOf(')'));

            //truncare the rest
            temp = temp.substring(temp.indexOf(')')+1);
            //assign the LocalNumberPart
            LocalNumberPart = temp.trim();
            
            tbAreaCode.value = areaCodePart;
            tbLocalNumber.value = LocalNumberPart;
            //Update the number and the Hidden for the server
            UpdateNumber();
        }
        else
        {
            tbLocalNumber.value = temp;
            UpdateNumber();
        }
    }
}

//On return from Server assign value.
function GetCoutrySucceeded(results, countryID)
{
    var ddlCountry = newFind("ddlCoutryPhoneCodes");
    if(results != -1)
    {
        countryID = results;
        //asign the values to the textboxs
        ddlCountry.value = countryID;
    }
    else
    {
        ddlCountry.value = -1;
    }
    UpdateNumber();
}

function GetCoutryFailed(result, countryID)
{
}

//On return from Server if failed assign default value.
//function GetCoutrySucceeded(results, countryID)
//{
//    var ddlCountry = newFind("ddlCoutryPhoneCodes");
//    ddlCountry.selectedIndex = results;
//}

function UpdateNumber()
{
    var prefix = "";
    var ddlCountry = newFind("ddlCoutryPhoneCodes");
    
    //Get the info of the coutry prefix from the server by asyncRequest
    if(coutry = 'cahnged' && ddlCountry.selectedIndex != -1)
    {
        UCContactDetails.GetPrefixByCountryID(ddlCountry[ddlCountry.selectedIndex].value, GetPrefixSucceeded, GetPrefixfailed, prefix);
    }
    else
    {
        GetPrefixSucceeded(-1,"");
    }
}

function GetPrefixSucceeded(result, prefix)
{
    if( result != -1)
    {
        prefix = result;
        country = null;
    }
    else
    {
        prefix = "";
    }
    var spanNumberPreview = $get("spanNumberPreview");
    var tbAreaCode = newFind("tbAreaCode");
    var tbLocalNumber = newFind("tbLocalNumber");
    if(prefix != "")
    {
        spanNumberPreview.innerHTML = "+" + prefix.toString();
        if(tbAreaCode.value != null && tbAreaCode.value != "")
        {
            spanNumberPreview.innerHTML += " (" + tbAreaCode.value + ") ";
        }
        if(tbLocalNumber.value != null && tbLocalNumber.value != "")
        {
            spanNumberPreview.innerHTML += " " + tbLocalNumber.value;
        }
    }
    else if(tbAreaCode.value != null && tbAreaCode.value != "")
    {
        spanNumberPreview.innerHTML = " (" + tbAreaCode.value + ") ";
        if(tbLocalNumber.value != null && tbLocalNumber.value != "")
        {
            spanNumberPreview.innerHTML += " " + tbLocalNumber.value;
        }
    }
    else
    {
        spanNumberPreview.innerHTML = " " + tbLocalNumber.value;
    }
    
    newFind("hdnFullNumber").value = spanNumberPreview.innerHTML;
}

function GetPrefixfailed(result, prefix)
{
    var spanNumberPreview = $get("spanNumberPreview");
    var tbAreaCode = newFind("tbAreaCode");
    var tbLocalNumber = newFind("tbLocalNumber");
    spanNumberPreview.innerHTML = "+ 1";
    if(tbAreaCode.value != null && tbAreaCode.value != "")
    {
        spanNumberPreview.innerHTML += " - (" + tbAreaCode.value + ") ";
    }
    if(tbLocalNumber.value != null && tbLocalNumber.value != "")
    {
        spanNumberPreview.innerHTML += " " + tbLocalNumber.value;
    }
    newFind("hdnFullNumber").value = spanNumberPreview.innerHTML;
}

function btnOK_Click()
{   
    UpdateNumber();
    var newNum = newFind("hdnFullNumber").value;
    var tbNum = newFind("hdnFieldNum").value;
    if (tbNum == 1)
    {
        newFind("tbPhone").value = newNum;
    }
    else if (tbNum == 2)
    {
        newFind("tbFax").value = newNum;
    }
    else if (tbNum == 3)
    {
        newFind("tbMobile").value = newNum;
    }
//    newFind("pnlPhoneBreak").style.display = 'none';
}

