﻿/** PREREQUISITES - Jquery, Json2 **/


// *** Service Calling Proxy Class

function serviceProxy(serviceUrl) {

    var _I = this;

    this.serviceUrl = serviceUrl;



    // *** Call a wrapped object

    this.invoke = function(method, data, callback, error, bare, httpVerb) {

        // *** Convert input data into JSON - REQUIRES JSON.js

        var json = JSON.stringify(data);



        // *** The service endpoint URL        

        var url = _I.serviceUrl + method;



        $.ajax({

            url: url,

            data: json,

            type: httpVerb,

            processData: false,

            contentType: "application/json",

            timeout: 10000000,

            dataType: "text",  // not "json" we'll parse

            success:

                    function(res) {

                        if (!callback) return;



                        // *** Use json library so we can fix up MS AJAX dates

                        var result = JSON.parse(res);



                        // *** Bare message IS result

                        if (bare)

                        { callback(result); return; }



                        // *** Wrapped message contains top level object node

                        // *** strip it off

                        for (var property in result) {

                            callback(result[property]);

                            break;

                        }

                    },

            error: function(xhr) {

                if (!error) return;

                if (xhr.responseText) {

                    var err = JSON.parse(xhr.responseText);

                        if (err)

                            error(err);
                    else

                        error({ Message: "Unknown server error." })

                }

                return;

            }

        });

    }


    this.invokePlain = function(method, data, callback, error, httpVerb) {

        // *** Convert input data into JSON - REQUIRES JSON.js

        var json = JSON.stringify(data);



        // *** The service endpoint URL        

        var url = _I.serviceUrl + method;



        $.ajax({

            url: url,

            data: json,

            type: httpVerb,

            processData: false,

            contentType: "application/json",

            timeout: 10000,

            dataType: "text",

            success:

                    function(res) {

                        if (!callback) return;


                        callback(result); return;
                    },

            error: function(xhr) {

                if (!error) return;

                if (xhr.responseText) {

                    var err = JSON.parse(xhr.responseText);

                    if (err)

                        error(err);

                    else

                        error({ Message: "Unknown server error." })

                }

                return;

            }

        });

    }

}


function OpenPopup(page, title, width, height, options) {
    var iMyWidth;
    var iMyHeight;

    //half the screen width minus half the new window width (plus 5 pixel borders).
    iMyWidth = (window.screen.width / 2) - (Math.floor(width / 2) + 10);
    //half the screen height minus half the new window height (plus title and status bars).
    iMyHeight = (window.screen.height / 2) - (Math.floor(height / 2) + 50);
    window.open(page, title, options + ', width=' + width + ',height=' + height + ',left=' + iMyWidth + ",top=" + iMyHeight + ",screenX=" + iMyWidth + ",screenY=" + iMyHeight);
}

function isSet(variable) {
    return (typeof (variable) != 'undefined');
}

function checkRegexp(value, regexp) {
    return regexp.test(value);
}

function IsValidEmail(email) {
    return checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
}

/*********************************** Site Navigation Menu Code *********************************************/
function MM_swapImgRestore() { //v3.0
    var i, x, a = document.MM_sr; for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}

function MM_preloadImages() { //v3.0
    var d = document; if (d.images) {
        if (!d.MM_p) d.MM_p = new Array();
        var i, j = d.MM_p.length, a = MM_preloadImages.arguments; for (i = 0; i < a.length; i++)
            if (a[i].indexOf("#") != 0) { d.MM_p[j] = new Image; d.MM_p[j++].src = a[i]; }
    }
}

function MM_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
    var i, j = 0, x, a = MM_swapImage.arguments; document.MM_sr = new Array; for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) { document.MM_sr[j++] = x; if (!x.oSrc) x.oSrc = x.src; x.src = a[i + 2]; }
}

/*********************************** Site Navigation Menu Code *********************************************/
