//event trigger function is fireEvent(element, event)

//define SafeClickTaleExec
function SafeClickTaleExec(code) {
    if (typeof ClickTaleExec == 'function') {
        ClickTaleExec(code);
    }
}

//for main nav in agg reports
function CTaggmainnav(CTnumber) {
    $$("#anav > li")[CTnumber].addClassName('over');
    $$("#nav > li > div")[CTnumber].addClassName('shown-sub');
    $$("#nav > li > div.shown-sub > ul > li > div").each(function (s) {
        s.addClassName('shown-sub');
        s.style.position = "relative";
    });
    $$("#nav > li > div.shown-sub > ul > li > div.shown-sub > ul > li > div").each(function (s) {
        s.addClassName('shown-sub');
        s.style.position = "relative";
    });
}

function CTprodtab(CTnumber) {
    fireEvent($$("dl#collateral-tabs > dt")[CTnumber], 'click');
}

//successful submission
function CTsuccsub(CTfr) {
    setTimeout(function () {
        if ($(CTfr).down('div.validation-error')) {
            ClickTaleRegisterFormSubmit($(CTfr));
            ClickTaleTag("form_submit_fail");
        }
        else {
            ClickTaleRegisterFormSubmit($(CTfr));
            ClickTaleTag("form_submit_success");
        }
    }, 100);
}

//Payment Info
function CTsuccsubpay(CTfr) {
    if ($('p_method_checkmo').checked) {
        ClickTaleRegisterFormSubmit($(CTfr));
        ClickTaleTag("form_submit_success");
    }
    else {
        CTsuccsub(CTfr);
    }
}

var ClickTaleTagBuffer = [];
function BufferedClickTaleTag(tag) {
    if (typeof ClickTaleTag == "function") {
        ClickTaleTag(tag);
    } else {
        ClickTaleTagBuffer.push(tag);
    }
}
setTimeout(function () {
    if (typeof ClickTaleTag == "function") {
        for (var i = 0; i < ClickTaleTagBuffer.length; i++) {
            ClickTaleTag(ClickTaleTagBuffer[i]);
        }
    } else {
        setTimeout(arguments.callee, 100);
    }
}, 100);

//make sure dom is loaded
document.observe("dom:loaded", function () {
    //main nav
    //default
    //menu    
    var CTlis = $$("#nav li");
    var CTlen = CTlis.length;
    for (i = 0; i < CTlen; i++) {
        CTlis[i].observe('mouseover', function () {
            var CTcls = this.className.replace(/ /g, ".").split(".over")[0];
            SafeClickTaleExec("fireEvent($$('li." + CTcls + "')[0], 'mouseover');");

        });
    }
    for (i = 0; i < CTlen; i++) {
        CTlis[i].observe('mouseout', function () {
            var CTcls = this.className.replace(/ /g, ".").split(".over")[0];
            SafeClickTaleExec("fireEvent($$('li." + CTcls + "')[0], 'mouseout');");
        });
    }

    //aggregated reports main nav
    if (typeof ClickTaleContext == 'object') {
        try {
            ClickTaleContext.getAggregationContextAsync("1", function (context) {
                for (i = 0; i < context.VisitorEvents.length; i++) {
                    switch (context.VisitorEvents[i][2]) {
                        case "Custom Products":
                            CTaggmainnav(0);
                            break;
                        case "Signs":
                            CTaggmainnav(1);
                            break;
                        case "Asset Tags":
                            CTaggmainnav(2);
                            break;
                        case "Labels and Decals":
                            CTaggmainnav(3);
                            break;
                        case "Pipe Markers and Valve Tags":
                            CTaggmainnav(4);
                            break;
                        case "Traffic and Parking Controls":
                            CTaggmainnav(5);
                            break;
                        case "Tags":
                            CTaggmainnav(6);
                            break;
                        case "Tapes":
                            CTaggmainnav(7);
                            break;
                        case "Warehouse, Shipping and Maintenance":
                            CTaggmainnav(8);
                            break;
                        case "Safety and Security":
                            CTaggmainnav(9);
                            break;
                        case "Select Products":
                            fireEvent($$("dl#collateral-tabs > dt")[0], 'click');
                            break;
                        case "Related Products":

                            $$("dl#collateral-tabs > dt")[0].removeClassName("active");
                            $$("dl#collateral-tabs > dd")[0].style.display = "none";
                            $$("dl#collateral-tabs > dt")[1].addClassName("active");
                            $$("dl#collateral-tabs > dd")[1].style.display = "block";

                            break;
                        case "Accessories":
                            $$("dl#collateral-tabs > dt")[0].removeClassName("active");
                            $$("dl#collateral-tabs > dd")[0].style.display = "none";
                            $$("dl#collateral-tabs > dt")[2].addClassName("active");
                            $$("dl#collateral-tabs > dd")[2].style.display = "block";
                            break;
                        default:
                            break;
                    }
                }
                if (context.ReportType == 'MouseMoveHeatmap' || context.ReportType == 'MouseClickHeatmap' || context.ReportType == 'FormAnalytics') {
                    $$("ol#checkoutSteps > li > div").each(function (item) {
                        item.style.display = "block";
                    });
                    if ($('payment_form_ccsave')) {
                        $('payment_form_ccsave').style.display = 'block';
                    }
                }
            });
        }
        catch (e) { }
    }

    if (typeof checkout == 'object') {
        checkout.oldsetMethod = checkout.setMethod;
        checkout.setMethod = function () {
            checkout.oldsetMethod();
            SafeClickTaleExec("checkout.setMethod();");
            if (typeof ClickTaleRegisterFormSubmit == 'function') {
                CTsuccsub(this);
            }
        }
        billing.oldsave = billing.save;
        billing.save = function () {
            billing.oldsave();
            SafeClickTaleExec("billing.save();");
            if (typeof ClickTaleRegisterFormSubmit == 'function') {
                CTsuccsub('co-billing-form');
            }
        }
        shipping.oldsave = shipping.save;
        shipping.save = function () {
            shipping.oldsave();
            SafeClickTaleExec("shipping.save();");
            if (typeof ClickTaleRegisterFormSubmit == 'function') {
                CTsuccsub('co-shipping-form');
            }
        }
        shippingMethod.oldsave = shippingMethod.save;
        shippingMethod.save = function () {
            shippingMethod.oldsave();
            SafeClickTaleExec("shippingMethod.save();");
            if (typeof ClickTaleRegisterFormSubmit == 'function') {
                CTsuccsub('co-shipping-method-form');
            }
        }
        payment.oldsave = payment.save;
        payment.save = function () {
            payment.oldsave();
            SafeClickTaleExec("payment.save();");
            if (typeof ClickTaleRegisterFormSubmit == 'function') {
                CTsuccsubpay('co-payment-form');
            }
        }
        checkout.oldback = checkout.back;
        checkout.back = function () {
            checkout.oldback();
            SafeClickTaleExec("checkout.back();");
            if (typeof ClickTaleRegisterFormSubmit == 'function') {
                CTsuccsub(this);
            }
        }
        payment.oldswitchMethod = payment.switchMethod;
        payment.switchMethod = function (method) {
            payment.oldswitchMethod(method);
            SafeClickTaleExec("payment.switchMethod('" + method + "');");
        }
    }



    // simulate clicks on section names on checkout
    var CTsec = $$("div.step-title");
    var CTseclen = $$("div.step-title").length;
    for (i = 0; i < CTseclen; i++) {
        CTsec[i].observe('click', function () {
            var CTsecnam = this.up("li").id;
            SafeClickTaleExec("fireEvent($$('li#" + CTsecnam + " > div.step-title')[0], 'click');");
        }); ;
    }

    //simulate tabs transition on the product page
    var CTcoltab = $$("dl#collateral-tabs > dt");
    var CTcoltablen = CTcoltab.length;
    CTcoltab.each(function (item) {
        item.observe('click', function () {
            if (typeof ClickTaleExec == 'function') {
                for (i = 0; i < CTcoltablen; i++) {
                    if (this == CTcoltab[i]) {
                        ClickTaleExec("fireEvent($$('dl#collateral-tabs > dt')[" + i + "], 'click');");
                    }
                }
            }
        });
    });

    //events    
    if ($$("div.customer-favorite").length > 0) {
        BufferedClickTaleTag("Sub-Sub-Category Page");
    }
    if ($$("div.product-highlights").length > 0) {
        BufferedClickTaleTag("Product Page");
    }
    if ($$("div.breadcrumbs > ul > li").length == 2) {
        BufferedClickTaleTag("Top Category Page");
    } else if ($$("div.category-view > div.catsub> h2").length > 0) {
        BufferedClickTaleTag("Sub-Category Page");
    }
});
