// replacement for onload
var fctAddLoadEvent = function(myFunction) {
    Event.observe(window, "load", myFunction);
    return true;
};

// ########################################################################
var Actions = {

    attach: function(sIdElement, sAction, sFunctionName, sFunctionArgs) {
        if ($(sIdElement)) {

            var eMyElement = $(sIdElement);
            var functionArgs;

            // removing previous same action
            if(eMyElement.getAttribute(sAction)) {
                eMyElement.removeAttribute(sAction);
            }

            switch(sAction.toLowerCase()) {
                case "onclick":
                    eMyElement.onclick = function() {
                        return eval(sFunctionName+"("+sFunctionArgs+")");
                    };
                    break;
                case "onmouseover":
                    eMyElement.onmouseover = function() {
                        return eval(sFunctionName+"("+sFunctionArgs+")");
                    };
                    break;
                case "onmouseout":
                    eMyElement.onmouseout = function() {
                        return eval(sFunctionName+"("+sFunctionArgs+")");
                    };
                    break;
                case "onkeyup":
                    eMyElement.onkeyup = function() {
                        return eval(sFunctionName+"("+sFunctionArgs+")");
                    };
                    break;
                case "onsubmit":
                    eMyElement.onsubmit = function() {
                        return eval(sFunctionName+"("+sFunctionArgs+")");
                    };
                    break;
                case "onchange":
                    eMyElement.onchange = function() {
                        return eval(sFunctionName+"("+sFunctionArgs+")");
                    };
                    break;
                default :
                    Tools.debug("ERREUR! L'action '"+sAction.toLowerCase()+"' n'existe pas !");
            }

        } else {

            Tools.debug("ERREUR! L'element '"+sIdElement+"' n'existe pas !");

        }

        return true;
    },

    detach: function(sIdElement, sAction) {
        if ($(sIdElement)) {
            eMyElement = $(sIdElement);
            switch(sAction.toLowerCase()) {
                case "onclick":
                    eMyElement.onclick = "";
                    break;
                case "onmouseover":
                    eMyElement.onmouseover = "";
                    break;
                case "onmouseout":
                    eMyElement.onmouseout = "";
                    break;
                case "onsubmit":
                    eMyElement.onmouseout = "";
                    break;
                default :
                    Tools.debug("ERREUR! L'action '"+sAction.toLowerCase()+"' n'existe pas !");
            }
        } else {
            Tools.debug("ERREUR! L'element '"+sIdElement+"' n'existe pas !");
        }
        return true;
    }

};

// ########################################################################
var Tools = {

    debug: function(sMsg, bClose) {
        var divName = "debug";
        Tools.testSetDiv(divName);
        $(divName).update(sMsg).show();
        if (!bClose) Actions.attach(divName, "onclick", "this.update().hide();", "");
        return true;
    },

    testSetDiv: function(sDivName) {
        if(!$(sDivName)) {
            var eMyDiv;
            eMyDiv = document.createElement("div");
            eMyDiv.setAttribute("id", sDivName);
            document.getElementsByTagName("body")[0].appendChild(eMyDiv);
        }
        $(sDivName).hide();
        return true;
    },

    limitFieldLength: function(elementToLimit, lengthLimit) {
        if($F(elementToLimit).length > lengthLimit) {
            $(elementToLimit).value = $F(elementToLimit).substring(0, lengthLimit);
            return false;
        } else {
            return true;
        }
    },

    localAdapter: function(myValue) {
        var myRegexp = /,/;
        return myValue.replace(myRegexp, ".");
    },

    htmlEncode: function(wText) {
        if(typeof(wText)!="string") wText=wText.toString();
        wText=wText.replace(/&/g, "&amp;") ;
        wText=wText.replace(/"/g, "&quot;") ;
        wText=wText.replace(/</g, "&lt;") ;
        wText=wText.replace(/>/g, "&gt;") ;
        wText=wText.replace(/'/g, "&#39;") ;
        return wText;
    },

    close: function() {
        window.close();
        return true;
    },

    hello: function() {
        window.alert("Hello world !");
        return false;
    }

};

// ########################################################################
var GetPosition = {
    X: function(obj) {
        var curleft = 0;
        if(obj.offsetParent) {
            while(1) {
                curleft += obj.offsetLeft;
                if(!obj.offsetParent) break;
                obj = obj.offsetParent;
            }
        } else if(obj.x) {
            curleft += obj.x;
        }
        return curleft;
    },

    Y: function(obj) {
        var curtop = 0;
        if(obj.offsetParent) {
            while(1) {
                curtop += obj.offsetTop;
                if(!obj.offsetParent) break;
                obj = obj.offsetParent;
            }
        } else if(obj.y) {
            curtop += obj.y;
        }
        return curtop;
    }
};
