function gtPrnt(o,lvl)
{
    if (lvl <= 0)
        return null;
    if (lvl == 1)
        return o.parentNode;
    else
        return gtPrnt(o.parentNode,(lvl-1));
}
function gtEsBTgNm(o,tg)
{
    return o.getElementsByTagName(tg);
}
function gtEBId(id)
{
    return document.getElementById(id);
}
function gtVal(o)
{
    return o.value;
}
function exsts(src,vl)
{
    return (src.indexOf(vl) != -1);
}

    /**
    * Helps in accessing Quesrysting  values     
    * Usage: qs=new Querystring(); value = qs.get(param);
    **/
    function Querystring() {
    	this.params = new Object();
    
	    this.get = function (key){
		    var value = this.params[key]
    		if (value === null) value=null;	
	    	return value;
	    };
	    qs = window.location.search.substring(1);

	    if (qs.length == 0) return;

    	qs = qs.replace(/\+/g, ' ')
	
	    var args = qs.split('&') 
	
    	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
	    }
    }

    /**
    * Common wrapper to create an Insite widget
    * based on the URL querystring
    **/
    function createWidget(elemID, callBack)
    {
        if(!elemID)
        {
            return false;
        }
		var widget;
        var qs = new Querystring();
        var WID = qs.get(NL.WidgetParam);
        var PID = qs.get(NL.PartnerParam);
        var MID = qs.get(NL.MarketParam);
		var NLList = decodeURIComponent(qs.get(NL.NLListParam));
		if("undefined" !== NLList)
		{
			widget = new NLListWidget(NLList, MID, PID, elemID);
		}else
		{
			widget = new NLWidget(PID, WID, MID, elemID);
		}
        NL.render(widget, callBack);
        return true;
    }
    
    /**
    * sets the splash message in the specified object
    * msg - HTML message to be displayed
    * o - object to render in (if not specified looks for default splash label id)
    **/
    function setSplashText(msg, o)
    {     
        if(!o)
        {
            o = document.getElementById('splmsg');//try to get default element    
        }    
        if(o)
        {
            if(!msg)        
		    {
				o.parentNode.style.display ='none';
				return false;
			}
			o.innerHTML = msg;
            return true;
        }

        return false;
        
    }
    
	/**
	* Adds the specifed CSS URL to the DOM
	* Optionally specify a handle to the window
	* Used in the case of popups
	**/
	function addCSSURL(url, w)
	{		
		var doc = (w && w.document ? w.document : document);
		var list = url.split(',');	
		for(var i=0;i<list.length;i++){
			if(list[i] && list[i] != "")
			{
				var link = doc.createElement("link",true);        
				link.type = "text/css";
				link.href = list[i]; 
				link.rel = "stylesheet";
				doc.getElementsByTagName("head")[0].appendChild(link);            
			}
		}		
	}

    /**
    * 
    */
    function getStyle(e,cssDef,jsDef)
    {
        try{
            if(e && e.currentStyle)
            {           
		        return e.currentStyle[jsDef];
		    }
	        else if (e && window.getComputedStyle)
	        {
		        return document.defaultView.getComputedStyle(e,null).getPropertyValue(cssDef);
		    }
        }    
        catch(e)
        {        
        }
        return null;        
        
    }    
    
    function enlargeImage(e)
    {
        var bgImage = getStyle(e, 'background-image', 'backgroundImage');
        if(bgImage)
        {
            bgImage = bgImage.replace(/url\(|\)|'|"/gi,'');
            window.open(bgImage);
        } 
    }    
    
    function setLogo()
    {        
        var msnLogoDiv;        
        var img = document.getElementById('imgLogo');
        if(typeof(msnLogo) !== 'undefined')
        {
            msnLogoDiv =  document.getElementById(msnLogo);
        }
        if(msnLogoDiv && img)
        {
            var style = getStyle(msnLogoDiv, 'background-image', 'backgroundImage')
            img.src = (style && style !== 'none' ? style.replace(/url\(|\)|'|"/gi,'') : "/images/msft.gif");
        }
    }
    setLogo();
   
   
    var imageRetryCount = 0;
    var timer; 
    function setSplashImage()
    {                
        //set Interval and wait for 500ms for CSS containing
        //Splash Image to download if present
        if(NL && NL.RenderedWidget && typeof(NL.RenderedWidget.IsCSSLinked) !== "undefined" 
                    && NL.RenderedWidget.IsCSSLinked === true)
        {
            if(imageRetryCount === 0)
            {                
                timer = window.setInterval(setSplashImage, 200);
            }
            else if(imageRetryCount > 5)
            {                
                clearInterval(timer);
                return;
            }           
            imageRetryCount++;           
        }
        var img = document.getElementById("NLSplashImage");        
        var bgImage = getStyle(img, 'background-image', 'backgroundImage');         
        if(bgImage && bgImage != 'none' && img)
        {
            bgImage = bgImage.replace(/url\(|\)|'|"/gi,'');
            img.src =  bgImage;
            img.style.display = "block"; 
            var enlarge = document.getElementById("NLSplashImageEnlarge");
            if(enlarge)
            {
               enlarge.style.display = "block";
            }
            clearInterval(timer);
            
        }
		else if(img)
		{
			img.style.display = "none";			
		}
    }