	var selectedTimeInMillis = 0;
	var timeZoneFix = false;
	var streamPlayerUrl = '';
	var oneDayInMillis = 24*60*60*1000;
	
	function setFixValues(selectedTime,timeZoneFixFlag,playerUrl) {
		selectedTimeInMillis = selectedTime;
		timeZoneFix = timeZoneFixFlag;
		streamPlayerUrl = playerUrl;
	}

	var rightNow = new Date();
	var date1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
	var date2 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0);
	var temp = date1.toGMTString();
	var date3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var temp = date2.toGMTString();
	var date4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var hoursDiffStdTime = (date1 - date3) / (1000 * 60 * 60);
	var hoursDiffDaylightTime = (date2 - date4) / (1000 * 60 * 60);		
	var timeZoneMinute = (hoursDiffStdTime%1)*60;
	var timeZoneHour = hoursDiffStdTime-(hoursDiffStdTime%1);

	if (timeZoneHour >=0 && timeZoneHour < 10) {
		var timeZoneId = 'GMT+0' + timeZoneHour;
	} else if (timeZoneHour < 0 && timeZoneHour > -10) {
		var timeZoneId = 'GMT-0' + (-1*timeZoneHour);
	} else {
		var timeZoneId = 'GMT+' + timeZoneHour;
	}
	
	if (timeZoneMinute > 0)
		timeZoneId += timeZoneMinute;
	else
		timeZoneId += '00';

	var daylightSaving = 'Yes';
	if (hoursDiffDaylightTime == hoursDiffStdTime)
		var daylightSaving = 'No';
   					
	
	function updateStreamGuide() {
	 	var category = document.streamGuideForm.category.value;
    	var selectedDate = document.streamGuideForm.selectedDate.value;
    	var selectedTime = document.streamGuideForm.selectedTime.value;
    	var newLocation = '/streamGuide.do?jumpTo=selected&category='+category+'&selectedDate='+selectedDate+'&selectedTime='+selectedTime+'&timeZone='+timeZoneId+'&daylightSaving='+daylightSaving;
    	window.location = newLocation;
    }
    
    function jumpTo(jumpDate) {
		var category = document.streamGuideForm.category.value;
    	var selectedDate = jumpDate.formatDate("m/d/Y");
    	var selectedTime = jumpDate.formatDate("g:00 a");
    	var newLocation = '/streamGuide.do?jumpTo=selected&category='+category+'&selectedDate='+selectedDate+'&selectedTime='+selectedTime+'&timeZone='+timeZoneId+'&daylightSaving='+daylightSaving;
    	window.location = newLocation;
    }
    
    function jumpToNow() {
    	var jumpDate = new Date();
    	jumpTo(jumpDate);
    }
    
   	function jumpHours(hour) {
    	var jumpDate = new Date();
    	jumpDate.setTime(selectedTimeInMillis + (hour*60*60*1000));
    	jumpTo(jumpDate);
    }



	// populating schedule cells

    var newRow = true;
    var oneHourInMillis = 60*60*1000;
    var maxWidth = 5*120;
    var widthUsed = 0;
    var beforeCell = false;
    var afterCell = false;
    var startPosition = 0;
    var endPosition = maxWidth;
    var timeCellwidth = 0;
    var blankCellWidth = 0;
    var timeOffsetWidth = 0;
    var blankOffsetWidth = 0;
    var offsetWidth = 20;
    var timeZoneOffsetInMillis = timeZoneMinute*60*1000;
    
    function setNewRow() {
    	newRow = true;
    	widthUsed = 0;
    }
    
    function setCellsWidth(startTime,endTime) {
        beforeCell = false;
    	afterCell = false;
    	timeCellWidth = 0;
    	blankCellWidth = 0;
    	timeOffsetWidth = 0;
    	blankOffsetWidth = 0;
    	
    	if (timeZoneFix) {
    		startTime += timeZoneOffsetInMillis;
    		endTime += timeZoneOffsetInMillis;
    	}
    
    	startPosition = ((startTime - selectedTimeInMillis)/oneHourInMillis)*120;
    	endPosition = ((endTime - selectedTimeInMillis)/oneHourInMillis)*120;
    	
    	if (startPosition < 0 && widthUsed == 0) {
    		startPosition = 0;
    		beforeCell = true;
    		timeOffsetWidth += offsetWidth;
    	}
    	if (startPosition < widthUsed) {
    		startPosition = widthUsed;
    		beforeCell = false;
    	}    	
    	if (endPosition > maxWidth && widthUsed < maxWidth) {
    		endPosition = maxWidth;
    		afterCell = true;
    		timeOffsetWidth += offsetWidth;
    	}
    	
    	if (startPosition > widthUsed && widthUsed == 0) {
    		blankOffsetWidth += offsetWidth;
    		blankCellWidth = startPosition + blankOffsetWidth;
    	}
    	
    	if (startPosition == 0 && !beforeCell) {
    		blankOffsetWidth += offsetWidth;
    		blankCellWidth = blankOffsetWidth;
    	}
    	
    	if (startPosition > widthUsed && widthUsed > 0) {
    		blankCellWidth = startPosition - widthUsed
    	}
    
    	if (widthUsed < maxWidth) {
    		timeCellWidth = endPosition - startPosition + timeOffsetWidth;
    		widthUsed += blankCellWidth + timeCellWidth - timeOffsetWidth - blankOffsetWidth;
    	} 	
	}
    

    function buildScheduleDiv(userId,userName,userScreenName,userImage,category,liveStatus,scheduleId,title,description,start,end,allowLiveSubscribers,allowCalendarSubscribers)
	{	
		var startTime = Date.parse(start);
		var startDate = new Date();
		startDate.setTime(startTime);
		var endTime = Date.parse(end);
		var endDate = new Date();
		endDate.setTime(endTime);
	
		//hide streams which they should be online right now, but they are not
		if (rightNow.getTime() > startTime && liveStatus == 'false') {
			var streamRowDiv = document.getElementById('row' + userId);
			if (streamRowDiv)
				streamRowDiv.style.display = "none"
		}	
		
		setCellsWidth(startTime,endTime);
   			
   		if (blankCellWidth > 0)
   			document.write('<div class="blankCell" style="width: '+blankCellWidth+'px;">&nbsp;</div>');
   	
   		if (timeCellWidth > 0) {
			document.write('<div class="timeCell" style="width: '+timeCellWidth+'px;">');
			
			if (beforeCell)        
   				document.write('<div class="arrowBefore">&nbsp;</div>');
   				
   			document.write('<div class="iconsL">');
   			
   			if (loggedIn && (allowLiveSubscribers || allowCalendarSubscribers)) {
				document.write('<div id="addSchedule'+scheduleId+'" class="addEvent" style="display: block;"><a href="javascript:;" onclick="addEvent('+scheduleId+');" title="Add Event"><b>+</b></a></div>');
				document.write('<div id="removeSchedule'+scheduleId+'" class="removeEvent" style="display: none;"><a href="javascript:;" onclick="removeEvent('+scheduleId+')" title="Remove Event"><b>-</b></a></div>');
			} else {
				document.write('<div class="addEvent" style="display: block;"><a href="javascript:;" onclick="alert(\'Please login before adding this event.\');" title="Add Event"><b>+</b></a></div>');
			}	
			
			if (liveStatus == 'true') 
				document.write('<div class="icon_live"><a onclick="MM_openBrWindow(\'/largeChat.do?uId='+userId+'\',\'member_big_vchat_'+userId+'\',\'width=550,height=630\')" href="javascript:;" title="live">live</a></div>');
			
			document.write('</div>');
			document.write('<a href="/'+userName+'" style="width: '+(timeCellWidth-timeOffsetWidth-23)+'px;"');
			document.write('onmouseover="showStreamDetail('+userId+',\''+userImage+'\',\''+liveStatus+'\','+scheduleId+');" ');
			document.write('onmouseout="hideStreamDetail('+userId+');"');
			document.write('><b>'+title+'</b></a>');
			
			if (afterCell)
				document.write('<div class="arrowAfter">&nbsp;</div>');
				
			// start dummy cell for stream details 	
			document.write('<div class="detailWrapper" id="schedule'+scheduleId+'" style="display:none">');
            document.write('<div class="detailBox">');
           	document.write('<div class="detailTop">');                   
            document.write('<div class="dArrowTopM" style="margin-left:'+ (startPosition) +'px;">&nbsp;</div>');
            document.write('</div>');
            document.write('<div class="details">');
            document.write('<div class="dPlayer">');
            
            if (liveStatus == 'true') 
            	document.write('<div class="video_midsize_160">_STREAM_PLAYER_</div>');
            else
            	document.write('<img src="'+userImage+'" width="160" height="120">');
            	
            document.write('</div>');
            document.write('<div class="dLtBox">');
            document.write('<div class="dTitle">'+title+'</div>');
            document.write('<div class="dTime">' + startDate.formatDate("l, F jS") + '&nbsp;&nbsp;&nbsp;' + startDate.formatDate("g:i a") + ' - ' + endDate.formatDate("g:i a")+'</div>');
            document.write('<div class="dText">'+description+'</div>');
            document.write('<div class="dUserName">');
            document.write('<span>By : </span>');
            document.write('<div class="icon_'+category+'" title="Shows">Shows</div>');
            document.write('<a href="/'+userName+'" target="_top">'+userScreenName+'</a>');
            document.write('</div>');
            document.write('</div>');
            document.write('</div>');
            document.write('</div>');
            document.write('</div>');	
			document.write('</div>');
		}	
	}
	
	function hideStreamDetail(userId) {
		var streamDetailDiv = document.getElementById('stream' + userId);
		if (streamDetailDiv) {
			streamDetailDiv.innerHTML = '';
			streamDetailDiv.style.display = "none";
		}
	}
	
	function showStreamDetail(userId,userImage,liveStatus,scheduleId) {
		var streamDetailDiv = document.getElementById('stream' + userId);
		var scheduleDetailDiv = document.getElementById('schedule' + scheduleId);
		if (streamDetailDiv && scheduleDetailDiv) {
			var StreamDetailHtmlCode = scheduleDetailDiv.innerHTML;
			if (liveStatus == 'true') {
				var streamPlayer = getStreamViewerHtml(userId,userImage);
				StreamDetailHtmlCode = StreamDetailHtmlCode.replace('_STREAM_PLAYER_',streamPlayer);
			}
			streamDetailDiv.innerHTML = StreamDetailHtmlCode;
			streamDetailDiv.style.display = "block";
		}
	}
	
	function addEvent(scheduleId) {
		addUserSchedule(scheduleId);
		var addScheduleDiv = document.getElementById("addSchedule"+scheduleId);
		var removeScheduleDiv = document.getElementById("removeSchedule"+scheduleId);
		if (addScheduleDiv && removeScheduleDiv) {
			addScheduleDiv.style.display = "none";
			removeScheduleDiv.style.display = "block";
		}
	}
	
	function removeEvent(scheduleId) {
		removeUserSchedule(scheduleId,'false');
		var addScheduleDiv = document.getElementById("addSchedule"+scheduleId);
		var removeScheduleDiv = document.getElementById("removeSchedule"+scheduleId);
		if (addScheduleDiv && removeScheduleDiv) {
			addScheduleDiv.style.display = "block";
			removeScheduleDiv.style.display = "none";
		}
	}
	
	function getStreamViewerHtml(userId,imageUrl) {
		var playerHtmlCode = '';
        var playerID=721; //production;
        switch (true) {
        	case /dev/.test(streamPlayerUrl):
				playerID=322;
                break;
        	case /preprod/.test(streamPlayerUrl):
            	playerID=682;
                break;
        }
        
        var datasrc = streamPlayerUrl + '?'
        datasrc+=  ['hostData=no',
                    'userType=205',
                    'skinType=player',
                    'userSiteID=1015547',
                    'playerId=' + playerID,
                    'app=stickam_chat_custom.swf',
                    'langID=en',
                    'hostName=http%3A%2F%2Fwww.stickam.com',
                    'sessionType=115',
                    '&userID=' + userId,
                    '&photo=' + encodeURIComponent(imageUrl)].join('&');
        
		playerHtmlCode += '<object type="application/x-shockwave-flash" width="160" height="120"';
		if (navigator.appName == "Microsoft Internet Explorer") {
			playerHtmlCode += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">'
			playerHtmlCode += '<param name="movie" value="' +datasrc+ '"/>';
		} else {
			playerHtmlCode += ' data="' +datasrc+ '">';
		}
		playerHtmlCode += '<param name="scale" value="noscale"/>';
		playerHtmlCode += '<param name="wmode" value="transparent"/>';
		playerHtmlCode += '<param name="allowScriptAccess" value="always"/>';
		playerHtmlCode += '</object>';
		
		return playerHtmlCode;             
	}
