﻿/** Menu */
function init_menus() {
    init_menu($(".js_menu_shop").eq(0), $("#shop_menu").eq(0));
    init_menu($(".js_menu_resources").eq(0), $("#resources_menu").eq(0));
    init_menu($(".js_menu_questions").eq(0), $("#questions_menu").eq(0));
    menu_z = 5;
}
function init_menu(button, menu) {
    menu.hovering = false;
    var args = {menu_elt: menu, button_elt: button};
    button.bind("mouseover", args, show_menu);
    button.bind("mouseout", args, hide_menu);
    menu.bind("mouseover", args, hover_menu);
    menu.bind("mouseout", args, hide_menu);
}
function show_menu(event) {
    var menu = event.data.menu_elt;
    if (!menu.hovering) {
        menu.css("z-index", menu_z++);
        menu.show();
        var pos = $(event.target).offset();
        var doc_width = $(document).width();
        menu.css("top",pos.top + 26); 
        if (pos.left <= (doc_width / 2)) {
            menu.css("left",pos.left);
        } else {
            var right_edge = pos.left + $(event.target).width();
            menu.css("left",(right_edge - menu.outerWidth()) + 3);
        }
    }
    inc_menu_hover(menu);
}
function hover_menu(event) {
    inc_menu_hover(event.data.menu_elt);
}
function hide_menu(event) {
    event.data.menu_elt.hovering = false;
    setTimeout(function(){ dec_menu_hover(event.data); }, 500);
}
function inc_menu_hover(menu) { menu.hovering = true; }
function dec_menu_hover(args) { 
    if (!args.menu_elt.hovering) { 
        args.menu_elt.hide();
    } 
}
/* /Menu */

/** Header Search */
function init_search_input(input_elt, form_elt) {
    input_elt.bind("click", function(event) { 
        var tgt = $(event.target);
        if (tgt.val() == "Search") { tgt.val(""); }
    });
    input_elt.bind("keydown", function(event) {
        if (event.keyCode == 13) { form_elt.submit(); }
    });
}
/* /Header Search */

function modalOn(state) {
    var curtain = $("#modal_curtain");
    if (curtain.length <=0) {
        curtain = $("<div />");
        curtain.attr("id", "modal_curtain");
        $($("body").append(curtain));
    }
    curtain.height($().height());
    curtain.width($().width());
    if (state) {
        curtain.show();
    } else {
        curtain.hide();
    }
}

function showModalMessage(dispElem) {
    var width = arguments.length == 2 ? arguments[1] : 300;
    var container = $("<div />");
    container.addClass("modal_message");
    container.width(width);
    var top = $("<div class='modal_message_ul'></div><div class='modal_message_mid'></div><div class='modal_message_ur'></div><div class='clearbox'></div>");
    var bot = $("<div class='modal_message_ll'></div><div class='modal_message_mid'></div><div class='modal_message_lr'></div><div class='clearbox'></div>");
    var cont = $("<div />");
    cont.addClass("modal_message_content");
    
    var close = function() {
        container.remove();
        modalOn(false);
    }
    
    var ctrls = $("<div />");
    ctrls.addClass("modal_message_ctrls");
    var btn = $("<input type='image' src='./images/buttons/back_btn.png' alt='Back' />").bind("click", close);
    ctrls.append(btn);

    cont.append($(dispElem).clone().show()).append(ctrls);
    container.append(top).append(cont).append(bot);
    
    modalOn(true);
    $("body").append(container);
    var top_off = ($(window).height() / 2) - (container.outerHeight() / 2) + $(window).scrollTop();
    var left_off = ($(window).width() / 2) - (container.outerWidth() / 2);
    
    container.find(".modal_message_mid").width(width - 20)
    container.css("top", top_off).css("left", left_off);
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function buildExpanders(containerClass, headClass, bodyClass) {
    var exp = "." + containerClass;
    var head = "." + headClass;
    var body = "." + bodyClass;
    
    $(exp).each(
        function(i) {
            $(this).find(head).eq(0).bind("click", {b: $(this).find(body).eq(0)}, function (event) {
                var b = event.data.b;
                b.css("display").trim() == "none" ? b.slideDown(500) : b.slideUp(500);
            });
        }
    )
    
    $(head).css("cursor", "pointer")
}