ytUserId = 0;
vidLoaded = {left:'efg6GvbF2OM',right:'y_DFm6ciwYY'};
first_search = {left:'ibiza dance music',right:'ibiza party'};

curNo = {left:0,right:0}; // Current Playlist Item
curId = {left:0,right:0}; // Current Playlist YouTube Video Id
Pl = {left:0,right:0}; // Playlist Items
Se = {left:0,right:0}; // Search Result Items
No = {left:0,right:0}; // Playlist Number of Items
Ti = new Object(); // Playlist Total Time
Q = new Object(); // Playlist Cue Position
Pg = {left:0,right:0}; // Search Result Pages
Cp = {left:0,right:0}; // Search Result Current Page
vid = 0;video_id = 0;
side = 'left';
PlOn = {left:0,right:0};
playerTg = new Object();
minItems = 6; // Trigger search when less than minItems
Axfdr = 0; // AutoXfader On/Off
autoFaderLoop = 0;
$('#left-search').focus().select(); // Preselect search input

	
msgDisplay = function(msgTxt){
	$('#msg').html(msgTxt);
}


function onYouTubePlayerReady(playerId) {
	if(typeof left_player == 'undefined'){
		left_player = document.getElementById('leftplayer');
		right_player = document.getElementById('rightplayer');
	}
    player = document.getElementById(playerId);//alert(playerId)
    player.addEventListener("onStateChange", "on"+playerId+"StateChange");
    volAllLeft();
	//if(Axfdr == 1){startAutoFader();} // Start AutoFader
}

function load_vid(side, video_id) { 
    var player_elem = document.getElementById(side + 'player');
    player_elem.loadVideoById(video_id);
    vidLoaded[side] = curId[side] = vid = video_id;
	side = side;
	if(typeof Pl[side][video_id] == 'object' || typeof Se[side][video_id] == 'object'){
		var title = typeof Pl[side][video_id] == 'undefined' ? Se[side][video_id].title : Pl[side][video_id].title;
		var titles = title.substr(0, 42);
		$('#'+side+'-title').text(titles);
	}
	document.location.hash = vidLoaded.left + '/' + vidLoaded.right;
	
	// Load Related on opposite window
	// Retrieve User Playlist: http://gdata.youtube.com/feeds/api/users/jariburi/playlists?v=2&alt=json
	// Single Playlist: http://gdata.youtube.com/feeds/api/playlists/349B750AE2D3544F?v=2&alt=json
	// Callback: http://gdata.youtube.com/feeds/users/GoogleDevelopers/uploads?alt=json-in-script&format=5&callback=showMyVideos">
	// Single Video: http://gdata.youtube.com/feeds/api/videos/OV9B7LVvTQM
	// Related Videos: http://gdata.youtube.com/feeds/api/videos/OV9B7LVvTQM/related
	// Related Videos JSON: http://gdata.youtube.com/feeds/api/videos/OV9B7LVvTQM/related?v=2&alt=json

//	$.getScript("http://gdata.youtube.com/feeds/api/videos/"+video_id+"/related?v=2&alt=json-in-script&callback=showMyVideos&max-results=20")

  
}


var fadeRCompleted = 0;
var fadeLCompleted = 0;
var puta = 0;
var cutoffSecs = 12; // secs before current songs ends to begin transition
var goNextSecs = 17; // secs before current songs ends to begin next song
// unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5)

function autoFader() {
	var durationLeft = getDuration('left');var durationRight = getDuration('right');
	var curTimeLeft = getCurrentTime('left');var curTimeRight = getCurrentTime('right');
	var tLeftLeft = Math.round(durationLeft - curTimeLeft,0);
	var tLeftRight = Math.round(durationRight - curTimeRight,0);
	var stateLeft = getPlayerState('left');var stateRight = getPlayerState('right');
	
	if(tLeftLeft < goNextSecs && curTimeLeft > cutoffSecs && PlOn['right'] == 0){
		if(stateRight == 0 || stateRight == 5){ // If stopped play next
			nextSong('right');
		}
		if(stateRight == 2){ // If paused or cued resume	
			if(tLeftRight > cutoffSecs){resumeVideo('right');}
		}
		PlOn['right'] = 1;PlOn['left'] = 0;
	}

	if(tLeftRight < goNextSecs && curTimeRight > cutoffSecs && PlOn['left'] == 0){
		if(stateLeft == 0 || stateLeft == 5){ // If stopped play next
			nextSong('left');
		}
		if(stateLeft == 2 ){ // If paused or cued resume	
			if(tLeftLeft > cutoffSecs){resumeVideo('left');}
		}
		PlOn['left'] = 1;PlOn['right'] = 0;
	}

	lMsg= 'LEFT - fadeLCompleted: '+fadeLCompleted+' - TimeLeft L: '+tLeftLeft+' - CurrentTime L: '+Math.round(curTimeLeft)+' - AutoDJ: '+Axfdr+' - LeftState: '+stateLeft+' - rOn: '+PlOn['right']+' - L Playlist Current Item: '+curNo['left'];
	rMsg = 'RIGHT - fadeRCompleted: '+fadeRCompleted+' - TimeLeft R: '+tLeftRight+' - CurrentTime R: '+Math.round(curTimeRight)+' - AutoDJ: '+Axfdr+' - RightState: '+stateRight+' - lOn: '+PlOn['left']+' - R Playlist Current Item: '+curNo['right'];
//	msgDisplay(lMsg+'<br />'+rMsg)
	
	
	if(tLeftLeft < cutoffSecs && curTimeLeft > cutoffSecs && fadeRCompleted == 0 && stateRight == 1){
		fadeToRight();
		fadeRCompleted = 1;
	}
	if(tLeftRight < cutoffSecs && curTimeRight > cutoffSecs && fadeLCompleted == 0 && stateLeft == 1){
		fadeToLeft();
		fadeLCompleted = 1;
	}

}

function startAutoFader(){
	autoFaderLoop = setInterval(autoFader, 250);Axfdr = 1;
}

function stopAutoFader(){
	clearInterval(autoFaderLoop);Axfdr = 0;
}

var ctrRafx = 0;
$('#autoDJbtn').click(function(){
	var onClass = 'ctrlBtnOn';var offClass = 'ctrlBtnOff';
	var onVal = 'Auto DJ is ON!';var offVal = 'Auto DJ is Off';
	if(ctrRafx == 0){
		$(this).removeClass(offClass).addClass(onClass).val(onVal);ctrRafx = 1;startAutoFader();
	}else{
		$(this).removeClass(onClass).addClass(offClass).val(offVal);ctrRafx = 0;stopAutoFader();
	}
	
})

function getCurrentTime(side) {
	var player_elem = document.getElementById(side + 'player');
  if (player_elem) {
    return player_elem.getCurrentTime();
  }
}

function getDuration(side) {
	var player_elem = document.getElementById(side + 'player');
  if (player_elem) {
    return player_elem.getDuration();
  }
}

function getPlayerState(side) {
	var player_elem = document.getElementById(side + 'player');
  if (player_elem) {
    return player_elem.getPlayerState();
  }
}

function play_vid(side,video_id) {
	var player_elem = document.getElementById(side + 'player');
	player_elem.loadVideoById(video_id);
    vidLoaded[side] = vid = video_id;

    document.location.hash = vidLoaded.left + '/' + vidLoaded.right;
}

function cueNewVideo(side, id, startSeconds) {
	var player_elem = document.getElementById(side + 'player');
	if (player_elem) {
	  player_elem.cueVideoById(id, startSeconds);
	}
}

function resumeVideo(side) {
	var player_elem = document.getElementById(side + 'player');
	if (player_elem) {
	  player_elem.playVideo();
	}
}

function stop_vid(side) {
	var player_elem = document.getElementById(side + 'player');
	player_elem.stopVideo();
}

function pause_vid(side) {
	var player_elem = document.getElementById(side + 'player');
	player_elem.pauseVideo();
}

var plPrevSt = {left:0,right:0}; // Save Players previous states to avoid double calls on state changes
function onleftplayerStateChange(newState) {
	
	
   if(plPrevSt['left'] == 0 && newState == 0 && Axfdr == 0){
		nextSong('left');
		plPrevSt['left'] = 1;
	}
	if(newState == 1){
		plPrevSt['left'] = 0;
	}
	//msgDisplay(newState+' - AutoDJ: '+Axfdr+' - plPrevSt: '+plPrevSt['left'])
}

function onrightplayerStateChange(newState) {
   if(plPrevSt['right'] == 0 && newState == 0 && Axfdr == 0){
		nextSong('right');
		plPrevSt['right'] = 1;
	}
	if(newState == 1){
		plPrevSt['right'] = 0;
	}
	//msgDisplay(newState+' - AutoDJ: '+Axfdr+' - plPrevSt: '+plPrevSt['right'])	
}


var delta = 0;
var fadeLeftIntv = 0;
var fadeRightIntv = 0;
var fadeSpeed = 30;
var fadeStep = 15;

function volAllLeft(){
	$('#slider').slider('value', 0);
	difPlayerVolSet(0);	
	fadeRCompleted = 0;fadeLCompleted = 1;
	//fadeLeftIntv = setInterval( "fadeLeftFn()", fadeSpeed );
}


function volAllRight(){
	$('#slider').slider('value', 100);
	difPlayerVolSet(100);
	fadeRCompleted = 1;fadeLCompleted = 0;
	//fadeRightIntv = setInterval( "fadeRightFn()", fadeSpeed );
}


function difPlayerVolSet(val){
	var max=100;
	var lVol = max - val;var rVol = val;
	left_player.setVolume(lVol);
	right_player.setVolume(rVol)
}

function fadeToRight(){
	fadeRightIntv = setInterval( "fadeRightFn()", fadeSpeed );
}
function fadeToLeft(){
	fadeLeftIntv = setInterval( "fadeLeftFn()", fadeSpeed );
}

function fadeRightFn(){
	clearInterval(fadeLeftIntv);
	if($('#slider').slider('option','value') < 100){
		(delta++)*fadeStep;//deltaL=deltaR;
		$('#slider').slider('value', delta);
		difPlayerVolSet(delta);
		fadeRCompleted = 1;
	}else{
		clearInterval(fadeRightIntv);
		fadeLCompleted = 0;
	}
}
function fadeLeftFn(){
	clearInterval(fadeRightIntv);
	if($('#slider').slider('option','value') > 0){
		(delta--)*fadeStep;//deltaR=100-deltaL;
		$('#slider').slider('value', delta);
		difPlayerVolSet(delta);
		fadeLCompleted = 1;
	}else{
		clearInterval(fadeLeftIntv);
		fadeRCompleted = 0;
	}
}

$(function() {
	

	
// ##########  PAGE LOGIC  ############
	
	// Generic Input Default message reset
	function inputMsgAutoReset(target,msg){	
		$('#'+target+'').die('click').live('click',function(){if($('#'+target+'').val() == msg)$('#'+target+'').val('');}).blur(function(){if($('#'+target+'').val() == msg || $('#'+target+'').val().length == 0)$('#'+target+'').val(msg);}).keydown(function(){if($('#'+target+'').val() == msg){$('#'+target+'').val('');}})
	}
	var searchMsg = 'Search videos..';
	inputMsgAutoReset('left-search',searchMsg);
	inputMsgAutoReset('right-search',searchMsg);
	
	
// ##########  SEARCH RESULTS TEMPLATE  ########
	
	function formatTimer(secs)
	{
	var t = new Date(1970,0,1);
	t.setSeconds(secs);var f;
	if(secs < 3600){
		f = t.toTimeString().substr(3,5);
	}else{
		f = t.toTimeString().substr(0,8);
	}
	return f;
	}
	
	function getVideoId(url){
		// Type = "Google"
		//playUrl": _9elLyTrvt8&fs=1&source=uds&autoplay=1/y_DFm6ciwYY
		// "tbUrl":"http://2.gvt0.com/ThumbnailServer2?app\u003dvss\
		var videoID = url.split('/')[4].split('&')[0];
	
		return videoID;
		//return url.split('\\')[0]; 
	}
	
	// Share Icons
	function twIcon(url){
		var icon = '<a href="http://twitter.com/home?status=Check this YouTube video '+url+'" title="Click to share this video on Twitter" target="_blank" class="twitterIcon"></a>';
		return icon;
	}
	function fbIcon(url){
		var icon = '<a href="http://www.facebook.com/share.php?u='+url+'" url="'+url+'" title="Click to share this video on Facebook" target="_blank" class="fbIcon"></a>';
		return icon;
	}
		
	$('.fbIcon').live('click',function(){
		var url = $(this).attr('url');
		window.open('http://www.facebook.com/sharer.php?u='+url,'sharer','toolbar=0,status=0,width=626,height=436');return false;
	})

	
	// Item Template
	function playItemTpl(d,mode,side,f){
		
		var video_id = getVideoId(d.playUrl);
		var thumb = '<a class="crate-vid" href="javascript:void(0);" title="' + d.title + '" onclick="load_vid(\''+side+'\',\'' + video_id + '\');"><img width="90" src="' + d.tbUrl + '" /></a>';
		var time = formatTimer(d.duration); 
        
		if(mode == 'playlist'){
			var itemNum = '<div class="plItem-number"><span class="plNo-'+side+'" id="plNo-'+side+'-'+video_id+'">'+d.count+'</span></div>';
			var actions = '<a href="#" class="plItem-remove delItem" title="Delete" name="'+video_id+'" side="'+side+'"> </a>';
			var pre = 'pl-';
		}else if(mode == 'search'){
			var itemNum = '';
			var actions = '<div class="plItem-btn add" name="'+video_id+'" side="'+side+'"> ADD </div>';
			var pre = '';
		}		
		var url = d.url.split('=')[1];
		
		
		var tpl =
			'<div class="plItem-box item-'+pre+side+'" id="'+side+'-'+pre+video_id+'" video="'+video_id+'" side="'+side+'">' +
				
				itemNum +
				
				'<div class="plItem-thumb tb-'+side+'">' +
					thumb +
				'</div>' +
				
				'<div class="plItem-content">' +
					'<div class="plItem-title">' +
						 d.title +
					'</div>' +
					'<div class="plItem-info"><ul>' +
						'<li>'+time + ' - </li> <li>'+fbIcon(url)+ '</li><li>'+twIcon(url)+'</li>'+
					'</ul></div>' +

				'</div>' +
				
				'<div class="plItem-actions">' +											
					actions +
				'</div>' +
				
			'</div>';
			
			if (typeof f == "function" && typeof d == 'object'){
				f();
			}
			
			return tpl;
	} 


// PLAYLIST LOGIC

	// Add to Play list
	var plObj = new Array();
	
	function addToPlaylist(vid,side){
		var mode = 'playlist';
		$('#'+side+'-'+vid+'').remove();
		var tg = '#'+side+'-playlist';
		plObj[vid] = Se[side][vid];setPlCount(1,side,Se[side][vid].duration); Se[side][vid].count = No[side];
		var new_item = playItemTpl(Se[side][vid],mode,side,function(ok){delete Se[side][vid]});
		$(tg).append(new_item);
		Pl[side] = plObj;  // XrROiUNwgCM
		$('.'+side+'PlMsg').remove();
		
		
		var v_t = Pl[side][vid].title;
		var v_url = getVideoId(Pl[side][vid].playUrl);
		var v_secs = Pl[side][vid].duration;
		var vars = {title:v_t, url:v_url, duration:v_secs};	
		$.post("save_playlist_ajax.php", vars,
			function(data){
				if(data){
					
				}
			}, "json");
		searchMore(side);
	}
	
	function searchMore(side){
		if(Cp[side]<8 && $('.item-'+side+'').length < minItems){
			searcher[side].gotoPage(Cp[side]+1);
		}
	}
	
	// Add to Search result list
	var seObj = new Object();
	
	function addToSearchlist(vid,side){
		var mode = 'search';
		var tg = '#'+side+'-results';	
		seObj[vid] = Pl[side][vid];setPlCount(-1,side,-Pl[side][vid].duration);resetPlCount(side);
		var new_item = playItemTpl(Pl[side][vid],mode,side,function(ok){delete Pl[side][vid]});;
		$(tg).prepend(new_item);
		Se[side] = seObj;//alert(Se[side][vid].tbUrl)
	}
	
	$('.add').live('click',function(){
		vid = $(this).attr('name');side=$(this).attr('side');
		addToPlaylist(vid,side);
	})
	
	// Delete from Playlist
	function deleteFromPlaylist(vid,side){
		$('#'+side+'-pl-'+vid+'').remove();
		addToSearchlist(vid,side);
	}
		
	$('.delItem').live('click',function(){
		vid = $(this).attr('name');side=$(this).attr('side');
		deleteFromPlaylist(vid,side);return false;
	})
	
	
	function setPlCount(val,side,dur){
		No[side] = typeof No[side] == 'undefined' ? val : No[side] + val;
		Ti[side] = typeof Ti[side] == 'undefined' ? parseInt(dur) : Ti[side] + parseInt(dur);
		//msgDisplay(side+' - '+No[side]+' - '+Ti[side]);
	}

	function resetPlCount(side){
		$('.plNo-'+side+'').each(function(i) {
		      $(this).html(i+1);
		   });
	}
	
	$('.tb-left').live('click',function(){	
		$('.item-left, .item-pl-left').removeClass('selected');
		$(this).parent().addClass('selected');
		
	})
	
	$('.tb-right').live('click',function(){	
		$('.item-right, .item-pl-right').removeClass('selected');
		$(this).parent().addClass('selected');
	})
	
	function selectPlItem(vid,side){
		$('.item-pl-'+side+'').removeClass('selected');
		$('#'+side+'-pl-'+vid).addClass('selected');
	}	
	function selectSeItem(vid,side){
			$('.item-'+side+'').removeClass('selected');
			$('#'+side+'-'+vid).addClass('selected');
		}
		
	$('#next-left').click(function(){
		nextSong('left');
	})
	$('#prev-left').click(function(){
		prevSong('left');
	})
	$('#next-right').click(function(){
		nextSong('right');
	})
	$('#prev-right').click(function(){
		prevSong('right');
	})
	
	$('#stopL').toggle(
		function(){
			LplOn = 1;	
			$('#stopL').val('Stop');
			var curNo = parseInt($('#plNo-'+vid+'').text());
			if(curNo == No[side]){
				nextSong('left');
			}else{
				play_vid('left',vid);
			}
		},
		function(){
			LplOn = 1;
			pause_vid('left');
			$('#stopL').val('Start');
		}
		
	)
	
 	nextSong = function(side){
		var tg = '#'+side+'-playlist';
		switchtabs(''+side+'-playlist',side);
		if(No[side]>0){
			//if(typeof Pl[side][curId[side]] == 'object'){
						
				var i = 1;
				for(id in Pl[side]){
					if(i==1){
						var firstId = id;
					}
					
					// if(i==NumSide){
					// 	var lastId = id;
					// }
					// 
					// if(id == vid){
					// 	curNo[side] == i;
					// }else{
					// 	curNo[side] == firstId;
					// }
					
					i++;
				}
				
				if(curId[side] == 0){
					curId[side] = firstId;
					curNo[side] = 0;
				}else{
					curNo[side] = parseInt($('#plNo-'+side+'-'+curId[side]+'').text())
				}

				
				if(curNo[side] == No[side] || curNo[side] == 0){
					//var nextNo = 1;
					var nextVid = $('.item-pl-'+side+':first').attr('video');
				}else{
					//var nextNo = curNo + 1;
					var nextVid = $('#'+side+'-pl-'+curId[side]+'').next().attr('video');
				}
				
				//msgDisplay(firstId+' - curNo: '+curNo[side])
				
				//$('#nextVal').html(nextNo+' - '+nextVid);
				load_vid(side, nextVid);
				selectPlItem(nextVid,side);
				
				$(tg).scrollTo('#'+side+'-pl-'+curId[side]+'',800);	
			//}
		}else{
			var plMsg = '<div class="'+side+'PlMsg warning"> You have no songs on your '+side+' playlist. Add some first!'+
			'<br /><br />'+
			'<b>Need more help?</b><br />'+
			'Check the Ibizaah! demo <a href="javascript:void(0);" class="demo">Here</a><br />'+
			'or, see our <a href="faq.php" target="_blank">FAQ</a> section.<br/>'+
			'</div>';
			$(tg).html(plMsg)
			$('#'+side+'-search').focus().select();
		}
	}
	
	prevSong = function(side){
		var tg = '#'+side+'-playlist';
		switchtabs(''+side+'-playlist',side);
		if(No[side]>0){
			//if(typeof Pl[side][curId[side]] == 'object'){	
				
				var i = 1;
				for(id in Pl[side]){
					if(i==1){
						var firstId = id;
					}
					
					// if(i==NumSide){
					// 	var lastId = id;
					// }
					// 
					// if(id == vid){
					// 	curNo[side] == i;
					// }else{
					// 	curNo[side] == firstId;
					// }
					
					i++;
				}
					
				if(curId[side] == 0){
					curId[side] = firstId;
					curNo[side] = 1;
				}else{
					curNo[side] = parseInt($('#plNo-'+side+'-'+curId[side]+'').text())
				}
			
				
				if(curNo[side] == 1){
					//var nextNo = 1;
					var prevVid = $('.item-pl-'+side+':last').attr('video');
				}else{
					//var nextNo = curNo + 1;
					var prevVid = $('#'+side+'-pl-'+curId[side]+'').prev().attr('video');
				}
					
				//msgDisplay('vid: '+vid+' - CurNo: '+curNo[side]+' - PrevNo'+prevNo+' - PrevID'+prevVid);
				load_vid(side, prevVid);
				selectPlItem(prevVid,side);
				
				$(tg).scrollTo('#'+side+'-pl-'+curId[side]+'',800);
			//}
		}else{
			$(tg).html('<div class="'+side+'PlMsg warning"> You have no songs on your '+side+' playlist. Add some first!</div>')
			$('#'+side+'-search').focus().select();
		}
	}
	
	
	
	// ------------  Playlist Sortable Logic ------------
	function makeSortable(target){
		//$(target).sortable('destroy');
		$(target).sortable({
			axis        : "y",
			items: '.plItem-box',
			update: function(event, ui){
				processNewPlOrder(side);
			}
			//cancel: '#target'
		});

		$(target).disableSelection();

	}

	makeSortable('.pl-content');
	//makeSortable('#left-playlist') ;

	// New Order Process
	function processNewPlOrder(side){
		resetPlCount(side);
	}
	
	
	//________ Automatic Data Fetching on Scroll _________ pl-conten
	
	function autoScroll(side){
		var liTop = $('.item-'+side+':last').offset();
		var coTop = $('.pl-content').offset();
		var coHeight = $('.pl-content').height();
		var tgH = coTop.top + coHeight - 50;
			if(liTop.top < tgH && Cp['left']<Pg[side]){
				Cp[side]++;
				searcher[side].gotoPage(Cp[side]);
			}
	
		//msgDisplay(liTop.top+' - '+coHeight+' - '+coTop.top+' - '+tgH+' - Pages: '+Pg['left']+' - CurPage: '+Cp['left'])
	}
	
	$('#left-results').scroll(function(){	
		autoScroll('left');
	});
	
	$('#right-results').scroll(function(){	
		autoScroll('right');
	});

// ##########  PLAYER LOGIC  ############
	
	// CROSSFADER
	
    $('#slider').slider({max: 100, min: 0,value: 0, step: 1});
    $('#slider').bind('slide', function(event, ui) {
		var val = parseInt($('#slider').slider('option','value'));
		var max = parseInt($('#slider').slider('option','max'));
		var sliderW = 20;
		//var val = val == sliderW ? 0 : val;
        var left_val = Math.max(Math.min(max - val, max) , 0);
        var right_val = Math.max(Math.min( val, max) , 0);
		// var right_val = parseInt($('#slider').slider('option','value')) - sliderW;
		// var left_val = max - right_val - sliderW;
		
		if(val < 10){
			//PlOn['right'] = 0;PlOn['left'] = 0;	
			fadeRCompleted = 0;fadeLCompleted = 1;
		}
		if(val > 90){
			//PlOn['right'] = 0;PlOn['left'] = 0;
			fadeRCompleted = 1;fadeLCompleted = 0;
		}

		//msgDisplay('Pos: '+val+' - leftVol: '+left_val+' - rightVol: '+right_val)
        left_player.setVolume(left_val);
        right_player.setVolume(right_val);
        
    });


	// GOOGLE VIDEO SEARCH MAGIC

    var ri = new Object; 
	//ri = {left:0,right:0}; 
	//var searcher =new Object; 

    function setup_goog(side) {
			
			if(typeof searcher == 'undefined'){ 
				searcher =new Object; 
			}
						
			var tg = ''+side+'-results';var tgId = '#'+side+'-results';
				
	        searcher[side] = new google.search.VideoSearch();
	        searcher[side].setResultSetSize(google.search.Search.LARGE_RESULTSET);
        
	        searcher[side].setSearchCompleteCallback(null, function() { 
			       
	            for(var i = 0; i<searcher[side].results.length; i++) {
	                var result = searcher[side].results[i];
	                if(result.videoType != "YouTube") {
	                    continue;
	                }
	       			var video_id = getVideoId(result.playUrl); //playUrl":"http://video.google.com/s/RRTWThPsLH4/googleplayer.swf?videoUrl\u003dhttp
	// "tbUrl":"http://2.gvt0.com/ThumbnailServer2?app\u003dvss\
					switchtabs(tg,side);
					 if(typeof Pl[side][video_id] == 'undefined'){ // Skip results in already in Playlist object
						var resultItem = playItemTpl(result,'search',side);
		                $(tgId).append(resultItem);	// Append result to Container
						ri[video_id] = result;
					}
	            }
				Se[side] = ri; // Store result in Object
			//	$(tg).scrollTo.min;
			
				// Set page Count
	            if (searcher[side].cursor && Cp[side]==0) {
	                var pages = searcher[side].cursor.pages;
					Pg[side] = pages.length;
					$('#'+side+'-search').val(searchMsg);
	            }
				
				if(searcher[side].results.length > 0){
					searchMore(side);
				}
            
	        });
			
        // trigger the first search
        searcher[side].execute(first_search[side]);		
    }


$('#left-search').bind('keyup', function(ev) {
        if(ev.keyCode == 13) {
			$('#left-results').empty();
            var input_val = $('#left-search').val();
	        searcher['left'].execute(input_val);Cp['left'] = 0;
        }
		return false;
});
	
$('#right-search').bind('keyup', function(ev) {
        if(ev.keyCode == 13) {
			$('#right-results').empty();
            var input_val = $('#right-search').val();
	        searcher['right'].execute(input_val);Cp['right'] = 0;
        }
		return false;
});



// Tabs


function switchtabs(tg,side){
	$('.'+side+'c').css('display','none');
	$('#'+tg+'').css('display','inline');
	$('.'+side+'t').children().removeClass('on').addClass('off');
	$('.'+side+'t[tg='+tg+']').children().removeClass('off').addClass('on');	
}
$('.leftt').live('click',function(){
	var tg = $(this).attr('tg');switchtabs(tg,'left');	
})
$('.rightt').live('click',function(){
	var tg = $(this).attr('tg');switchtabs(tg,'right');
})


$('#allLeft').click(function(ev){
	volAllLeft();
})
$('#allRight').click(function(ev){
	volAllRight();
})

function armAllVolToggle(){
	$(document).bind('keypress',function(ev){
		if(ev.which == 106) { // k
	         volAllLeft();
	     }
		if(ev.which == 107) { // l
	         volAllRight();
	     }
	})

}

armAllVolToggle();
function disArmAllVolToggle(){
	$(document).unbind('keypress');
}

$('input').focus( function(){disArmAllVolToggle();} ).blur( function(){armAllVolToggle();} );


// ITEM CLICK
$('.plItem-box').live('click',function(){
	//vid =  $(this).attr('video');side = $(this).attr('side');
//	msgDisplay('ID: '+vid+' | side: '+side);
})

var startVid = {left:0,right:0};

// START VIDEOS
function startVideo(side){
	
	var i = side == 'right' ? 1 : 0;

       starting_hash_videos = document.location.hash.split('#');
       if(starting_hash_videos.length > 1 && starting_hash_videos[1].split('/')[i] != 'undefined') {
         starting_hash_videos = starting_hash_videos[1];                        
         startVid[side] = starting_hash_videos.split('/')[i];
         startVid[side] = typeof(startVid[side]) != 'undefined'? startVid[side] : vidLoaded[side];
       } else {
         startVid[side] = vidLoaded[side];
       }

       var params = { allowScriptAccess: "always",allowFullScreen: "true"};
       var atts = { id: ""+side+"player" };
       swfobject.embedSWF("http://www.youtube.com/v/" + startVid[side] + "&enablejsapi=1&playerapiid="+side+"player&fs=1",
       ""+side+"player", "450", "337", "8", null, null, params, atts); // add "&rel=0" to get rid of related videos
}

function loadSiren(){
	var params = { allowScriptAccess: "sameDomain",allowFullScreen: "false",wmode: 'transparent'};
       var atts = { id: "siren" };
       swfobject.embedSWF("Siren_Button.swf","siren", "95", "95", "8", null, null, params, atts);
}

loadSiren();

// Default Search and Videos Load on Start Page
google.setOnLoadCallback(function(){
	setup_goog('right');
	setup_goog('left');	
});

startVideo('left');
startVideo('right');

// Demo vid:hhPWK3v6Q_0
$('.demo').live('click',function(){ // Playlists: HOFQByEgwjE
	$('#left-title').text('Ibizaah! Demo Video');
	load_vid('left', 'hhPWK3v6Q_0');
	$('#right-title').text('Ibizaah! How to use the Auto DJ feature');
	cueNewVideo('right', 'rwwtEhV_yzM',0);
})



// Load Playlists

$("#loadPlaylists").click(function(){$('#players').css('margin-left','6000px');}).colorbox({href:'load_playlists.php',iframe:true, width:650, height:550,scrolling:false});

// Retrieve User Playlist: http://gdata.youtube.com/feeds/api/users/jariburi/playlists?v=2&alt=json
// Single Playlist: http://gdata.youtube.com/feeds/api/playlists/349B750AE2D3544F?v=2&alt=json
// Callback: http://gdata.youtube.com/feeds/users/GoogleDevelopers/uploads?alt=json-in-script&format=5&callback=showMyVideos">
var plTarget = 0;
var plOverwrite = 1;
loadPlaylist = function(id,target,md){
	//alert(md)
	plTarget = target;plOverwrite = md;
	$.getScript('http://gdata.youtube.com/feeds/api/playlists/'+id+'?v=2&alt=json-in-script&callback=showMyVideos');
	
}

var raL = new Object; 
var raR = new Object; 
function isEven(num) {
  return !(num % 2);
}



showMyVideos = function (data) {
	
	var ytUrl = 'http://www.youtube.com/v/';
	var feed = data.feed;
	var entries = feed.entry || [];
	var results = {left:0,right:0};
	No['left']=No['right']=0;
	if(plOverwrite == 1){
		if(plTarget == 'both'){
			Pl['left'] = new Object();Pl['right'] = new Object();	
		}else{
			Pl[plTarget] = new Object();
		}
	}

	for (var i = 0; i < entries.length; i++) {
		var d = new Array; 
		var entry = entries[i];var video_id = entry.media$group.yt$videoid.$t;//getVideoId(d.tbUrl);
		if(typeof(entry.media$group.media$thumbnail)!='undefined' && typeof(entry.media$group.media$content)!='undefined'){
			d.tbUrl = entry.media$group.media$thumbnail[0].url;
			
			
			if(plTarget == 'both'){
				var side = isEven(i) ? 'left' : 'right';
			}else{
				var side = plTarget;
			}		
			
			 if(typeof Pl[side][video_id] == 'undefined'){ // Skip results already in Playlist object
				d.title = entry.title.$t;
				//d.playUrl = d.url = entry.media$group.media$content[0].url;
				d.playUrl = d.url = ytUrl+video_id;
				d.duration = entry.media$group.media$content[0].duration;
				setPlCount(1,side,d.duration);
				d.count = No[side];
				results[side] += playItemTpl(d,'playlist',side,1);
				if(side == 'left'){
					raL[video_id] = d;
				}else{
					raR[video_id] = d;
				}
				//$('#msg').append(video_id+'<br />')
			}
		}
	}
	
	
	if(plTarget == 'both'){
		Pl['left'] = raL;Pl['right'] = raR;
		var tgL = 'left-playlist';var tgR = 'right-playlist';
		switchtabs(tgL,'left');switchtabs(tgR,'right');
		if(plOverwrite == 1){
			$('#'+tgL+'').html(results['left']);$('#'+tgR+'').html(results['right']);
		}else{
			$('.leftPlMsg, .rightPlMsg').remove();
			$('#'+tgL+'').append(results['left']);$('#'+tgR+'').append(results['right']);
		}
		
	}else{
		Pl[side] = side == 'left' ? raL : raR;
		var tg = ''+side+'-playlist';var tgId = '#'+side+'-playlist';
		switchtabs(tg,side);
		if(plOverwrite == 1){
			$(tgId).html(results[side]);
		}else{
			$('.'+side+'PlMsg').remove();
			$(tgId).append(results[side]);	
		}
	}
	
	
	$.fn.colorbox.close();
}

$(document).bind('cbox_closed', function(){
        $('#players').css('margin-left','0px');
});

/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
		;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);




// Join Dialog

var inviteMsg = 'enter email..';
var invMsg = 0;


// Simple Email validation
validateEmail = function(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(email) == false) {
      return false;
   }else{
	return true;
	}
}

function closeInvWindow(){	
//	$('.join-box').remove();
	$('#joinBtnbox').css('display','inline');
	$('#joinDialog').css('display','none');
}

requestInvite = function(){
	var error = new Array();
	var email = $('#req_invite_txt').val();
	var options = {ajax:"true",email:email};
	
	if(email.length == 0 || email == inviteMsg){
		error[0] = 'Please, enter email address.';
	}
	
	if(validateEmail(email) != true){
		error[0] = 'Please, enter a valid email address.';
	}
	
	if(error.length == 0){
	
	$.post("request_invite_ajax.php", options,
		function(data){
			if(data){

				if(data.ok.success == 1){
					showInvSuccessMsg();
				}

				if(data.ok.success == 0){			
					$("#invMsg").text(data.ok.msgDisplay).addClass('errorMsg');
					$("#req_invite_txt").val('').focus();
				}

			}
		}, "json");
		
	}else{
		invMsg = $("#invMsg").val();
		$("#invMsg").text(error[0]).addClass('errorMsg');
		$("#req_invite_txt").val('').focus();
	}
	return false;
	
}

function showInvSuccessMsg(){
var msg = '<div class="header">Your Invite has been submitted!</div>'+
			'<div class="info">Thanks for your interest. We are hard at work improving the Ibizaah! experience.'+
				' Soon you\'ll get and invite.'+
			'</div>'+
			'<div class="actions">'+
				'<a href="#" id="closeInvBtn">(Close This Window)</a>'+
		'</div>';
	$("#joinDialog").html(msg);
}



$('#joinBtn').click(function(){
	$('#joinBtnbox').css('display','none');
	$('#joinDialog').css('display','inline-block');
	$('#req_invite_txt').focus();
})

inputMsgAutoReset('req_invite_txt',inviteMsg);

$('#req_invite_txt').live('keyup', function(ev) {
    if(ev.keyCode == 13) {
		requestInvite();
    }
	return false;
});
$('#req_invite_btn').live('click',function(){requestInvite();})
$('#closeInvBtn').live('click',function(){closeInvWindow();return false;})

});