var omniture = {
    init: function() {
        if (typeof s == 'undefined') {
           return true;
        }
        var page = this.getPage();
        if (this[page] && typeof this[page].init == 'function') {
            this[page].init();
        }
    },
    getPage: function() {
        var location = document.location+'';
        if (location.match('A=uploader')) {
            return 'uploader';
        }
        if (location.match('A=checkout_payment_type')) {
            return 'checkout';
        }
        if (location.match('A=checkout_s1_html')) {
            return 'checkoutProcess';
        }
        if (location.match('A=faqs')) {
            return 'faqs';
        }
        if (location.match('A=upgradeGUI')) { 
            return 'shippingUpgrade';
        }
    },
    addEvent: function(name,clear) {
        if (clear == true) {
            s.events = '';
        }
        s.events = name;
        return true;
    },
    addProduct: function(name,clear) {
        if(clear == true) {
            s.products = '';
        }
        s.products = name;
    },
    reloadTracker: function() {
        void(s.t());
    },
    //start handlers...
    /**
     * Uploader
     */
    uploader: {
        init: function() {
            var form = document.forms.upload_form;
            if (form) {
                form.setAttribute('onsubmit','');
                Event.observe(form,'submit',omniture.uploader.handler,false);
            }
        },
        handler: function(e) {
            if (!validateUpload(this)) {
                e.stop();
                return false;
            }
            omniture.addEvent('event1');
            omniture.reloadTracker();
        }
    },
    /**
     * adds item for shipping upgrade
     */
    shippingUpgrade: {
        init: function() {
            var form = document.forms.ship_checkout;
            if (form) {
                Event.observe(form,'click',omniture.shippingUpgrade.clickHandler,false);
            }
        },
        clickHandler: function(e) {
            var targ = e.element();
            if (targ) {
                omniture.shippingUpgrade.handler(targ);
            }
        },
        handler: function(element) {
            //var shipVal = element.value;
            //var shipMethods = new Array();
            //shipMethods = shipVal.split('+');
            //var shipMethod = shipMethods[0];
            var shipMethod = element.value;
            omniture.addEvent('scAdd', false);
            omniture.addProduct(shipMethod);
            omniture.reloadTracker();
        }
    },
    /**
     * checkout_payment_type
     */
    checkout: {
        init: function() {
            var form = document.forms.google_form;
            if (form) {
                Event.observe(form,'submit',omniture.checkout.handler,false);
            }
        },
        handler: function() {
            omniture.addEvent('event13');
            omniture.reloadTracker();
        }
    },
    checkoutProcess: {
        init : function() {
            var form = document.forms.checkoutshipping;
            if (form) { 
                Event.observe(form,'click',omniture.checkoutProcess.clickHandler,false);
            }
        },
        clickHandler: function(e) {
            var targ = e.element();
            if (targ.checked) {
                omniture.checkoutProcess.updateOmniture(targ);
            }
        },
        updateOmniture: function(element) {
            if (element.id && s) {
                omniture.addEvent('event16');
                omniture.reloadTracker();
            }
        }
    },
    /**
     * FAQs
     */
    faqs: {
        init : function() {
            var container = $('faqLinks');
            if (container) {
                Event.observe(container,'click',omniture.faqs.clickHandler,false);
            }
        },
        clickHandler: function(e) {
            var targ = e.element();
            while(targ.nodeName.toUpperCase() != 'TR') {
                if (targ.nodeName.toUpperCase() == 'A') {
                    omniture.faqs.updateOmniture(targ);
                    break;
                } else {
                    targ = targ.parentNode;
                }
            }
        },
        updateOmniture: function(element) {
            if (element.id && s) {
                s.prop2 = s.prop3 = s.prop4 = s.prop1+': '+element.id; 
                omniture.reloadTracker();
            }
        }
    },
    /**
     * Classic Designer
     */
    classicDesigner: {
        init: function() {
            //get all text inputs...
            var inputs = document.getElementsByTagName('input');
            var length = inputs.length;
            if (length > 0) {
                for (var i = 1; i <=length; i++) {
                    var key = i-1;
                    var el = inputs[key];
                    if (el.getAttribute('type') == 'text' && el.id != 'opacity') {
                        Event.observe(el,'change',omniture.classicDesigner.inputHandler,false);
                    }
                }
            }
            var updates = document.getElementsByName('update');
            length = updates.length;
            if (length > 0) {
                for (var i = 1; i <= length; i++) {
                    var key = i - 1;
                    var el = updates[key];
                    if (el.nodeName.toUpperCase() == 'INPUT' ) {
                        Event.observe(el,'click',omniture.classicDesigner.updateHandler,false);
                    }
                }
            }
        },
        inputHandler: function(e) {
            omniture.addEvent('event6',true);
            omniture.reloadTracker();
        },
        updateHandler: function() {
            omniture.addEvent('event8',true);
            omniture.reloadTracker();
        }
    }
};
Event.observe(window,'load',omniture.init.bindAsEventListener(omniture),false);
