﻿// OnLoad Function.
function pageLoad()
{
    var dropDown = $get(ddlRecipientCountry);
    
    // 
    var inputs = document.getElementsByTagName("INPUT"); var firstTextBoxIndex = -1;
    for (var i = 0; i < inputs.length; i++)
    {
        if((input = inputs[i]).type && input.type.toUpperCase() == 'TEXT')
        {
            if(firstTextBoxIndex == -1)
                firstTextBoxIndex = i;
                
            $addHandlers(input, { 'focus' : TextBox_OnFocusOrBlur, 'blur' : TextBox_OnFocusOrBlur });
        }
    }
    
    // 
    var textareas = document.getElementsByTagName('TEXTAREA');
    for (var i = 0; i < textareas.length; i++)
    {
        $addHandlers(textareas[i], { 'focus' : TextBox_OnFocusOrBlur, 'blur' : TextBox_OnFocusOrBlur });
    }
    
    //
    var aspnetForm = document.getElementById('aspnetForm');
    aspnetForm.action = '/free/';
    
    //
    if(firstTextBoxIndex != -1)
        inputs[firstTextBoxIndex].focus();
}

// OnSubmit Function.
function Page_OnSubmit(evt)
{
    var maskedEditExtender, tbFaxNumberWrapper, hiddenField, info;
    
    if(Page_ClientValidate('Required'))
    {
        maskedEditExtender = $find('RecipientFaxNumberMask');
        tbFaxNumberWrapper = AjaxControlToolkit.TextBoxWrapper.get_Wrapper(maskedEditExtender.get_element());
        info = JSON.parse(maskedEditExtender.get_element().getAttribute('info'));
        
        hiddenField = $get(hfRecipientFaxNumber);
        hiddenField.value = ((info && info.c) ? info.c.t : '') + maskedEditExtender._getClearMask(tbFaxNumberWrapper.get_Value());
        
        hiddenField = $get(hfRecipientFaxNumberMask);
        hiddenField.value = maskedEditExtender.get_Mask();
        
        hiddenField = $get(hfRecipientFaxNumberCountryId);
        hiddenField.value = (info && info.c) ? info.c.i : 0;
        
        hiddenField = $get(hfRecipientFaxNumberMaskId);
        hiddenField.value = (info && info.m) ? info.m.i : 0;
        
        /* -- */
        
        hiddenField = $get(hfTimeZone);
        hiddenField.value = new Date().getTimezoneOffset();
        
        /* -- */
        
        setTimeout('$find(\'ModalMessage\').show();',10);
        
        return true;
    }
}

//
function ddlRecipientCountry_OnChange(evt)
{
    var evt = evt || event;
    var srcElement = evt.target || evt.srcElement;
    var info = JSON.parse(srcElement.value);

    if(srcElement.selectedIndex == 0)
    {
        $find('RecipientFaxNumberMask').get_element().disabled = true;
        $get(iRecipientCountry).src = 'images/trans.gif';
    }
    else
    {
        $find('RecipientFaxNumberMask').get_element().disabled = false;
        $get(iRecipientCountry).src = 'images/countries/' + info.c.s.toLowerCase() + '.png';
    }
    
    tbFaxNumber_ChangeMask('RecipientFaxNumberMask', info, '', true);
}

/* -- */

//
function cvRequiredFields_CustomValidator(source, arguments)
{
    if(!Page_ClientValidate('RecipientFaxNumberValidators'))
    {
        arguments.IsValid = false;
        return;
    }
    
    if(!Page_ClientValidate('SenderEmailAddressValidators'))
    {
        arguments.IsValid = false;
        return;
    }
}

//
function tbSenderEmailAddress_CustomValidator(source, arguments)
{
    if($get(tbSenderEmailAddress).value.length == 0)
    {
        arguments.IsValid = false;
        return;
    }

    if(!Page_ClientValidate('SenderEmailAddress'))
    {
        arguments.IsValid = false;
        return;
    }
}

// done.
function tbRecipientFaxNumber_CustomValidator(source, arguments)
{
    arguments.IsValid = tbFaxNumber_Validate('RecipientFaxNumberMask');
}

/* -- */

// todo: 
function tbFaxNumber_OnClientPopulated(sender, e)
{
    var target = sender.get_completionList();
    var children = target.childNodes;

    var child, region, country, carrier;

    if((child = children[0])._value)
    {
        region = child._value.m.r;
        country = child._value.c.n;
        carrier = child._value.m.c;
        image = child._value.c.s.toLowerCase();
        
        child.innerHTML = '<a href="#"><span class="region">'+(region.length == 0 ? country : region )+'</span><br />' + 
            '<span class="details"><span>'+child._value.m.f+'</span>'+ (carrier.length == 0 ? '' : '<br />' + carrier)  +'</span></a>';
    }

    for (var i = 1; i < children.length; i++)
    {
        child = children[i];
        if(!child._value) continue;
        
        region = child._value.m.r;
        country = child._value.c.n;
        carrier = child._value.m.c;
        image = child._value.c.s.toLowerCase();

        child.style.borderTop = '1px solid #c0c0c0';
        child.innerHTML = '<a href="#"><span class="region">'+(region.length == 0 ? country : region )+'</span><br />' + 
            '<span class="details"><span>'+child._value.m.f+'</span>'+ (carrier.length == 0 ? '' : '<br />' + carrier)  +'</span></a>';
    }
}

// done.
function tbFaxNumber_OnClientItemSelected(sender, e)
{
    // initializing certain required variables.
    var maskedEditExtender = $find(sender._id.replace(/AutoComplete$/,'Mask'));
    var tbFaxNumberWrapper = AjaxControlToolkit.TextBoxWrapper.get_Wrapper(maskedEditExtender.get_element());
    var curpos = maskedEditExtender._LogicLastPos;

    // 
    var value = e.get_value();
    if (!value) 
    {
        var elem;
        if(!elem && (elem = e._item.parentElement))
        {
            while(elem && elem.tagName != "LI")
                elem = elem.parentElement;
            value = elem.attributes["_value"].nodeValue;
        }
        
        if(!elem && (elem = e._item.parentNode))
        {
            while(elem && elem.tagName != "LI")
                elem = elem.parentNode;
            value = elem._value;
        }
    }

    if (value)
        tbFaxNumber_ChangeMask(maskedEditExtender._id, value, value.m.d, true);
}

// changes the mask of a given fax number input box, repositionning the cursor at the end.
function tbFaxNumber_ChangeMask(maskedEditExtenderName, info, text, setFocus)
{
    // initializing certain required variables.
    var maskedEditExtender = $find(maskedEditExtenderName);
    var autoCompleteExtender = $find(maskedEditExtenderName.replace(/Mask/, 'AutoComplete'))
    var tbFaxNumberWrapper = AjaxControlToolkit.TextBoxWrapper.get_Wrapper(maskedEditExtender.get_element());
    
    // returning true if the mask was changed.
    var maskChanged = false;
    
    // retrieving parsing information.
    if(info) maskedEditExtender.get_element().setAttribute('info', JSON.stringify(info));
    else info = JSON.parse(maskedEditExtender.get_element().getAttribute('info'));
    
    // if there is text in the box, i cannot change the mask.
    if(text == null)
    {
        text = maskedEditExtender._getClearMask(tbFaxNumberWrapper.get_Value());
        if(text && text.length > 0) return; else text = null;
    }
    
    // reworking the mask into a MaskedEditExtender-compatible format.
    var value = info.m.v.replace(/9/g,'\\9').replace(/[#]/g,'9');
    if(maskedEditExtender._Mask != value)
    {
        // 
        maskChanged = true;
        
        // making the necessary changes to the mask and display.
        maskedEditExtender.set_Mask(value);
        maskedEditExtender._MaskConv = value;
        maskedEditExtender._LogicMaskConv = info.m.v.replace(/[#]/g,'9');

        // force-applying the changes.
        maskedEditExtender._onChange();
    }
    
    // populating the textbox with adequate text.
    if(text != null) maskedEditExtender._InitValue(text, false);
     
    // repositionning the cursor.
    if(setFocus && !maskedEditExtender.get_element().disabled)
    {
        maskedEditExtender.get_element().focus();
        
        var curpos = maskedEditExtender._LogicTextMask.indexOf(maskedEditExtender._LogicPrompt);
        maskedEditExtender.setSelectionRange(curpos,curpos);
    }   
    
    // setting contextKey for auto-complete.
    if(autoCompleteExtender)
        autoCompleteExtender.set_contextKey(info.m.v + ':' + info.c.t + ':' + info.c.i);
}

// 
function tbFaxNumber_Validate(maskedEditExtenderName, e)
{
    // initializing certain required variables.
    var maskedEditExtender = $find(maskedEditExtenderName);
    var tbFaxNumberWrapper = AjaxControlToolkit.TextBoxWrapper.get_Wrapper(maskedEditExtender.get_element());
    
    // if the fax number is complete, there will be no empty position left.
    return (maskedEditExtender._getLastEmptyPosition() == -1);
}

//
function tbRecipientFaxNumber_OnKeyUp(evt)
{
    var evt = evt || event;
    var maskedEditExtender = $find('RecipientFaxNumberMask');
    var tbFaxNumberWrapper = AjaxControlToolkit.TextBoxWrapper.get_Wrapper(maskedEditExtender.get_element());
    
    if(maskedEditExtender._LogicTextMask.indexOf(maskedEditExtender._LogicPrompt) == -1)
    {
        $get(tbSenderName).focus();
    }
}

//
function fireEvent(element, eventName){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+eventName,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(eventName, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}

//
function InitAnimation(where, which, position, width, height)
{
    var bounds = Sys.UI.DomElement.getBounds(where);

    if(position)
    {
        which.style.position = 'absolute';
        which.style.left = bounds.x + 'px';
        which.style.top = bounds.y + 'px';
    }
    
    if(width && height)
    {
        which.style.width = width + 'px';
        which.style.height = height + 'px';
    }
}

//
function TextBox_OnFocusOrBlur(evt)
{
    var evt = evt || event;
    Sys.UI.DomElement.toggleCssClass(evt.target || evt.srcElement,'Highlight');
}