	var offline;
	var TweetHop = new Object();
	var HipHopUtilities = new Object();
	var xhttpList;
	var xblog;
	var per_page = 100;
	var curtweets;
	var curpage = 1;
	var curlist;
	var max;
	var alreadypopped = new Array();
	var topop = new Array();
	var recursiondepth = 0;
	var intID;
	var lasttileindex = -1;
	
	
	if (!Array.prototype.indexOf) {
		Array.prototype.indexOf = function(elt /*, from*/)  {
		var len = this.length;
		var from = Number(arguments[1]) || 0;
		from = (from < 0) ? Math.ceil(from) : Math.floor(from);
		if (from < 0) from += len;
		for (; from < len; from++) {
			if (from in this &&
				this[from] === elt)
				return from;
			}
			return -1;  
		};
	}
	function playvideo(file,elt) {
			$('html, body').animate({scrollTop: '0px'}, 800);
			$('.featuredVideoAnchor .featuredVideoThumb').removeClass('vidOn');
			$('.featuredVideoAnchor .featuredVideoThumb').addClass('vidOff');
		    $(elt).removeClass('vidOff');
		    $(elt).addClass('vidOn');
			player = new SWFObject('/player.swf','player_inner_id','640','380','9');
			player.addParam('allowfullscreen','true');
			player.addParam('allowscriptaccess','always');
			player.addParam('wmode','opaque');
			player.addVariable('frontcolor',"0xcccccc");
			player.addVariable('backcolor',"0x000000");
			player.addVariable('autostart',true);
			player.addVariable('plugins','');
			player.addVariable('viral.allowmenu','false');
			player.addVariable('file',file);
			player.write('player_inner');
	}
	
	function loadDefaultVid( vidObj, num ) {
		if(offline=="") {
		/* HTML 5 */
	    /*
	    player = $('#playerTag').jwplayer({
	      flashplayer:'player.swf',
	      skin:'five/five.xml'
	    });
	    */
	    /* FLASH */
	    /*
		<video height="380" id="playerTag" poster="/images/video_still.jpg" width="640">
			<source src="/flv/talibkweli_dj.mp4" type="video/mp4" />
		</video>
		*/
		//if(cannotPlayHTML5Video()) {
			// remove tag
		//	$('#player_inner').html('');
			var page = document.location.toString();
		
			if( page.indexOf( "video" ) > -1 ) {
				var vidStill = '/images/vidstills/rewind_back_still.jpg';
				var vidFile = '/flv/rewind_bachInTheDays.flv';
			}
			else {
				var vidName = vidObj.title;
				var vidStill = vidObj.still;
				var vidFile = vidObj.file;
			}
			var vidButton = '#vid'+num.toString();
		    $( vidButton ).removeClass('vidOff');
		    $( vidButton ).addClass('vidOn');
		
			//var file = "/flv/erykah_718.flv";
			player = new SWFObject('/player.swf','ply','640','380','9','#000000');
			player.addParam('allowfullscreen','true');
			player.addParam('allowscriptaccess','always');
			player.addParam('wmode','opaque');
			player.addVariable('frontcolor',"0xcccccc");
			player.addVariable('backcolor',"0x000000");
			player.addVariable('autostart',false);
			player.addVariable('image',vidStill);
			//player.addVariable('image','/images/vidstills/video_still_apex.jpg');
			player.addVariable('file',vidFile);
			player.addVariable('plugins','');
			player.addVariable('viral.allowmenu','false');
			player.write('player_inner');
		//}
		}
	}
		
	function thisMovie(movieName) {
       	//player = document.getElementById('myplayer');
       	
       	/*
       	if (navigator.appName.indexOf("Microsoft") != -1) {
           	return window[movieName];
       	} else {
           	return document[movieName];
       	}
       	*/
    }

	// prevPage - jump to previous page, currently for video page but can be extended
	function prevPage( baseEltId ) {
		var currentPage = $('div#videoContainer > div:visible');
		currentPage = currentPage[0].id;
		currentPage = '#' + currentPage;
		var pageId = currentPage.substr( ( currentPage.length-1 ), 1 );
		if( pageId == 1 ) { }
		else {
			var prevPage = parseInt(pageId);
			prevPage = prevPage - 1;
			prevPage = baseEltId + prevPage.toString();
			prevPage = '#' + prevPage;
			//alert( prevPage );
			$(currentPage).fadeOut('slow', function() {
				$(prevPage).fadeIn();
			});
		}
	}

	// nextPage - jump to next page, currently for video page but can be extended
	function nextPage( baseEltId, numPages ) {
		var currentPage = $('div#videoContainer > div:visible');
		currentPage = currentPage[0].id;
		currentPage = '#' + currentPage;
		var pageId = currentPage.substr( ( currentPage.length-1 ), 1 );
		if( pageId == numPages ) { }
		else {
			var nextPage = parseInt(pageId);
			nextPage = nextPage + 1;
			nextPage = baseEltId + nextPage.toString();
			nextPage = '#' + nextPage;
			//alert( nextPage );
			$(currentPage).fadeOut('slow', function() {
				$(nextPage).fadeIn();
			});
		}
	}

	// toPage - jump to page, currently for video page but can be extended
	function toPage( baseEltId, page ) {
		var currentPage = $('div#videoContainer > div:visible');
		currentPage = currentPage[0].id;
		currentPage = '#' + currentPage;
		var pageId = currentPage.substr(-1);
		if( pageId == page ) { }
		else {
			var newPage = page.toString();
			newPage = baseEltId + newPage;
			newPage = '#' + newPage;
			//alert( prevPage );
			$(currentPage).fadeOut('slow', function() {
				$(newPage).fadeIn();
			});
		}
	}

		// "playerready" flashvar was set to "playerReadyCallback"
		
		var player;
		function playerReadyCallback(obj) {
			alert('the videoplayer '+obj['id']+' has been instantiated');
			player = document.getElementById(obj['id']);
		};
		function cannotPlayHTML5Video() {
			if (Modernizr.video && Modernizr.video.ogg){
			// preload ogg video assets
				setVidType('ogg');
				return false;
			} 
			else if (Modernizr.video && Modernizr.video.h264){
			// preload h264 assets
				setVidType('264');
				return false;
			} else if(flash[0]==2) {
				setVidType('flv');
			} else {
				setVidType(-1);
			}
			return true;
		}

	$(document).ready(function(){
		$(".tweethop_tweets").animate({opacity:0},0);
		
		TweetHop.getLatestEntries = function() {
			/*END NAV*/
			
			if (window.XMLHttpRequest)
			{
				xblog=new XMLHttpRequest();
			}
			else // for older IE 5/6
			{
				xblog=new ActiveXObject("Microsoft.XMLHTTP");
			}
			xblog.onreadystatechange = TweetHop.handleBlogXML;
			xblog.open("GET","/blog/feed");
			xblog.send("");
		}
		
		TweetHop.handleBlogXML = function() {
			if (xblog.readyState == 4) {
      			if (xblog.status == 200) {
        			var blogFeed = xblog.responseXML;
        			TweetHop.parseBlog(blogFeed);
      			} else {
        			//alert('There was a problem with the request.');
     			}
    		}
		}
		
		TweetHop.parseBlog = function(xml) {
			alert(xml);
		}
		
		TweetHop.init = function() {
			
			if(window.location.href.search('index_dev.php')>-1) {
				//TweetHop.getLatestEntries();
			}
			
			/* NAV */
			
			document.getElementById('nav_home').onmouseover = function() {
				document.getElementById('nav_home').style.backgroundPosition = '0px 0px';
			}
			
			document.getElementById('nav_home').onmouseout = function() {
				document.getElementById('nav_home').style.backgroundPosition = '0px 24px';
			}
			
			document.getElementById('nav_dash').onmouseover = function() {
				document.getElementById('nav_dash').style.backgroundPosition = '0px 0px';
			}
			
			document.getElementById('nav_dash').onmouseout = function() {
				document.getElementById('nav_dash').style.backgroundPosition = '0px 24px';
			}
					
			document.getElementById('nav_video').onmouseover = function() {
				document.getElementById('nav_video').style.backgroundPosition = '0px 0px';
			}
			
			document.getElementById('nav_video').onmouseout = function() {
				document.getElementById('nav_video').style.backgroundPosition = '0px 24px';
			}
					
			document.getElementById('nav_feature').onmouseover = function() {
				document.getElementById('nav_feature').style.backgroundPosition = '0px 0px';
			}
			
			document.getElementById('nav_feature').onmouseout = function() {
				document.getElementById('nav_feature').style.backgroundPosition = '0px 24px';
			}
			
			
			if(window.location.href.search("blog")>-1) {
				document.getElementById('nav_dash').style.backgroundPosition = '0px 0px';				
				document.getElementById('nav_dash').onmouseover = function() {}
				document.getElementById('nav_dash').onmouseout = function() {}
			} else if(window.location.href.search("video")>-1) {
				document.getElementById('nav_video').style.backgroundPosition = '0px 0px';
				document.getElementById('nav_video').onmouseover = function() {}
				document.getElementById('nav_video').onmouseout = function() {}
			} else {
				document.getElementById('nav_home').style.backgroundPosition = '0px 0px';
				document.getElementById('nav_home').onmouseover = function() {}
				document.getElementById('nav_home').onmouseout = function() {}
			}
			
			/*END NAV*/
			
			var page = document.location.toString();
			page = page.substr(7);
			if( page == "www.hip-hop.com/" || page == "www.hip-hop.com" || page == "hip-hop.com/" || page == "hip-hop.com/index_dev.php" || page == "www.hip-hop.com/index_dev.php" ) {
			
			if (window.XMLHttpRequest)
			{
				xhttpList=new XMLHttpRequest();
			}
			else // for older IE 5/6
			{
				xhttpList=new ActiveXObject("Microsoft.XMLHTTP");
			}
			xhttpList.onreadystatechange = TweetHop.handleLoad;
			curlist = $("#tweethoplistselect").val();
			var curSel = $("#tweethoplistselect option:selected").text();
			$("#CurrentList").html(curSel);
			if(curSel == 'DJs and Producers') {
				curSel = 'djs-producers';
			}
			if(curSel == 'Science + Space') {
				curSel = 'science-space';
			}
			$("#followLinkAnchorHREF").attr("href","http://www.twitter.com/hip_hopdotcom/"+curSel);
			xhttpList.open("GET","/proxy/tweethop.php?list="+curlist+"&per_page="+per_page+"&page="+curpage);
			xhttpList.send("");
			
			}
		}
		
		TweetHop.handleLoad = function() {
			if (xhttpList.readyState == 4) {
      			if (xhttpList.status == 200) {
        			//alert(xhttpList.responseXML);
        			curtweets = xhttpList.responseXML;
        			TweetHop.parseList(curtweets);
      			} else {
        			//alert('There was a problem with the request.');
     			}
    		}
		}
		
		TweetHop.utils = new Object();
	
		TweetHop.utils.replaceUrlWithLink = function(text) {
		    //return text;
		    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
		    return text.replace(exp,"<a href='$1' target='blank' class='whiteanchor'>$1</a>"); 
		}

		TweetHop.parseList = function(curtweets) {
			var max = 8;
			var items = curtweets.getElementsByTagName("status")
			for(var i=0; i<max; i++) {
				var updateText = items[i].getElementsByTagName("text")[0].childNodes[0].nodeValue;
				var username = items[i].getElementsByTagName("user")[0].getElementsByTagName("name")[0].childNodes[0].nodeValue;
				var picsrc = items[i].getElementsByTagName("user")[0].getElementsByTagName("profile_image_url")[0].childNodes[0].nodeValue;
				var updated = items[i].getElementsByTagName("created_at")[0].childNodes[0].nodeValue; 
				var screen_name = items[i].getElementsByTagName("screen_name")[0].childNodes[0].nodeValue; 
				var d1 = new Date(updated)
				var final = ""+
				'<div style="padding-top:12px;">'+
					'<div style="float:left;width:48px;line-height:48px;height:48px;margin-left:13px;margin-right:10px;">'+
						'<a href="http://twitter.com/'+screen_name+'" target="_blank"><img src="'+picsrc+'" alt="" style="vertical-align:middle;" /></a>'+
					'</div>'+
					'<div style="float:left;width:242px;">'+
						'<a href="http://twitter.com/'+screen_name+'" target="_blank"><span style="color: #ec831a; font:bold 11px/14px Arial;">'+username+': </span></a>'+this.utils.replaceUrlWithLink(updateText)+'<br /><!--<span class="white">last updated: '+updated+'</span>-->'+
					'</div><br clear="all" />'+
				'</div>';
				$("#th"+(i+1)).html(final);
			}
			$(".tweethop_tweets").animate({opacity:1},1000,"swing",function(){
				TweetHop.startTicker(max+1);
			});
			
		}
		
		TweetHop.startTicker = function(min) {
			max = curtweets.getElementsByTagName("status").length;
			intID = setInterval("TweetHop.swapContent()",3000);
		}
		
		TweetHop.swapContent = function() {
			try {
				var items = curtweets.getElementsByTagName("status")
				var randomnumber = Math.floor(Math.random()*max+8);
				if(alreadypopped.indexOf(randomnumber)<0) {
					alreadypopped.push(randomnumber);
				} else {
					randomnumber = TweetHop.getRandomIndex();
				}
				var randomtile = Math.floor(Math.random()*9+1);
				if(randomtile==lasttileindex) {
					randomtile = this.getRandomTileIndex(lasttileindex);
				} else {
					lasttileindex = randomtile;
				}
				var updateText = items[randomnumber].getElementsByTagName("text")[0].childNodes[0].nodeValue;
				var username = items[randomnumber].getElementsByTagName("user")[0].getElementsByTagName("name")[0].childNodes[0].nodeValue;
				var picsrc = items[randomnumber].getElementsByTagName("user")[0].getElementsByTagName("profile_image_url")[0].childNodes[0].nodeValue;
				var updated = items[randomnumber].getElementsByTagName("created_at")[0].childNodes[0].nodeValue; 
				var screen_name = items[randomnumber].getElementsByTagName("screen_name")[0].childNodes[0].nodeValue; 
				var final = ""+
				'<div style="padding-top:15px;">'+
					'<div style="float:left;width:48px;line-height:48px;height:48px;margin-left:13px;margin-right:10px;">'+
						'<a href="http://twitter.com/'+screen_name+'" target="_blank"><img src="'+picsrc+'" alt="" style="vertical-align:middle;" /></a>'+
						'</div>'+
					'<div style="float:left;width:242px;">'+
						'<a href="http://twitter.com/'+screen_name+'" target="_blank"><span style="color: #ec831a; font:bold 11px/14px Arial;">'+username+': </span></a>'+this.utils.replaceUrlWithLink(updateText)+'<br /><!--<span class="white">last updated: '+updated+'</span>-->'+
					'</div><br clear="all" />'+
				'</div>';
				$("#th"+(randomtile)).animate({opacity: 0},1000,"swing",function(){
					$("#th"+(randomtile)).html(final);
					$("#th"+(randomtile)).animate({opacity: 1},1000,"swing");
				})
			} catch(e) {
				return;
			}
		}
		
		TweetHop.getRandomIndex = function() {
			recursiondepth++;
			var randomnumber = Math.floor(Math.random()*max+9);
			if(alreadypopped.length >= max) {
				clearInterval(intID);
				TweetHop.switchList();
				return false;
			} else if(alreadypopped.indexOf(randomnumber)<0) {
				alreadypopped.push(randomnumber);
				recursiondepth = 0;
				return randomnumber;				
			} else {
				return TweetHop.getRandomIndex();
			}
		}
		
		TweetHop.getRandomTileIndex = function(seed) {
			var randomtile = Math.floor(Math.random()*9+1);
			if(randomtile!=seed) {
				return randomtile;
			} else {
				return this.getRandomTileIndex(seed);
			}
		}
		
		TweetHop.switchList = function() {
			curpage++;
			if(curpage<5) this.ResetWithNewList();
			else this.getNextListInSelect();
		}
		TweetHop.getNextListInSelect = function() {
			
		}
		TweetHop.ResetWithNewList = function() {
			clearInterval(intID);
			alreadypopped = new Array();
			topop = new Array();
			recursiondepth = 0;
			intID=null;
			lasttileindex = -1;
			$(".tweethop_tweets").animate({opacity:0},1000,"swing",function(){
				TweetHop.init();
			});
			
		}
		TweetHop.getList = function() {
			// 8938327 - DJ/PROD
			// 8938266 - Industry
			// 8937884 - Artist
		}
	
		HipHopUtilities.init = function() {
			this.loadSidebarItems();
			TweetHop.init();
		}
		
		HipHopUtilities.loadSidebarItems= function() {
			if (window.XMLHttpRequest)
			{
				xhttp=new XMLHttpRequest();
			}
			else // for older IE 5/6
			{
				xhttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			xhttp.open("GET","/xml/config.xml",false);
			xhttp.send("");
			var xmlDoc=xhttp.responseXML;
			try {
				var items = xmlDoc.getElementsByTagName("item");
				var html = "";
				var eventcount = 0;
				for(var i=0;i<items.length;i++) {
					switch(items[i].attributes.getNamedItem("type").value) {
						case "countdown":
							var showstart = new Date(items[i].getElementsByTagName("date")[0].childNodes[0].nodeValue); 
							var now = new Date();
							var title = items[i].getElementsByTagName("event")[0].childNodes[0].nodeValue;
							var moreinfo = items[i].getElementsByTagName("moreinfo")[0].childNodes[0].nodeValue;
							var ticketurl = items[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
							if(showstart>now) {
								$("#countdown").countdown({until: showstart,expiryText: '<div class="countdown_over">'+title+' will begin momentarily. <a href="">Refresh</a> the page to see live show</div>'});
								$("#countdown_header").html("<img src=\"images/next_live_event.gif\" alt=\"\" />");
								html += "<div>"+
											"<div class=\"countdown_title\">"+
												title +
											"</div>"+
											"<div class=\"countdown_buttons\">"+
												"<a href=\""+ticketurl+"\" alt=\"\" target=\"_blank\"><img src=\"images/countdown_tickets.png\" /></a>&nbsp;" +
												"<a href=\""+moreinfo+"\" alt=\"\" target=\"_blank\"><img src=\"images/countdown_info.png\" /></a>" +
											"</div><br clear=\"all\" />"+
										"</div>";
							} else {
								//<div class="countdown_over">'+title+' will begin momentarily</div>
								$("#countdown").html('');
								$("#countdown_header").html('');
							}
						break;
						case "image":
							/*
							html += "<a target=\"_blank\" href=\""+items[i].getElementsByTagName("link")[0].childNodes[0].nodeValue+"\"><img src=\""+items[i].getElementsByTagName("source")[0].childNodes[0].nodeValue+"\" /></a>";
							*/
						break;
						case "events":
							/*
							xhttp.open("GET","/xml/sidebar_events.xml",false);
							xhttp.send("");
							var eventsDoc = xhttp.responseXML;
							for(var i=0;i<eventsDoc.getElementsByTagName("event").length;i++) {
								html += ''+
								'<div id="featured_event_'+eventcount+'" style="background-color: #111215;margin: 1px 0px 1px 0px;" class="featured_event_'+eventcount+'">'+
									'<div class="featured_event_left">'+
										'<span class="event_date" id="eventDate'+eventcount+'">'+eventsDoc.getElementsByTagName("event")[i].getElementsByTagName("date")[0].childNodes[0].nodeValue+'</span> <span class="event_title" id="eventTitle'+eventcount+'">'+eventsDoc.getElementsByTagName("event")[i].getElementsByTagName("eventTitle")[0].childNodes[0].nodeValue+'</span>, <span class="event_location" id="eventLocation'+eventcount+'">'+eventsDoc.getElementsByTagName("event")[i].getElementsByTagName("location")[0].childNodes[0].nodeValue+'</span><br />'+
										'<a target=\"_blank\" href="'+eventsDoc.getElementsByTagName("event")[i].getElementsByTagName("moreinfoURL")[0].childNodes[0].nodeValue+'" id="moreInfo'+eventcount+'">More Info</a> <span class="event_date">|</span> <a target=\"_blank\" id="ticket'+eventcount+'" href="'+eventsDoc.getElementsByTagName("event")[i].getElementsByTagName("ticketURL")[0].childNodes[0].nodeValue+'">Buy Tickets</a>'+
									'</div>'+
									'<div class="featured_event_right">'+
										'<img src="'+eventsDoc.getElementsByTagName("event")[i].getElementsByTagName("flyer")[0].childNodes[0].nodeValue+'" id="eventImage'+eventcount+'" alt="" />'+
									'</div><br clear="all" />'+
								'</div>';
							}*/
						break;
						case "adunit":
							
						break;
					}
				}
				$(".player_right").append(html);
				
			} catch(e) {
				
			}
		}
	
		HipHopUtilities.register = function() {
			var email = document.getElementById("email_singup_field").value;
			if(email!="") {
				$("#emailloader").toggle();
				$.ajax({
				type: "GET",
				url: "/newsletter/index.php",
				data: 'email='+email,
				success: function(msg){
					if(msg==1) {
						alert("Thank you, your email has been added to receive to the hip-hop.com newsletter");
						document.getElementById("email_singup_field").value = "";
						$("#emailloader").toggle();
					} else {
						$("#signup_error").animate();
					}
				}});
			}
		}
		
		HipHopUtilities.loadFeaturedEvents = function() {
			if (window.XMLHttpRequest)
			{
				xhttp=new XMLHttpRequest();
			}
			else // for older IE 5/6
			{
				xhttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			xhttp.open("GET","/xml/featured_events.xml",false);
			xhttp.send("");
			xmlDoc=xhttp.responseXML;
			try {
				document.getElementById("eventDate1").innerHTML = xmlDoc.getElementsByTagName("event")[0].getElementsByTagName("date")[0].childNodes[0].nodeValue;
				document.getElementById("eventTitle1").innerHTML = xmlDoc.getElementsByTagName("event")[0].getElementsByTagName("eventTitle")[0].childNodes[0].nodeValue;
				document.getElementById("eventLocation1").innerHTML = xmlDoc.getElementsByTagName("event")[0].getElementsByTagName("location")[0].childNodes[0].nodeValue;
				document.getElementById("eventImage1").src = xmlDoc.getElementsByTagName("event")[0].getElementsByTagName("flyer")[0].childNodes[0].nodeValue;
				document.getElementById("moreInfo1").href = xmlDoc.getElementsByTagName("event")[0].getElementsByTagName("moreinfoURL")[0].childNodes[0].nodeValue;
				document.getElementById("ticket1").href = xmlDoc.getElementsByTagName("event")[0].getElementsByTagName("ticketURL")[0].childNodes[0].nodeValue;
			} catch(error) {
				document.getElementById("featured_event_1").style.display = "none";
			}
			try {
				document.getElementById("eventDate2").innerHTML = xmlDoc.getElementsByTagName("event")[1].getElementsByTagName("date")[0].childNodes[0].nodeValue;
				document.getElementById("eventTitle2").innerHTML = xmlDoc.getElementsByTagName("event")[1].getElementsByTagName("eventTitle")[0].childNodes[0].nodeValue;
				document.getElementById("eventLocation2").innerHTML = xmlDoc.getElementsByTagName("event")[1].getElementsByTagName("location")[0].childNodes[0].nodeValue;
				document.getElementById("eventImage2").src = xmlDoc.getElementsByTagName("event")[1].getElementsByTagName("flyer")[0].childNodes[0].nodeValue;
				document.getElementById("moreInfo2").href = xmlDoc.getElementsByTagName("event")[1].getElementsByTagName("moreinfoURL")[0].childNodes[0].nodeValue;
				document.getElementById("ticket2").href = xmlDoc.getElementsByTagName("event")[1].getElementsByTagName("ticketURL")[0].childNodes[0].nodeValue;
			} catch(error) {
				alert(error);
				document.getElementById("featured_event_2").style.display = "none";
			}
			$("#featured_events").html();
		}

		HipHopUtilities.init();
		
		
	});
