﻿/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//
// FORM ANIMATIONS/METHODS 'N DIALOGS
//
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////

var StatusAnimationTimeout = false;

function initFormProcessingAnimation(id)
{
    var divProcessingPane = docObj('divProcessing.'+id);
    
    toggleFormFieldState(FormObjAjax.FieldCollection, false);
    
    var margin = getPaneMargins(id);
    divProcessingPane.style.marginLeft = margin.left;
    divProcessingPane.style.marginTop  = margin.top;
    
    docObj('form_container.'+id).style.height = docObj('form_container.'+id).offsetHeight + 'px';
    doOpacity('form_container.'+id, 100, 35, 750, 'block');
    
    showFormProcessing(id);
}
function showFormProcessing(id)
{
    var divPaneId = 'divProcessing.'+id;
    var divProcessingPane = docObj(divPaneId);
    
    divProcessingPane.style.display = 'block';
    doExpansion(divPaneId, 0, 50, 500, 'height');
    
    changeStatusMsg('Processing...',id);

    docObj('status_bar.'+id).innerHTML = '<img src="'+FormObjAjax.BasePath+'/images/status_bar' + SiteSettings.Theme.current.id() + '.gif">';
    
    docObj('status_bar.'+id).style.display = 'block';
    docObj('status_msg.'+id).style.display = 'block';
}
function throwFormSubmitError(msgId)
{
    var msg;
    switch (msgId)
    {
        case 0: msg = 'Error sending request'; break;
        case 1: msg = 'Error sending request; Server timed-out'; break;
        case 2: msg = 'Error uploading resume'; break;
        case 3: msg = 'Error validating website.'; break;
    }
    
    FormObjAjax.ErrorThrown = true;
    changeStatusMsg(msg, FormObjAjax.CurrentForm, true);
}
function throwFormSubmitSuccess(Obj)
{    
    var msg = 'Thank you';    
    if (Obj)
    {
        var name = Obj.name;
        var arName = name.split(' ');
        if (arName[0])
            name = arName[0];
            
        switch (FormObjAjax.CurrentForm)
        {
            case  'career': msg += ' '+name+', your application was saved'; break;
            case 'contact': msg += ' '+name+', your message was sent'; break;
            case   'reply': msg += ' '+name+' for your comment'; break;
        }
        
        if ('reply' == FormObjAjax.CurrentForm)
        {
            if (! SiteSettings.InStaticMode)
                BlogObjAjax.RecentComments.Timer.ReLoad(setTimeout("doBlogPostMethod();",1500));
            else
            {
                if (window.location.href.match(/#/g))
                {
                    var reLocation = window.location.href.split('#');
                    window.location = reLocation[0];
                }
                else
                    window.location=window.location;                
            }
        }
    }
    
    changeStatusMsg(msg, FormObjAjax.CurrentForm, true);
}
function changeStatusMsg(msg, id, isLastCall)
{
    docObj('status_msg.'+id).innerHTML = msg;
    
    if (isLastCall)
       StatusAnimationTimeout = setTimeout("stopFormProcessing('"+id+"');",2500);
}
function stopFormProcessing(id)
{
    doOpacity('form_container.'+id, 35, 100, 750, 'block');
    doExpansion('divProcessing.'+id, 50, 0, 50, 'height');
    StatusAnimationTimeout = setTimeout("resetInnerProcessingPanel('"+id+"');", 50);

    toggleFormFieldState(FormObjAjax.FieldCollection, true);
    
    if (! FormObjAjax.ErrorThrown) // lets not clear out the content if they want to re-submit
        resetFormFieldValues(FormObjAjax.FieldCollection);
    else if ('reply' == FormObjAjax.CurrentForm)
        ResetBlogReplyForm();
   
    FormObjAjax.Timer.Kill();
}

// pretty much the same thing as above, only non-animated
function resetFormProcessing(id)
{
    forceOpacity(100, 'form_container.'+id);    
    doExpansion('divProcessing.'+id, 50, 0, 50, 'height');
    ajaxTimeOut(id);
    resetInnerProcessingPanel(id);      
}

function resetInnerProcessingPanel(id)
{
    docObj('status_bar.'+id).innerHTML = '';
    docObj('status_msg.'+id).innerHTML = '';

    docObj('status_bar.'+id).style.display = 'none';
    docObj('divProcessing.'+id).style.display = 'none';
}

function toggleFormFieldState(arFields, state)
{
    if (arFields && arFields.length > 0)
    {
        for (var i = 0; i < arFields.length; i++)
        {
            if (docObj(arFields[i][0]).type.match(/(button|submit|reset|check|radio)/gi))
                docObj(arFields[i][0]).disabled = !state;
            else
                docObj(arFields[i][0]).readOnly = !state;    
        }
   }
}

function resetFormFieldValues(arFields)
{
    if (arFields && arFields.length > 0)
    {
        for (var i = 0; i < arFields.length; i++)
        {
            if (! docObj(arFields[i][0]).type.match(/(submit|reset|button)/gi))
            {
                if (docObj(arFields[i][0]).type.match(/(check|radio)/gi))
                    docObj(arFields[i][0]).checked = false;
                else if(docObj(arFields[i][0]).type.match(/select/gi))
                    docObj(arFields[i][0]).options[0].selected = true;
                else
                    docObj(arFields[i][0]).value = '';
            }
        }
   }
}

function getPaneMargins(id)
{
    if ('reply' == id)
    {
        if ('ie' == thisBrowser())
            return { left:'40px',top:'-11px' };
        else
            return { left:'40px',top:'-1px' };
    }
    else
    {
        if ('ie' == thisBrowser())
            return { left:'135px',top:'-11px' };
        else
            return { left:'135px',top:'-1px' };
    }
}