
function openExtLink(theURL) 
{  
  window.open(theURL,"newWin","toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=700");
}

function openFlashPhoneSuite(theURL) 
{  
  window.open(theURL,"newWin","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=553,height=330");
}

function openFlashMobileDeviceManager(theURL) 
{  
  window.open(theURL,"newWin","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=820,height=620");
}

function openIntegratedMessaging(theURL) 
{  
  window.open(theURL,"newWin","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=600,height=320");
}

function openFlashWWD(theURL) 
{  
  window.open(theURL,"newWin","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=560,height=395");
}

function openFlashEdge(theURL) 
{  
  window.open(theURL,"newWin","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=580,height=500");
}

function openMobileEdge(theURL) 
{  
  window.open(theURL,"newWin","toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=590,height=395");
}


/**** general functions for use in nav/quick view scripts ***/
//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted
//***e.g. AttachEvent(window,'load',MyFunctionNameWithoutParenthesis,false);

function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	}
} 

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}





function AddLoadEvent(func)
{
	var oldonload = window.onload;

	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}




function getElementsByClassName(oElm, strTagName, strClassName)
{	
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	
	for(var i=0; i<arrElements.length; i++)
	{
		oElement = arrElements[i];      
		if(oRegExp.test(oElement.className))
		{
		    arrReturnElements.push(oElement);
		}   
	}
	
	return (arrReturnElements)
}




//***Adds a new class to an object, preserving existing classes
function AddClass(obj,cName){ KillClass(obj,cName); return obj && (obj.className+=(obj.className.length>0?' ':'')+cName); }

//***Removes a particular class from an object, preserving other existing classes.
function KillClass(obj,cName){ return obj && (obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),'')); }

//***Returns true if the object has the class assigned, false otherwise.
function HasClass(obj,cName){ return (!obj || !obj.className)?false:(new RegExp("\\b"+cName+"\\b")).test(obj.className) }



/*** Removes whitespace-only text node children ***/
function cleanWhitespace (element) {
  for (var i = 0; i < element.childNodes.length; i++) {
    var node = element.childNodes[i];
    if (node.nodeType == 3 && !/S/.test(node.nodeValue))
      node.parentNode.removeChild(node);
  }
}

