var lastPlaylistType = 0;


function newHttpRequest()
{
	var httpReq = false;

	if(window.XMLHttpRequest)
	{
		try { httpReq = new XMLHttpRequest(); }
		catch(e) { httpReq = false; }
	}
	else if(window.ActiveXObject)
	{
		try {  httpReq = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(e)
		{
			try { httpReq = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch(e) { httpReq = false; }
		}
	}

	return httpReq;
}


function httpGet(httpReq, url, onDoneHandler)
{
	if (httpReq)
		httpReq.abort();

	if (navigator.userAgent.toLowerCase().indexOf("safari") !=-1)
	{
		if (url.indexOf("?") == -1)
			url += "?";
		else
			url += "&";
		url += "disableCacheStr=" + new Date().getTime();
	}

	httpReq.onreadystatechange = onDoneHandler;
	httpReq.open("GET", url, true);

	if(window.XMLHttpRequest)
		httpReq.send(null);
	else
		httpReq.send();
}


function httpPost(httpReq, url, contentType, contentString, onDoneHandler)
{
	if (httpReq)
		httpReq.abort();

	if (navigator.userAgent.toLowerCase().indexOf("safari") !=-1)
	{
		if (url.indexOf("?") == -1)
			url += "?";
		else
			url += "&";
		url += "disableCacheStr=" + new Date().getTime();
	}

	httpReq.onreadystatechange = onDoneHandler;
	httpReq.open("POST", url, true);
	httpReq.setRequestHeader("Content-type", contentType);
	httpReq.setRequestHeader("Content-length", contentString.length);
	httpReq.setRequestHeader("Connection", "close");
	httpReq.send(contentString);
}



(function() {

var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
var DDM = YAHOO.util.DragDropMgr;

YAHOO.example.DDApp = {
    init: function() {

        var rows=20,cols=2,i,j;
        for (i=1;i<cols+1;i=i+1) {
            new YAHOO.util.DDTarget("ul"+i);
        }

        for (i=1;i<cols+1;i=i+1) {
            for (j=0;j<rows;j++) {
                new YAHOO.example.DDList("li" + i + "_" + j);
            }
        }

		document.getElementById('q').value = q;
		doSearch2();

		if (p=="")
			writeEmbed("BePkLgDWdSI"); // MgrgvN0EIWo, WUCePBspIe4, Kzfb3_3gDGc, FGx6YXdv_40, 595Nj9EV2Qg

		else
			loadPlaylist(p);

		setTimeout(mainloop, 500);
    },

    initResultsList: function(idx) {

        new YAHOO.util.DDTarget("ul2");

        var rows=20,j;
         for (j=idx;j<idx+rows;j++) {
             new YAHOO.example.DDList("li2_" + j);
         }
    },

    initNowPlayingList: function(idx) {

        new YAHOO.util.DDTarget("ul1");

        var rows=20,j;
         for (j=idx;j<idx+rows;j++) {
             new YAHOO.example.DDList("li2_" + j);
         }
    },

    getItems: function() {
            return  Dom.get("ul1").getElementsByTagName("li");
    },
    
    highlightItem: function(el) {
        var parseList = function(ul, title) {
            var items = ul.getElementsByTagName("li");
            for (i=0;i<items.length;i=i+1) {
                Dom.setStyle(items[i], "font-weight", "");
            }
        };

        parseList(Dom.get("ul1"));
        parseList(Dom.get("ul2"));

    	Dom.setStyle(el, "font-weight", "bold");
    }
};

//////////////////////////////////////////////////////////////////////////////
// custom drag and drop implementation
//////////////////////////////////////////////////////////////////////////////

YAHOO.example.DDList = function(id, sGroup, config) {

    YAHOO.example.DDList.superclass.constructor.call(this, id, sGroup, config);

    this.logger = this.logger || YAHOO;
    var el = this.getDragEl();
    Dom.setStyle(el, "opacity", 0.67); // The proxy is slightly transparent

    this.goingUp = false;
    this.lastY = 0;
};

YAHOO.extend(YAHOO.example.DDList, YAHOO.util.DDProxy, {

    startDrag: function(x, y) {
        this.logger.log(this.id + " startDrag");

        // make the proxy look like the source element
        var dragEl = this.getDragEl();
        var clickEl = this.getEl();
        Dom.setStyle(clickEl, "visibility", "hidden");

        dragEl.innerHTML = clickEl.innerHTML;

        Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color"));
        Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor"));
        Dom.setStyle(dragEl, "border", "1px solid gray");
    },

    endDrag: function(e) {

        var srcEl = this.getEl();
        var proxy = this.getDragEl();

        // Show the proxy element and animate it to the src element's location
        Dom.setStyle(proxy, "visibility", "");
        var a = new YAHOO.util.Motion( 
            proxy, { 
                points: { 
                    to: Dom.getXY(srcEl)
                }
            }, 
            0.2, 
            YAHOO.util.Easing.easeOut 
        )
        var proxyid = proxy.id;
        var thisid = this.id;

        // Hide the proxy and show the source element when finished with the animation
        a.onComplete.subscribe(function() {
                Dom.setStyle(proxyid, "visibility", "hidden");
                Dom.setStyle(thisid, "visibility", "");
            });
        a.animate();
    },

    onDragDrop: function(e, id) {

        // If there is one drop interaction, the li was dropped either on the list,
        // or it was dropped on the current location of the source element.
        if (DDM.interactionInfo.drop.length === 1) {

            // The position of the cursor at the time of the drop (YAHOO.util.Point)
            var pt = DDM.interactionInfo.point; 

            // The region occupied by the source element at the time of the drop
            var region = DDM.interactionInfo.sourceRegion; 

            // Check to see if we are over the source element's location.  We will
            // append to the bottom of the list once we are sure it was a drop in
            // the negative space (the area of the list without any list items)
            if (!region.intersect(pt)) {
                var destEl = Dom.get(id);
                var destDD = DDM.getDDById(id);
                destEl.appendChild(this.getEl());
                destDD.isEmpty = false;
                DDM.refreshCache();
            }

        }
    },

    onDrag: function(e) {

        // Keep track of the direction of the drag for use during onDragOver
        var y = Event.getPageY(e);

        if (y < this.lastY) {
            this.goingUp = true;
        } else if (y > this.lastY) {
            this.goingUp = false;
        }

        this.lastY = y;
    },

    onDragOver: function(e, id) {
    
        var srcEl = this.getEl();
        var destEl = Dom.get(id);

        // We are only concerned with list items, we ignore the dragover
        // notifications for the list.
        if (destEl.nodeName.toLowerCase() == "li") {
            var orig_p = srcEl.parentNode;
            var p = destEl.parentNode;

            if (this.goingUp) {
                p.insertBefore(srcEl, destEl); // insert above
            } else {
                p.insertBefore(srcEl, destEl.nextSibling); // insert below
            }

            DDM.refreshCache();
        }
    }
});

Event.onDOMReady(YAHOO.example.DDApp.init, YAHOO.example.DDApp, true);

})();




	var isPlaying = false;
	var currId = "";
	var currLength = 0;
	var currStartTime = 0;


	var cacheSize = 0;
	var cacheSongId = new Array(10000);
	var cacheSongTitle = new Array(10000);
	var cacheSongLength = new Array(10000);
	var cacheSongThumbUrl = new Array(10000);
	

  	function writeEmbed(utId)
  	{
  		var mySpan = document.getElementById('videoSpan');
    	//mySpan.innerHTML = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/'+utId+'"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/'+utId+'" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';
		if (utId)
    		mySpan.innerHTML = '<embed src="http://www.youtube.com/v/'+utId+'&autoplay=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed>';
    	else
    		mySpan.innerHTML = '<div style="background:black;width:425px;height:350px;z-index:-1;"></div>';
		return false;
  	}


	function playNextSong()
	{
		isPlaying = false; // Assume we cannot start anything
		
		var items = YAHOO.example.DDApp.getItems();
		for (i=0;i<items.length;i=i+1)
		{
			if (currId=="")
			{
			    playSong(items[0]);
			    break;
			}
			else
			{
				if (currId==items[i].id)
				{
					if (i==items.length-1)
						playSong(items[0]);
					else
						playSong(items[i+1]);
					break;
				}
			}
		}
	}

	function playPrevSong()
	{
		isPlaying = false; // Assume we cannot start anything
		
		var items = YAHOO.example.DDApp.getItems();
		for (i=0;i<items.length;i=i+1)
		{
			if (currId=="")
			{
			    playSong(items[0]);
			    break;
			}
			else
			{
				if (currId==items[i].id)
				{
					if (i==0)
						playSong(items[items.length-1]);
					else
						playSong(items[i-1]);
					break;
				}
			}
		}
	}


	function playSong(item)
	{
		if (item)
		{
			YAHOO.example.DDApp.highlightItem(item);
			currId = item.id;
		}

		if (currId != "")
		{
			cacheIndex =  parseInt(currId.replace("li2_", ""));
	    	writeEmbed(cacheSongId[cacheIndex]);
	    	currLength = cacheSongLength[cacheIndex];
	    	currStartTime = new Date().getTime();
	    	isPlaying = true;
	    }
	}

	function stopSong()
	{
    	writeEmbed();
		isPlaying = false;		
	}


	var prevItemsInPlaylist = 0;

  	function mainloop()
  	{
		if (!isPlaying)
		{
			document.getElementById('timeLeftSpan').innerHTML = "0:00";

			var items = YAHOO.example.DDApp.getItems();
			if(items.length>0)
			{
				if (prevItemsInPlaylist == 0)
				{
					playNextSong();
				}
			}
			prevItemsInPlaylist = items.length;
		}		
		else
		{
			var timeLeft = parseInt(currLength - (new Date().getTime() - currStartTime)/1000);

			if (timeLeft < 0)
			{
				document.getElementById('timeLeftSpan').innerHTML = "0:00";
				playNextSong();
			}
			else
			{
				var minutesLeft = parseInt(timeLeft/60);
				secondsLeft = timeLeft - minutesLeft * 60;
				var timeLabel = minutesLeft + ":" + secondsLeft;
				if (secondsLeft < 10)
					timeLabel = minutesLeft + ":0" + secondsLeft;
				document.getElementById('timeLeftSpan').innerHTML = timeLabel;
			}

		}
	
		setTimeout(mainloop, 500);
		return false;
  	}

  	
	function selectiveNoop() { return window.event.srcElement.isTextEdit; }

	function noop(){return false;}
	document.oncontextmenu=noop;
	document.onselectstart = selectiveNoop;  	


	var doSearchRequest = newHttpRequest();
	var doneDoSearch = true;
	var returnText = "";
	
	
	function doSearch(queryString, cacheIndex)
	{
		var url = "search.jsp?q=" + queryString + "&cacheIndex=" + cacheIndex;

		if (!doneDoSearch)
		{
			doSearchRequest = newHttpRequest();	
		}
	
		doneDoSearch = false;
		httpGet(doSearchRequest, url, onDoSearchStateChange);
	}
	
	
	function onDoSearchStateChange()
	{
		// 4 == complete
		if ((doSearchRequest.readyState == 4) && (!doneDoSearch))
		{
			doneDoSearch = true;
	
			if (doSearchRequest.status == 200)
			{
				returnText = doSearchRequest.responseText;
				//alert(returnText);
				eval(returnText);
				//document.getElementById('resultsSpan').innerHTML = returnHTML;

				YAHOO.example.DDApp.initResultsList(cacheSize);
			}
			else
				alert("There was an error starting search: " + doSearchRequest.status);
		}
	}

	
	function doSearch2()
	{
		queryString = document.getElementById('q').value;
		document.getElementById('resultsSpan').innerHTML = '<ul id="ul2" class="draglist"></ul>';
		doSearch(queryString, cacheSize);
		//document.getElementById('resultsSpan').innerHTML = '<ul id="ul2" class="draglist"><li class="list" id="li2_'+cacheSize+'">Hello</li></ul>';
		//cacheSize +=20;
		return false;
	}
  	
  	function onSearchKeyUp(event)
  	{
  		var myKey = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
  		if (myKey == 13)
  		{
  			doSearch2();
  			return false;
  		}
  		else
  		{
  			return true;
  		}
  	}


	var doListPlaylistsRequest = newHttpRequest();
	var doneDoListPlaylists = true;
	
	function doListPlaylists()
	{
		if (!doneDoListPlaylists)
			doListPlaylistsRequest = newHttpRequest();	
	
		doneDoListPlaylists = false;
		httpGet(doListPlaylistsRequest, "listplaylists.jsp", onDoListPlaylistsStateChange);
	}
	
	
	function onDoListPlaylistsStateChange()
	{
		// 4 == complete
		if ((doListPlaylistsRequest.readyState == 4) && (!doneDoListPlaylists))
		{
			doneDoListPlaylists = true;
	
			if (doListPlaylistsRequest.status == 200)
			{
				document.getElementById('loadDialogSpan').innerHTML = doListPlaylistsRequest.responseText;
				openDialog("loadDialog");
			}
			else
				alert("There was an error starting search: " + doSearchRequest.status);
		}
	}




	var doLoadRequest = newHttpRequest();
	var doneDoLoad = true;
	var loadReturnText = "";
	
	
	function loadPlaylist(playlistId)
	{

		var url = "loadplaylist.jsp?p=" + playlistId + "&cacheIndex=" + cacheSize;
		//alert(url);
		document.getElementById('nowPlayingSpan').innerHTML = '<ul id="ul1" class="draglist"></ul>';

		if (!doneDoLoad)
		{
			doLoadRequest = newHttpRequest();	
		}
	
		doneDoLoad = false;
		httpGet(doLoadRequest, url, onDoLoadStateChange);

		YAHOO.example.DDApp.initNowPlayingList(cacheSize);
		//cacheSize +=20;
	}
	
	
	function onDoLoadStateChange()
	{
		// 4 == complete
		if ((doLoadRequest.readyState == 4) && (!doneDoLoad))
		{
			doneDoLoad = true;
	
			if (doLoadRequest.status == 200)
			{
				loadReturnText = doLoadRequest.responseText;
				//alert(returnText);
				eval(loadReturnText);
				//document.getElementById('resultsSpan').innerHTML = returnHTML;
				closeDialog('loadDialog');
			}
			else
				alert("There was an error loading playlist: " + doLoadRequest.status);
		}
	}





	function myOnDblClick(item)
	{
		playSong(item);
	}
	
	function doArtistSearch(artist)
	{
		closeDialog('artistDialog');
		document.getElementById('q').value = artist;
		doSearch2();
	}
	
	function openDialog(dialogName)
	{
		document.getElementById(dialogName).style.visibility = "";;
	}

	function closeDialog(dialogName)
	{
		document.getElementById(dialogName).style.visibility = "hidden";;
	}



	var doSaveRequest = newHttpRequest();
	var doneDoSave = true;

	function xmlEscape(aString)
	{
		var result = aString;
		result = result.replace(/&/g, "&amp;");
		result = result.replace(/</g, "&lt;");
		result = result.replace(/>/g, "&gt;");
		result = result.replace(/"/g, "&quot;");
		result = result.replace(/'/g, "&apos;");
		return result;
	}
  	
	function savePlaylist(playlistType)
	{
		lastPlaylistType = playlistType;
		var postXML = '';
		var playlistName = document.getElementById('saveDialogPlaylistName').value;
		var username = document.getElementById('saveDialogUsername').value;
		var password = document.getElementById('saveDialogPassword').value;
	
		postXML += '<?xml version="1.0" encoding="UTF-8"?>\n';
		postXML += '<playlist name="'+ playlistName +'" type="'+ playlistType +'" username="' + username + '" password="' + password + '" >\n';
	
		var items = YAHOO.example.DDApp.getItems();
		if (items.length == 0)
		{
			alert("You must add some tracks to the Playlist before it can be saved or sent");
		}
		else
		{
			for (i=0;i<items.length;i=i+1)
			{
				cacheIndex =  parseInt(items[i].id.replace("li2_", ""));
	
				postXML += '  <video ' + 
								'seqNo="'          + (i+1)                         			+ '" ' +
								'id="'             + cacheSongId[cacheIndex]      			+ '" ' +
								'title="'          + xmlEscape(cacheSongTitle[cacheIndex])  + '" ' +
								'length_seconds="' + cacheSongLength[cacheIndex]   			+ '" ' +
								'thumbnail_url="'  + cacheSongThumbUrl[cacheIndex] 			+ '" ' +
								'/>\n';
			}
	
			postXML += '</playlist>\n';
			
			//alert(postXML);
	
			if (!doneDoSave)
			{
				doSaveRequest = newHttpRequest();	
			}
			doneDoSave = false;
			httpPost(doSaveRequest, "saveplaylist.jsp", "text/xml", postXML, onDoSaveStateChange);
		}
	}  	


	function onDoSaveStateChange()
	{
		// 4 == complete
		if ((doSaveRequest.readyState == 4) && (!doneDoSave))
		{
			doneDoSave = true;
	
			if (doSaveRequest.status == 200)
			{
				if (lastPlaylistType == 1)
				{
					var sendPlaylistId = doSaveRequest.responseText.replace(/\s+$/, '').replace(/^\s+/, '');
					document.getElementById('sendPlaylistIdInput').value = 'http://www.tubejuke.com/TubeJuke/index.jsp?p='+sendPlaylistId;
					openDialog('sendDialog');					
				}
				else
				{
					alert(doSaveRequest.responseText);
					closeDialog("saveDialog");
				}
			}
			else
			{
				alert(doSaveRequest.responseText + "(" + doSaveRequest.status + ")");
			}
		}
	}





artistList = new Array(
"10000 Maniacs",
"3 Doors Down",
"50 Cent",
"A Perfect Circle",
"A Teens",
"A-Ha",
"Aaliyah",
"ABBA",
"Ace Of Base",
"Akon",
"Alanis Morissette",
"Alicia Keys",
"All Saints",
"Allman Brothers Band",
"Amanda Marshall",
"Amerie",
"Anastacia ",
"Angie Stone",
"Annie",
"Annie Lennox",
"Anouk",
"Anthrax",
"Aphex Twin",
"Apollo 440",
"Ash",
"Ashanti",
"Atomic Kitten",
"Audioslave",
"Avalanches",
"Avril Lavigne",
"Badly Drawn Boy",
"Beastie Boys",
"Bel Canto",
"Belle And Sebastian",
"Bertine Zetlitz",
"Beyonce",
"Big and Rich",
"Bilal",
"Billy Joel",
"Black Eyed Peas",
"Blue",
"Blur",
"Bond",
"Boyz II Men",
"Bran Van 3000",
"Brandy",
"Briskeby",
"Britney Spears ",
"Bruce Springsteen",
"Bubba Sparxxx",
"Busta Rhymes",
"Cardigans",
"Carola",
"Carrie Underwood",
"Celine Dion",
"Chingy",
"Christina Aguilera",
"Ciara",
"City High",
"Coldplay",
"Common",
"Craig David",
"Crazy Town",
"Creed",
"Cypress Hill",
"D12",
"Daddy DJ",
"Daft Punk",
"Dark Tranquility",
"Dave Matthews Band",
"David Bowie",
"David Gray",
"De La Soul",
"Depeche Mode",
"Di Leva",
"Diana Krall",
"Dido",
"Dilated Peoples",
"Dimmu Borgir",
"Dixie Chicks",
"DMX",
"Dope",
"Dream",
"Duran Duran",
"Eminem",
"Erasure",
"Eric Clapton",
"Eskimo",
"Euroboys",
"Eurovision",
"Evanescence",
"Eve",
"Fabolous",
"Faith Evans",
"Faith Hill ",
"Fantasia Barrino",
"Fat Boy Slim",
"Feeder",
"Folk og Rovere",
"Foxy Brown",
"Franz Ferdinand",
"Future Sound Of London",
"G-Unit",
"Garbage",
"Gavin DeGraw",
"George Strait",
"Gerald Levert ",
"Gigi Agostino",
"Ginuwine",
"Girls Aloud",
"Godsmack",
"Goldfrapp",
"Good Charlotte",
"Gorilliaz",
"GranDaddy",
"Gretchen Wilson",
"Groove Armada",
"Guano Apes",
"Guerilla Black",
"Herbalizer",
"Hoobastank",
"Hooverphonic ",
"Il Divo",
"In Flames",
"Incubus",
"India Arie",
"Ja Rule",
"Jadakiss",
"Jagged Edge",
"James Blunt",
"Janet Jackson",
"Jay-Z",
"Jennifer Lopez",
"Jessica Simpson",
"Jill Scott",
"John Hiatt",
"John Legend",
"John Mayer ",
"Jojo",
"Joss Stone",
"Justin Timberlake",
"Kanye West",
"Kate Ryan",
"Katie Melua",
"Keane",
"Kelis",
"Kelly Clarkson",
"Kelly Rowland",
"Kent",
"Korn",
"Kurt Nilsen",
"Kylie Minogue",
"Lauryn Hill",
"LeAnn Rimes",
"Lee Ann Womack ",
"Leftfield",
"Lemar",
"Lenny Kravitz",
"Lifehouse",
"Lil Jon",
"Lil Kim",
"Lil Wyte",
"Limp Bizkit",
"Lindsay Lohan",
"Linkin Park",
"Live",
"LL Cool J",
"Los Lonely Boys",
"Ludacris",
"Macy Gray",
"Madonna",
"Mandy Moore ",
"Manic Street Preachers",
"Maria Arredondo",
"Maria Solheim",
"Mariah Carey",
"Mario",
"Mark Knopfler",
"Marques Houston",
"Marvin Gaye",
"Mary J. Blige",
"Massive Attack",
"Memphis Bleek",
"Meshuggah",
"Michael McDonald ",
"Michelle Shocked",
"Midtown",
"Mis-Teeq",
"Miss Kittin",
"Missy Elliot",
"Moby",
"Monica",
"Morcheeba",
"Mos Def",
"Mudvayne",
"Muse",
"Musiq",
"Mya",
"Natasha Bedingfield",
"Nelly",
"Nelly Furtadio",
"NERD",
"No Doubt",
"Norah Jones",
"Norman Brown",
"NSync",
"Obie Trice",
"Orgy",
"Outkast",
"Pantera",
"Papa Roach",
"Paul Oakenfold",
"Phil Collins",
"Phoenix",
"Pink",
"PJ Harvey",
"Placebo",
"Poor Rich Ones",
"Postal Service",
"Primer 55",
"Prodigy",
"Queen",
"Queen Latifah",
"Queens Of The Stone Age",
"Queensryche",
"R Kelly",
"Radiohead",
"Rammstein",
"Rascal Flatts",
"Red Hot Chilli Peppers",
"REM",
"Rihanna",
"Robbie Williams ",
"Roni Size & Reprazent",
"Roots Manuva",
"Royksopp",
"S Club 7",
"Sade",
"Samantha Mumba",
"Samleplater",
"Sash",
"Saybia",
"Scott Stapp",
"Sean Paul",
"Seether",
"Shaggy",
"Shakira",
"Shania Twain",
"Silk",
"Simple Plan ",
"Skunk Anansie",
"Slipknot",
"Snoop Dogg",
"Soundtrack",
"Spiritualized",
"Spooks",
"Starsailor",
"Stevie Wonder",
"Sting",
"Suede",
"Sugababes",
"Sugarland",
"Super Furry Animals",
"Suzanne Vega",
"System Of A Down ",
"Taking Back Sunday",
"Texas",
"The Ark",
"The Chemical Brothers",
"The Corrs",
"The Cure",
"The Dandy Warhols",
"The Darkness",
"The Game",
"The Isley Brothers",
"The Killers",
"The Neptunes",
"The Pussycat Dolls ",
"The Roots",
"The Shamen",
"The Streets",
"The Strokes",
"The Verve",
"The Waterboys",
"The White Stripes",
"Timbaland",
"Titiyo",
"TLC",
"Toby Keith",
"Toto",
"Tragedie",
"Travis",
"Trick Daddy",
"Tricky",
"Tupac",
"Tweet ",
"Twista",
"U2",
"Ugress",
"Underworld",
"Unni Wilhelmsen",
"Usher",
"Velvet Revolver",
"VengaBoys",
"Weeping Willows",
"Weezer",
"Westside Connection",
"Will Smith",
"William Orbit",
"Xploding Plastix",
"Xzibit" );

