
		

var Utils = 
{

// --------------------------------------------------------------------------------------------- Menu Functions
	InitHoverMenu: function() {	
		if (document.all && document.getElementById) {
			for (a = 0; a < arguments.length; a++) {
				navRoot = document.getElementById(arguments[a]);
				navLis = navRoot.getElementsByTagName('li');
				for (i=0; i < navLis.length; i++) {
					node = navLis[i];
					if (node.nodeName == "LI") {
						node.onmouseover = function() {
							this.className += " hover";
						}
						node.onmouseout = function() {
							this.className = this.className.replace(" hover", "");
						}
					}
				}
			}
		}
	},

// ----------------------------------------------------------------------------------------------- Cookies
// ------------------------- Create Cookie
	ReadCookie: function(name)
	{ 
		var re = new RegExp(name+"=[^;]+", "i"); //construct RE to search for target name/value pair
		
		if (document.cookie.match(re)) //if cookie found
		{
			return document.cookie.match(re)[0].split("=")[1]; //return its value
		}
		
		
		return null;
	},
	
	CreateCookie: function(name, value, days)
	{
		if (typeof days!="undefined") //if set persistent cookie
		{
			var expireDate = new Date();
			var expstring = expireDate.setDate(expireDate.getDate()+days);
					
			document.cookie = name + "=" + value + "; path=/; expires=" + expireDate.toGMTString();
		}
		else //else if this is a session only cookie
		{
			document.cookie = name + "=" + value;
		}
	},
	
// ------------------------------------------------------------------------------------------------ Class Names

	HasClassName: function(element, className)
	{
		var elementClassName = element.className;
		return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
	},

	AddClassName: function(element, className)
	{
		if (!this.HasClassName(element, className))
		{
			
			element.className += (element.className ? ' ' : '') + className;
		}
		
		return element;
	},

	RemoveClassName: function(element, className)
	{	
		element.className = this.Strip(element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' '));
		
		return element;
	},
	
	Strip: function(string)
	{
		return string.replace(/^\s+/, '').replace(/\s+$/, '');
  	},

// ------------------------------------------------------------------------------------------------------ Binding Functions
	Bind: function()
	{		
		var ToArray = this.ToArray;
		
		var args = ToArray(arguments);			
		var object = args.shift();
		var __method = args.shift();
		
		return function() {
			return __method.apply(object, args.concat(ToArray(arguments)));
		}
	
	},
	
	BindAsEventListener: function()
	{ 
		var args = this.ToArray(arguments);
		var object = args.shift();
		var __method = args.shift();

		return function(event) {
			return __method.apply(object, [event || window.event].concat(args));
		}
	
	},
	
	BindAsEventListenerWithOriginalThis: function()
	{ 
		var args = this.ToArray(arguments);
		var object = args.shift();
		var __method = args.shift();

		
		return function(event) {		
			return __method.apply(object, [event || window.event].concat([this]).concat(args));
		}
	
	},
	
	ToArray: function(iterable)
	{
		if (!iterable) return [];
		
		var length = iterable.length || 0;
		var results = new Array(length);
		
		while (length--) results[length] = iterable[length];
		
		return results;
	},
	
// --------------------------------------------------------------------------------------------- Display Element	
	DisplayElement: function(elementId){
		var showElement = document.getElementById(elementId);
		showElement.style.display = showElement.style.display == 'none' ? 'block' : 'none';
	}	
};


// ----------------------------------------------------------------------------------------------- Get Attributes	
// oElm: containing node/element
// strTagName: tag name containing the attribute
// strAttributeName
// strAttributeValue



	function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue) {

		var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)", "i") : null;
		var oCurrent;
		var oAttribute;
		for(var i=0; i<arrElements.length; i++) {
		    oCurrent = arrElements[i];
		    if (strAttributeName.toLowerCase() != "class")
		        oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		    else
		        oAttribute = oCurrent.className;
			
			if (typeof oAttribute == "string" && oAttribute.length > 0) {			    
			    if (typeof strAttributeValue == "undefined" || !strAttributeValue || (oAttributeValue && oAttributeValue.test(oAttribute))) {
					arrReturnElements.push(oCurrent);
				}
			}
		}
		return arrReturnElements;
	}
	
	
// -------------------------------------------------------------------------------------------------------- Cookies 
// ------------------------- Create Cookie
function createCookie(name,value,days) {

	var expires = '';
	var domain = '';

	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = ';expires='+date.toGMTString();
	}
	
	if (cookieDomain && cookieDomain != '' && cookieDomain.toLowerCase() != 'localhost') {
		domain = ';domain='+cookieDomain;
	}
	
	document.cookie = name + '=' + value + expires + ';path=/' + domain;
}
// ------------------------- Reads Cookie 
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;
}

// ------------------------- Erases Cookie
function eraseCookie(name) {
	createCookie(name,"",-1);
}

// ------------------------- Tests Cookie
function testCookie(){
	
	createCookie("test","true");
	if(readCookie("test")==null) {
	   	alert("You must enable cookies in order to login to this site.");
		return false;
	}	
	
	eraseCookie("test");
	
	return true;
}

// ------------------------- Always called to make login effective
function CustomerLogin(customerId, customerPackage, customerLogged, sessionKey, customerLogin){

	// var valuesPassed = "customerId: " + customerId + " | customerPackage: " + customerPackage + " | customerLogged : " + customerLogged + " | sessionKey : " + sessionKey + "CustomerLogin: " + customerLogin;
	
	// Test if cookies enabled
	if (testCookie()) {
		cookiesExpiry = (customerLogged ? 14 : -1);
		
		createCookie("customerId", customerId, cookiesExpiry);
		createCookie("customerPackage", customerPackage, cookiesExpiry);
		createCookie("customerLogged", customerLogged, cookiesExpiry);
		createCookie("sessionKey", sessionKey, cookiesExpiry);
		createCookie("customerLogin", customerLogin, cookiesExpiry);
	}
	
	if (customerLogged) {
		var LoginRedirectURL = readCookie("LoginRedirectURL");
		eraseCookie("LoginRedirectURL");
		
		if (LoginRedirectURL && LoginRedirectURL != "") {
			window.location = LoginRedirectURL;
		}
	}
	

	
	if (jx)
	{
		jx.load('UserControls/CheckAccess.aspx', checkAccess_callback);	
	}
	//checkHomeSubscribeLinks(customerLogged);
}


// -------------------------------------------------------- Tree View
function TreeView(theLink){
	if(theLink.parentNode.className == 'expand'){
		theLink.parentNode.getElementsByTagName('ul')[0].style.display = 'block';
		theLink.parentNode.className = 'close';
	} else {
		theLink.parentNode.getElementsByTagName('ul')[0].style.display = 'none';
		theLink.parentNode.className = 'expand';
	}
	
	
}



// ------------------------- flashobject
function RunLoginPortlet(){
document.write("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,14,0\" width=\"600\" height=\"60\" id=\"loginFlash\" border=\"0\">\n");
document.write("<param name=\"src\" value=\"" + loginSwfUrl + "\"/>\n");
document.write("<param name=\"wmode\" value=\"transparent\"/>\n");
document.write("<param name=\"allowScriptAccess\" value=\"always\"/>\n");
document.write("<param name=\"quality\" value=\"high\"/>\n");
document.write(" <!--[if !IE]>--> \n");
document.write("<object type=\"application/x-shockwave-flash\" data=\"" + loginSwfUrl + "\" allowScriptAccess=\"always\" width=\"600\" height=\"60\">\n");
document.write(" <!--<![endif]-->\n");
document.write(" <div class=\"flleft\">\n");
document.write(" <img src=\"/home/images/warning_icon.gif\" alt=\"warning icon\" />\n");
document.write(" </div>\n");
document.write(" <p>No Flash plugin detected!</p> \n");
document.write(" <!--[if !IE]>-->\n");
document.write("</object>\n");
document.write(" <!--<![endif]-->\n");
document.write("</object>\n");
}
