var menuItemCurrent = null;
var menuItemHide = false;
var globalEvent;
var currItem =0;

function checkClick(ev)
{
    var objEvent = (ev == null ? window.event : ev);

	var agt = navigator.userAgent.toLowerCase();
    
    var isIE = (agt.indexOf('msie') != -1);
    var isFF = (agt.indexOf('firefox') != -1);
   
    var code = 0;
    
    if(isIE)
        code = objEvent.keyCode;    
    else if(isFF)
        code = objEvent.which;
            
    if(code == 13)
    {
		var btn = document.getElementById("btnLogin");
		if(btn != null) btn.click();
    }
}

function LocateDiv()
{
	var table = document.getElementById("tbMain");
	
	var div = document.getElementById("divMemosContainer");
	
	div.style.left = table.offsetLeft;
	div.style.top = table.offsetTop;
}

function CloseMemo(id)
{
	var memo = document.getElementById("memo" + id);
	if(memo != null)
		memo.style.display = "none";
}

/********************************************/

function showSubMenu(parent, id)
{
	menuItemHide = false;	
				
	
	if (menuItemCurrent != null && menuItemCurrent.id == "menuContainer" + id)
		return;
		
	if (menuItemCurrent)
		menuItemCurrent.style.visibility = "hidden";
		
	var item = document.getElementById("menuContainer" + id);
				
	if (!item) return;
	
	item.style.top = _offsetTop(parent) + 22 + "px";
	item.style.left = _offsetLeft(parent)-0 + "px";
		
	item.style.visibility = "visible";
	
	menuItemCurrent = item;
	
	//var td = document.getElementById("menuItem" + id);
	
	
	//if(td != null ) td.className = "topbuttonOn";
	
	
}

function hideSubMenu()
{
	/*
	alert(menuItemHide);
	alert(menuItemCurrent == null ? "null" : menuItemCurrent.id);
	*/

	//alert(document.getElementById("menuItem" + menuItemCurrent.id.substr(13,menuItemCurrent.id.length-13)));
	
	
	
	

	if (!menuItemHide || !menuItemCurrent)
		return;
				
	menuItemCurrent.style.visibility = "hidden";
	/*
	var td = document.getElementById("menuItem" + menuItemCurrent.id.substr(13,menuItemCurrent.id.length-13));
	
	if(td != null && td.id != "menuItem" + currItem) td.className = "topbutton";	
		*/
	menuItemCurrent = null;
	menuItemHide = false;	
}

/********************************************1*/




function _offsetTop(obj)
{
	var top = 0;
	for (; obj; obj=obj.offsetParent)
		top += obj.offsetTop;
	return top;
}

function _offsetLeft(obj)
{
	var left = 0;
	for (; obj && obj != document.body; obj=obj.offsetParent)
		left += obj.offsetLeft;
	return left;
}

// returns true if node a contains event.toElement/relatedTarget.
function containsToElement(a)
{
	var b = globalEvent.toElement ? globalEvent.toElement : globalEvent.relatedTarget;
	if(b == null) return;
	while (b.parentNode)
		if ((b = b.parentNode) == a)
			return true;
	return false;
}

/*
	Validate a form's elements according to varius attributes
*/
function validateForm(form, title, submit)
{
	var i, j, u, sum;
	var input;
	var valid;
	var sErrorMsg = "";

	for (i=0; i<form.elements.length; i++)
	{
		input = form.elements[i];
		// skip input when it's not rendered (ie. parent display:none)
		if (input.offsetHeight == 0) continue;
		valid = true;

		// Validate value according to element type and validation type
		switch (input.type.toLowerCase())
		{
		case "text":
		case "password":
		case "textarea":
		case "file":
			if (!input.getAttribute("validation"))
				input.setAttribute("validation", "string");
			if (input.getAttribute("mandatory"))
			{
				if (input.getAttribute("mandatory").toLowerCase() != "true" && input.value.length == 0)
					continue;
			}
			else
				if (input.value.length == 0)
					continue;
			switch (input.getAttribute("validation").toLowerCase())
			{
			case "string":
			case "password":
				if (input.value.length == 0)
					valid = false;
				break;
			case "integer":
				if (!/\d+/.test(input.value))
					valid = false;
				break;
			case "email":
				if (!/^[\w\.\-]+@[\w\-]+(\.\w+)+$/.test(input.value))
					valid = false;
				break;
			case "phone":
				if (!/^\+?\d+(-\d+)*$/.test(input.value))
					valid = false;
				break;
			case "id":
				j = input.value.toString();
				input.value = j.replace(/\D/g, "");
				if (/\d+/.test(input.value))
				{
					sum = 0;
					for (j=0; j<input.value.length; j++)
					{
						u = (j % 2 ? 2 : 1) * parseInt(input.value.charAt(input.value.length - j - 1));
						sum += u > 9 ? Math.floor(u / 10) + u % 10 : u;
					}
					if (sum % 10) valid = false;
				}
				else
					valid = false;
				break;
			case "compare":
				// Check the compareInput attribute
				if (input.getAttribute("compareInput"))
					if (input.value != form.elements[input.getAttribute("compareInput")].value)
						valid = false;
				break;
			default:
				var regExp = new RegExp(input.getAttribute("validation"), "im");
				valid = regExp.test(input.value);
			}

			// Validate max and min according to validation type
			if (valid == true)
			{
				switch (input.getAttribute("validation").toLowerCase())
				{
				case "integer":
					if (input.getAttribute("validmax"))
					{
						if (parseInt(input.value) > parseInt(input.getAttribute("validmax")))
							valid = false;
					}
					if (input.getAttribute("validmin"))
					{
						if (parseInt(input.value) < parseInt(input.getAttribute("validmin")))
							valid = false;
					}
					break;
				default:
					if (input.getAttribute("validmax"))
					{
						if (input.value.length > input.getAttribute("validmax")) valid = false;
					}
					if (input.getAttribute("validmin"))
					{
						if (input.value.length < input.getAttribute("validmin")) valid = false;
					}
					break;
				}
			}
			break;
		case "select-one":
			if (input.getAttribute("mandatory"))
				if (input.selectedIndex == 0)
					valid = false;
			break;
		case "select-multiple":
			if (input.getAttribute("mandatory"))
			{
				sum = 0;
				for (j=0; j<input.options.length; j++)
				{
					if (input.options[j].selected) sum++;
				}
				if ((!input.getAttribute("validmax")) && (!input.getAttribute("validmin")))
				{
					if (sum == 0) valid = false;
				}
				else
				{
					if (input.getAttribute("validmax"))
					{
						if (sum > input.getAttribute("validmax")) valid = false;
					}
					if (input.getAttribute("validmin"))
					{
						if (sum < input.getAttribute("validmin")) valid = false;
					}
				}
			}
			break;
		case "checkbox":
			if (input.getAttribute("mandatory"))
				valid = input.checked;
			break;
		}

		if (!valid)
		{
			if (input.getAttribute("validationError"))
				sErrorMsg += input.getAttribute("validationError") + "\n";
			else
				sErrorMsg += "Error in field " + input.name + "\n";
		}
	}
	if (sErrorMsg.length)
	{
		alert((title ? title + "\n" : "") + sErrorMsg);
		return false;
	}
	else
	{
		if (submit)
			form.submit();
		return true;
	}
}

/* Client-side access to querystring name=value pairs
	Version 1.2.3
	22 Jun 2005
	Adam Vandenberg
*/
function Querystring(qs) { // optionally pass a querystring to parse
	try{
	this.params = new Object();
	this.get=Querystring_get;
	
	
	if (qs == null)
		qs=location.search.substring(1,location.search.length);

	if (qs.length == 0) return;

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&'); // parse out name/value pairs separated via &
	
// split out each name=value pair
	for (var i=0;i<args.length;i++) {
		var value;
		var pair = args[i].split('=');
		var name = unescape(pair[0]);

		if (pair.length == 2)
			value = unescape(pair[1]);
		else
			value = name;
		
		this.params[name] = value;
	}
	}
	catch (err)
	{
		alert(err);
	}
}

function Querystring_get(key, default_) {
	// This silly looking line changes UNDEFINED to NULL
	if (default_ == null) default_ = null;
	
	var value=this.params[key];
	if (value==null) value=default_;
	
	return value;
}
function getQSvalues(key)
{
	qs=location.search.substring(1,location.search.length);

	if (qs.length == 0) return;

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&'); // parse out name/value pairs separated via &
	
	var arr = new Array();
	var j=0;
	for(var i=0; i < args.length; i++)
	{
		if(args[i].split("=")[0] == key)
		{
			arr[j] = args[i].split("=")[1];
			j++;
		}	
	}
	
	return arr;		
}
function writeHTML(html)
{
	document.write(html);
}

function ValidateSearch()
{
	if(document.getElementById("q").value.length < 2)
		return;
		
	document.getElementById("formSearch").submit();
}

function NoLink()
{
	alert("You must login to use this link");
	return;
}

