﻿/// <reference path="jquery-1.3.2-vsdoc.js" />

// ************** ENABLE NAMESPACE FUNCTIONALITY **********
var Namespace =
{
    Register : function(_Name)
    {
        var chk = false;
        var cob = "";
        var spc = _Name.split(".");
        for(var i = 0; i<spc.length; i++)
        {
            if(cob!=""){cob+=".";}
            cob+=spc[i];
            chk = this.Exists(cob);
            if(!chk){this.Create(cob);}
        }
        if(chk){ throw "Namespace: " + _Name + " is already defined."; }
    },

    Create : function(_Src)
    {
        eval("window." + _Src + " = new Object();");
    },

    Exists : function(_Src)
    {
        eval("var NE = false; try{if(" + _Src + "){NE = true;}else{NE = false;}}catch(err){NE=false;}");
        return NE;
    }
}

// ************** BASE CLASS ***************
Namespace.Register("WavelinkCom");
WavelinkCom = function ()
{
	return {

		loadHomepageBanners: function (bannerCount)
		{
			$('#homepageBannerContainer')
			.before('<div id="bannerNav">')
			.cycle({
				fx: 'fade',
				speed: 1300,
				timeout: 9000,
				pager: '#bannerNav',
				delay: -4000,
				next: '#bannerNext',
				autostop: true,
				autostopCount: bannerCount + 1,
				pagerClick: function () { $('#homepageBannerContainer').cycle('pause'); }
			});
		},

		hideRollPop: function()
		{
			$("#rollPop").hide();
		}

	};
}


// *********** ROLLOVERS ************
Namespace.Register("WavelinkCom.Roll");
WavelinkCom.Roll = function ()
{
	return {

		rollTimeout: null,
		rollDivId: null,
		hoverTimeout: null,

		rollClearIt: function ()
		{
			clearTimeout(this.hoverTimeout);
			this.rollTimeout = setTimeout('r.rollHide()', 200);
		},

		rollPause: function ()
		{
			clearTimeout(this.rollTimeout);
		},

		showElement: function (elementId)
		{
			this.rollDivId = elementId;
			this.hoverTimeout = setTimeout("r.showElementAfterPause('" + elementId + "');", 200);
		},

		rollHide: function ()
		{
			document.getElementById(this.rollDivId).style.visibility = "hidden";
		},

		showElementAfterPause: function (elementId)
		{
			document.getElementById(elementId).style.visibility = "visible";
		}
	};
}

// *********** PROGRESSIVE ENHANCEMENT ************
Namespace.Register("WavelinkCom.Enhance");
WavelinkCom.Enhance = function ()
{
	return {

		navLinks: new Array("Products", "Solutions", "Support", "Partners", "Customers", "HowToBuy", "AboutUs"),

		initialize: function ()
		{
			if (document.getElementById)
			{
				$(document).ready(function ()
				{
					addGlobalEventHandlers();
				});
			}

			function addGlobalEventHandlers()
			{
				e.addMainNavRollovers();
				e.addHeaderSearchButton();
				e.miscGlobal();
			}
		},

		addMainNavRollovers: function ()
		{
			var navLinkPrefix = "topNavLink";

			for (i = 0; i < e.navLinks.length; i++)
			{
				var thisLinkText = e.navLinks[i];
				var thisLink = $("#" + navLinkPrefix + thisLinkText);
				var thisSubmenu = $("#menuDrop" + thisLinkText);

				// add dropdown functionality to applicable links
				if (thisSubmenu.length > 0)
				{
					var subMenuId = "menuDrop" + thisLinkText;
					var subMenu = document.getElementById("menuDrop" + thisLinkText);
					var link = document.getElementById(navLinkPrefix + thisLinkText);
					link.setAttribute("onmouseover", "e.hideAllNavDrops(); r.rollPause(); r.showElement('menuDrop" + thisLinkText + "');");
					link.onmouseout = function () { r.rollClearIt(); };
					subMenu.onmouseover = function () { r.rollPause(); };
					subMenu.onmouseout = function () { r.rollClearIt(); };

					// remove href
					if (thisLink.attr("id") != "topNavLinkProducts")
					{
						link.removeAttribute("href");
						link.setAttribute("class", link.getAttribute("class") + " noPointer");
					}
				}
			}
		},

		hideAllNavDrops: function ()
		{
			for (i = 0; i < e.navLinks.length; i++)
			{
				var thisDrop = $("#menuDrop" + e.navLinks[i]);
				if (thisDrop.length > 0)
					thisDrop.css("visibility", "hidden");
			}
		},

		addHeaderSearchButton: function ()
		{
			/*var searchButton = $("#btnHeaderSearch");
			searchButton.click(function () { document.formHeaderSearch.submit(); });
			searchButton.show();

			$("#btnHeaderSearchNoJs").hide();*/
		},

		searchBoxHandler: function (searchBox)
		{
			if (searchBox.value == "Search...")
			{
				searchBox.value = "";
				searchBox.removeAttribute("class");
			}

			else if (searchBox.value.trim() == "")
			{
				searchBox.value = "Search...";
				searchBox.setAttribute("class", "grayed");
			}
		},

		searchBoxOnload: function ()
		{
			var searchBox = document.getElementById("headerSearchText");
			if (searchBox)
			{
				searchBox.value = "";
				searchBox.setAttribute("onfocus", "e.searchBoxHandler(this)");
				searchBox.setAttribute("onblur", "e.searchBoxHandler(this)");
				this.searchBoxHandler(searchBox);
			}
		},

		miscGlobal: function ()
		{
			$("#rollPop").mouseout(function () { w.hideRollPop(); });
			this.searchBoxOnload();
		},

		videoLightboxes: function ()
		{
			// video lightbox
			$(document).ready(function ()
			{
				$("a[rel^='prettyPhoto']").prettyPhoto(
				{
					theme: 'facebook',
					show_title: false,
					opacity: 0.92,
					default_width: 640,
					default_height: 390
				}
				);
			});
		}
	};
}

// *********** MISC FUNCTIONS ************
Namespace.Register("WavelinkCom.Misc");
WavelinkCom.Misc = function ()
{
	return {

		clickTabLink: function (linkId)
		{
			var fireOnThis = document.getElementById(linkId);
			if (document.createEvent)
			{
				var evObj = document.createEvent('MouseEvents');
				evObj.initEvent('click', true, false);
				fireOnThis.dispatchEvent(evObj);
			}
			else if (document.createEventObject)
			{
				fireOnThis.fireEvent('onclick');
			}
		},

		addFunctionToOnload: function (functionString)
		{
			// call existing OnLoad functions
			var oldOnload = window.onload;
			if (oldOnload != null && typeof (oldOnload) == 'function')
				oldOnload();

			// call new onload functions
			eval(functionString);
		},

		openLiveChat: function (callingLink)
		{
			this.newWindow = window.open('http://service.velaro.com/visitor/requestchat.aspx?siteid=8390&showwhen=inqueue', 'VelaroChat', 'toolbar=no, location=no, directories=no, menubar=no, status=no, scrollbars=no, resizable=yes, replace=no'); this.newWindow.focus(); this.newWindow.opener = window; return false;
		}

	};
}

var w = new WavelinkCom();
var e = new WavelinkCom.Enhance();
var r = new WavelinkCom.Roll();
var m = new WavelinkCom.Misc();


String.prototype.trim = function ()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
};

function MM_openBrWindow(theURL, winName, features)
{ //v2.0
	window.open(theURL, winName, features);
}

function MM_preloadImages()
{ //v3.0
	var d = document;
	if (d.images)
	{
		if (!d.MM_p)
			d.MM_p = new Array();
		var i, j = d.MM_p.length, a = MM_preloadImages.arguments;
		for (i = 0; i < a.length; i++)
			if (a[i].indexOf("#") != 0)
			{
				d.MM_p[j] = new Image; d.MM_p[j++].src = a[i];
			}
	}
}

/*
//Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling)
{
	bubbling = bubbling || false;

	// Standard
	if (window.addEventListener)
	{
		element.addEventListener(type, expression, bubbling);
		return true;
	}

	// IE
	else if (window.attachEvent)
	{
		element.attachEvent('on' + type, expression);
		return true;
	}

	else return false;
}*/



//	function emailAddressPopUp(id)
//	{
//		window.open('/site/emailAddressPop.aspx?id=' + id, 'emailWindow', 'height=200, width=300, resizable=false, status=false');
//	}

//	function emailAddressByUserPopUp(user)
//	{
//		window.open('/site/emailAddressPop.aspx?user=' + user, 'emailWindow', 'height=200, width=300, resizable=false, status=false');
//	}

//	function clearothermenus()
//	{
//		clearmenu();
//	}
