﻿function initialiseLoadingDisplay(){
    $("#loading").ajaxStart(function(){
        $(this).show();
    });
    $("#loading").ajaxStop(function(){
        $(this).hide();
    });
}

function initialiseAjax(){
    $(".ajax").unbind("click");
    $(".ajax").click(function(event){
        //alert(this.href);
        getPage(this.id);
        event.preventDefault();
        return false;
    });
}

function initialiseThreadbarAjax(){
    $(".threadbarajax").click(function(event){
        getPage(this.id,null,true);
        event.preventDefault();
        return false;
    });
}

function initialiseActions(){
    $(".pageaction").unbind("click");
    $(".pageaction").click(function(event){
        //alert("doing action");
        var componentid = $(document.getElementById(this.id + "_componentid")).attr("title");
        var formToProcess = $(document.getElementById(this.id + "_extendedDataForm")).attr("title");
        var extendedData = null;
        if (formToProcess.length > 0) {
            extendedData = extractFormData(formToProcess);
        }
        var validationFunction = $(document.getElementById(this.id + "_validationFunction")).attr("title");
        //alert(this.id);
        getAction(this.id,componentid,extendedData);
        event.preventDefault();
        return false;
    });
}

function executeAggregateComponentPostload(postLoad){
    try {
        //alert("postload :" + postLoad);
        eval(postLoad);
    }
    catch(ex){
        handleError("Error occured processing aggregate component postloads in Javascript .\nSource: [executeComponentPostload].\nDetail: " + ex.message);
    }
}

function initialiseHistory(initialid){
    $.history._cache = '/content/cache.htm';
    var historyObject = {"uniqueid" : initialid,"extendedData" : null}
    $.history(historyObject);
    $.history.callback = function(reinstate,cursor) {
        //manageHistoryLoad(reinstate,cursor);
        try {
            //alert('loading history id: ' + reinstate.uniqueid + '\nwith data : ' + reinstate.extendedData + '\ncursor : ' + cursor);
            
            getPage(reinstate.uniqueid,reinstate.extendedData,true);
        }
        catch(ex){}
    };
}

//MENU
function initialiseHoverMenus(){
    /*$(".showhovermenu").click(function(event){
        if (document.getElementById(this.id + "_hovermenu")) {
            //toggleHoverMenu(document.getElementById(this.id + "_hovermenu"),this);
        }
        else {
            hideAllHoverMenus();
        }
        event.preventDefault();
        return false;
    });*/
    $(".menu_hover_link").click(function(event){
        hideAllHoverMenus();
        event.preventDefault();
        return false;
    });
    
    $(".showhovermenu").mouseenter(function(event){
        var hoverMenuObject = document.getElementById(this.id + "_hovermenu");
        if (hoverMenuObject) {
            clearTimeout(document.getElementById(this.id + "_hovermenu").hoverhidetimeout);
            showHoverMenu(document.getElementById(this.id + "_hovermenu"),this);
        }
        else {
            hideAllHoverMenus();
        }
        event.preventDefault();
        return false;
    });
    
    $(".showhovermenu").mouseleave(function(event){
        var hoverMenuObject = document.getElementById(this.id + "_hovermenu");
        if (hoverMenuObject) {
            hideHoverMenu(hoverMenuObject);
        }
        event.preventDefault();
        return false;
    });
    
    $(".hovermenu").mouseenter(function(event){
        clearTimeout(this.hoverhidetimeout);
        event.preventDefault();
        return false;
    });
    
    
    $(".hovermenu").mouseleave(function(event){
        hideHoverMenu(this);
        event.preventDefault();
        return false;
    });
}

function toggleHoverMenu(menuObj,sourceObj){
    var hidden = $(menuObj).hasClass("display_none");
    if (hidden) {
        showHoverMenu(menuObj,sourceObj);
    }
    else {
        hideHoverMenu(menuObj);
    } 
}

function showHoverMenu(menuObj,sourceObj){
    hideAllHoverMenus();
    var sourceOffset = $(sourceObj).offset();
    var sourceHeight = $(sourceObj).height();
    var sourceWidth = $(sourceObj).width();
    var menuWidth = $(menuObj).width();
    var topAdjustment = 0;
    var leftAdjustment = -4;
    
    var hoverright = $(sourceObj).hasClass("hover_right");
    var menuTop = sourceOffset.top + sourceHeight + topAdjustment;
    var menuLeft = null;
    if (hoverright) {
        menuLeft = sourceOffset.left + sourceWidth - menuWidth - leftAdjustment;
    }
    else {
        menuLeft = sourceOffset.left + leftAdjustment;
    }
    //alert("showing..." + menuObj.id + "\n sourcetop" + sourceOffset.top + "\n sourceleft" + sourceOffset.left + "\n sourceHeight" + sourceHeight + "\n\n menuTop" + menuTop + "\n menuLeft" + menuLeft);
    $(menuObj).css("top",menuTop);
    $(menuObj).css("left",menuLeft);
    $(menuObj).removeClass("display_none");
}

function hideHoverMenu(menuObj){
    //alert("hiding...");
    menuObj.hoverhidetimeout = window.setTimeout(function(){
        $(menuObj).addClass("display_none");
    },450);
}

function hideAllHoverMenus(){
    //alert("hiding all...");
    $(".hovermenu").addClass("display_none");
}

//LEFT MENU
function initialiseLeftMenuToggles(){
    $(".toggleleftmenu").unbind("click");
    $(".toggleleftmenu").click(function(event){
        if (this.id.length > 0) {
            toggleLeftMenu(this);
        }
        else {
            handleError("The left menu toggle has no ID specified");
        }
        event.preventDefault();
        return false;
    });
}

function toggleLeftMenu(source) {
	try {
		var image = document.getElementById(source.id + "_image");
		var footer = document.getElementById(source.id + "_footer");
		if (footer) {
			if (footer.style.display == "none") {
				//$(footer).show(50);
				footer.style.display = "block";
				image.src = "/images/backend_arrow_plus.gif";
			}
			else {
				//$(footer).hide(50);
				footer.style.display = "none";
				image.src = "/images/backend_arrow_minus.gif";
			}
		}
		else {
			handleError("Item " + source.id + "_footer was not found in the document");
		}
	}
	catch (ex) {
		handleException(ex,"toggleMenu","Main");
	}
}

function initialiseLoginSlide(){
    $(".signin").click(function(e) {          
		e.preventDefault();
        $("fieldset#signin_menu").toggle();
		$(".signin").toggleClass("menu-open");
		$("#txtUsername").focus().select();
    });

	$("fieldset#signin_menu").mouseup(function() {
		return false;
	});
	
	$(document).mouseup(function(e) {
		if($(e.target).parent("a.signin").length==0) {
			$(".signin").removeClass("menu-open");
			$("fieldset#signin_menu").hide();
		}
	});	

	//$('#forgot_username_link').tipsy({gravity: 'w'});
}

/*
function initialiseLoginSlide(){

            $(".signin").click(function(e) {          
				e.preventDefault();
                $("fieldset#signin_menu").toggle();
				$(".signin").toggleClass("menu-open");
            });

			$("fieldset#signin_menu").mouseup(function() {
				return false
			});

			$(document).mouseup(function(e) {
				if($(e.target).parent("a.signin").length==0) {
					$(".signin").removeClass("menu-open");
					$("fieldset#signin_menu").hide();
				}
			});	
			
			$('#forgot_username_link').tipsy({gravity: 'w'});
}*/
