/* Javascript - little AJAX stuff            */
/* Written by Paula Molinero, based on code  */
/* samples and other online resources.       */
/* _________________________________________ */

<!--

var siteName   = 'Shetland';
var separator  = ' | ';
var browser    = navigator.appName;
var thisAction = '';
var f          = '';

var request = false;

function createRequestObject()
{
    try { request = new XMLHttpRequest(); } 
    catch (trymicrosoft) 
    {
        try { request = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch (othermicrosoft) 
        {
            try { request = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch (failed) 
            {
                request = false;
            }
        }
    }

    if (!request) { alert("Error initializing XMLHttpRequest!"); }
    else { return request; }
}

var http = createRequestObject();


//___ Run a customized process and load full section

function sndReq (thisAction)
{
    if(thisAction != '')
    {
        http.open ('get', siteURL+'sites/all/modules/tessitura/tessitura/inc/frontend.php?ajaxproc=1&flag=' + thisAction);        
        http.onreadystatechange = handleGralResponse;
        http.send(null);
    }
}


//___ Other stuff ____________________________________________________________________ //

function grabGetVars ()
{
    var idx = document.URL.indexOf('?');
    var params = new Array();
    
    if (idx != -1) 
    {
        var pairs = document.URL.substring(idx+1, document.URL.length).split('&');
        
        for (var i=0; i<pairs.length; i++) 
        {
            nameVal = pairs[i].split('=');
            params[nameVal[0]] = nameVal[1];
        }
    }
    
    return params;
}


//___ Loading and error messages _____________________________________________________ //

function loadingError (code) 
{ 
    msg = 'Oops! The requested content can not be displayed';
    if (code) { msg = msg + ' (ERROR CODE: ' + code + ')'; }
    alert (msg);
}

function showLoader ()
{
    //if (myLoader = document.getElementById ('loader')) { myLoader.style.visibility = 'visible'; }
    if (myLoader = document.getElementById ('loader'))
    {
        myLoader.style.display = 'block';
    }
}

function hideLoader ()
{
    //if (myLoader = document.getElementById ('loader')) { myLoader.style.visibility = 'hidden'; }
    if (myLoader = document.getElementById ('loader'))
    {
        myLoader.style.display = 'none';
    }
}


//___ From handling __________________________________________________________________ //

/* POST */
var ret  = null;
var file = null;
var str  = null;
var f    = null;

function subPostForm(f)
{
    var file = 'index.php?proc=1&flag='+f.elements['flag'].value;
    var str = getFormValues(f,'');
    ret = handlePostRequest(file,str);
}

function subDeleteRec (f)
{
    var where_to = confirm('Are you sure you want to delete this record?');
    
    if (where_to == true) 
    { 
        //window.location=fwd;
        var file = 'index.php?proc=1&flag=delete&DBTableName='+f.elements['flag'].value;
        var str = getFormValues (f,'');
        ret = handlePostRequest (file,str);
    }
    else 
    { 
        var rwd = f.elements['DelRedirect'].value;
        window.location = rwd; 
    }
}

function handlePostRequest(file,str)
{
    http.open("POST", file, true );
    http.onreadystatechange = handleGralResponse;
    http.setRequestHeader ("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    http.send (str);
    ret = true;
}

function subPostForm (f)
{
    var file = 'index.php?proc=1&flag='+f.elements['flag'].value;
    var str = getFormValues(f,'');
    ret = handlePostRequest(file,str);
}


//___ Handle form fields -glueing form values ________________________________________ //

function getFormValues (fobj,valFunc)
{
    var lastElemName = '';
    var valueArr = null;
    var formElem = "";
    var str = "";
    var val = "";
    var cmd = "";

    for(var i = 0;i < fobj.elements.length;i++)
    {
        formElem = fobj.elements[i];
        
        switch(fobj.elements[i].type)
        {
            case "text":
            case "hidden":
            case "password":
            case "textarea":
            
                /*
                if(valFunc)
                {
                    //use single quotes for argument so that the value of
                    //fobj.elements[i].value is treated as a string not a literal
                    cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
                    val = eval(cmd)
                }
                */
                
                str += formElem.name + "=" + escape(formElem.value) + "&";
                break;

            case "select-one":
                str += formElem.name + "=" + formElem.options[formElem.selectedIndex].value + "&";
                break;
                
            case "select-multiple":
                str_ = '';
                for (var j = 0;j < formElem.length;j++)
                {
                    if (formElem.options[j].selected == true)
                    {
                        if (formElem.options[j].value)
                        {
                            str_ += formElem.options[j].value + ",";
                        }
                    }
                }
                // Strip off last comma
                str_ = str_.substr(0, str_.length - 1);
                str += formElem.name + "=" + str_ + "&";
                break;
                
            case 'radio':
                if (formElem.checked) { str += formElem.name + '=' + escape(formElem.value) + '&'; }
                break;
                
            case 'checkbox':
                if (formElem.checked) 
                {
                    // Continuing multiple, same-name checkboxes
                    if (formElem.name == lastElemName) 
                    {
                        // Strip of end ampersand if there is one
                        if (str.lastIndexOf('&') == str.length-1) 
                        {
                            str = str.substr(0, str.length - 1);
                        }
                        // Append value as comma-delimited string
                        str += ',' + escape(formElem.value);
                    }
                    else 
                    {
                        str += formElem.name + '=' + escape(formElem.value);
                    }
                    
                    str += '&';
                    lastElemName = formElem.name;
                }
                break;
       }
    }
    
    str = str.substr(0,(str.length - 1));
    return str;
}

//___ Handling responses _____________________________________________________________ //

function handleResponse() 
{
    if(http.readyState == 4)
    {
        hideLoader ();
        
        var response = http.responseText;
        var pageTitle = '-';
        var vars = new Array ();
        var s1 = new Array ();
        
        if(response.indexOf('|' != -1)) 
        {   
            // split variable
            vars = response.split('|');
            // split again
            s1 = vars[0].split("~");
            
            // set page title
            pageTitle = vars[1];
            if (pageTitle == '') { pageTitle = '-'; }
            s1[0] = trimString (s1[0]);
            
            if(document.getElementById(s1[0]))
            {
                //document.getElementById(s1[0]).innerHTML = s1[1]
                printInnerText (s1[0],s1[1]);
                
                if (pageTitle) { document.title = pageTitle + separator + siteName; }
            }
            else { loadingError('1');; }
        }
        else { loadingError('2'); }
    }
    else { return showLoader(); }
}

//___ Display content for multiple IDs (not just 's1')
function handleGralResponse () 
{
    if(http.readyState == 4)
    {
        hideLoader ();
        
        var gralResponse = http.responseText;
        var firstChunk = new Array();
        //alert ('r: ' + gralResponse); // debug
        
        // multiple variables
        if(gralResponse.indexOf('|' != -1)) 
        {
            firstChunk = gralResponse.split('|');
            
            for (var i=0;i<firstChunk.length;i++)
            {
                var temp = firstChunk[i].split('~');
                temp[0] = trimString (temp[0]);
                
                // check if it's a redirect
                if (temp[0] == 'redirect') { document.location.href = temp[1]; }
                
                // display content
                //printInnerText ('enewslettererror' , 'test' + firstChunk);
                if(document.getElementById(temp[0])) { printInnerText (temp[0],temp[1]); }
            }
        }
        else 
        {
            // only one variable 
            if (gralResponse.indexOf('~' != -1)) 
            {
                var firstChunk = gralResponse.split ('~');
                
                // check if it's a redirect
                if (firstChunk[0] == 'redirect') { document.location.href = firstChunk[1]; }
                // not a redirect
                else
                {
                    //printInnerText ('enewslettererror' , 'test2');
                    if (document.getElementById(firstChunk[0])) { printInnerText (firstChunk[0], firstChunk[1]); }
                }
            }
            else { loadingError(); }
        }
    }
    else { return showLoader(); }
}

//-->