﻿/// <reference path="scripts.htm" />
//-----------------------------------------------------------------------
// Copyright (C) Nearsoft Inc. All rights reserved.
//-----------------------------------------------------------------------
Object.createNamespace('orderbot');
//-----------------------------------------------------------------------
// BASE METHODS (orderbot)
// fireClickEvent(element)   //fires the MouseEvent 'click' of the passed DOM element
// getScriptEngineInfo()     //return a string with script engine information
//------------------------------------------------------------------------
Object.extend(orderbot, {

    div: null,
    fireClickEvent: function(element) {
        orderbot.debug.write("enter orderbot.fireClickEvent()");
        if (!Object.isElement(element)) { orderbot.debug.write("exit orderbot.fireClickEvent()"); return; }
        var oEvent;
        if (document.createEvent) {
            oEvent = document.createEvent("MouseEvents");
            oEvent.initMouseEvent("click", true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, element);
        }
        else if (document.createEventObject) {
            oEvent = document.createEventObject();
        }
        else {
            return;
        }

        if (element.dispatchEvent) {
            element.dispatchEvent(oEvent);
        }
        else
            if (element.fireEvent) {
            /*  element.fireEvent("onclick", oEvent); */
            /*  element.fireEvent("onclick"); */
            element.click();
        }
        orderbot.debug.write("exit orderbot.fireClickEvent()");
    },

    getScriptEngineInfo: function() {
        var s;
        if (Object.isUndefined(ScriptEngine) || !Object.isFunction(ScriptEngine)) {
            s = 'script version = 1';
        } else {
            s = "";
            s += ScriptEngine() + " Version ";
            s += ScriptEngineMajorVersion() + ".";
            s += ScriptEngineMinorVersion() + ".";
            s += ScriptEngineBuildVersion();
        }
        return (s);
    },

    toogleAjaxButton: function(element, hide) {
        orderbot.debug.write("enter orderbot.toogleAjaxButton()");
        if (element && Object.isElement(element)) {
            var id = String.format('{0}_loading', element.id);
            if (hide) {
                var margin = parseInt((element.clientWidth - 24) / 2);
                var dom = $.IMG({ id: id, src: this.getImagePath('wait.gif'), width: 24, height: 24, style: 'margin:0px ' + margin + 'px 0px ' + margin + 'px' });
                element.insert({ before: dom });
                element.hide();
            }
            else {
                $(id).remove();
                element.show();
            }
        }
        orderbot.debug.write("exit orderbot.toogleAjaxButton()");
    },

    getImagePath: function(imgName) {
        return String.format('/App_Themes/Default/images/{0}', imgName);
    },

    goToNext: function(input, nextInput, count, container) {
        if (Object.isUndefined(input) || Object.isUndefined(nextInput) || Object.isUndefined(count)) { return; }
        if (!container) { container = $$('body').first(); }
        var selector = String.format('input[id$={0}]', input);
        input = container.down(selector);
        if (Object.isUndefined(input)) { return; }
        input.observe('keyup', function(e) {
            var isNumberKey = (e.keyCode >= 96 && e.keyCode <= 105) || (e.keyCode >= 48 && e.keyCode <= 57);
            if (!isNumberKey) return;
            if (e.element().value.length == count) {
                var selector = String.format('input[id$={0}]', nextInput);
                container.down(selector).activate();
            }
        } .bind(this));
    },


    /* review if in use */
    changeDomIDs: function(dom) {
        orderbot.debug.write("enter orderbot.changeDomIDs()");
        if (dom.id) { dom.id = "MB_" + dom.id; }
        dom.select('*[id]').each(function(el) { el.id = "MB_" + el.id; });
        this.activeContent = dom;
    },
    /* review if in use */
    restoreDomIDs: function(dom) {
        orderbot.debug.write("enter orderbot.restoreDomIDs()");
        if (dom.id && dom.id.match(/MB_/)) {
            dom.id = dom.id.replace(/MB_/, "");
        }
        $(dom).select('*[id]').each(function(el) { el.id = el.id.replace(/MB_/, ""); });

    }

});

//------------------------------------------------------------------------
Object.extend(orderbot, {

    init: function() {
        orderbot.debug.write("enter orderbot.init()");
        this.div = $('content');
       // this.initSearchKeyHandler();
        this.initAjaxProEvents();
        this.preloadImages();
        orderbot.debug.write("exit orderbot.init()");
    },

    initAjaxProEvents: function() {
        orderbot.debug.write("enter orderbot.initAjaxProEvents()");
       // if (typeof (AjaxPro) === 'undefined') { orderbot.debug.write("exit orderbot.initAjaxProEvents()"); return; }
        AjaxPro.timeoutPeriod = 30000;
        AjaxPro.onLoading = function(b) {
            if (b) {
                window.status = "Working...";
                $('ajax-loading').show();
            } else {
                window.status = "";
                $('ajax-loading').hide();
            }
        };
        AjaxPro.onTimeout = function(b, res) {
            //alert('Timeout');
        };
        AjaxPro.onError = function(error, res) {
            //alert(error.Message);
        };
        orderbot.debug.write("exit orderbot.initAjaxProEvents()");
    },

//    initSearchKeyHandler: function() {
//        orderbot.debug.write("enter orderbot.initSearchKeyHandler()");
//        var input = $('wrapper').down('input[id$=txtSearch]');
////        input.observe('keypress', function(e) {
////            var key = (Object.isUndefined(e.charCode) ||
////                          (e.charCode === 0 && e.keyCode)) ? e.keyCode : e.charCode;
////            switch (key) {
////                case Event.KEY_RETURN:
////                    e.stop();

////                    break;
////                case Event.KEY_ESC:
////                    e.element().value = ''; break;
////            }
////        });
//        orderbot.debug.write("exit orderbot.initSearchKeyHandler()");
//    },
    preloadImages: function() {

        if (document.images) {
            var myImage = new Image();
            //            myImage.onload = imageOnLoad;
            //            myImage.onerror = imageOnError;
            //            myImage.src = "myimage.gif"; // This is the line starting the request
        }
    }
});

//------------------------------------------------------------------------

Object.createNamespace('orderbot.debug');
Object.extend(orderbot.debug, {
    debug: false,
    debuginfo: $('debuginfo'),
    level: 0,
    write: function(msg) {
        if (!this.debug) return;
        if (!this.debuginfo) this.debuginfo = $('debuginfo');
        if (msg.indexOf("enter") != -1 || msg.indexOf("exit") != -1) this.level = 0; else this.level = 1;
        //        if (msg.indexOf("exit")!=-1) this.level--;
        var text =
        String.format("{1}: {2}{3}<br/>{0}", this.debuginfo.innerHTML, (new Date()).toString("hh:mm:ss tt"), '&nbsp;&nbsp;&nbsp;&nbsp;'.times(this.level), msg);
        this.debuginfo.update(text);
    }
});
