﻿//Enregistrement du namespace
Type.registerNamespace("Pages");

//Constructeur
Pages.PageBase = function () {
    this._listeComposants = null;
    this._nbComposantsReady = 0;
    this._isFirstLoad = true;
};

//Définition du prototype de la classe client
Pages.PageBase.prototype = {
    //Affectation de la liste des composants enfant
    set_ListeComposants: function (list) {
        this._listeComposants = list;

        $("#loading").bind("ajaxSend", function () {
            $(this).show();
        }).bind("ajaxComplete", function () {
            $(this).hide();
        }).bind("ajaxError", function () {
            $(this).hide();
        });

    },
    Add_Composant: function (clientId) {
        eval("this._listeComposants." + clientId + "=clientId");
    },
    set_ComponentReady: function () {
        this._nbComposantsReady++;
        if (this._nbComposantsReady >= nbComponents && typeof (this.DocumentReady) !== "undefined") {
            this.DocumentReady();
            this._isFirstLoad = false;
        }
    },
    //Méthode utilitaire d'appel ajax
    ajax: function (var_url, success_function, params, isLoading, error) {

        if (isLoading == null)
            isLoading = true;

        if (error == null)
            error = Function.createDelegate(this, this.ajaxError);

        var jsonparam = Sys.Serialization.JavaScriptSerializer.serialize(params);
        if (isLoading) {
            $.ajax({
                url: var_url,
                type: "POST",
                contentType: "application/json; charset=utf-8",
                processData: true,
                dataType: "json",
                data: jsonparam,
                success: success_function,
                error: error,
                beforeSend: Function.createDelegate(this, this.ajaxSend),
                complete: Function.createDelegate(this, this.ajaxComplete)
            });
        }
        else {
             $.ajax({
                url: var_url,
                type: "POST",
                contentType: "application/json; charset=utf-8",
                processData: true,
                dataType: "json",
                data: jsonparam,
                success: success_function,
                error: error
            });
        }
    },
    
    ajaxError: function () {
        /*alert("Erreur durant un appel ajax!");*/
    },
    ajaxSend: function () {
        $('body').append('<div id="loading" style="display:block;height:3132px;left:0;position:absolute;top:0;width:1663px;z-index:40000;" ></div>');
    },
    ajaxComplete: function () {
        $('#loading').remove();
    },
    get_IsFirstLoad: function () {
        return this._isFirstLoad;
    },
    GetCookies: function () {
        var cks = new Array();
        var ckList = document.cookie.split("; ");
        for (var i = 0; i < ckList.length; i++) {
            var keyvalue = new Object();
            var current = ckList[i];
            var ck = current.split("=");
            var lenght = ck.length;
            if (lenght == 2) {
                keyvalue.Key = ck[0];
                keyvalue.Value = unescape(ck[1]);
                cks[i] = keyvalue;
            }
            else if (lenght > 2) {
                var name = ck[0];
                var info = current.substring(name.length + 1, current.length);
                keyvalue.Key = name;
                keyvalue.Value = info;
                keyvalue.Elements = new Array();
                var infoList = info.split("&");
                var dic = new Object();
                for (var j = 0; j < infoList.length; j++) {
                    var kv = infoList[j].split("=");
                    if (kv.length == 2) {
                        var subkeyvalue = new Object();
                        subkeyvalue.Key = kv[0];
                        subkeyvalue.Value = unescape(kv[1]);
                        keyvalue.Elements[j] = subkeyvalue;
                    }
                }
                cks[i] = keyvalue;
            }
        }
        return cks;
    },
    ReadCookie: function (name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    },
    CreateCookie: function (name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    },
    EraseCookie: function (name) {
        createCookie(name, "", -1);
    },
    GetQueryString : function (key, default_) {
      if (default_==null) default_="";
      key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
      var qs = regex.exec(window.location.href);
      if(qs == null)
        return default_;
      else
        return qs[1];
    }
}

Pages.PageBase.registerClass("Pages.PageBase");
