﻿/* URL Controller JS */

var Url = {

    // public method for url encoding
    encode: function(string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode: function(string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode: function(string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode: function(utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i < utftext.length) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}


/* WS Controller JS */
/*
var WebService = function() {
    var Config = {
        imageUploadPath: '/View/ImageUploader.aspx',
        servicepath: '/WebService/WSAnovoCMS.asmx',
        defaulttimeout: 20000
    }
    return {
        Post: function(URL, callback, params) {

            //add this to params '&type=json'
            if (params != null) {
                params += '&type=json';
            }
            else {
                params += 'type=json';
            }

            //Connect.resetDefaultHeaders();
            Connect.initHeader("Content-Type", "application/json; charset=utf-8");
            //Connect.setDefaultPostHeader(true);
            //Connect.setHeader();
            Connect.asyncRequest('POST', URL, callback, params);

        },
        ServicePath: Config.servicepath,
        DefaultTimeout: Config.defaulttimeout,
        Methods: {
            FeaturedItems: {
                Add: Config.servicepath + '/AddFeaturedItem',
                Edit: Config.servicepath + '/EditFeaturedItem',
                Remove: Config.servicepath + '/DelFeaturedItem',
                GetDBItem: Config.servicepath + '/GetDatabaseItem',
                GetFeaturedItem: Config.servicepath + '/GetFeaturedItem',
                ListFeaturedItems: Config.servicepath + '/GetFeaturedItems',
                SavePageItem: Config.servicepath + '/SavePageItemSetup'
            },
            PhoneLookup: {
                PhoneByManufacturer: Config.servicepath + '/GetPhoneList',
                PhoneSearch: Config.servicepath + '/GetPhone',
                PhoneSave: Config.servicepath + '/SavePhone'
            }
        }
    }
} ();
*/
function GetResponseAsJSON(obj, throwErrorOnNull) {
    var toReturn;
    try {
        if (obj != null) {
            var _json = "";
            var Content = obj.getResponseHeader['Content-Type'];

            if (typeof (obj.responseXML) == "undefined" || Content.substring(0, 16) == 'application/json') {


                if (obj != null && obj.responseText != null) {
                    _json = obj.responseText;
                }


            } else {

                if (obj.responseXML.getElementsByTagName('string').length == 0) {
                    _json = obj.responseText;
                }
                else {
                    // The data will get chopped into 4096 character chucks. so spin through the xml array
                    // or chop the responseText object about.
                    var _NodeCount = obj.responseXML.getElementsByTagName('string')[0].childNodes.length;
                    for (var i = 0; i < _NodeCount; i++) {
                        _json += obj.responseXML.getElementsByTagName('string')[0].childNodes[i].nodeValue;
                    }
                }
            }

            toReturn = YAHOO.lang.JSON.parse(_json);
        }

        if (throwErrorOnNull && toReturn == null) {
            throw "Cannot get JSON object";
        }

        return toReturn;
    }
    catch (e) {
        throw e.message;
    }
}
