/**
 * @author Fahrettin Kutyol
 */

var is_menu = false;
var is_submenu = false;
var menu_opacity = 0;
var submenu_opacity = 0;
var current_submenu_item = -1;
var current_mainmenu_link = null;
var fade_in_timer = null;
var fade_out_timer = null;
var original_top = null;
var mainMenu = dd('menu_wrapper');
var subMenu = dd('sub_menu');
var button = dd('productButton_shadow');
var Browser = {
    IE:     !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1),
    Opera:  navigator.userAgent.indexOf('Opera') > -1,
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1
}
var steps = Browser.IE ? 100 : 34;

// Short for document.getElementById(ID);
function dd(id) {
    if (typeof id == "object") 
        return id;
    else 
        return document.getElementById(id);
}

if (Browser.WebKit)
    dd('productButton_wrapper').style.position = "relative";

// Short for visibitity: Syntax v ( ID-Name , boolean - true for visible );
function vy(id, s) {
    dd(id).style.visibility = s ? "visible" : "hidden";
}

// Setting the opacity
function oy(o, v) {
    if (Browser.IE)
        o.style.filter = 'alpha(opacity=' + v + ')';
    else
        o.style.opacity = v / 100;
}

function show_products_menu() {
    is_menu = 1;
    vy(mainMenu, 1);
    checkPosition();
    fadeIn();
}

function hide_products_menu() {
    if (!is_menu)
        fadeOut();
}

function main_menu_out() {
    is_menu = 0;
    is_submenu = 0;
    setTimeout("hide_products_submenu()", 200);
    setTimeout("hide_products_menu()", 400);
}

function show_products_submenu() {
    is_submenu = 1;
    vy(subMenu, 1);
}

function hide_products_submenu() {
    if (!is_submenu) {
        vy('sub-' + current_submenu_item, 0);
        vy('sub_menu', 0);
        if (current_mainmenu_link != null)
            current_mainmenu_link.style.backgroundColor = "";
    }
}

function fadeIn() {
    if (fade_out_timer){
        clearTimeout(fade_out_timer);
        fade_out_timer = undefined;
    }
    if (menu_opacity <= 100) {
        menu_opacity += steps;
        oy(mainMenu, menu_opacity);
        oy(button, menu_opacity);
        fade_in_timer = setTimeout(fadeIn, 0);
    }
    else {
        if (Browser.IE)
            return;
        menu_opacity = 100;
        oy(mainMenu, 100);
        oy(button, 100);
    }
}

function fadeOut() {
    if (fade_in_timer) {
        clearTimeout(fade_in_timer);
        fade_in_timer = undefined;
    }
    if (menu_opacity >= 0) {
        menu_opacity -= steps;
        oy(mainMenu, menu_opacity);
        oy(button, menu_opacity);
        fade_out_timer = setTimeout(fadeOut, 0);
    }
    else {
        menu_opacity = 0;
        vy(mainMenu, 0);
    }
}

function checkPosition() {
    if (Browser.WebKit)
        return;
    if (!original_top) {
        if (typeof mainMenu.getBoundingClientRect != "undefined") {
            var menuRect = mainMenu.getBoundingClientRect();
            original_top = menuRect.top;
        }
        // Firefox 2.x hack
        else
            original_top = document.getBoxObjectFor(mainMenu).screenY - document.getBoxObjectFor(document.documentElement).screenY;
    }
    var innerHeight = document.documentElement.clientHeight;
    var menuDiff = innerHeight - (original_top + dd('menu_wrapper').offsetHeight);
    mainMenu.style.top = (menuDiff < 0) ? "" + (menuDiff + 30) + "px" : "30px";
}

function sub_item(no, item) {
    // if no = null return and set advice background color of the mainmenu to default
    if (!no) {
        hide_products_submenu();
        vy('sub_menu', 0);
        if (current_mainmenu_link != null)
            current_mainmenu_link.style.backgroundColor = "";
        return null;
    }
    // adjusting the width of the submenu panel
    subMenu.style.width = "825px";
    var tableWidth = dd('sub-' + no).offsetWidth;
    subMenu.style.width = tableWidth + "px";
    // setting the active (current) submenu
    if (current_submenu_item != -1)
        vy('sub-' + current_submenu_item, 0);
    vy('sub-' + no, 1);
    current_submenu_item = no;
    show_products_submenu();
    if (current_mainmenu_link != null)
        current_mainmenu_link.style.backgroundColor = "transparent";
    item.style.backgroundColor = "#eeeeee";
    current_mainmenu_link = item;
}
