	window.namespace	= new function()
	{
		function _main(sNamespace, bCreate, bReturnObj)
		{
			var oNamespace	= null;

			try
			{
				var i				= 0;
				var oParent			= window;
				var aNamespace		= sNamespace.split(/\./g);
				var nNamespaceCount	= aNamespace.length;
				var sNS;

				while (i < nNamespaceCount)
				{
					sNS	= aNamespace[i];
					if (typeof(sNS) != 'string' || sNS.length < 1)
					{
						throw new Error('Invalid namespace');
					}

					// If cerate flag parameter is true and the namespace does not exist, create it
					if (bCreate & !oParent[sNS])
					{
						oParent[sNS]	= {};
					}

					// Set the parent object and increment the index for the next iteration
					oParent	= oParent[sNS];
					i++;
				}
				oNamespace	= oParent;
			}
			catch (ex)
			{
				return (bReturnObj === true)? null : false;
			}

			return (bReturnObj === true)? oNamespace : true;
		}
		
		this.create		= function(sNamespace)
		{
			return _main(sNamespace, true, true);
		};

		this.exists		= function(sNamespace)
		{
			return _main(sNamespace, false, false);
		};
	};

	namespace.create("YAHOO");	
	namespace.create("YAHOO.YMusic_Domains");
	namespace.create("YAHOO.Video");
	namespace.create("YAHOO.Radio");
	namespace.create("YAHOO.Sample");
	namespace.create("YAHOO.YME");
	namespace.create("YAHOO.WMP");		

	var QueryString = new function() {
		this.qsObj = {};	
		
		this.get = function(name) {
			name = name.toLowerCase();
			if (typeof this.qsObj[name] != "undefined") {
				return this.qsObj[name];
			}
			return false;
		}
				
		this._init = function(){
			var qsArr = document.location.search.substring(1).split("&");			
			for (var i=0;i<qsArr.length;i++) {
				var nvPair = qsArr[i].split("=");				
				this.qsObj[nvPair[0].toLowerCase()] = nvPair[1];
			}
			
		}
		
		this._init();
	}();

	var clientIdLookup = {
		"us":   "1",
		"fr":   "512",
		"it":   "509",
		"e1":   "534",
		"es":   "510",
		"de":   "511",
		"uk":   "505",
		"au":   "609",
		"ca":   "613"		
	};	
	
	var radioIdLookup = {
		"us":   "1",
		"fr":   "630",
		"it":   "654",
		"e1":   "662",
		"es":   "638",
		"de":   "646",
		"uk":   "600",
		"au":   "608",
		"ca":   "626"		
	};				

	switch (true) {
		case (Boolean(/\.fr\./.exec(document.location))):
			YAHOO.Intl = "fr";			
			break;
		case (Boolean(/\.it\./.exec(document.location))):
			YAHOO.Intl = "it";			
			break;
		case (Boolean(/\.e1\./.exec(document.location))):
			YAHOO.Intl = "e1";			
			break;
		case (Boolean(/\.es\./.exec(document.location))):
			YAHOO.Intl = "es";			
			break;
		case (Boolean(/\.de\./.exec(document.location))):
			YAHOO.Intl = "de";			
			break;
		case (Boolean(/\.uk\./.exec(document.location))):
			YAHOO.Intl = "uk";			
			break;								
		case (Boolean(/\.au\./.exec(document.location))):
			YAHOO.Intl = "au";		
			break;
		case (Boolean(/\.ca\./.exec(document.location))):
			YAHOO.Intl = "ca";		
			break;														
		default:
			YAHOO.Intl = "us";
	}
	
	switch (true) {
		case (Boolean(/\.dev\./.exec(document.location))):
			YAHOO.Env = "dev";
			break;
		case (Boolean(/\.stage\./.exec(document.location))):
			YAHOO.Env = "stage";
			break;
		default:
			YAHOO.Env = "";					
	}
	
	YAHOO.Intl = QueryString.get("country") ? QueryString.get("country").toLowerCase() : YAHOO.Intl;	
								
	YAHOO.Video.defaultClientID = clientIdLookup[YAHOO.Intl];

	YAHOO.Radio.defaultClientID	= clientIdLookup[YAHOO.Intl];

	YAHOO.Sample.isActive		=	Boolean(/Microsoft Internet Explorer/.exec(navigator.appName));	

	YAHOO.YME.installed			=	hasYME();

	YAHOO.WMP					=	getWMP();
	
	function hasYME()
	{
		var ymeGrid;
		var hasYME = "0";
		try
		{
			ymeGrid = new ActiveXObject("YMP.YMPDatagrid.1");
			if (ymeGrid)
			{
				return true;
			}
		}
		catch (e)
		{
			return false;
		}
		return false;
	}

	function getWMP()
	{
		var windowsmedia = {};
		try
		{
			oWMP = new ActiveXObject('WMPlayer.OCX.7');
			if (oWMP)
			{
				windowsmedia.installed = true;
				windowsmedia.version=parseFloat(oWMP.versionInfo);
				if (windowsmedia.version.toString().length == 1) windowsmedia.version+= '.0';
			}
		}
		catch(e) {}
		return windowsmedia;
	}

	namespace.create("YAHOO.YMusic_Domains");
	namespace.create("YAHOO.Video");
	namespace.create("YAHOO.Radio");
	namespace.create("YAHOO.Sample");
	namespace.create("YAHOO.YME");
	namespace.create("YAHOO.WMP");

	//Yahoo Domains
	YAHOO.YMusic_Domains.video	        =	getVideoPath(YAHOO.Env, YAHOO.Intl);
	YAHOO.YMusic_Domains.cosmosvideo    =	getCosmosPath(YAHOO.Env, YAHOO.Intl);
	YAHOO.YMusic_Domains.music	        =	document.domain;
	YAHOO.YMusic_Domains.sample	        =	getSamplePath(YAHOO.Env, YAHOO.Intl);
	

	// ------------------------------------------------------------------

	// Modified Adobe workaround for forced user activation of ActiveX object in IE

	function AC_Generateobj(objAttrs, params, embedAttrs, doc)
	{
		var str = ['<object '];

		for (var i in objAttrs)
		{
		  str[str.length] = i + '="' + objAttrs[i] + '" ';
		}
		str[str.length] = '>';
		for (var i in params)
		{
		  str[str.length] = '<param name="' + i + '" value="' + params[i] + '" /> ';
		}
		str[str.length] = '<embed ';
		for (var i in embedAttrs)
		{
		  str[str.length] = i + '="' + embedAttrs[i] + '" ';
		}
		str[str.length] = ' ></embed></object>';

        if(doc)
        {
            doc.write(str.join(''));
        }
		else
		{
		    document.write(str.join(''));
		}
	}
	function AC_FL_RunContent()
	{
		var ret = AC_GetArgs ( arguments, "flash" );
		AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs, ret.document);
	}

	function AC_WMP_RunContent()
	{
		var ret = AC_GetArgs( arguments, "wmp" );
		AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
	}

	function AC_GetArgs(args, objectType)
	{
		switch (objectType)
		{
			case "flash":
				var classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000";
				var mimeType = "application/x-shockwave-flash";
				var codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0";
				break;
			case "wmp":
				var classid = "CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95";
				var mimeType = "application/x-oleobject";
				var codebase = "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";
				break;
			default:
		}

		 var ret = new Object();
		 ret.embedAttrs = new Object();
		 ret.params = new Object();
		 ret.objAttrs = new Object();
		 for (var i=0; i < args.length; i=i+2)
		 {
			var currArg = args[i].toLowerCase();
			switch (currArg)
			{
				case "classid":
					break;
				case "pluginspage":
					ret.embedAttrs[args[i]] = args[i+1];
					break;
				case "src":
				case "movie":
					ret.embedAttrs[args[i]] = args[i+1];
					if (objectType == "flash")
					{
						ret.params["movie"] = args[i+1];
					}
					break;
				case "onblur":
				case "oncellchange":
				case "onclick":
				case "ondblClick":
				case "ondrag":
				case "ondragend":
				case "ondragenter":
				case "ondragleave":
				case "ondragover":
				case "ondrop":
				case "onfinish":
				case "onfocus":
				case "onhelp":
				case "onmousedown":
				case "onmouseup":
				case "onmouseover":
				case "onmousemove":
				case "onmouseout":
				case "onkeypress":
				case "onkeydown":
				case "onkeyup":
				case "onload":
				case "onlosecapture":
				case "onpropertychange":
				case "onreadystatechange":
				case "onrowsdelete":
				case "onrowenter":
				case "onrowexit":
				case "onrowsinserted":
				case "onstart":
				case "onscroll":
				case "onbeforeeditfocus":
				case "onactivate":
				case "onbeforedeactivate":
				case "ondeactivate":
				case "type":
				case "codebase":
					ret.objAttrs[args[i]] = args[i+1];
					break;
				case "width":
				case "height":
				case "align":
				case "vspace":
				case "hspace":
				case "class":
				case "title":
				case "accesskey":
				case "name":
				case "id":
				case "tabindex":
					ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
					break;
				case "document":
				    ret.document = args[i+1];
				    break;
				default:
					ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
			}
	  }
	  if (classid) ret.objAttrs["classid"] = classid;
	  if (mimeType) ret.embedAttrs["type"] = mimeType;
	  return ret;
	}

    YAHOO.UseCosmos = Boolean(/cosmos=1/.exec(document.cookie) || navigator.userAgent.toLowerCase().indexOf('mac') > -1 );
    
    
    // conditionalize for other intls
	YAHOO.ShowId = (YAHOO.Intl == "ca") ? 'promo/digdis.xml' : false;        
    
   
    
    //************************************  DEPRICATED VIDEO FUNCTIONS ***************************
	function playMyVideos() { playVideo('',{show:'p/m.xml'}); }
	function playVideos( iVideoID, sPopupCheckerURL, sVideoShow, iSkinID, bForceSplash, iBandwidth, sVO, sRD ){var args = {};if(hasValue(sVideoShow)) args["show"] = sVideoShow; if (YAHOO.ShowId) args["show"] = YAHOO.ShowId; if(hasValue(iSkinID)) args["skin"] = iSkinID;if(hasValue(sPopupCheckerURL))args["destURL"] = sPopupCheckerURL;if(hasValue(sRD)) args["rdPath"] = sRD;playVideo(iVideoID, args);}
	function playLAUNCHVideo( videoID, bandwidth, vo, showPath, playerSkin, forceSplash, clientID, sPopupCheckerURL ){var args = {};if(hasValue(sPopupCheckerURL))args["destURL"]= sPopupCheckerURL;if(hasValue(showPath))args["show"]= showPath;if(hasValue(playerSkin))args["skin"]= playerSkin;if(hasValue(forceSplash))args["splash"]= forceSplash;playVideo( videoID, args );}
	//********************************************************************************************
	
	function hasValue(param)
	{
	    if(typeof(param) == "undefined") return false;
	    if(typeof(param) == undefined) return false;
	    if(param == '') return false;
	    
	    return true;
	}
	
	function playCosmosVideo(videoID, args)
	{
		var stationID = (args.stationID != null) ? args.stationID : "";      

        var cosmosPlayerURL = YAHOO.YMusic_Domains.cosmosvideo + "?vid=" + videoID + "&stationId=" + stationID;
        var destURL = (args.destURL != null) ? args.destURL : '';

        //cosmosPlayerURL += "&curl=" + destURL;
        var failURL = "/singleVideo?f=1&vid=" + videoID;
        var videoWin = CommonWindowOpener.openWindow(cosmosPlayerURL, 'videoPlayerWindow', 'WIDTH=960,HEIGHT=664,scrollbars=yes', failURL, destURL);
	}
		
	function playVideo( iVideoID, args )
	{
		// in canada later need to deal with top.document.domain to find out if intl is cosmos ready
	    if ( YAHOO.UseCosmos )
	    {
	        playCosmosVideo( iVideoID, args );
	    }
	    else
	    {
	    
		    var	playURL		= getVideoServerDomain() + "/player/default.asp?";
		    var queryString = "";
		    var destURL     = "";
		    var cid         = YAHOO.Video.defaultClientID;
    		
		    queryString += "vid=" + iVideoID + "&";
    		
		    if(args)
		    {
			    if(args.rdPath)
			    {
				    playURL = addRedirect(args.rdPath, playURL);
			    }
    			
			    if(args.show)
			    {
				    queryString+= "sx=" + args.show + "&";
			    }
			    else
			    {
				    if(isNaN(iVideoID)) return false;
			    }
    				
			    if(args.skin)		queryString+= "ps=" + args.skin + "&";
			    if(args.splash)		queryString+= "fs=" + args.splash + "&";
			    if(args.destURL && args.destURL != "")	destURL = args.destURL;
			    if(args.cid)	    cid = args.cid;
		    }

		    queryString += "cid=" + cid;
		    //queryString += "&curl=" + ((destURL != "")? encodeURIComponent(destURL) : encodeURIComponent(document.location));

		    playURL += queryString;
    	
		    var failURLQS = getFailQS(args);
		    var failURL = YAHOO.YMusic_Domains.music + "/relaunch/?vid=" + iVideoID + "&fp=1&app=video" + failURLQS;
    		
		    var videoWin = CommonWindowOpener.openWindow(playURL, 'videoPlayerWindow', 'WIDTH=690,HEIGHT=520', failURL, destURL);
        }
	}

	function playRadio(p, m, d, args)
	{
		var playURL = getRadioServerDomain() + '/radio/player/default.asp?';
		var queryString = "";
		var destURL = "";
		var clientID = YAHOO.Radio.defaultClientID || 1;
		
		if(typeof(p) == "undefined" || (typeof(p) == "object" && typeof(m) == "undefined") )
		{
			if( typeof(p) == "object" ) args = p;
			
			p=0;
			m=0;
			d=0;
		}
		
		queryString += 'p=' + p + '&m=' + m + '&d=' + d;
		if (arguments[4] != null) qs += '&amp;' + arguments[4];
		
		if(args)
		{
			if(args.rdPath)
			{
				playURL = addRedirect(args.rdPath, playURL);
			}
			if(args.clientStationID) qs += "&clientStationID=" + args.clientStationID;
			if(args.clientStationID) qs += "&clientStationID=" + args.clientStationID;
			if(args.destURL)	destURL	= args.destURL;
			if(args.clientID)	clientID = args.clientID;
		}
	
		playURL+=queryString + "&clientID=" + clientID;
		
		var failURLQS = getFailQS(args);
		var failURL = YAHOO.YMusic_Domains.music + "/relaunch/?p=" + p + "&m=" + m + "&d=" + d + "&clientID=" + clientID + failURLQS + "&fp=1&app=radio";
		
		radioWin = CommonWindowOpener.openWindow(playURL, 'LaunchRadioTarget', 'HEIGHT=365,WIDTH=491', failURL, destURL);

	}
	
	
	function playSongSample(sampleID, args)
	{
		var noApp = (args && args.noApp && (args.noApp== true));
		if (YAHOO.YME.installed && !noApp)
		{
			var ympurl = YAHOO.YMusic_Domains.music + "/musicengine/default.asp?hasYME=1&dest=ymp://select/{AD633C14-BCD7-4876-8AC9-0F9BED1CD2CF}%3Fdest%3D/library/song/default.asp%253Fplay%253D1%252526id%253D" + sampleID;
			document.location = ympurl;
		}
		else
		{
			if (parseInt(YAHOO.WMP.version) > 7)
			{
				var path = YAHOO.YMusic_Domains.sample + '/radio/player/default.asp?';
				var sSkin = ""
				if(args)
				{
					if(args.skinID) sSkin = "&sk=" + args.skinID;
				}
				
				var qs = 'clientID=616&p=6&m=0&d=0&linkTarget=LaunchRadioTarget&op=' + escape('sids=' + sampleID + sSkin);
				
				var playURL = path + qs;
				var failURL = YAHOO.YMusic_Domains.music + "/relaunch/?sampleID=" + sampleID + "&fp=1&app=sample";
				var destURL = "";
				
				var samplesWin = CommonWindowOpener.openWindow(playURL, 'samplesWindow', 'HEIGHT=313,WIDTH=502', failURL, destURL);
			}
		}
	}
	
//helpers	
	function getVideoServerDomain()
	{
		if( typeof(YAHOO.YMusic_Domains) == "undefined" || typeof(YAHOO.YMusic_Domains.video) == "undefined")
		{
			var prefix = document.location.host.match(/(\w{2})\.(?:(?:music)|(?:launch))/i);
			return "http://launchtoday." + ( (prefix != null)? (prefix[1]+"."):'' ) + "launch.yahoo.com";
		}
		else
		{
			return YAHOO.YMusic_Domains.video;
		}
	}
	
	function getRadioServerDomain()
	{
		if( (!window.YAHOO.YMusic_Domains) || (!window.YAHOO.YMusic_Domains.radio) )
		{
			var prefix = document.location.host.match(/(\w{2})\.(?:(?:music)|(?:launch))/i);
			return "http://radio." + ( (prefix != null)? (prefix[1]+"."):'' ) + "launch.yahoo.com";
		}
		else
		{
			return YAHOO.YMusic_Domains.radio;
		}
	}
	
	function getFailQS(args)
	{
		var failURLQS = "";
		for(var i in args)
		{
			failURLQS+= ("&" + i + "=" + args[i]);
		}
		return failURLQS;
	}
	
	function addRedirect(rdPath, url)
	{
		var rdPath = rdPath.match(/(^\/)?(.*)/)[2];
		if(!/.*\*$/.test(rdPath))
		{
			if(!/.*\/$/.test(rdPath)) rdPath += "/";
			rdPath+="*";
		}
		return  "http://us.rd.yahoo.com/" + rdPath + url;
	}

	
    	
    /*
     * CommonWindowOpener
     * This file defines a common_class_openwindow class to manage opening windows, especially with popup blocking
     */
     
     
     
    // Constructor
    function CommonWindowOpener()
    {
    }

    // global variables

    CommonWindowOpener.windows = {};
    CommonWindowOpener.unNamedWindows = 0;
    CommonWindowOpener.timeToCheck = 3000;

    // static
    CommonWindowOpener.openWindow = CommonWindowOpener_openWindow;
    CommonWindowOpener.checkForNewWindow = CommonWindowOpener_checkForNewWindow;
    CommonWindowOpener.redirectWindow = CommonWindowOpener_redirectWindow;

    function CommonWindowOpener_openWindow( url, windowName, windowFeatures, fail, pass )
    {
	    // set window name
	    if (windowName == null || typeof(windowName) == "undefined" || windowName == "")
	    {
		    windowName = "cwo" + CommonWindowOpener.unNamedWindows;
		    CommonWindowOpener.unNamedWindows++;
	    }
    	
	    // try to open the window
	    var targetWindow = window.open(url, windowName, windowFeatures);
    	
	    // set timeout
	    if (targetWindow)
	    {
		    var redirectURL = "";
		    if ((pass != '') && (pass != null) && (pass != 'undefined') && (pass != new String(window.location)))
		    {
			    redirectURL = pass;
		    }
    		
		    CommonWindowOpener.windows[windowName] = targetWindow;
		    var timeoutID = setTimeout("CommonWindowOpener.checkForNewWindow('" + windowName + "','" + fail + "','" + redirectURL + "')", CommonWindowOpener.timeToCheck);
	    }
	    else
	    {
		    CommonWindowOpener.redirectWindow(fail);
	    }
    }
     
    function CommonWindowOpener_checkForNewWindow( windowName, fail, pass )
    {
	    if (CommonWindowOpener.windows[windowName])
	    {
		    var targetWindow = CommonWindowOpener.windows[windowName];
		    if (targetWindow.closed)
		    {
			    CommonWindowOpener.redirectWindow(fail);
		    }
		    else
		    {
			    if (pass != "")
			    {
			        // Check if '?' is already inside
			        var questionMarkPos = pass.indexOf('?');
			        if(questionMarkPos < 0)
			        {
		                pass += "?";
			        }
			        else
			        {
			            if(questionMarkPos != pass.length-1) // if it's not the last one
			            {
			                pass += "&";
			            }
			        }
			        pass += "pvc=0";
				    CommonWindowOpener.redirectWindow(pass);
			    }
		    }
	    }
    }

    function CommonWindowOpener_redirectWindow( url )
    {
	    window.top.location.replace(url);
    }
    
    function getSamplePath(env, locale)
	{
		var ret = "";
		if( locale == "us" ) locale = "";
		switch( env )
		{
			case "dev":
			case "test":
			case "stage":
				ret = "http://sample." + env + ( locale == "" ? "" : "." ) + locale + ".music.yahoo.com";
				break;
			case "":
				ret = "http://sample." + locale + ( locale == "" ? "" : "." ) + "music.yahoo.com";
				break;
		}
		return ret;
	}	
	
	function getVideoPath(env, locale)
	{
		var ret = "";
		var localeString = (locale == "")? "": locale + ".";
		switch( env )
		{
			case "dev":
			case "test":
				ret = "http://mv.dev.music.yahoo.com";
				break;
			case "stage":
				if (locale == "us") {
					ret = "http://mv.stage.music.yahoo.com";
				} else {
					ret = "http://mv.stage." + localeString + "music.yahoo.com";
				}
				break;
			case "":
			default:
				ret = "http://mv." + localeString + "music.yahoo.com";
				break;
		}
		return ret;
	}

	function getCosmosPath(env, locale)
	{		   
		var ret = "";		
		switch(env)
		{
			case "dev":
			case "test":
			case "stage":
				ret = "http://cosmosweb02.bcst.mud.yahoo.com/up/ymusic" + locale + "/";
				break;
			case "":
			default:
				ret = "http://video.music.yahoo.com/up/ymusic" + locale + "/";
				break;
		}
		return ret;
	}

    
    