﻿// Início - Requisições ajax.
//Ex.:
//getUrl("teste.asmx/GetXXX", "POST", "{Param:'Teste'}", function() { alert('sucesso!'); }, function() { alert('falha!'); })
function getUrl(url, type, data, fnRetSucess, fnRetErro, async) {
    $.ajax({
        url: url,
        type: type,
        data: data,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function(msg) { fnRetSucess(msg); },
        error: function(xhr, error, thrownError) {
            var erro = "";
            try {
                erro = eval('(' + xhr.responseText + ')').Message;
            } catch (err) {
                erro += (typeof (error) == "string") ? error + ' - ' : "";
                erro += (typeof (thrownError) == "string") ? thrownError + ' - ' : "";
                erro += (typeof (err.message) == "string") ? err.message + ' - ' : "";
                erro += (typeof (err.name) == "string") ? err.name + ' - ' : "";
                if (erro.length > 0)
                    erro = erro.substr(0, erro.length - 3);
            }
            fnRetErro(xhr, erro);
            alert('Atenção, ocorreu um erro ► ' + xhr.status + '\nDescrição ► ' + erro);
        },
        async: async
    });
}
// Fim - Requisições ajax.

// Início - Adiciona Evento ao window.onload.
function addOnLoadEvent(fn) {
    if (typeof (window.onload) == 'function'
        && typeof (fn) == 'function') {
        var old = window.onload;
        window.onload = function() {
            old();
            fn();
        }
    } else
        window.onload = fn;
}
// Fim - Adiciona Evento ao window.onload.

// Início - Adiciona a função replaceAll à classe String.
String.prototype.replaceAll = function(de, para) {
    var str = this;
    var pos = str.indexOf(de);
    while (pos > -1) {
        str = str.replace(de, para);
        pos = str.indexOf(de);
    }
    return (str);
}
// Fim - Adiciona a função replaceAll à classe String.

// Início - Retorna parametros da url.
function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = Url.decode(hash[1]);
    }
    return vars;
}
// Fim - Retorna parametros da url.

// Início - Encode URL.
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;
    }
}
// Fim - Encode URL.
