// Custom iFactory menu.
// Co authored by Hiro and Tim.

var flgHide     = false;
var hideIds     = '';
var menuTimerID = 0;

var readmenuTimeout = '';
var level2_state = '';
var level3_state = '';

/**
 * Locks in current state
 * -> is set to true when a user actually clicks a link in the menu
 */
var flagLocked = false;

function showLevel(level, submenu)
{
    if (flagLocked) return false;
	if (level == 'main-sub') {
		createCookie('main-sub', submenu, 1);
	} else {
	    //eraseCookie('main-sub');
	}
	if (level == 'sub-sub') {		
		createCookie('sub-sub', submenu, 1);
	} else {
	    eraseCookie('sub-sub');
	}
	flgHide = false;
	$(level).show();
	if ($(submenu)) $(submenu).show();
}

function hideUL(className, exceptionID)
{
    if (flagLocked) return false;
    collection = $$('.'+className);
    collection.each(function(name, index) {
        if (name.identify() != exceptionID) {
            name.hide();
        }
    });
}

function cancelHidingMenu()
{
	flgHide = false;
}

function hideMenuActually()
{
    if (flagLocked) return false;
	var arr_hideIds = new Array();
	if (flgHide) {
		arr_hideIds = hideIds.split(',');
		for (var i = 0; i < arr_hideIds.length; i++ ) {
		    //alert(arr_hideIds[i]);
			$(arr_hideIds[i]).hide();
		}
	}
    clearTimeout(readmenuTimeout);
    //alert(Prototype.Browser.AppleWebKit);
    //alert(navigator.userAgent.indexOf('WebKit'))
    if (navigator.userAgent.indexOf('WebKit') != '-1') { // safari alternative
    //if (Prototype.Browser.WebKit) { // safari alternative
        //alert('noise');
	   readmenuTimeout = setTimeout("readMenu()", 1000); // (1 sec)
    } else {
	   readmenuTimeout = setTimeout("readMenu()", 1000); // (1 sec)
    }
}

function hideMenuNow(level)
{
    if (flagLocked) return false;
	flgHide     = true;
	hideIds     = level;
	hideMenuActually();	
}

function hideMenu(level)
{
    if (flagLocked) return false;
	flgHide     = true;
	hideIds     = level;
	menuTimerID = setTimeout("hideMenuActually()", 200);
	
}

function readMenu()
{
    if (flgHide) {
        restoreState();
    }
    //alert(flgHide);
}

function lockMenu(realLevel, className, exceptionID)
{
    if (realLevel == 1) {
        // reset level 2 and 3 cookies
        eraseCookie('main-sub');
        eraseCookie('sub-sub');
    } else if (realLevel == 2) {
        // reset level 3 cookies
        eraseCookie('sub-sub');        
    }
    flagLocked = true;
}

// When the document has finished loading hide sub divs
//document.observe('dom:loaded', function() {
//	$('subnav').hide();
//	$('subsubnav').hide();
//})

// Cookies
function createCookie(name,value,days)
{
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function eraseAllCookies()
{
	eraseCookie('main-sub');
	eraseCookie('sub-sub');
}

document.observe('dom:loaded', function()
{
	setTimeout("restoreState(1)", 100);
	setTimeout("sfHover()", 500);
});


function restoreState(run)
{
//    collection = $$('#main-sub ul');
//    collection.each(function(name, index) {
//        $(name).hide();
//    });
//    collection2 = $$('#sub-sub ul');
//    collection2.each(function(name, index) {
//        $(name).hide();
//    });
//    
//    if (run == 1) {
//    	level2_state = readCookie('main-sub');
//    	level3_state = readCookie('sub-sub');        
//    	if ($('main-sub')) $('main-sub').hide();
//    	if ($('sub-sub')) $('sub-sub').hide();
//    }
//	if (level2_state && !$('main-sub').visible()) {
//		if ($('main-sub')) $('main-sub').show();
//		if ($(level2_state)) $(level2_state).show();
//	}
	
	/**
	 * Display active top border
	 */
//	if (level3_state && !$('sub-sub').visible()) {
//		if ($('sub-sub')) $('sub-sub').show();
//		if ($(level3_state)) $(level3_state).show();
//	}
//	if (level3_state) {
//	    // make 3rd level red
//	    collection = $$('#sub-sub li.current');
//	    collection.each(function(name, index) {
//	        $(name).ancestors()[0].setStyle({borderTopColor: "#dd1513"});
//	    });
//	} else if (level2_state) {
//	    // make 2nd level red
//	    collection = $$('#main-sub li.current');
//	    collection.each(function(name, index) {
//	        $(name).ancestors()[0].setStyle({borderTopColor: "#dd1513"});
//	    });
//	} else {
//	    // make 1st level red
//	    collection = $$('#main li.current');
//	    collection.each(function(name, index) {
//	        $(name).ancestors()[0].setStyle({borderTopColor: "#dd1513"});
//	    });
//	}
}

function openProject(submenu)
{
    //alert(submenu);
    createCookie('main-sub', 'level-28', 1);
    if ($('item-1-'+submenu)) {
        //alert($('item-1-'+submenu).ancestors()[0].identify());
        
        createCookie('sub-sub', $('item-1-'+submenu).ancestors()[0].identify(), 1);
    }
    
}

//  IE hack to simulate :hover on "li" tags
//  As IE only accept :hover css pseudo element on "a" tags, this hack automatically
//  adds a "sfhover" class name to all li tags.
/******************************************************************************************/
sfHover = function()
{
	var sfEls = document.getElementsByTagName("ul");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" hoverIt";
		}
		sfEls[i].onmouseout=function() {
			this.className = this.className.replace(/hoverIt/, "");
		}
	}
}
//if (window.attachEvent) window.attachEvent("onload", sfHover);
