﻿// declarations etc
var bodyTag           = 'bodyTag';
var divElem           = 'AjaxErrorDiv';
var messageElem       = 'AjaxErrorMessage';
var errorMessageExtra = ''; //'Please try again.';

// add listener for partial render request completion
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

// add handler to probe the end request status looking for errors
function EndRequestHandler(sender, args) {

    if (args.get_error() != undefined && args.get_error().httpStatusCode == '500') {

        // extract returned error message
        var errorMessage = args.get_error().message;

        // mark error as handled
        args.set_errorHandled(true);

        // display error in browser (toggle method defined later)
        ToggleAlertDiv('visible');
        $get(messageElem).innerHTML = '"' + errorMessage + '" ' + errorMessageExtra;
        
        // stop the madness...
        args.set_errorHandled(true);
    }
}

function ToggleAlertDiv(visString) {

    if (visString == 'hidden') {
        $get(bodyTag).style.backgroundColor = '';
    } else {
        $get(bodyTag).style.backgroundColor = 'gray';
    }

    var adiv = $get(divElem);
    adiv.style.visibility = visString;
}

function ClearErrorState() {
    $get(messageElem).innerHTML = '';
    ToggleAlertDiv('hidden');
}

// function used for invoking web service method synchronously
function GetSynchronousJSONResponse(url, postData) {

    var xmlhttp = null;
    
    if (window.XMLHttpRequest)
        xmlhttp = new XMLHttpRequest();
    else if (window.ActiveXObject) {
        if (new ActiveXObject("Microsoft.XMLHTTP"))
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        else
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
        // to be ensure non-cached version of response
    url = url + "?rnd=" + Math.random(); 
    
    xmlhttp.open("POST", url, false);//false means synchronous
    xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    xmlhttp.send(postData);
    var responseText = xmlhttp.responseText;
    return responseText;
}

var instance = Sys.WebForms.PageRequestManager.getInstance();
//instance.add_initializeRequest(instance_initializeRequest);

function instance_initializeRequest(sender, args) { 
    if (instance.get_isInAsyncPostBack()) { 
        alert('Still processing request. Please wait..');
        args.set_cancel(true);
    }
}

function selectedValue(selBox) {
    return selBox.options[selBox.selectedIndex].value;
}

function searchContacts() {

    var keywords = document.getElementById("contactKeywords").value.trim();

    if (keywords != "") {
        var path = "/Companies/ContactSearch.aspx?q=1&k=" + escape(keywords);
        //alert(path);
        window.open(path);
    } else {
        alert("Please enter part of the name to search...");
        document.getElementById("contactKeywords").focus();
    }
}

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(instance_initializeRequest);
