    // Menu globals
    var openlayer;
    var openlayer_flag;
    var timer;
    var timer_flag;
    // delay for menu
    var timeoutdelay = 1000;

	// General global
    var loaded = false;

function openMenu(thelay)
    {
		if(!loaded)
			return true;

		if(thelay.length > 0) {

            hideAll();

			if(!openlayer_flag) {
                openlayer = new ct_layer(thelay);
                openlayer.show();

                openlayer_flag = true;
            }
        } else 
			return false;

        return true;
    }

    function hideAll()
    {
        if(!loaded)
            return true;

        if(openlayer_flag)
            openlayer.hide();
    
		openlayer_flag = false;

        clearTime();
    }

    function startTime()
    {
        if(document.all)
            return;

        if(!loaded)
            return;

		if(!timer_flag) {
		    timer = window.setTimeout(hideAll, timeoutdelay);
            timer_flag = true;
        }

    }

    function clearTime()
    {
        if(document.all)
            return;

        if(!loaded)
            return;

		if(timer_flag)
            window.clearTimeout(timer);

		timer_flag = false;
    }

    function cleanUpAll()
    {
        if(!loaded)
            return true;

		// Make menufeatures unavailible when cleaning...
        loaded = false;

        // Clear the menu timer
		if(timer_flag)
            window.clearTimeout(timer);
		
        timer_flag = false;

        // Clean the layer settings
        if(openlayer_flag)
            openlayer.hide();
    
        openlayer_flag = false;
    
        loaded = true;

		// return a success
		return true;
    }

function getAbsolutePos(el){
	for (var lx=0,ly=0;el!=null;
		lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);    
	return {x:lx,y:ly}
}




function printArticle( artUrl ){
    behind = window.open(artUrl ,'printwin','height=620,width=620,status=yes,toolbar=yes,directories=no,menubar=no,location=no,resizable=no,scrollbars=yes');
}

/*
    function that loops trough a given set of form elements and validates its.
    
    @param formname: the form name
    @param fields: array of strings containing names of the fields to search.
    @param types: array determing type of the string above, 1 is string av 2 is integer
    @param aliases: the field aliases used in the error message.
*/
function validateForm(formname,fields,types,aliases) {
	for (i=0;i<fields.length;i++) {

        // First, get the value out
        var elem = document.forms[formname].elements[fields[i]];
        var val = "";

        // Then switch between different form elements.
        if (elem.type == "text" || elem.type == "password" || elem.type == "checkbox") {
            val = elem.value;
            
            if (elem.type == "checkbox" && elem.checked == false) {
                val = "";
            }
            
        } else if (elem.type == "select-one" || elem.type == "select-multiple") {
            val = elem.options[elem.selectedIndex].value;
        }  else {
            // build on here as we need more.
            val = elem.value;
        }

        // Check whether there are any content at all
		if (val.length ==0 ) {
			alert("The field " + aliases[i] + " cannot be empty");
            elem.focus();
			return false;
		}

        // Check for valid integer.
        if(types[i]==2) {
            if (isNaN(val)) {
				alert("The field " + aliases[i] + " is not an integer.");
                elem.focus();
				return false;
            }
        }
    }
    return true;
}


