var counter = 0;
// Firefox fix or year
var currentYear = new Date().getYear();
if (currentYear < 2000 )
	currentYear = 2000 + currentYear%100

var TZ = (new Date().getTimezoneOffset()/60)*(-1); 

// Daylight fix for PK
//if (TZ == 5) TZ = 6;

var majlisTime = [],majlisEndTime = [];

var today;
var weekbit;
var broadcastStatus,forceStop,broadcastMessage,broadcastOfflineMessage,broadcastServer;
//var today=new Date(currentYear,new Date().getMonth(),new Date().getDate()+2,20,15);
//alert(today.toLocaleString());

var dailyMajlis = [];
function initTimer()
{
	today = new Date();
	weekbit = 1 << today.getDay();
		
	var majlisHtml = '';
	
	for (var d=0;d<dailyMajlis.length;d++)
	{
		dailyMajlis[d][0] = dailyMajlis[d][0] - 5;
		dailyMajlis[d][2] = dailyMajlis[d][2] - 5;
		
		majlisTime[d] = new Date(currentYear,today.getMonth(),today.getDate(),dailyMajlis[d][0]+TZ,dailyMajlis[d][1],0);
		majlisEndTime[d] = new Date(currentYear,today.getMonth(),today.getDate(),dailyMajlis[d][2]+TZ,dailyMajlis[d][3],0);
		
		majlisHtml += '<span class="green bold">&bull;</span> ' + dailyMajlis[d][4] + ': ' + checkTime(majlisTime[d].getHours()) + ':' + checkTime(majlisTime[d].getMinutes()) + ' to ' + checkTime(majlisEndTime[d].getHours()) + ':' + checkTime(majlisEndTime[d].getMinutes()) + ' (GMT '+TZ+')<br/>';		
	}

	if (document.getElementById('majlisTime') && document.getElementById('majlisTime').innerHTML == '')
		document.getElementById('majlisTime').innerHTML = majlisHtml;
		
	dailyMajlis = sortArray(dailyMajlis);
	
	majlisTime = [];
	majlisEndTime = [];
	for (var d=0;d<dailyMajlis.length;d++)
	{
		majlisTime[d] = new Date(currentYear,today.getMonth(),today.getDate(),dailyMajlis[d][0]+TZ,dailyMajlis[d][1],0);
		majlisEndTime[d] = new Date(currentYear,today.getMonth(),today.getDate(),dailyMajlis[d][2]+TZ,dailyMajlis[d][3],0);
		//alert(majlisTime[d].toLocaleString() + "/////" + majlisEndTime[d].toLocaleString());
	}

/*
		var flag=1;
		for (var i in majlisTime)
		{
			if ( today.getHours() < majlisTime[i].getHours() )
				flag=0;
		}
		if (flag)
		{
			for (var i in majlisTime)
				majlisTime[i].setDate(today.getDate()+1);
		}

*/
	startTimer();
}

function startTimer()
{
	if (counter == REFRESH_TIME)
	{
		loadTime();
		return;
	}

	counter++;
	
	//Get 1 min in milliseconds
	var one_min=1000*60;
	var x = 0;
	today = new Date();

	var remainTime = -1,remainEndTime;
	
	while (remainTime < 0)
	{
		if ( x == dailyMajlis.length )
		{
//			alert('next day' + today.getDay());
			x = 0;
			weekbit = 1 << (today.getDay() + 1 == 7 ? 0 : today.getDay() + 1) ;
			for (var i=0;i<majlisTime.length; i++)
			{
				majlisTime[i].setDate(today.getDate()+1);
				majlisEndTime[i].setDate(today.getDate()+1);
//				alert(i+":"+majlisTime[i].toLocaleString() + "..." + today.toLocaleString());
			}
			continue;
		}

		if (!(dailyMajlis[x][5] & weekbit))
		{
//			alert(dailyMajlis.length + "===" + dailyMajlis[x][5] + "=====" + today.getDay() + '----' + weekbit);					
//			alert(dailyMajlis[x][5] & weekbit);
			x++;
			continue;
		}
		
		remainTime = Math.ceil((majlisTime[x].getTime()-today.getTime())/(one_min));
		remainEndTime = Math.ceil((majlisEndTime[x].getTime()-today.getTime())/(one_min));
//		alert(remainEndTime);
//		alert(dailyMajlis[x][4] + "|" + majlisTime[x].toLocaleString() + "..." + today.toLocaleString() + '=>' +remainTime);
//		alert(majlisEndTime[x].toLocaleString() + "..." + today.toLocaleString() + '=>'+ remainEndTime);
		
		
		if (broadcastOfflineMessage != "" && broadcastStatus == 0)
		{
			broadcastOfflineMessage = broadcastOfflineMessage.replace("%m",dailyMajlis[x][4]);
			$('broadcastOfflineMessage').innerHTML = "<span>"+broadcastOfflineMessage+"</span><hr>";
			$('broadcastOfflineMessage').style.display = "block";
			$('majlisInfo').style.display = "none";
		}
		else
		{
			$('broadcastOfflineMessage').innerHTML = "";
			$('majlisInfo').style.display = "block";
		}

		if (broadcastMessage != "" && broadcastStatus > 0)
		{
			$('broadcastMessage').innerHTML = "<span>"+broadcastMessage+"</span>";
			$('broadcastMessage').style.display = "block";
			$('majlisInfo').style.display = "block";
		}
		else
		{
			$('broadcastMessage').innerHTML = "";
			$('majlisInfo').style.display = "block";
		}

		// Inactive state
		if (remainTime > 0)
		{
			if (remainTime > 60)
			{
				remainMin = parseInt(remainTime % 60);
				remainHr = parseInt(remainTime / 60);
				remainTime = remainHr + ' hours, ' + remainMin + ' minutes ';
			}
			else
				remainTime += ' minutes ';
				
			str = "Upcoming LIVE "+dailyMajlis[x][4]+"! <br><span class='orange'>"+ remainTime +" left</span>";

			if ($('img_majlis_status') && $('img_majlis_status').src.indexOf('/img/layout/live_majlis_from_khanqah_offline.gif') == -1)
				$('img_majlis_status').src = '/img/layout/live_majlis_from_khanqah_offline.gif';

			$('playerLink').style.display = "none";
			$('playerLink_offline').style.display = "block";

			break;
		}
		// Active state
		else if (remainEndTime > 0)
		{
			var remainEndTimeStr = "";
//			alert(remainEndTime);
			if (remainEndTime > 60)
			{
				remainMin = parseInt(remainEndTime % 60);
				remainHr = parseInt(remainEndTime / 60);
				remainEndTimeStr = remainHr + ' hours, ' + remainMin + ' minutes ';
			}		
			else
				remainEndTimeStr = remainEndTime + ' minutes ';
			
			// skip majlis even if time left - stopped early
			if (forceStop == 1)
			{
				$('playerLink').style.display = "none";
				$('playerLink_offline').style.display = "block";

				if ($('img_majlis_status') && $('img_majlis_status').src.indexOf('/img/layout/live_majlis_from_khanqah_offline.gif') == -1)
					$('img_majlis_status').src = '/img/layout/live_majlis_from_khanqah_offline.gif';

				x++;
				continue;
			}
			else if (broadcastStatus == 1)
			{
				$('playerLink').style.display = "block";
				$('playerLink_offline').style.display = "none";
				
				str = dailyMajlis[x][4] +" is currently <font color='red'>LIVE!</font><br>("+remainEndTimeStr+" left)";

				if ($('img_majlis_status') && $('img_majlis_status').src.indexOf('/img/layout/live_majlis_from_khanqah.gif') == -1)
					$('img_majlis_status').src = '/img/layout/live_majlis_from_khanqah.gif';
					
				promptMajlis();
			}
			else
			{
				// TODO: skip majlis if 0.75 time has passed
				var totalDuration = remainEndTime - remainTime;
//				window.status = remainTime + "|" + remainEndTime;
				if (remainEndTime < totalDuration * 0.5)
				{
//					alert('next');
//					window.status ='next';
					x++;
					continue;
				}

				$('playerLink').style.display = "none";
				$('playerLink_offline').style.display = "block";

				str = dailyMajlis[x][4] +" is about to start now<br><span class='orange'>Stay tuned ...</span>";
				if ($('img_majlis_status') && $('img_majlis_status').src.indexOf('/img/layout/live_majlis_from_khanqah_offline.gif') == -1)
					$('img_majlis_status').src = '/img/layout/live_majlis_from_khanqah_offline.gif';
			}

			break;
		}
		
		x++;

	}

	if ($('playerLink').style.display != "block" && broadcastStatus == 1)
	{
		$('playerLink').style.display = "block";
		$('playerLink_offline').style.display = "none";
		
		str = "Majlis is currently broadcasted <font color='red'>LIVE!</font>";

		//alert($('img_majlis_status'));
				
		if ($('img_majlis_status') && $('img_majlis_status').src.indexOf('/img/layout/live_majlis_from_khanqah.gif') == -1)
			$('img_majlis_status').src = '/img/layout/live_majlis_from_khanqah.gif';
			
		promptMajlis();
	}
	
	if ($('leftTime'))
		$('leftTime').innerHTML=str;

	// add a zero in front of numbers<10
	var h=checkTime(today.getHours());
	var m=checkTime(today.getMinutes());
	var s=checkTime(today.getSeconds());
	if ($('localTime'))
	{
//		alert('Your Time: '+h+":"+m+":"+s);
		$('localTime').innerHTML='Your Time: '+h+":"+m+":"+s;
	}
		
	t=setTimeout('startTimer()',1000)
}

function sortArray(arr)
{
	var t;
	for (var x=0;x<arr.length-1;x++)
	{
		for (var y=x+1;y<arr.length;y++)
			if (arr[x][0] > arr[y][0])
			{
				t = arr[x];
				arr[x] = arr[y];
				arr[y] = t;
			}
	}
	return arr;
}

function checkTime(i)
{
	if (i<10) 
	  {i="0" + i}
	  return i
}

function loadTime()
{
//	alert('in');
	new Ajax.Request('http://'+DOMAIN_NAME+'/majalis/loadTime',
						{
							onSuccess:function(r)
							{
								counter = 0;
								eval(r.responseText);
								if (dailyMajlis.length)
									initTimer();								
								else
									window.status = "NOTE: Majlis timings unsyncronized, kindly refresh the page";
							},
							onFailure:function(r)
							{
								// alert(r.responseText)
								window.status = "NOTE: Majlis timings unsyncronized, kindly refresh the page";
							}
						}
						);
}

loadTime();

function promptMajlis()
{
	if (!getCookie('khq_check_live') && $('playerLink').style.display == "block")
	{
		setCookie('khq_check_live',1,(1/24)*2,'/');
		var r = Math.floor(Math.random()*60)*1000;
		setTimeout("randomPopupTime()",r);		
	}	
}

function randomPopupTime()
{
	jsTrack('/event/majlis/prompt/website-live-broadcast');
	if (confirm("Live Majlis of Hazrat Maulana Shah Hakeem Muhammad Akhtar Saheb \n\n(damat barkatuhum) is currently being broadcasted.\n\nClick OK to Listen Now, or cancel to hide this prompt"))
	{
		playMajlis();
	}	
}

function playMajlis()
{
/*
	var iframe1 = document.createElement("iframe");
	iframe1.style.display = "none";
	document.body.appendChild(iframe1);
	iframe1.src = broadcastServer;
*/
	$('divLivePlayer').innerHTML = 'Loading...';

	var params={};
	params.allowfullscreen="false";
	params.wmode="transparent";
	params.allowscriptaccess="always";
	params.autostart="true";

	serverInfo = parseUri(broadcastServer);	
	var host = serverInfo.host;	
	var fn = ";stream.mp3";
	var port = serverInfo.port ? serverInfo.port : '80';
	var rnd = "&12533596453";

	var flashvars={};
	flashvars.usefullscreen="false";
	flashvars.skin="http://"+DOMAIN_NAME+"/misc/flashplayer/skins/kleur.swf";
	flashvars.autostart="true";
	flashvars.file="http://"+host+":"+port+"/"+fn+rnd;

	var attributes={};
	attributes.id="divLivePlayer";
	attributes.name="divLivePlayer";
							
	swfobject.embedSWF("http://"+DOMAIN_NAME+"/misc/flashplayer/player.swf","divLivePlayer","220","59","9.0.0","expressInstall.swf", flashvars, params, attributes);
	
	// as playMajlis() is called from other areas too
	jsTrack('/event/majlis/play/website-live-broadcast');
}

function playerReady(obj)
{
	player = document.getElementById(obj.id);
	player.addModelListener('STATE', 'stateMonitor');
}

function stateMonitor(obj)
{
	// record tracking after 1 minute of stay
	if (obj.newstate == "PLAYING")
		setTimeout("jsTrack('/event/majlis/listen/website-live-broadcast')",60000);	
}

// parseUri 1.2.2 http://blog.stevenlevithan.com/archives/parseuri
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
function parseUri (str) {
	var	o   = parseUri.options,
		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		uri = {},
		i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};

// prompt for live majlis checking
Event.observe(window, 'load', function() 
	{
		promptMajlis();
	}
);