/*
 * Copyright (c) 2008 AKEEBO CORPORATION. All Rights Reserved.
 *
 * This software is the confidential and proprietary information ("Confidential Information") 
 * of AKEEBO CORPORATION ("AKEEBO CORP"). Any disclosure or use of such Confidential Information other 
 * than in accordance with the terms of the license under which it was received is strictly 
 * prohibited.
 *
 * AKEEBO CORP MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF 
 * THE SOFTWARE, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
 * OR NON-INFRINGEMENT. AKEEBO CORP SHALL NOT BE LIABLE FOR ANY DAMAGES
 * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
 * THIS SOFTWARE OR ITS DERIVATIVES.
 */
 
/////////////////////////////////////////////////////////////////////
// keyHandler.js

////////////////////////////////////////
// remote key - enable or disable
// Keys enabled when everything loaded
var bEnabledKeys = false;
var skinActive = null;
// VOD 
var feedType = "";
var pauseFlag = 0;

var boxLocked = false;

var startUp = 0;
var endUp = 0;
var channelChanged = false;

var streamPlayHandle = null;

var guideTimer = null;
var currImage = 0;
var searchStatus = 0;
var moveKeys = 0;
var actionEvent = null;
var gridStartIndex = false;
var widgetType = -1;

function mediaEventHandler(event) {
	try {
		switch(event) {
			case 8: // stream lost - RTSP_STATUS_END_OF_STREAM 
			case 9: // stream not found - RTSP_STATUS_NOT_FOUND
			case 10: // STATUS_NO_VIDEO
			case 12: // RTSP_CONNECTION_STOPPED
				if(vodActive && stbTypeId != 4) {
					resetVod();
				}
			break;
			case 11:
			case 16:
			// As the leave and join are occured many times that causes to freeze the box, So better to put off the box.
//				streamPlayHandle = window.setInterval('startStream();', 1000);						
			break;		
			case 15: 
			case 17:
				if(streamPlayHandle) {
					window.clearInterval(streamPlayHandle);
					streamPlayHandle = null;
				}
			break;
		}		
	} catch (e) {
		//alert("handleMediaEvent -> " + e);	
	}
//alert('This is a debug messge: event = ' + event);
//	switch(event) {
//		case 8:
//			if(vodActive) {
//				hideStatusPanel();
//				document.getElementById("statusMessagePanel").innerHTML = '';				
//				document.getElementById("layer8").style.display = "block";
//				//waitPanel.style.backgroundImage="url(/view/tv/images/banner.png)";											
//				startStream();
//				trickPlay = false;
//			}			
//		break;
//		
//		case 11:
//		case 16:
//			streamPlayHandle = window.setInterval('startStream()', 1000);						
//		break;		
//		
//		case 15: 
//		case 17:
//			if(streamPlayHandle) {
//				window.clearInterval(streamPlayHandle);
//				streamPlayHandle = null;
//			}
//		break;
//	}
}
////////////////////////////////////
// EVENT HANDLERS				
///////////////////////////////////
function keyAction(e) {
//	hideAll();
//	alert(" moving inside ");
//	alert("This is key Action "); // testing module [virendra]
	if(e.keyCode) 
		keyCodeNum = e.keyCode;
	else 
		keyCodeNum = e.which;
	var charCode = String.fromCharCode(keyCodeNum);
	currentKeyEvent = e;
//	alert(keyCodeNum);
//	if(stockActive) {
//		getKeyValue(keyCodeNum);
//		return;
//	}
//	if(controlActive) {
//		getControlKeyBoard(keyCodeNum, e);
//		return;
//	}
//	alert(keyCodeNum  +  " : ");
//	if(getSystemModel() != "telbox110") {
//		init();
//		return;
//	}
//	alert(keyCodeNum);
	try {
		if ((getSystemModel() == "aminet110h") || (getSystemModel() == "aminet130h")) {
			if(e.shiftKey && (keyCodeNum == rckbSTOP)) {
				keyCodeNum = rcPAUSE;
			}
			if(e.shiftKey && (keyCodeNum == rckbRELOAD)) {
				keyCodeNum = rcPOWER;
			}
		}
	} catch(exception) {
		
	}
	
//	alert(clockActive);
	resetGuideTimer();
	// if it is PC, the no. entry will be faster
	//	alert(getSystemModel()); 
	
	if(getSystemModel().indexOf("pc") >=0) {
		keyActionHandler(keyCodeNum);
	} else {
		if(actionEvent != null) {
			window.clearTimeout(actionEvent);
			actionEvent = null;
		}
		actionEvent = window.setTimeout('keyActionHandler('+ keyCodeNum + ');', 40);
	}
//	keyActionHandler(keyCodeNum);
}

function resetGuideTimer() {
	// reset on any action ON the full-guide
	if(menuActive == true && !(favoriteActive || parentalControlActive || vodActive || buddyActive || musicActive || newsActive || stockActive || surveyActive || giftShopActive || controlActive || schedulerActive || assignedActive || demoActive || quizActive || transportActive || quizActive)) {
		// on every key press
		if(guideTimer) {
			window.clearInterval(guideTimer);
			guideTimer = null;		
		}
		//guideTimer = window.setTimeout('keyActionHandler(' + rcMENU + ')', 15000); // reset the time interval
	}
}

//function init() {
//	var ka = function(type, args, obj) {
//		resetGuideTimer();
//		keyActionHandler(args[0]);
//	}
//	var loadElement = document.getElementById('bodyPanel');
//	
//	var k = new KeyL (document, {keys:keyArray},  {fn: ka});
//	k.enable();
//}


function keyActionHandler(keyCodeNum) {
//	alert("inside key handler!this is the creating ambiguity ??????");  // testing module [virendra]
	
	if(lpActive && (keyCodeNum == rcLEFT || keyCodeNum == rcRIGHT) ) {
		lpHandler(keyCodeNum);
		return;
	}
	
	if(keyCodeNum == rcPOWER) {
		rebootSTB();
		return 0;
	}
	if(keyCodeNum == rckbHOME || keyCodeNum == rckbHOMEPAGE)
		keyCodeNum = rcMENU;
	else if(keyCodeNum == rckbPAGEUP)
		keyCodeNum = rcPAGEUP;		
	else if(keyCodeNum == rckbPAGEDOWN)
		keyCodeNum = rcPAGEDOWN;
	else if(keyCodeNum == rckbEND || keyCodeNum == rckbF4 || keyCodeNum == rckbA)
		keyCodeNum = rcBLUE;
	else if(keyCodeNum == rckbF3 || keyCodeNum == rckbS)
  		keyCodeNum = rcYELLOW;
  	else if(keyCodeNum == rckbF2)
  		keyCodeNum = rcGREEN;
  	else if(keyCodeNum == rckbF1)
  		keyCodeNum = rcRED;
  	else if(keyCodeNum == rckbPLUS)
		keyCodeNum = rcCHANNELPLUS;
	else if(keyCodeNum == rckbMINUS)
		keyCodeNum = rcCHANNELMINUS;
  	else if(keyCodeNum == rckbRELOAD)
		keyCodeNum = rcREFRESH;	
	else if(keyCodeNum == rcRKBZERO)
		keyCodeNum = rcZERO;	
	else if(keyCodeNum == rcRKBONE)
		keyCodeNum = rcONE;	
	else if(keyCodeNum == rcRKBTWO)
		keyCodeNum = rcTWO;	
	else if(keyCodeNum == rcRKBTHREE)
		keyCodeNum = rcTHREE;	
	else if(keyCodeNum == rcRKBFOUR)
		keyCodeNum = rcFOUR;	
	else if(keyCodeNum == rcRKBFIVE)
		keyCodeNum = rcFIVE;	
	else if(keyCodeNum == rcRKBSIX)
		keyCodeNum = rcSIX;	
	else if(keyCodeNum == rcRKBSEVEN)
		keyCodeNum = rcSEVEN;	
	else if(keyCodeNum == rcRKBEIGHT)
		keyCodeNum = rcEIGHT;	
	else if(keyCodeNum == rcRKBNINE)
		keyCodeNum = rcNINE;	
	else if(keyCodeNum == rcRKBPLUS)
		keyCodeNum = rcCHANNELPLUS;	
	else if(keyCodeNum == rcRKBMINUS)
		keyCodeNum = rcCHANNELMINUS;	
	else if(keyCodeNum == rcRKBNLEFT)
		keyCodeNum = rcLEFT;	
	else if(keyCodeNum == rcRKBNRIGHT)
		keyCodeNum = rcRIGHT;	
	else if(keyCodeNum == rcRKBNUP)
		keyCodeNum = rcUP;	
	else if(keyCodeNum == rcRKBNDOWN)
		keyCodeNum = rcDOWN;
	else if(keyCodeNum == rcSTBLASTCH)
		keyCodeNum = rcLASTCH;	
  	// 	
  	if( (mailActive || videoSearchActive)  && keyCodeNum != rcMENU) {
		showStatusPanel();
		document.getElementById("statusMessagePanel").innerHTML = '';
		document.getElementById("statusMessagePanel").innerHTML = records.key374;
		return;	
	}
	if(blogActive) {
			blogKeyHandler(keyCodeNum);
		return;
	}
	if(scCalcActive) {
		scKeyHandler(keyCodeNum);
		return;
	}
	if(stockActive) {
		stockKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(horoscopeActive) {
		horoscopeKeyHandler(keyCodeNum);
		return 0;
	}
	if(adultActive) {
		adultKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(vanityActive) {
		vanityKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(firePlaceActive) {
		firePlaceKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(newsActive) {
		newsKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(videoSearchActive) {
		videoSearchKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(photoStudioActive) {
		photoStudioKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(screenSaverActive) {
		screenSaverKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(aquariumActive) {
		aquariumKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(controlActive) {
		controlKeyHandler(keyCodeNum);
		return 0;
	}
	if(gameActive) {
		if(wrecords.wRecords[currImage].type == 11) {
			loadKeyHandler(keyCodeNum);
		} else if(gameMenuActive) {
			gameMenuKeyHandler(keyCodeNum);
		} else{
			gameKeyHandler(keyCodeNum);
		}
		return 0;
	}
	
	if(searchActive) {
		searchKeyHandler(keyCodeNum);
		return 0;
	}
	if(currencyActive) {
		currencyKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(calcActive) {
		calcKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(surveyActive) {
		surveyKeyHandler(keyCodeNum);
		return 0;
	}
	if(schedulerActive) {
		schedulerKeyHandler(keyCodeNum);
		return 0;
	}
	if(gridView) {
		gridViewKeyHandler(keyCodeNum);
		return 0;
	}
	if(calendarActive) {
		calendarKeyHandler(keyCodeNum);
		return 0;
	}
	if(loadActive) {
		lpHandler(keyCodeNum);
		return 0;
	}
	if(mealActive) {
		mealKeyHandler(keyCodeNum);
		return 0;
	}
	if(staffComActive) {
		staffComKeyHandler(keyCodeNum);
		return 0;
	}
	if(painAlertsActive) {
		painAlertKeyHandler(keyCodeNum);
		return 0;
	}
	if(assignedActive) {
		assignedKeyHandler(keyCodeNum);
		return 0;
	}
	
	if(spiritualActive) {
		spiritualKeyHandler(keyCodeNum);
		return 0;
	}
	if(youTubeActive) {
		youtubeKeyHandler(keyCodeNum);
		return 0;
	}
	if(huluActive) {
		huluKeyHandler(keyCodeNum);
		return 0;
	}
	if(docsActive) {
		docsKeyHandler(keyCodeNum);
		return 0;
	}
	if(inActive) {
		radioKeyHandler(keyCodeNum);
		return 0;
	}
	if(giftShopActive) {
		giftKeyHandler(keyCodeNum);
		return 0;
	}
	if(transportActive) {
		transportKeyHandler(keyCodeNum);
		return 0;
	}
	if(quizActive) {
		quizKeyHandler(keyCodeNum);
		return 0;
	}
	if(keyCodeNum == rckbPlus)
		keyCodeNum = rcPLUS;
	else if(keyCodeNum == rckbMinus)
		keyCodeNum = rcMINUS;		
	else if(keyCodeNum == rckbMulti)
		keyCodeNum = rcMULTI;
	else if(keyCodeNum == rckbDiv)
		keyCodeNum = rcDIV;
	else if(keyCodeNum == rckbEqual)
		keyCodeNum = rcEQUAL;
		
	if(feedType == "rtsp" && musicActive != true) {
		if(keyCodeNum == rcLEFT)
	  		keyCodeNum = rcRWR;
		else if(keyCodeNum == rcRIGHT)
	  		keyCodeNum = rcFWD;
		else if(keyCodeNum == rcOK)
	  		keyCodeNum = rcPAUSE;	
	}
	
	var bSwitchChannel = false;

	if(boxLocked == true) {
		authenticate(keyCodeNum);
		return 0;
	}
	
	// this button is used for VOD. Also, it does not always refresh code (during development) due to caching issues
	if(keyCodeNum == rcHOME && vodActive == false && !((getSystemModel() == "aminet110h") || (getSystemModel() == "aminet130h") || (getSystemModel() == "telbox110")) ) { // amino 110h takes the home as refreshing 
		refreshSTB();	
		return 0;
	}

	if(!bEnabledKeys || !channelIdCache)
		return 0;	

	// what about first time guide pull, and we come back from extras panel's items
	
	if(trickPlayHandle || trickPlayFrameHandle) {
		window.clearInterval(trickPlayHandle);
		trickPlayHandle = null;
		window.clearInterval(trickPlayFrameHandle);
		trickPlayFrameHandle = null;
	}	
		
	// if there is no graphics on the screen, first bring up the graphics
	if(bItsAllDark && (keyCodeNum == rcOK || keyCodeNum == rcLEFT || keyCodeNum == rcRIGHT || keyCodeNum == rcUP || keyCodeNum == rcDOWN)) {
		clearAdInterval();
		if(adPanelActive) {
			adKeyHandler(keyCodeNum);
			return 0;
		}
		hideAdPanel();
		launchViewer();		
		return 0;
	}	

	// if rcOK is Pressed when no graphics then do nothing
	if(bItsAllDark && (keyCodeNum == rcOK ))
		return 0;	

	// if there is a reminder panel, and user has hit anything but OK, remove the reminder, and do nothing else
    if(pReminderMode && keyCodeNum != rcOK) {         
        if(menuActive || bExtInfoMode) {
	        pReminderMode = false;
        } else {
            fadeAll();
            pReminderMode = false;
            return 0;
        }
    }	
   //alert(" rcCHANNELPLUS : " + rcCHANNELPLUS + " " + keyCodeNum + ", rcCHANNELMINUS : " + rcCHANNELMINUS);
	switch(keyCodeNum) {
		//////////////////////////////////////////////
		// Full Guide		
		case rcMENU:
			if(menuActive) { 
				if(favoriteActive) { 
					favoriteActive = false;
					if(favChanged) {
						saveFavoriteChannelPreferences();					
						favChanged = false;
					}
					if(isGridViewOpened) {
						gridView = true;
						launchGridFullGuidePanel();
						showGridFullGuidePanel();	
						return;
					}
					launchGuide();	
					showGuidePanel();
					launchFavoritePanel(); // don't remove		
					//TEMPguideTimer = window.setTimeout('keyActionHandler(' + rcMENU + ')', 15000);								
				} else if(parentalControlActive) {
					if(saveAndExit)	 
						return 0;
						
					if(pcChanged && !changePasswordSel) {
						showVerifyPasswordScreen();
						window.clearTimeout(oTriggerSwitchTimer);
						oTriggerSwitchTimer = null;		
						window.clearTimeout(oSwitchTimer);
						oSwitchTimer = null;							
						oSwitchTimer = window.setTimeout('openParentalControlPanel();', 60*1000);																			
						break;
					} else {
						parentalControlActive = false;
						if(isGridViewOpened) {
							gridView = true;
							launchGridFullGuidePanel();
							showGridFullGuidePanel();	
							return;
						}
						launchGuide();	
						//buildChannelCache();	
						showGuidePanel();			
						launchParentalControlPanel(); // don't remove				
						//TEMPguideTimer = window.setTimeout('keyActionHandler(' + rcMENU + ')', 15000);													
					}
				} else if(vodActive) { 
					if(feedType == "igmp") {
						if(startPage == 'VOD') {
							return;
						}
						
						resetGenrePanel();
						resetTitlePanel(); // viren changes 
						vodActive = false;
						if(isGridViewOpened) {
							gridView = true;
							showGridFullGuidePanel();
							//launchGridFullGuidePanel();	
							return;
						}
						if(stbTypeId == 7) {
							if(document.getElementById("epgPlayer") != null) {
								document.getElementById("epgPlayer").className = "epgPlayerRenew";
								document.getElementById("epgPlayer").innerHTML = "";
							}
						}
						showGuidePanel();
						launchGuide();		
						//TEMPguideTimer = window.setTimeout('keyActionHandler(' + rcMENU + ')', 15000);														
					} else {
						vodPage = 1;
						hideStatusPanel();
						document.getElementById("statusMessagePanel").innerHTML = '';				
						document.getElementById("layer8").style.display = "block";
						if(document.getElementById("keyDigitPanel") != null)
							document.getElementById("keyDigitPanel").style.visibility = "hidden";
						// 110h change									
						document.getElementById("waitPanel").style.backgroundImage="url('./view/tv/images/banner.png')";
						if(stbTypeId == 7) {
							if(document.getElementById("epgPlayer") != null) {
								document.getElementById("epgPlayer").className = "epgPlayerOld";
							}
						}			
						if(stbTypeId == 7) {
							document.getElementById("homePanelImage").style.visibility = "hidden";
						}							
//						document.getElementById("waitPanel").style.backgroundImage="url(/akeebo/com/akeebo/touchscreenTv/TvBanner)";
						startStream();
						trickPlay = false;									
					}
				} else if(buddyActive) { 
					showGoPanel();
					buddyActive = false;
					//launchGuide();	
					showGuidePanel();
					// guideTimer = window.setTimeout('keyActionHandler(' + rcMENU + ')', 15000);															
				} else if(musicActive) {
					aodKeyHandler(keyCodeNum);
//					showGoPanel();
//					feedType = "igmp"; 
//					musicActive = false; 
//					launchGuide();
//					showGuidePanel();
				} else if(stockActive) {
					showGoPanel();
					stockActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(newsActive) {
					showGoPanel();
					newsActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(surveyActive) {
					showGoPanel();
					surveyActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(giftShopActive) {
					showGoPanel();
					giftShopActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(transportActive) {
					showGoPanel();
					transportActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(controlActive) {
					showGoPanel();
					controlActive = false; 
					launchGuide();	
					showGuidePanel();
				} else if(calcActive) {
					showGoPanel();
					calcActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(dvrActive) {
					showGoPanel();
					dvrActive = false; 
					launchGuide();	
					showGuidePanel();
				} else if(chatActive) {
					showGoPanel();
					chatActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(blogActive) {
					showGoPanel();
					blogActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(gameActive) {
					showGoPanel();
					gameActive = false; 
					//launchGuide();	
					showGuidePanel();
					
				} else if(browserActive) {
					showGoPanel();
					browserActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(schedulerActive) {
					showGoPanel();
					schedulerActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(mailActive) {
					showGoPanel();
					mailActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(videoSearchActive) {
					showGoPanel();
					videoSearchActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(weatherActive) {
					showGoPanel();
					weatherActive = false; 
					//launchGuide();
					if(isGridViewOpened) {
						gridView = true;
						showGridFullGuidePanel();
						//launchGridFullGuidePanel();	
						return;
					}
					showGuidePanel();
				} else if(adultActive) {
					showGoPanel();
					adultActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(pizzaActive) {
					showGoPanel();
					pizzaActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(mapsActive) {
					showGoPanel();
					mapsActive = false; 
					//launchGuide();	
					showGuidePanel();
				}  else if(inActive) {
					showGoPanel();
					inActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(clockActive) {
					if(clockInt) {
						clearTimeout(clockInt);
						clockInt = null;
					}
					document.getElementById("secBlinkPanel").style.visibility = "hidden";
					showGoPanel();
					//waitPanel.style.backgroundImage="url(/view/tv/images/banner.png)";
					clockActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(firePlaceActive) {
					showGoPanel();
					firePlaceActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(yelpActive) {
					showGoPanel();
					yelpActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(photoStudioActive) {
					showGoPanel();
					photoStudioActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(screenSaverActive) {
					showGoPanel();
					screenSaverActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(youTubeActive) {
					showGoPanel();
					youTubeActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(aquariumActive) {
					showGoPanel();
					aquariumActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(horoscopeActive) {
					showGoPanel();
					horoscopeActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(vanityActive) {
					showGoPanel();
					vanityActive = false; 
					//launchGuide();	
					document.getElementById("wedCam").innerHTML = "";
					showGuidePanel();
				} else if(alertActive) {
					showGoPanel();
					alertActive = false; 
					//launchGuide();	
					showGuidePanel();
				} else if(demoActive) {
					document.getElementById("homePanelImage").style.visibility = "hidden";
					showGoPanel();
					demoActive = false; 
					showGuidePanel();
				} else if(currencyActive) {
					showGoPanel();
					currencyActive = false; 
					showGuidePanel();
				} else {	
					hideControlPanelActive();
					if(document.getElementById("goPanel") != null) {
						document.getElementById("goPanel").style.visibility = 'hidden';
					}
					uniqCatNameCache.shift();
					uniqCatNameCache.shift();		
						
					if(feedType == "rtsp") {
						feedType = "igmp";						
						startStream();
					}
					channelChanged = true;
					launchViewer();	
					
					menuActive = false;			
					if(guideTimer) {
						window.clearInterval(guideTimer);
						guideTimer = null;
					}														
				}
			} else { 
				exitAdPanel();
				// stop redrawing any of the mini panel
				if(updateLayerInfoTimer) {
					top.window.clearTimeout(updateLayerInfoTimer);
					updateLayerInfoTimer = null;			
				} 
				if(isGridViewOpened) {
					gridView = true;
					// 110h change
//					alert("wait panel alert 2");
//					document.getElementById("waitPanel").style.backgroundImage = "url(/akeebo/com/akeebo/touchscreenTv/TvBanner)";
					document.getElementById("waitPanel").style.backgroundImage = "url(/view/tv/images/banner.png)";
					showGridFullGuidePanel();			
					//launchGridFullGuidePanel();	
					return 0;
				}
				menuActive = true;		
				bExtInfoMode = false;
				bKeyChannel = false;
//				uniqCatNameCache.unshift('All Channels');
//				uniqCatNameCache.unshift('Favorites');	
				var allCh = (records != null ? records.key339 : "");
				var favCh = (records != null ? records.key338 : "");
				uniqCatNameCache.unshift(allCh);
				uniqCatNameCache.unshift(favCh);		
				nCurrentChannel = nOldChannel = nSelectedChannel;   
				launchGuide();
				showGuidePanel();
//				displayControlPanel();
				// schedule removal of full-guide
				//TEMPguideTimer = window.setTimeout('keyActionHandler(' + rcMENU + ')', 15000);
			}
		break;	
						
		//////////////////////////////////////////////
		// Extended Program Info		
		case rcBLUE: 
			// if full guide is up, ignore this event
			if(menuActive) {
				if((blogActive || buddyActive || calcActive || chatActive || clockActive || mailActive || giftShopActive || quizActive || transportActive || firePlaceActive || gameActive || browserActive || photoStudioActive || screenSaverActive || stockActive || videoSearchActive || yelpActive || youTubeActive || aquariumActive || newsActive || inActive || alertActive || currencyActive || mapsActive || pizzaActive || horoscopeActive || weatherActive || surveyActive || vanityActive || adultActive || favoriteActive || parentalControlActive || vodActive || musicActive || controlActive || dvrActive || schedulerActive || assignedActive || demoActive)) {
					return;
				}
				///////////////////////////////
				// This is for the grid view
				menuActive = false;
				hideAll();
				getHomeInfo(); // virendra changes 
				gridStartIndex = true;
				gridView = true;
				showGridFullGuidePanel();
				launchGridFullGuidePanel();
				//
				///////////////////////////////
				return 0;
			}
			// if fadeOut has been started to be done in 15 sec, then cancel it.
			// This also means that bItsAllDark=false, bExtInfoMode=false 
			if(oFadeOutTimer) {
				doFade();				
			} else { 
				bKeyChannel = false;
//				bExtInfoMode = bItsAllDark ? true : !bExtInfoMode;
//				redrawLayers(); // repaint either mini-guide or extended panel // viren changes 
			}
		break;			

		//////////////////////////////////////////
		// Auto tune 
		case rcYELLOW: 
			if(menuActive) {
				return;
			}

			if(oFadeOutTimer) {
				doFade();				
			} else if(bExtInfoMode){ // when extended info mode then add the program currently being browsed in the autoTune list
				pReminderMode = false;
				if(mnemonicCache[nCurrentChannel]) {
					addProgramToList();	
				}
				callReminder();
			}		
		break;
				
		// calculator purpose
		/*case rcPLUS:
			if(calcActive){	
				finalValue = finalValue + value + " + ";
				expression.innerHTML = finalValue;
				isOperator = true;
			}
		break;
		case rcMINUS:
			if(calcActive){	
				finalValue = finalValue + value + " - ";
				expression.innerHTML = finalValue;
				isOperator = true;
			}
		break;
		case rcMULTI:
			if(calcActive){	
				finalValue = finalValue + value + " * ";
				expression.innerHTML = finalValue;
				isOperator = true;
			}
		break;
		case rcDIV:
			if(calcActive){	
				finalValue = finalValue + value + " / ";
				expression.innerHTML = finalValue;
				isOperator = true;
			}
		break;
		case rcEQUAL:
			if(calcActive){	
				finalValue = finalValue + value ; 
				launchCalculatorPanel(finalValue);
				isOperator = true;
				isExpression = true;
			}
		break;*/
		//////////////////////////////////////////////
		// Navigation (including channel changes)
		case rcZERO: 
		case rcONE: 
		case rcTWO: 
		case rcTHREE: 
		case rcFOUR: 
		case rcFIVE:
		case rcSIX: 
		case rcSEVEN: 
		case rcEIGHT: 
		case rcNINE: 
			// menu + pc (but no saveAndExit and changePassword) - no
			// menu + no fav + no vod + no pc - no					
			// menu + favorites - no
			// menu + vod - no.
//			alert("still coming here");
			var keyNum = keyCodeNum - 48; 
			if(calcActive){
				if(isOperator){
					value = 0;
					isOperator = false;
				}
				if(isExpression){
					document.getElementById("expression").innerHTML = "";
					isExpression = false;	
				}
				value = (value*10)+ keyNum;
				document.getElementById("resultPanel").innerHTML = value;
			} 
			if((menuActive && !(favoriteActive || parentalControlActive || vodActive)) 
					|| (menuActive && favoriteActive) 
					|| (menuActive && vodActive)										
					|| (menuActive && parentalControlActive && !(saveAndExit || changePasswordSel))) {
				return 0;
			}
			if(!menuActive) {			
				fadeReset(nNumberFadeAmount); // special doFade()
			}
			
			if(!oTriggerSwitchTimer) {
				window.clearTimeout(oSwitchTimer);
				oSwitchTimer = null;				
				userSelChOrder = keyNum.toString();
				if(menuActive && changePasswordSel) {	
					document.getElementById("pwdText").innerHTML = "****".substr(0, userSelChOrder.length);
					oTriggerSwitchTimer = window.setTimeout('launchParentalControlPanel();showParentalControlPanel();', 60*1000);
				} else if(menuActive && saveAndExit) { 
					document.getElementById("pwdText").innerHTML = "****".substr(0, userSelChOrder.length);
					oTriggerSwitchTimer = window.setTimeout('launchParentalControlPanel();showParentalControlPanel();', 60*1000);		
				} else if(unlockMode) {
					document.getElementById("pwdText").innerHTML = "****".substr(0, userSelChOrder.length);
					//oTriggerSwitchTimer = window.setTimeout('verifyPassword();', 2000);
					fadeStop();
					oTriggerSwitchTimer = window.setTimeout('clearLockPanel();', 60*1000);
				} else {			
					showChannelKeyPanel();
//					document.getElementById("goChPanel").innerHTML = userSelChOrder;
//					document.getElementById("crownPanel").className = "hideCrownPanel";
					document.getElementById("findChOrder").innerHTML = "&nbsp;";
//					document.getElementById("clockie").style.visibility = "hidden";	
					if(updateMBTimer != null ) {
						window.clearTimeout(updateMBTimer);
						updateMBTimer = null;
					}
					document.getElementById("findChOrder").innerHTML = userSelChOrder;
					oTriggerSwitchTimer = window.setTimeout('clearSwitchChannel();', 3000);
				} 	
			} else if(bKeyChannel) {
				window.clearTimeout(oSwitchTimer);
				oSwitchTimer = null;			
				window.clearTimeout(oTriggerSwitchTimer);
				oTriggerSwitchTimer = null;
				userSelChOrder += keyNum.toString();
				if(menuActive && changePasswordSel) {
					document.getElementById("pwdText").innerHTML = "****".substr(0, userSelChOrder.length);
					oTriggerSwitchTimer = window.setTimeout('launchParentalControlPanel();showParentalControlPanel();', 60*1000);
				} else if(menuActive && saveAndExit) { 
					document.getElementById("pwdText").innerHTML = "****".substr(0, userSelChOrder.length);
					oTriggerSwitchTimer = window.setTimeout('launchParentalControlPanel();showParentalControlPanel();', 60*1000);	
				} else if(unlockMode) {
					document.getElementById("pwdText").innerHTML = "****".substr(0, userSelChOrder.length);	
					fadeStop();
					oTriggerSwitchTimer = window.setTimeout('clearLockPanel();', 30*1000);
				} else {			
					showChannelKeyPanel();
//					document.getElementById("goChPanel").innerHTML = userSelChOrder.substr(0,4);
//					document.getElementById("crownPanel").className = "hideCrownPanel";
					if(updateMBTimer != null ) {
						window.clearTimeout(updateMBTimer);
						updateMBTimer = null;
					}
					document.getElementById("findChOrder").innerHTML = userSelChOrder.substr(0,4);
					oTriggerSwitchTimer = window.setTimeout('clearSwitchChannel();', 3000);	
				}
			}
			bKeyChannel = true;
		break;		
		
		case rcLEFT:
			if(menuActive && (favoriteActive || parentalControlActive ))  {
				return 0;	
			}
			if(menuActive) {
				if(vodActive) {
					if(vodPage == 1) { // this is for vod screen
//						vodPage = 0;
//						highlightGenre();					
//						buildTitleCache();
					}
//					if(vodPage == 0) { // this is for vod screen
//						
//					}
					vodKeyNvg(keyCodeNum);
					return 0;
				} 
				if(musicActive) {
					if(aodPage == 1) { // this is for vod screen
//						highlightAodGenre();					
//						buildAodCache();
					}
					aodKeyNvg(keyCodeNum);	
					return 0;
				}
				if(buddyActive) {
     				if(buddyPage == 1) { // this is for vod screen
      					buddyPage = 0;
      					highlightContact();
      					changePhoneImg();
      					highlightBuddyName(); 
      				}
     				return 0;
				}
				if(mailActive) {
     				if(mailPage == 1) { // this is for buddy screen
      					mailPage = 0;
      					changeMailCategoryCursor(); 
      					var table = document.getElementById("mailEditPanel");   
						var rows = table.getElementsByTagName("tr");
  						rows[currentMailContent].style.backgroundImage = 'url("/view/tv/images/emailUnSelBar.png")';  
   						rows[currentMailContent].style.backgroundRepeat = 'no-repeat'; 
   						currentMailContent = 0;
     				}
     				return 0;
    			}		
				if(guidePage == 4) { // was  nowNextPanel
					guidePage = 3; // make chGuidePanel
					toggleImage();	
				} else if(guidePage == 3) { // was chGuidePanel
					guidePage = 2; // make catGuidePanel
					expandCategoryPanel();
					toggleImage();		
				} else if(guidePage == 2) { // was catGuidePanel
					guidePage = 1; // make hotExtrasPanel
					var genreTable = document.getElementById("categoryGuidePanel");   
					var genreRows = genreTable.getElementsByTagName("tr");
					genreRows[gCategoryCursor].className = "catUnSelPanel";
					toggleImage();
				} else if(guidePage == 1) { // was hotExtrasPanel
					guidePage = 0; // make Extrapanel
					resetExtrasPanel();	
					expandExtrasPanel();
					toggleImage(); 		
				} else if(guidePage == 0 && !(dvrActive || blogActive || buddyActive || calcActive || chatActive || clockActive || mailActive || giftShopActive || quizActive || transportActive || firePlaceActive || gameActive || browserActive || photoStudioActive || screenSaverActive || stockActive || videoSearchActive || yelpActive || youTubeActive || aquariumActive || newsActive || inActive || inActive || alertActive || currencyActive || mapsActive || pizzaActive || horoscopeActive || weatherActive || surveyActive || vanityActive || adultActive || schedulerActive || assignedActive || demoActive)) {
					if(searchResultActive) {
						resetSearchResult();
						moveCursor = 4;
					}
					document.getElementById("widgetIcon").style.background = "";
					if((wrecords.wRecords[currImage].id).length == 0) {
						moveCursor = 4;
					}
					if(moveCursor == 1) {
						document.getElementById("wrarrow").src= wrarrowImg.src;
						document.getElementById("wlarrow").src= wlSelImg.src;
						moveCursor = 4;
						return;
					}
					if(moveCursor == 2) {
						document.getElementById("widgetIcon").style.background = "#fcf3b8";
						document.getElementById("wrarrow").src= wrarrowImg.src;
						moveCursor = 1;
						return;
					}
					if(moveCursor == 4) {
						if(document.getElementById("searchLayer") != null)
							document.getElementById("searchLayer").innerHTML = "";
						launchGuide();	
						showGuidePanel();
						return;
					}
				}					
			} else {			
				if (bExtInfoMode && !bItsAllDark && getGuide()) { // Extended Panel Browsing
					minusGuideIndex();
					redrawLayers();
				} else if(!bExtInfoMode) { // CATEGORY BROWSING
					nCurrentCategory--;
					nCurrentCategory = ( nCurrentCategory < 0 ) ? uniqCategoryCache.length - 1 : ( nCurrentCategory >  ( uniqCategoryCache.length - 1 ) ) ? 0 : nCurrentCategory;
					nCurrentChannel = getFirstChInCat(uniqCategoryCache[nCurrentCategory]); // first channel in this category
					resetGuideIndex(); // c13
				}		
			}
		break;			

		case rcRIGHT:
			if(menuActive && (favoriteActive || parentalControlActive ))		
				return 0;		
			if(menuActive) {
				// if vod menu is active, navigate from genre to title
				if(vodActive) {
					if(vodPage == 0) { 
						vodPage = 1;
						highlightTitle();
					}
					vodKeyNvg(keyCodeNum);
					return 0;
				}
				if(musicActive) {
					aodKeyNvg(keyCodeNum);
					return 0;
				}
				if(buddyActive) {
     				if(buddyPage == 0) { // this is for buddy screen
      					buddyPage = 1;
      					highlightContact(); 
     				}
     				return 0;
    			}
    			if(mailActive) {
     				if(mailPage == 0) { // this is for buddy screen
      					mailPage = 1;
      					scrollMailContentCursor(); 
     				}
     				return 0;
    			}
    			
				// this is plain old full guide
				if(guidePage == 0 && !(dvrActive || blogActive || buddyActive || calcActive || chatActive || clockActive || mailActive || giftShopActive || quizActive || transportActive || firePlaceActive || gameActive || browserActive || photoStudioActive || screenSaverActive || stockActive || videoSearchActive || yelpActive || youTubeActive || aquariumActive || newsActive || inActive || alertActive || currencyActive || mapsActive || pizzaActive || horoscopeActive || weatherActive || surveyActive || vanityActive || adultActive || schedulerActive || assignedActive || demoActive)) {  //was Extrapanel
					if(searchResultActive) {
						resetSearchResult();
						moveCursor = 2;
					}
					document.getElementById("widgetIcon").style.background = "";
					if((wrecords.wRecords[currImage].id).length == 0) {
						moveCursor = 2;
					}
					if(moveCursor == 4) {
						document.getElementById("widgetIcon").style.background = "#fcf3b8";
//						document.getElementById("widgetIcon").innerHTML = '<img class="imagePanel" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src="/ImageHandler?value='+ wrecords.wRecords[currImage].id +'&icon=1&imageType=2" />';
						document.getElementById("wlarrow").src= wlarrowImg.src;
						moveCursor = 1;
						return;
					}
					if(moveCursor == 1) {
//						document.getElementById("widgetIcon").innerHTML = '<img class="imagePanel" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src="/ImageHandler?value='+ wrecords.wRecords[currImage].id+'&icon=1&imageType=2" />';
						document.getElementById("wlarrow").src= wlarrowImg.src;
						document.getElementById("wrarrow").src= wrSelImg.src;
						moveCursor = 2;
						return;
					}
					if(moveCursor == 2) {	
						document.getElementById("wrarrow").src= wrarrowImg.src;
						guidePage = 1; // make hotExtrasPanel
						var genreTable = document.getElementById("categoryGuidePanel");   
						var genreRows = genreTable.getElementsByTagName("tr");
						gCategoryCursor = 0;
						genreRows[gCategoryCursor].style.backgroundImage = 'none';
						toggleImage();
						return;
					}
					if(currImage == countImage || currImage > countImage) {
						currImage = 0;
					}
					++currImage;
					document.getElementById("wlarrow").src= wlarrowImg.src;
					document.getElementById("wrarrow").src= wrSelImg.src;
//					document.getElementById("widgetIcon").innerHTML = '<img class"imagePanel" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src="/ImageHandler?value='+ wrecords.wRecords[currImage].id+'&icon=1&imageType=2" />';
				} else if(guidePage == 1) { //  was hotExtrasPanel
					currImage = 0;
					guidePage = 2;	 //	make catGuidePanel	
					expandCategoryPanel();
					resetExtrasPanel();			
					toggleImage(); 
				} else if(guidePage == 2) {  //	was catGuidePanel
					guidePage = 3;   // make chGuidePanel
					expandChannelPanel();
					toggleImage();
				} else if(guidePage == 3) {  //	was chGuidePanel
					if(document.getElementById("programGuidePanel").innerHTML) {
						if(selGuidePageSet.length > 0) {
							guidePage = 4;
							toggleImage();
						}
					}  else {
						guidePage = 0;
						moveCursor = 4;
						expandExtrasPanel();
						toggleImage();
					}
					//guidePage = 4;     // make nowNextPanel
					//toggleImage();
				} else if(guidePage == 4) { // was guidePanel
					guidePage = 0;
					moveCursor = 4;
					expandExtrasPanel();
					toggleImage();
				}
			} else {
				if (bExtInfoMode && !bItsAllDark && getGuide()) {
					plusGuideIndex();
					redrawLayers();
				} else if(!bExtInfoMode) { // CATEGORY BROWSING
					nCurrentCategory++;
					nCurrentCategory = ( nCurrentCategory < 0 ) ? uniqCategoryCache.length - 1 : ( nCurrentCategory >  ( uniqCategoryCache.length - 1 ) ) ? 0 : nCurrentCategory;
					nCurrentChannel = getFirstChInCat(uniqCategoryCache[nCurrentCategory]); // first channel in this category
					resetGuideIndex(); // c14
				}
			}
		break;
		// 
		case rcCHANNELPLUS:  // channel plus and minus functionality does not work on this action 
			if((getSystemModel() == "aminet110h") || (getSystemModel() == "aminet130h")) {
				return 0;
			}
			if(menuActive) 
				return 0;
			bSwitchChannel = true; 
			if(bItsAllDark) 
				bExtInfoMode = false; 
			doFade();
		case rcUP: 
//			alert(weatherActive);
			if(menuActive) {
				if(favoriteActive) {
					if(favCurrent == 0)
						break;
					
					favCurrent--;
					if(favCurrent > 4)
						--favoriteClicks;
					if(favCursor != 0) { // if the cursor is moving up, no scroll is needed
						favCursor--;
						changeFavoriteCursorUp();	
					} else { // scroll	
						var start = favCurrent; 
						var end = favCurrent + 4;																
						scrollFavoritePage(start, end);
					}
				} else if(dvrActive) {
					if(dvrCurrent == 0)
						break;
					
					dvrCurrent--;
					if(dvrCurrent > 4)
						--dvrClicks;
					if(dvrCursor != 0) { // if the cursor is moving up, no scroll is needed
						dvrCursor--;
						changeDvrCursorUp();	
					} else { // scroll	
						var start = dvrCurrent; 
						var end = dvrCurrent + 4;																
						scrollDvrPage(start, end);
					}		
				} else if(skinActive) {
					if(skinCurrent == 0)
						break;
					
					skinCurrent--;
					
					if(skinCursor != 0) { // if the cursor is moving up, no scroll is needed
						skinCursor--;
						changeSkinCursor();	
					} 																		
				} else if(parentalControlActive && !changePasswordSel) {
					if(pcCurrent == 0) {
						changePassword = true;
						//changePwd.style.backgroundImage = 'url("/view/tv/images/changePwdBg.png")'; 
						if(document.getElementsByTagName) {  
							var table = document.getElementById("parentalControlPanel");   
							var rows = table.getElementsByTagName("tr");
							//rows[pcCursor].style.backgroundImage = 'url("/view/tv/images/rowUnSel.png")';  
						} 						
						break;
					} 
					 
					/*if(pcCurrent == 0)            
						break;*/ 
					pcCurrent--;
					if(pcCurrent > 4)
						--parentalClicks;
					if(pcCursor != 0) { // if the cursor is moving up, no scroll is needed
						pcCursor--;
						changeParentalControlCursorUp();	
					} else { // scroll	
						var start = pcCurrent; 
						var end = pcCurrent + 4;																
						scrollParentalControlPage(start, end);
					}				
				} else if(musicActive) {
					if(aodPage == 0) { // GENRE PAGE	
						if(aodGenreCurrent == 0) { // first one									
							break;
						} 
						aodGenreCurrent--;

						// if the cursor is moving up, no scroll is needed
						if(aodGenreCursor != 0) { // move cursor
							aodGenreCursor--;					
							changeAodGenreCursor();
						} else { // scroll
							var start = aodGenreCurrent; 
							var end = aodGenreCurrent + 9;	
							--aodGenreClicks;	
							scrollAodPage(start, end);							
						}			
						aodGenreSelected = aodGenreCurrent;
						buildAodCache();					
					} else {
						aodKeyNvg(keyCodeNum);
					}
				} else if(vodActive) {
					if(vodPage == 0) { // GENRE PAGE	
						if(vodGenreCurrent == 0) { // first one									
							break;
						} 
						vodGenreCurrent--;
						if(vodGenreCursor != 0) { // move cursor
							vodGenreCursor--;					
							changeGenreCursor();
						} else { // scroll
							var start = vodGenreCurrent; 
							var end = vodGenreCurrent + 9;	
							--vodGenreClicks;
							scrollGenrePage(start, end);							
						}			
						vodGenreSelected = vodGenreCurrent;
						buildTitleCache();					
					} else { // TITLE PAGE
						vodKeyNvg(keyCodeNum);
						return;
						if(vodTitleCurrent == 0) { // first one											
							break;
						}
								
						vodTitleCurrent--;

//						if(vodTitleCurrent == 0) { // first one
//							document.getElementById("vodTitlePanelUpImg").style.display = "none";		
//							if(selFullTitleCache.length > 5) {
//								document.getElementById("vodTitlePanelDownImg").style.display = "block";		
//							}		
//						}						
						
						if(vodTitleCursor != 0) { // change image, don't scroll though
							vodTitleCursor--;					
							changeTitleCursor();
						} else {
							var start = vodTitleCurrent; 
							var end = vodTitleCurrent + 4;									
//							if(start > 0 && end < vodTitleTotal) {
//								document.getElementById("vodTitlePanelDownImg").style.display = "block";
//								document.getElementById("vodTitlePanelUpImg").style.display = "block";
//							}							
							scrollTitlePage(start, end);	
						}		
								
						vodTitleSelected = vodTitleCurrent;
						updateVodGuide();
					}					
				} else if(buddyActive) {
					//alert(" entered in the up case ");
					if(buddyPage == 0) { // NAME PAGE			
						if(buddyNameCurrent == 0) { // first one									
							break;
						} 
									
						buddyNameCurrent--;
						if(buddyNameCurrent == 0) { // first one
							document.getElementById("buddyNamePanelUpImg").style.display = "none";		
							if(buddyNamesCache.length > 7) {
								document.getElementById("buddyNamePanelDownImg").style.display = "block";		
							}		
						} 
						if(buddyNameCursor != 0) { // move cursor
							buddyNameCursor--;					
							changeNameCursor();
						} else { // scroll
							var start = buddyNameCurrent; 
							var end = buddyNameCurrent + 6;	
							if(start > 0 && end < buddyNameTotal) {
								document.getElementById("buddyNamePanelDownImg").style.display = "block";
								document.getElementById("buddyNamePanelUpImg").style.display = "block";
							}															
							scrollBuddyNamePage(start, end);							
						}			
						buddyNameSelected = buddyNameCurrent;
						updateBuddyInfoPanel();					
					} 			
				} else if(mailActive) {
					if(mailPage == 0) { //Category			
						if(currentMailCategory == 0) { // first one									
							break;
						} 
						prevMailCategory = currentMailCategory;
								
						currentMailCategory--;
						changeMailCategoryCursor();	
					} else if(mailPage == 1) { //Category			
						if(currentMailContent == 0) { // first one									
							break;
						} 
						prevMailContent = currentMailContent;
								
						currentMailContent--;
						scrollMailContentCursor();	
					} 			
				} else if(guidePage == 2) { // CATEGORIES PAGE
					if(gCurrentCategory == 0)  // first one
						gCurrentCategory = gTotalCat+1;
					
					gPrevCategoryCursor = gCategoryCursor;
									
					gCurrentCategory--;
					if(gCurrentCategory > 4) {
						--countCatClicks; 
					}
					if(gCategoryCursor != 0 || gTotalCat <4) {// change image, don't scroll though
						(gCurrentCategory == gTotalCat) ? (gCategoryCursor = gTotalCat+1) : "";
						gCategoryCursor--;					
						changeCategoryCursor();
					} else {
						var start = "";
						var end = "";
						(gCurrentCategory == gTotalCat) ?  (start = gTotalCat -4, end = gTotalCat, gCategoryCursor = 4) : (start = gCurrentCategory, end = gCurrentCategory + 4) ;
//						gPrevCategoryCursor = gCurrentCategory;
						scrollCategories(start, end);
					}				
					gSelectedCategory = gCurrentCategory;
//					alert(gSelectedCategory + " : " + gCurrentCategory);
					buildChannelCache();				
															
				} else if(guidePage == 3) { // CHANNELS PAGE	
					// keep in bounds
					if(gCurrentChannel == 0) // first one
						gCurrentChannel = gTotalCh+1;
						// 
					gPrevChannelCursor = gChannelCursor;
									
					gCurrentChannel--;
					if(gChannelCursor != 0 || gTotalCh < 4) { // change image, don't scroll though
						(gCurrentChannel == gTotalCh) ? (gChannelCursor = gTotalCh+1) : "";
						gChannelCursor--;					
						changeChannelCursor();
					} else { // don't change image, scroll though
						var start = "";
						var end = "";
						(gCurrentChannel == gTotalCh) ?  (start = gTotalCh -4, end = gTotalCh, gChannelCursor = 4) : (start = gCurrentChannel, end = gCurrentChannel + 4) ;
						scrollChannels(start, end);
					}				
					gSelectedChannel = gCurrentChannel;
					getChannelClicks = gSelectedChannel - gChannelCursor;
					updateGuidePanel();		
				} else if(guidePage == 4) { // GUIDE PAGE	
					// keep in bounds
					if(gCurrentGuide == 0) // first one
						gCurrentGuide = gTotalGuide+1;
						
					gPrevGuideCursor = gGuideCursor;
					gCurrentGuide--;
//					if(gCurrentGuide > 4) {
//						--changePdCursor;
//					}
					if(gGuideCursor != 0 || gTotalGuide < 4) { // change image, don't scroll though
						(gCurrentGuide == gTotalGuide) ? (gGuideCursor = gTotalGuide+1) : "";
						gGuideCursor--;					
						changeGuideCursor();
					} else { // don't change image, scroll though
						var start = "";
						var end = "";
						(gCurrentGuide == gTotalGuide) ?  (start = gTotalGuide -4, end = gTotalGuide, gGuideCursor = 4) : (start = gCurrentGuide, end = gCurrentGuide + 4) ;
						scrollGuide(start, end);
					}		
					changePdCursor = gCurrentGuide - gGuideCursor;		
					gSelectedGuide = gCurrentGuide;		
					
					updateProgramDataPanel();															
					
				} else if(guidePage == 1 && !(favoriteActive || parentalControlActive || vodActive || musicActive || controlActive || dvrActive || searchActive || searchResultActive)) {
					if(extraPanelIndex == 0) { 
						extraPanelIndex = 5;	
						startUp = 1;
						endUp = 6;
						gHotCursor = 4;
						updateHotIconPanel(startUp, endUp);
						updateWebExtras();
					} else if(extraPanelIndex == 1) { // parental lock
						extraPanelIndex = 0;		
						if(gHotCursor != 0) {
							gHotCursor--;
							updateHotIconPanel(startUp, endUp);
						} else {
							var start = extraPanelIndex;
							var end = extraPanelIndex + 5;
							updateHotIconPanel(start, end);	
						}
						updateWebExtras();					
					} else if(extraPanelIndex == 2) { // vod
						extraPanelIndex = 1;		
						if(gHotCursor != 0) {
							gHotCursor--;
							updateHotIconPanel(startUp, endUp);
						} else {
							var start = extraPanelIndex;
							var end = extraPanelIndex + 5;
							updateHotIconPanel(start, end);	
						}
						updateWebExtras();
					} else if(extraPanelIndex == 3) { // info
						extraPanelIndex = 2;		
						if(gHotCursor != 0) {
							gHotCursor--;
							updateHotIconPanel(startUp, endUp);
						} else {
							var start = extraPanelIndex;
							var end = extraPanelIndex + 5;
							updateHotIconPanel(start, end);	
						}
						updateWebExtras();
					} else if(extraPanelIndex == 4) { // info
						extraPanelIndex = 3;		
						if(gHotCursor != 0) {
							gHotCursor--;
							updateHotIconPanel(startUp, endUp);
						} else {
							var start = extraPanelIndex;
							var end = extraPanelIndex + 5;
							updateHotIconPanel(start, end);	
						}	
						updateWebExtras();
					} else if(extraPanelIndex == 5) { // info
						extraPanelIndex = 4;		
						if(gHotCursor != 0) {
							gHotCursor--;
							updateHotIconPanel(startUp, endUp);
						} else {
							var start = extraPanelIndex;
							var end = extraPanelIndex + 5;
							updateHotIconPanel(start, end);	
						}
						updateWebExtras();
					}
					hotIconClicks = (startUp > 0 ? 1 : 0);
				} else if(guidePage == 0 && !(dvrActive || blogActive || buddyActive || calcActive || chatActive || clockActive || mailActive || giftShopActive || quizActive || transportActive || firePlaceActive || gameActive || browserActive || photoStudioActive || screenSaverActive || stockActive || videoSearchActive || yelpActive || youTubeActive || aquariumActive || newsActive || inActive || alertActive || currencyActive || mapsActive || pizzaActive || horoscopeActive || weatherActive || surveyActive || vanityActive || adultActive || schedulerActive || assignedActive || demoActive)) {						
					searchActive = true;
					pressFirst = true;
					maSearchPanel = 0;
					removerCursor();
					if(searchResultActive) {
						searchKeyHandler(keyCodeNum);
						return;
					}
					document.getElementById('searchPanel').style.color = "#808080";
					document.getElementById('searchPanel').style.fontWeight = '';
					document.getElementById('searchPanel').innerHTML = trim(records.key411);//+ '<span id="blinkPanel" style="font-size:12px;color:white;">'+'</span>'
					
					document.getElementById("searchLayer").style.visibility = "visible";
					document.getElementById("searchLayer").innerHTML = '<table>'+ document.getElementById('layer46').innerHTML +'</table>';
					searchStatus = 0;
					searchHandler(searchStatus);
					moveKeys = 1;
					return;
				} 			
			} else {
				if((getSystemModel() == "aminet110h") || (getSystemModel() == "aminet130h")) {
					if(menuActive) 
						return 0;
						bSwitchChannel = true; 
					if(bItsAllDark) 
						bExtInfoMode = false; 
					doFade();
				}	
				nCurrentChannel++; 
				// Keep in bounds
				nCurrentChannel = ( nCurrentChannel < 0 ) ? ( channelIdCache.length - 1 ) : ( nCurrentChannel > ( channelIdCache.length - 1 ) ) ? 0 : nCurrentChannel;		
				resetGuideIndex();						
			}
		break;
		
		case rcPAGEUP:
			if(menuActive){
				if(favoriteActive) {
					var favCursorBefore = favCursor;
					bottomFav = (favCurrent - favCursor + 4);
					if(bottomFav < 5) //First Page
						break;
					
					bottomFav = ((bottomFav - 5) < 5) ? 4 : (bottomFav - 5);
					favCurrent = (bottomFav - 4);
					favCursor = 0;
					var start = favCurrent;
					var end = bottomFav;
					scrollFavoritePage(start, end);
					if(document.getElementsByTagName) {  
						var table = document.getElementById("favoriteEditPanel");   
						var rows = table.getElementsByTagName("tr");
					  	rows[favCursorBefore].style.backgroundImage = 'url("/view/tv/images/rowUnSel.png")'; 
					  	rows[favCursor].style.backgroundImage = 'url("/view/tv/images/rowSelect.png")';
					}
				} else if(parentalControlActive && !changePasswordSel) {
					pcBottom = (pcCurrent - pcCursor + 4);	
					if(pcBottom < 5) //First Page
						break;

					pcBottom = ((pcBottom - 5) < 5) ? 4 : (pcBottom - 5);
					pcCurrent = (pcBottom - 4);
					pcCursor = 0;
					var start = pcCurrent;
					var end = pcBottom;
					scrollParentalControlPage(start, end);
				} else if(vodActive) {
					/*
					if(vodPage == 0) { // GENRE PAGE			
						vodGenreBottom = (vodGenreCurrent - vodGenreCursor + 4);
						if(vodGenreBottom < 5) { // first page
							vodGenrePanelUpImg.src = "";
							if(genreCache.length > 5) {
								if(vodGenrePanelDownImg.src == "")
									vodGenrePanelDownImg.src = "/view/tv/images/voddown.png";		
							}							
							break;
						}
						
						vodGenreBottom = ((vodGenreBottom - 5) < 5) ? 4 : (vodGenreBottom - 5); 
						vodGenreCurrent = (vodGenreBottom - 4);
						vodGenreCursor = 0;
						var start = vodGenreCurrent;
						var end = vodGenreBottom;
						scrollGenrePage(start, end);
						   
						vodGenreSelected = vodGenreCurrent;
						
						buildTitleCache();					
					} else { // TITLE PAGE
						vodTitleBottom = (vodTitleCurrent - vodTitleCursor + 4);
						if(vodTitleBottom < 5) { // First Page
							vodTitlePanelUpImg.src = "";	
							if(selFullTitleCache.length > 5) {
								if(vodTitlePanelDownImg.src == "")
									vodTitlePanelDownImg.src = "/view/tv/images/voddown.png";		
							}													
							break;
						}

						vodTitleBottom = ((vodTitleBottom - 5) < 5) ? 4 : (vodTitleBottom - 5);
						vodTitleCurrent = (vodTitleBottom - 4);
						vodTitleCursor = 0;
						var start = vodTitleCurrent;
						var end = vodTitleBottom;
						scrollTitlePage(start, end);	

						vodTitleSelected = vodTitleCurrent;
						updateVodGuide();
					}	
					*/				
				} else if(guidePage == 1){ // Categories Page
					/*
					gBottomCategory = (gCurrentCategory - gCategoryCursor + 4); // find the bottom category on displayed page
					if(gBottomCategory < 5)  // First page
						break;

		   			gBottomCategory = ((gBottomCategory - 5) < 5) ? 4 : (gBottomCategory - 5);
					gCurrentCategory = (gBottomCategory - 4);
					gCategoryCursor = 0;
					var start = gCurrentCategory; 
					var end = gBottomCategory;
					scrollCategories(start, end);

					gSelectedCategory = gCurrentCategory;
					buildChannelCache();
					*/
				} else if(guidePage == 2) { // Channels Page
					/*
					gBottomChannel = (gCurrentChannel - gChannelCursor + 5);
					if(gBottomChannel < 6) // First Page
						break;

					gBottomChannel = ((gBottomChannel - 6) < 6) ? 5 : (gBottomChannel - 6);
					gCurrentChannel = (gBottomChannel - 5);
					gChannelCursor = 0;
					var start = gCurrentChannel; 
					var end   = gBottomChannel;
					scrollChannels(start, end);

					gSelectedChannel = gCurrentChannel;
					*/
				} 	 
			} 
		break;	
		
		case rcCHANNELMINUS: 
			if((getSystemModel() == "aminet110h") || (getSystemModel() == "aminet130h")) {
				return 0;
			}
			if(menuActive) 
				return 0;
			bSwitchChannel = true; 
			if(bItsAllDark)
				bExtInfoMode = false; 
			doFade();
		case rcDOWN: 
			if(menuActive) {
				if(favoriteActive) {
					if(favCurrent == favTotal)
						break;
					favCurrent++;
					if(favCursor < favMax) { // if the cursor is moving down, no scroll is needed
						favCursor++;
						changeFavoriteCursorDown();	
					} else { // scroll				
						var start = favCurrent - 4; 
						var end = favCurrent;	
						++favoriteClicks; 				
						scrollFavoritePage(start, end);
					}
				} else if(dvrActive) {
//					alert(dvrCurrent + "dvrCurrent " + dvrTotal);
					if(dvrCurrent == dvrTotal)
						break;
						
					dvrCurrent++;
					if(dvrCursor < dvrMax) { // if the cursor is moving down, no scroll is needed
						dvrCursor++;
						changeDvrCursorDown();	
					} else { // scroll				
						var start = dvrCurrent - 4; 
						var end = dvrCurrent;	
						++dvrClicks; 				
						scrollDvrPage(start, end);
					}
				} else if(skinActive) {
					if(skinCurrent == skinTotal)
						break;
					
					skinCurrent++;
					
					if(skinCursor < 5) { // if the cursor is moving down, no scroll is needed
						skinCursor++;
						changeSkinCursor();	
					} 						
				} else if(parentalControlActive && !changePasswordSel) {
					if(changePassword) {
						changePassword = false;
						//changePwd.style.backgroundImage = 'none'; 
						if(document.getElementsByTagName) {  
							var table = document.getElementById("parentalControlPanel");   
							var rows = table.getElementsByTagName("tr");
							//rows[pcCursor].style.backgroundImage = 'url("/view/tv/images/rowSelect.png")';   
						} 						
						//break;
					}
					if(pcCurrent == pcTotal)
						break;
					pcCurrent++;
					if(pcCursor < pcMax) { // if the cursor is moving down, no scroll is needed
						pcCursor++;
						changeParentalControlCursorDown();	
					} else { // scroll				
						var start = pcCurrent - 4; 
						var end = pcCurrent;
						++parentalClicks;					
						scrollParentalControlPage(start, end);
					}																								
				} else if(musicActive) {
					if(aodPage == 0) { // GENRE PAGE			
						aodKeyNvg(keyCodeNum);
						if(aodGenreCurrent == aodGenreTotal) { // last one												
							break;
						} 
						aodGenreCurrent++;
						// if the cursor is moving down, no scroll is needed
						if(aodGenreCursor < aodGenreMax) { // move cursor
							aodGenreCursor++;					
							changeAodGenreCursor();
						} else { // scroll
							var start = aodGenreCurrent - 9; 
							var end = aodGenreCurrent;	
							++aodGenreClicks;		
							scrollAodPage(start, end);							
						}			
						aodGenreSelected = aodGenreCurrent;
						buildAodCache();					
					} else {
						aodKeyNvg(keyCodeNum);
					}
				} else if(vodActive) {
					if(vodPage == 0) { // GENRE PAGE			
//						vodKeyNvg(keyCodeNum);
//						alert(vodGenreCursor);
						if(vodGenreCurrent == vodGenreTotal) { // last one												
							break;
						} 
						vodGenreCurrent++;
//						if(vodGenreCurrent == vodGenreTotal) { // last one
//							document.getElementById("vodGenrePanelDownImg").style.display = "none";	
//							if(genreCache.length > 5) {
//								document.getElementById("vodGenrePanelUpImg").style.display = "block";		
//							}		
//						} 						
						
						// if the cursor is moving down, no scroll is needed
						if(vodGenreCursor < vodGenreMax) { // move cursor
							vodGenreCursor++;					
							changeGenreCursor();
						} else { // scroll
							var start = vodGenreCurrent - 9; 
							var end = vodGenreCurrent;		
//							if(start > 0 && end < vodGenreTotal) {
//								document.getElementById("vodGenrePanelDownImg").style.display = "block";
//								document.getElementById("vodGenrePanelUpImg").style.display = "block";
//							}
							++vodGenreClicks;	
							scrollGenrePage(start, end);							
						}			
						vodGenreSelected = vodGenreCurrent;
						
						buildTitleCache();					
					} else { // TITLE PAGE
						vodKeyNvg(keyCodeNum);
						return;
						// keep in bounds
						if(vodTitleCurrent == vodTitleTotal) { // last one 													
							break;
						}
						vodTitleCurrent++;
//						if(vodTitleCurrent == vodTitleTotal) { // last one 
//							document.getElementById("vodTitlePanelDownImg").style.display = "none";	
//							if(selFullTitleCache.length > 5) {
//								document.getElementById("vodTitlePanelUpImg").style.display = "block";	
//							}		
//						}
							// u promise 					
						if(vodTitleCursor < vodTitleMax) { // if the cursor is moving down, no scroll is needed
							vodTitleCursor++;	
							changeTitleCursor();
						} else {
							var start = vodTitleCurrent - 4; 
							var end = vodTitleCurrent;		
//							if(start > 0 && end < vodTitleTotal) {
//								document.getElementById("vodTitlePanelDownImg").style.display = "block";
//								document.getElementById("vodTitlePanelUpImg").style.display = "block";
//							}
																		
							scrollTitlePage(start, end);
						}			
						vodTitleSelected = vodTitleCurrent;						
						updateVodGuide();
					}				
				} else if(buddyActive) {
					if(buddyPage == 0) { // NAMES PAGE			
						if(buddyNameCurrent == buddyNameTotal) { // last one												
							break;
						} 
									
						buddyNameCurrent++;
						if(buddyNameCurrent == buddyNameTotal) { // last one
							document.getElementById("buddyNamePanelDownImg").style.display = "none";
							if(buddyNamesCache.length > 7) {
								document.getElementById("buddyNamePanelUpImg").style.display = "block";		
							}		
						} 						
						if(buddyNameCursor < buddyNamesMax) { // move cursor
							buddyNameCursor++;					
							changeNameCursor();
						} else { // scroll
							var start = buddyNameCurrent - 6; 
							var end = buddyNameCurrent;		
							if(start > 0 && end < buddyNameTotal) {
								document.getElementById("buddyNamePanelDownImg").style.display = "block";
								document.getElementById("buddyNamePanelUpImg").style.display = "block";
							}
							scrollBuddyNamePage(start, end);							
						}			
						// 	
						buddyNameSelected = buddyNameCurrent;
						updateBuddyInfoPanel();
					} 
				} else if(mailActive) {
					if(mailPage == 0) { // Category			
						if(currentMailCategory == 3)											
							break;
						
						prevMailCategory = currentMailCategory;		
						currentMailCategory++;				
						changeMailCategoryCursor();
					} else if(mailPage == 1){  // content
						if(currentMailContent == 3)											
							break;
						
						prevMailContent = currentMailContent;		
						currentMailContent++;				
						scrollMailContentCursor();
					}
				} else if(guidePage == 2) { // CATEGORIES PAGE	
					if(gCurrentCategory == gTotalCat) { // last one		
						gCurrentCategory = -1;				
						//break;
					} 
					gPrevCategoryCursor = gCategoryCursor;
					gCurrentCategory++;
					// if the cursor is moving down, no scroll is needed
					if(gCategoryCursor < 4) {
						(gCurrentCategory == 0) ? (gCategoryCursor = -1) : "";
						gCategoryCursor++;					
						changeCategoryCursor();
					} else { // scroll
						var start = "";
						var end = "";
						(gCurrentCategory == 0) ? (start = 0, end = 4, gCategoryCursor = 0) : (start = gCurrentCategory - 4, end = gCurrentCategory);
						++countCatClicks; 
						scrollCategories(start, end);
					}			
					gSelectedCategory = gCurrentCategory;
//					alert(gSelectedCategory + " : " + gCategoryCursor);
					buildChannelCache();										
				} else if(guidePage == 3) {	// CHANNELS PAGE
					// keep in bounds
					if(gCurrentChannel == gTotalCh) { // last one 						
						gCurrentChannel = -1;
					}
					gPrevChannelCursor = gChannelCursor; 
									
					gCurrentChannel++;
					
					// if the cursor is moving down, no scroll is needed
					if(gChannelCursor < 4) {
						(gCurrentChannel == 0) ? (gChannelCursor = -1) : "";
						gChannelCursor++;					
						changeChannelCursor();
					} else {
						var start = "";
						var end = "";
						(gCurrentChannel == 0) ?  (start = 0, end = 4, gChannelCursor = 0) : (start = gCurrentChannel - 4, end = gCurrentChannel) ;
						scrollChannels(start, end);
					}			
					gSelectedChannel = gCurrentChannel;
					getChannelClicks = gSelectedChannel - gChannelCursor;
					updateGuidePanel();	
				} else if(guidePage == 4) { // GUIDE PAGE	
					if(gCurrentGuide == gTotalGuide) // last one
						gCurrentGuide = -1;
	
					gPrevGuideCursor = gGuideCursor;
								
					gCurrentGuide++;
					
					// if the cursor is moving down, no scroll is needed
					if(gGuideCursor <4) {
						(gCurrentGuide == 0) ? (gGuideCursor = -1) : "";
						gGuideCursor++;					
						changeGuideCursor();
					} else { // scroll
						var start = "";
						var end = "";
						(gCurrentGuide == 0) ?  (start = 0, end = 4, gGuideCursor = 0) : (start = gCurrentGuide - 4, end = gCurrentGuide) ;
//						++changePdCursor;
						scrollGuide(start, end);
					}			
					changePdCursor = gCurrentGuide - gGuideCursor;	
					gSelectedGuide = gCurrentGuide;
					
					updateProgramDataPanel();	
																							
				} else if(guidePage == 1 && !(favoriteActive || parentalControlActive || vodActive || musicActive || controlActive || dvrActive || searchActive || searchResultActive)) {
					if(gHotCursor < 4) {
						gHotCursor++;					
					}
					var start = 0;
					var end = 5;
					if(extraPanelIndex == 0) { // favorite	
						extraPanelIndex = 1;
						updateHotIconPanel(start, end);
						updateWebExtras();
					} else if(extraPanelIndex == 1) { // parental lock	
						extraPanelIndex = 2;
						updateHotIconPanel(start, end);
						updateWebExtras();
					} else if(extraPanelIndex == 2) { // vod
						extraPanelIndex = 3;
						updateHotIconPanel(start, end);
						updateWebExtras();
					} else if(extraPanelIndex == 3) { //buddy 
						extraPanelIndex = 4;
						updateHotIconPanel(start, end);
      					updateWebExtras();
					} else if(extraPanelIndex == 4){
						extraPanelIndex = 5;
						start = extraPanelIndex - 4;
						end = extraPanelIndex + 1;
						updateHotIconPanel(start, end);
						updateWebExtras();
					} else if(extraPanelIndex == 5){
						extraPanelIndex = 0;
						gHotCursor = 0;
						updateHotIconPanel(start, end);
						updateWebExtras();
					/*} else if(extraPanelIndex == 6){
						extraPanelIndex = 7;
						start = extraPanelIndex - 4;
						end = extraPanelIndex + 1;
						
						updateHotIconPanel(start, end);
						updateWebExtras();*/
					} else {
						return;
					}
					hotIconClicks = (start > 0 ? 1 : 0);
					startUp = start;
					endUp = end;
				} else if(guidePage == 0 && !(dvrActive || blogActive || buddyActive || calcActive || chatActive || clockActive || mailActive || giftShopActive || quizActive || transportActive || firePlaceActive || gameActive || browserActive || photoStudioActive || screenSaverActive || stockActive || videoSearchActive || yelpActive || youTubeActive || aquariumActive || newsActive || inActive || alertActive || currencyActive || mapsActive || pizzaActive || horoscopeActive || weatherActive || surveyActive || vanityActive || adultActive || schedulerActive || assignedActive || demoActive)) {
//					if(moveCursor != 7) {
//						document.getElementById("searchKey0").style.backgroundImage = 'url("/view/tv/images/keyboardSelector.png")';
//						moveCursor = 7;
//						return;
//					} 
//					if(moveCursor == 7) {
//						document.getElementById("searchKey0").style.backgroundImage = '';
//						document.getElementById("searchKey9").style.backgroundImage = 'url("/view/tv/images/keyboardSelector.png")';
//					}
//					document.getElementById('searchKey' + searchStatus).style.backgroundImage = '';
					if(searchResultActive) {
						searchActive = true;						
						searchKeyHandler(keyCodeNum);
						return;
					}
					searchActive = true;
					pressFirst = true;
					maSearchPanel = 0;
					document.getElementById("searchLayer").style.visibility = "visible";
					document.getElementById("searchLayer").innerHTML = '<table style="padding-top:8px;">'+ document.getElementById('layer46').innerHTML +'</table>';
//					drawSearch();
					searchStatus = 0;
					searchHandler(searchStatus);
					moveKeys = 1;
					return;
				}			
			} else {
				if((getSystemModel() == "aminet110h") || (getSystemModel() == "aminet130h")) {
					if(menuActive) 
						return 0;
					bSwitchChannel = true; 
					if(bItsAllDark)
						bExtInfoMode = false; 
					doFade();
				}
				nCurrentChannel --; 
				// Keep in bounds
				nCurrentChannel = ( nCurrentChannel < 0 ) ? ( channelIdCache.length - 1 ) : ( nCurrentChannel > ( channelIdCache.length - 1 ) ) ? 0 : nCurrentChannel;				
				resetGuideIndex();			
			}	
		break;	
		
		case rcPAGEDOWN: 
			if(menuActive) {
				if(favoriteActive) {
					var favCursorBefore = favCursor
					topFav = (favCurrent - favCursor);
					if(topFav > (favTotal - 5)) //Last Page
						break;
					
					favCurrent = topFav = ((topFav + 5) > (favTotal - 5)) ? (favTotal - 4) : (topFav + 5);
					favCursor = 0;
					var start = topFav;
					var end = (topFav + 4);
					scrollFavoritePage(start, end);
					if(document.getElementsByTagName) {  
						var table = document.getElementById("favoriteEditPanel");   
						var rows = table.getElementsByTagName("tr");
					  	rows[favCursorBefore].style.backgroundImage = 'url("/view/tv/images/rowUnSel.png")';
					  	rows[favCursor].style.backgroundImage = 'url("/view/tv/images/rowSelect.png")';    
					}
				} else if(parentalControlActive && !changePasswordSel) {
					if(changePassword)
						return 0;	
					
					pcTop = (pcCurrent - pcCursor);
					if(pcTop > (pcTotal - 5)) //Last Page
						break;

					pcCurrent = pcTop = ((pcTop + 5) > (pcTotal - 5)) ? (pcTotal - 4) : (pcTop + 5);
					pcCursor = 0;
					var start = pcTop;
					var end = (pcTop + 4);
					scrollParentalControlPage(start, end);
				} else if(vodActive) {
					/*
					if(vodPage == 0) { // GENRE PAGE			
						vodGenreTop = (vodGenreCurrent - vodGenreCursor);
						if(vodGenreTop > (vodGenreTotal - 5)) { // last Page
							vodGenrePanelDownImg.src = "";	
							if(genreCache.length > 5) {
								if(vodGenrePanelUpImg.src == "")
									vodGenrePanelUpImg.src = "/view/tv/images/vodup.png";		
							}							
							break;
						}

						vodGenreCurrent = vodGenreTop = ((vodGenreTop + 5) > (vodGenreTotal - 5)) ? (vodGenreTotal - 4) : (vodGenreTop + 5);
						vodGenreCursor = 0;
						var start = vodGenreTop;
						var end = (vodGenreTop + 4);
						scrollGenrePage(start, end);

						vodGenreSelected = vodGenreCurrent;
						buildTitleCache();		
					} else { // TITLE PAGE
						vodTitleTop = (vodTitleCurrent - vodTitleCursor);
						if(vodTitleTop > (vodTitleTotal - 5)) { // Last Page 
							vodTitlePanelDownImg.src = "";	
							if(selFullTitleCache.length > 5) {
								if(vodTitlePanelUpImg.src == "")
									vodTitlePanelUpImg.src = "/view/tv/images/vodup.png";		
							}							
							break;
						}

						vodTitleCurrent = vodTitleTop = ((vodTitleTop + 5) > (vodTitleTotal - 5)) ? (vodTitleTotal - 4) : (vodTitleTop + 5);
						vodTitleCursor = 0;
						var start = vodTitleTop;
						var end = (vodTitleTop + 4);
						scrollTitlePage(start, end);

						vodTitleSelected = vodTitleCurrent;						
						updateVodGuide();
					} 
					*/ 		
				} else  if(guidePage == 1) {
					/*	
					//When Cursor on Category List
					gTopCategory = (gCurrentCategory - gCategoryCursor); //Finding Top Most Category on screen.
					if (gTopCategory > (gTotalCat - 5)) //Last Page
						break;

					gCurrentCategory = gTopCategory = ((gTopCategory + 5) > (gTotalCat - 5)) ? (gTotalCat - 4) : (gTopCategory + 5);
					gCategoryCursor = 0;
					var start = gTopCategory;
					var end   = gTopCategory + 4
					scrollCategories(start, end); 

					gSelectedCategory = gCurrentCategory;
					buildChannelCache();	
					*/
				} else if(guidePage == 2){	
					/*
					//Cursor on Channel list
					gTopChannel = (gCurrentChannel - gChannelCursor);
					if (gTopChannel > (gTotalCh - 6)) // last Page
						break;

					gCurrentChannel = gTopChannel = ((gTopChannel + 6) > (gTotalCh - 6)) ? (gTotalCh - 5) : (gTopChannel + 6);
					gChannelCursor = 0;
					var start = gTopChannel ;
					var end = (gTopChannel + 5);
					scrollChannels(start, end); 

					gSelectedChannel = gCurrentChannel;		
					*/
				} 									
			} 
		break;	
				
		case rcOK:
//			hideAll();
//			hideControlPanelActive();
			if(menuActive) {
				if(isGridViewOpened && weatherActive) {
					return;
				}
				if(favoriteActive) {
//					alert(favCurrent);
					// pressing OK should toggle favorite status for that channel	
					favChanged = true;
					if(favoriteCache[favCurrent] == 0) {
						favoriteCache[favCurrent] = 1;
					} else {
						favoriteCache[favCurrent] = 0;													
					}
					// update image on favorite panel
					updateFavoriteImage();
				} else if(parentalControlActive) {
					
					if((changePasswordSel && !bKeyChannel) || (saveAndExit && !bKeyChannel))
						return 0;
						
					if(changePassword && !(changePasswordSel || saveAndExit)) {		
						changePasswordSel = true;
						showChangePasswordScreen();
						oSwitchTimer = window.setTimeout('openParentalControlPanel();', 60*1000);
						break;			
					} else if(changePasswordSel && bKeyChannel) {
						window.clearTimeout(oTriggerSwitchTimer);
						oTriggerSwitchTimer = null;
						oTriggerSwitchTimer = window.setTimeout('updatePassword();', 1);		
						break;	
					} else if(saveAndExit && bKeyChannel) {
						window.clearTimeout(oTriggerSwitchTimer);
						oTriggerSwitchTimer = null;										
						oTriggerSwitchTimer = window.setTimeout('confirmPassword();', 1);			
					} else {
						// pressing OK should toggle lock status for that channel	
						if(lockedCacheCopy[pcCurrent] == 0) {
							lockedCacheCopy[pcCurrent] = 1;
						} else {
							lockedCacheCopy[pcCurrent] = 0;		
							
							/*CODE FOR RELOCKING OF CHANNELS UNLOCKED FROM THE MINIPANEL
							if(relockCache != null){ //If channel is unlocked from the mini panel.
								relockCacheCheck[pcCurrent] = 1;
							}
							*/												
						}
						
						if(!pcChanged && origLockedCache[pcCurrent] != lockedCacheCopy[pcCurrent])
							pcChanged = true;
													
						// update image on pc panel
						updateParentalControlImage();					
					}
				} else if(musicActive) {
					if(aodPage == 0) { // GENRE PAGE	
						aodPage = 1;
					} else { // TITLE PAGE
						aodKeyNvg(keyCodeNum);
//						if(curAodPosition > 0) {
//							if(!selAssetNameCache[curAssetIndex]) 
//								return;		
//							document.getElementById("layer14").style.display = "block";	
//						}											
					}	
//					aodKeyNvg(keyCodeNum);
//					if(aodPage == 0) { // GENRE PAGE	
//						aodPage = 0;
//					} else { // TITLE PAGE
//						if(curAodPosition == 2) {
//							if(!selAssetNameCache[curAssetIndex]) 
//								return;		
//							curAodPosition = 0;	
//							aodPage = 0;			
//							document.getElementById("aodKeyPanel0").style.background = "#fcf3b8";			
//							document.getElementById("layer14").style.display = "block";	
//						}											
//					}		
				} else if(vodActive) {
					if(vodPage == 0) { // GENRE PAGE	
						vodPage = 1;
//						highlightTitle();				
					} else { // TITLE PAGE
						vodKeyNvg(keyCodeNum);
						// play the RTSP session
//						alert("current vod postion : " + curVodPosition + " :selected vods asset  " + selAssetNameCache[curAssetIndex] + " :title is: " + selFullTitleCache[curAssetIndex]);
						if(curVodPosition > 0) {
							if(!selAssetNameCache[curAssetIndex]) 
								return;		
//							curVodPosition = 0;	
							vodPage = 0;			
							startVodStream();			
							document.getElementById("layer8").style.display = "none";	
						}											
						//waitPanel.style.backgroundImage="none";											
					}		
				} else if(mailActive) {
     		 		if(mailPage == 1) { // this is for buddyNames list screen
     					if(mailRead[currentMailCategory] == 1) {
     						mailRead[currentMailCategory] = 0;
     					}
     				}  
     				updateMailReadImage();   
     		     	return 0;
     		 	} else if(guidePage == 2) { // CATEGORIES PAGE
					guidePage = 3;
					expandChannelPanel();
					toggleImage();
				} else if(guidePage == 3) { // CHANNELS PAGE : tune to the channel
					for(var i=0; i<channelOrderCache.length; ++i) {
						if(channelOrderCache[i] == selChannelOrderCache[gSelectedChannel]) {
							nLastSelectedChannel = nSelectedChannel;	
							nSelectedChannel = nOldChannel = nCurrentChannel = i;	
							switchChannel();
							channelChanged = true;			
							launchViewer();						
							
							menuActive = false;		
							uniqCatNameCache.shift();
							uniqCatNameCache.shift();									
							break;
						}					
					}	
					if(guideTimer) {
						window.clearInterval(guideTimer);
						guideTimer = null;		
					}									
				} else if(buddyActive) {
     				if(buddyPage == 0) { // this is for buddyNames list screen
     					buddyPage = 1;
      					highlightContact(); 
     				} else if(buddyPage == 1) {
    					/*createRequest();
      					if(request == null) 
       						return;
						request.onreadystatechange = function() {    
       						if (request.readyState == 4 && request.status == 200) { 
        						var response = request.responseText
        						changePhoneImg();
        						//alert("response " + response);
       						} 
      					}; 
      					var params = "method=call" + "&buddyCall=" + buddyCall + "&buddyId=" + buddyIdCache[buddyNameCurrent]+"&serial=" + serial;
      					request.open("POST", serverUrl, true);
      					request.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
      					request.send(params);*/
      					callBuddy();
       				} 
     		     	return 0;
     		 	} else if(guidePage == 4) {
					// schedule this event.
					
					if(gSelectedGuide == 0) {
						for(var i=0; i<channelOrderCache.length; ++i) {
							if(channelOrderCache[i] == selChannelOrderCache[gSelectedChannel]) {
								nLastSelectedChannel = nSelectedChannel;	
								nSelectedChannel = nOldChannel = nCurrentChannel = i;																	
								switchChannel();
								channelChanged = true;			
								launchViewer();						
								
								menuActive = false;		
								uniqCatNameCache.shift();
								uniqCatNameCache.shift();									
								break;
							}
						}	
						if(guideTimer) {
							window.clearInterval(guideTimer);
							guideTimer = null;		
						}												
						return 0;
					}
					pReminderMode = false;
					var origCacheIndex = getOrigCacheIndex();
					if(mnemonicCache[origCacheIndex]) { // if this channel has a mnemonic, add the current program into a program list
//						alert('adding program to list: ' + channelNameCache[origCacheIndex] + ", " + gSelectedGuide);
						addProgramToList(getOrigCacheIndex(), gSelectedGuide);	
					}
					callReminder();					
				} else if(guidePage == 1 && !(favoriteActive || parentalControlActive || vodActive || musicActive || controlActive || dvrActive)) { // extras panel
					if(document.getElementById("searchLayer") != null) { // viren changes 
						document.getElementById("searchLayer").style.visibility = "hidden";
					}
					if(document.getElementById("goPanel") != null) {
						document.getElementById("goPanel").style.visibility = 'hidden';
					}
//					hideAll();
					hideControlPanelActive();
					if(extraPanelIndex == 0) { // favorite panel
						favoriteActive = true;
						parentalControlActive = false;
						vodActive = false;
						musicActive = false;	
						controlActive = false;
						dvrActive = false;		
						launchFavoritePanel();					
						showFavoritePanel(); 
						if(guideTimer) {
							window.clearInterval(guideTimer);
							guideTimer = null;
						}
					} else if(extraPanelIndex == 1) { // parental control panel
						parentalControlActive = true;
						favoriteActive = false;
						vodActive = false;
						musicActive = false;
						controlActive = false;						
						dvrActive = false;
						launchParentalControlPanel();
						showParentalControlPanel(); 
						if(guideTimer) {
							window.clearInterval(guideTimer);
							guideTimer = null;
						}						
					} else if(extraPanelIndex == 2) { // vod panel
						vodActive = true;
						favoriteActive = false;
						parentalControlActive = false;
						musicActive = false;					
						controlActive = false;	
						dvrActive = false;	
						launchVodPanel(); 
						showVodPanel();
						if(guideTimer) {
							window.clearInterval(guideTimer);
							guideTimer = null;
						}	
					} else if(extraPanelIndex == 3) {  // music panel
						musicActive = true;
						favoriteActive = false;
						parentalControlActive = false;					
						vodActive = false;
						controlActive = false;			
						dvrActive = false;	
						launchMusicPanel();   
						showMusicPanel();
						if(guideTimer) {
							window.clearInterval(guideTimer);
							guideTimer = null;
						}											
					} else if(extraPanelIndex == 4) {	  // control panel                   			
						controlActive = true;
						favoriteActive = false;
						parentalControlActive = false;
						vodActive = false;
						musicActive = false;
						dvrActive = false;	
						showControlPanel();
						launchControlPanel();		
						if(guideTimer) {
							window.clearInterval(guideTimer);
							guideTimer = null;
						}											
					} else if(extraPanelIndex == 5) { // dvr panel
						dvrActive = true;	
						favoriteActive = false;
						parentalControlActive = false;					
						vodActive = false;
						musicActive = false;
						controlActive = false;
						launchDvrPanel();	
						showDvrPanel();	 
						if(guideTimer) {
							window.clearInterval(guideTimer);
							guideTimer = null;	
						
						}
					}
				} else if(guidePage == 0 && !( musicActive || newsActive || stockActive || surveyActive || giftShopActive || quizActive || transportActive || controlActive || mailActive || schedulerActive || assignedActive || demoActive)) { // extras panel 
					var widgetId = wrecords.wRecords[currImage].id;
					widgetType = wrecords.wRecords[currImage].type;
					
					var widgetName = wrecords.wRecords[currImage].widgetName;
					
					if(widgetId.length == 0) {
						return;
					}
					if(searchResultActive) {
//						searchActive = true;
						maSearchPanel = 2;
						searchKeyHandler(rcOK);
						searchActive = false;
						searchResultActive = false;
						return;
					}
					if(moveCursor == 2) { // right arrow
						++currImage;
						if(currImage > countImage) {
							currImage = 0;
						}
						var useGraphic = wrecords.wRecords[currImage].useGraphic;
						useGraphic = useGraphic.substring(0, (useGraphic.length-1));
						document.getElementById("wlarrow").src= wlarrowImg.src;
						document.getElementById("wrarrow").src= wrSelImg.src;
						document.getElementById("widgetIcon").innerHTML = '<img class="imagePanel" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? ("/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=1&imageType=2") : ("/view/tv/images/widgets/wImages/widgetNA.png")) + ' />';
						widgetsInfo(currImage);
					}
					if(moveCursor == 4) { // left arrow
						--currImage;
						if((currImage < 0)) {
							currImage = countImage;
						}
						var useGraphic = wrecords.wRecords[currImage].useGraphic;
						useGraphic = useGraphic.substring(0, (useGraphic.length-1));
						document.getElementById("wrarrow").src= wrarrowImg.src;
						document.getElementById("wlarrow").src= wlSelImg.src;
						document.getElementById("widgetIcon").innerHTML = '<img class="imagePanel" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=1&imageType=2" : "/view/tv/images/widgets/wImages/widgetNA.png") + '  />';
						widgetsInfo(currImage);
					}
					if(moveCursor == 1) {
//						document.getElementById('goPanel').style.visibility = "hidden";
//						alert("widget Type : " + widgetType + ", widgetId= " + widgetId);
						hideGoPanel();
//						hideControlPanelActive();
//						alert(widgetId + " : " + widgetType);
//						if(widgetId == 1) {
//							gameActive = true;
//						  	launchGamePanel();					
//							showGamePanel();
//							saveTimeLineData("Widget", "Game", 1);
//							if(guideTimer) {
//								window.clearInterval(guideTimer);
//								guideTimer = null;
//							}
//							return;
//						}
						var useGraphic = wrecords.wRecords[currImage].useGraphic;
						useGraphic = useGraphic.substring(0, (useGraphic.length-1));
						getWidgetAdInfo(widgetType, widgetId);
						
						if(widgetId == 29) {
							hideControlPanelActive();
							launchBuddyPanel();
							showBuddyPanel();
							
							buddyActive = true;
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							saveTimeLineData("Widget", "akeebo iConnect", 1); 
							return;
						} 
						if(widgetType == 11) {
							hideControlPanelActive();
//							widgetName();
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;
							searchActive = false;
							searchResultActive = false;
							getGameJavascript(widgetId);
							return;
						}
						if(widgetType == 20) {
							gameActive = true;
							gameMenuActive = true;
						  	launchGameMenu(widgetId);					
							saveTimeLineData("Widget", "Game", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetType == 7) {
							hideControlPanelActive();
							weatherActive = true;	 
							launchWeatherPanel(widgetId);					
							//	showWeatherPanel();
							//	saveTimeLineData("Widget", "Weather", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetType == 14) {
							hideControlPanelActive();
							spiritualActive = true;
							launchSpiritualPanel(widgetId);
							saveTimeLineData("Widget", "Spiritual", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetType == 13) {
							hideControlPanelActive();
							assignedActive = true;
							launchAssignedPanel(widgetId);
							saveTimeLineData("Widget", "Assinged Patient Education", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						
						if(widgetType == 3) {
							getRssWidgetDetails(widgetId);
							return;
						}
						if(widgetType == 1) {
							hideControlPanelActive();
							alertActive = true;   
							showAlertsPanel();
							launchAlertsPanel(widgetId); //
//							document.getElementById('alertsId').innerHTML = records.key374;
//							saveTimeLineData("Widget", "Alerts", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if((widgetType == 2) || (widgetId == 53)) {
							hideControlPanelActive();
							surveyActive = true;	
							launchSurveyPanel(widgetId);	
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						 }
						 if(widgetType == 4) {
						 	hideControlPanelActive();
						 	schedulerActive = true;
							launchSchedular(widgetId);	
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						 }
						 if(widgetType == 15) {
						 	youTubeActive = true;	  
							launchYouTubePanel(widgetId);					
							saveTimeLineData("Widget", "YouTube", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						 }
						 if(widgetType == 16) {
						 	huluActive = true;	  
							launchHuluPanel(widgetId);					
							saveTimeLineData("Widget", "Hulu", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						 }
						 if(widgetType == 20) {
							hideControlPanelActive();
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;	
							loadChessPanel();	
							saveTimeLineData("Widget", "Chess", 1); 				
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetType == 25) {
							inActive = true;
							launchInRadioPanel(widgetId);					
							saveTimeLineData("Widget", "InternetRadio", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						 if(widgetId == 50) {
							hideControlPanelActive();
							spiritualActive = true;
							launchSpiritualPanel(widgetId);
							saveTimeLineData("Widget", "Spiritual", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetId == 51) {
							hideControlPanelActive();
							staffComActive = true;
							launchStaffCom(widgetId);
							saveTimeLineData("Widget", "Staff Communication", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetId == 37) {
							hideControlPanelActive();
							painAlertsActive = true;
							launchPainAlerts(widgetId);
							saveTimeLineData("Widget", "Pain Alerts", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetType == 12) {
							hideControlPanelActive();
							mealActive = true;
							launchMealPanel(widgetId);
							saveTimeLineData("Widget", "Meals", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetType == 21) {
							transportActive = true;
							launchTransportPanel(widgetId);					
							saveTimeLineData("Widget", "Transport", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetType == 23) {
							(useGraphic == 1 ? document.getElementById("quizHeaderImg").innerHTML = '<img  alt="" height="36px" width="36px" src="/ImageHandler?value=' + wrecords.wRecords[currImage].id + '&icon=2&imageType=2" >' : "");
							quizActive = true;
							launchQuizPanel(widgetId);
//							showQuizPanel();
							saveTimeLineData("Widget", "Quiz", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetId == 1) {
//							quizActive = true;
//							launchQuizPanel(widgetId);					
//							showQuizPanel();
//							saveTimeLineData("Widget", "Calendar", 1); 
//							if(guideTimer) {
//								window.clearInterval(guideTimer);
//								guideTimer = null;
//							}
//							return;
							calendarActive = true;
							launchCalendarPanel(widgetId);					
							showCalendarPanel();
							saveTimeLineData("Widget", "Calendar", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
							return;
						}
						if(widgetId == 38) {
							showGuidePanel();
//							hideControlPanelActive();
//							assignedActive = true;
//							showAssignedPanel();
//							launchAssignedPanel(widgetId);
//							saveTimeLineData("Widget", "Assinged Patient Education", 1); 
//							if(guideTimer) {
//								window.clearInterval(guideTimer);
//								guideTimer = null;
//							}
							return;
						}
						
						if(widgetType == 18) { 
							hideControlPanelActive();
						 	blogActive = true;
							launchBlogPanel(widgetId);					
							saveTimeLineData("Widget", "Blog", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 66) {
							hideControlPanelActive();
							mailActive = true;
							mailPage = 0;
							launchMailPanel();					
							showMailPanel();
							saveTimeLineData("Widget", "Mail", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 16) {
							hideControlPanelActive();
							clockActive = true;  
							launchClockPanel();	
							getClock(true);				
							showClockPanel();
							saveTimeLineData("Widget", "Clock", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 13) {
							hideControlPanelActive();
							calcPanelStatus = 1;
							calcActive = true;				
							showCalculatorPanel();
							launchCalculatorPanel();
							saveTimeLineData("Widget", "Calculator", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} 
						else if(widgetId == 44) {
							//waitPanel.style.backgroundImage = "none";
							youTubeActive = true;	  
//							launchYouTubePanel(widgetId);					
							showYouTubePanel();
							document.getElementById('ytContentPanel').innerHTML = records.key374;
							saveTimeLineData("Widget", "YouTube", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 22) {
							return;
							gameActive = true;
							gameMenuActive = true;
						  	launchGameMenu(widgetId);					
							saveTimeLineData("Widget", "Game", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 61) { // Checkers game
							hideControlPanelActive();
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;
						  	createCrackerGamePanel();					
							showGamePanel();
							saveTimeLineData("Widget", "Checkers", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 62) { // mnesweeper game
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;
							hideControlPanelActive();
						  	initMineSweeper();					
							saveTimeLineData("Widget", "MineSweeper", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 63) { // snake game
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;
							hideControlPanelActive();
						  	initSnakeGame();					
							showGamePanel();
							saveTimeLineData("Widget", "Snake", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 64) { // sudoku game
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;
							hideControlPanelActive();
						  	initSudoku();					
							showGamePanel();
							saveTimeLineData("Widget", "Sudoku", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 65) { // tic tac toe
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;
							hideControlPanelActive();
						  	createTicTacToePanel();					
							showGamePanel();
							saveTimeLineData("Widget", "Tic-Tac-Toe", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} 
						else if(widgetId == 52) {
							document.getElementById("gameImagePanel").innerHTML = 
								'<img  height="36px" width="36px" alt="'+ wrecords.wRecords[currImage].title + '" id="widgetIcon1" src=' + (useGraphic == 1 ? "/ImageHandler?value="+ wrecords.wRecords[currImage].id + "&icon=2&imageType=2" : "/view/tv/images/widgets/logoPanel27.png") + '  />';
							document.getElementById("gameTitlePanel").innerHTML = wrecords.wRecords[currImage].title;
							gameActive = true;
							showGamePanel();
						  	tetris();					
							saveTimeLineData("Widget", "Tetris Game", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						}
						else if(widgetId == 26 || widgetId == 34) {
							yelpActive = true;	
							launchYelpPanel();					
							showYelpPanel();
							document.getElementById('yelpId').innerHTML = records.key374;
							saveTimeLineData("Widget", "Yelp", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 21) {
							pizzaActive = true;	  
							launchPizzaPanel();					
							showPizzaPanel();
							document.getElementById('pizzaId').innerHTML = records.key374;
							saveTimeLineData("Widget", "Pizza", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 3) {
							stockActive = true; 
							launchStockPanel();					
							showStockPanel();
							saveTimeLineData("Widget", "Stock", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 53) {
							surveyActive = true;	  
							launchSurveyPanel(widgetId);					
							//showSurveyPanel();
							saveTimeLineData("Widget", "Survey", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 47) { // fake fireplace
//							firePlaceActive = true;   
//							launchFirePlacePanel();					
//							showFirePlacePanel();
//							saveTimeLineData("Widget", "FirePlace", 1);
//							if(guideTimer) {
//								window.clearInterval(guideTimer);
//								guideTimer = null;
//							}
//							return;
							screenSaverActive = true;   
							hideControlPanelActive();
							launchScreenSaverPanel();					
							showScreenSaverPanel();
							//document.getElementById('value').innerHTML = records.key374;
							saveTimeLineData("Widget", "ScreenSaver", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 40) { // photo
							photoStudioActive = true;   
							hideControlPanelActive();
							launchPhotoStudioPanel();					
							showPhotoStudioPanel();
//							document.getElementById('value').innerHTML = records.key374;
							saveTimeLineData("Widget", "PhotoStudio", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 35 || widgetId == 19) {
							newsActive = true;	 
							hideControlPanelActive();
							launchNewsPanel();					
							showNewsPanel();
							saveTimeLineData("Widget", "News", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 31) { // maps
							mapsActive = true;	 
							launchMapsPanel();					
							showMapsPanel();
							document.getElementById('mapsId').innerHTML = records.key374;
							saveTimeLineData("Widget", "Maps", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 46) { // internet radio
//							inActive = true;
//							launchInRadioPanel(widgetId);					
//							saveTimeLineData("Widget", "InternetRadio", 1); 
//							if(guideTimer) {
//								window.clearInterval(guideTimer);
//								guideTimer = null;
//							}
						} else if(widgetId == 27) {
							hideControlPanelActive();
							horoscopeActive = true;   
							launchHoroscopePanel();					
							showHoroscopePanel();
							saveTimeLineData("Widget", "Horoscope", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 23 || widgetType == 22) {
							giftShopActive = true;
							launchGiftShopPanel(widgetId);					
//							document.getElementById('firePlaceId').innerHTML = records.key374;
//							document.getElementById('value').innerHTML = records.key374;
							saveTimeLineData("Widget", "GiftShop", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 15) {
							chatActive = true;		
							launchChatPanel();					
							showChatPanel();
							document.getElementById('chatId').innerHTML = records.key374;
							saveTimeLineData("Widget", "Chat", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 12) {
							browserActive = true;
							launchBrowserPanel();					
							showBrowserPanel();
							document.getElementById('browserId').innerHTML = records.key374;
							saveTimeLineData("Widget", "Browser", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 8) {
							aquariumActive = true;   
							showAquariumPanel();
							launchAquariumPanel();
							document.getElementById('aquariumId').innerHTML = records.key374;
							saveTimeLineData("Widget", "Aquarium", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 6) { // alerts
							alertActive = true;   
							showAlertsPanel();
//							document.getElementById('alertsId').innerHTML = records.key374;
							launchAlertsPanel(widgetId);
							saveTimeLineData("Widget", "Alerts", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetType == 19) {
							docsActive = true;	 
							launchDocsPanel(widgetId);
							saveTimeLineData("Widget", "Docs", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetType == 17) {
							adultActive = true;	  
							launchAdultPanel(widgetId);					
							saveTimeLineData("Widget", "Adult", 1);
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 56) {
							vanityActive = true;
							launchVanityPanel();					
							showVanityPanel();
							document.getElementById('vanityId').innerHTML = records.key374;
							saveTimeLineData("Widget", "Vanity", 1);
							/*showStatusPanel();
							statusMessagePanel.innerHTML = '';
							statusMessagePanel.innerHTML = "Disabled";*/
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else if(widgetId == 4) {
							hideControlPanelActive();
							currencyActive = true;   
							launchCurrencyPanel();					
							showCurrencyPanel();
							saveTimeLineData("Widget", "Currency", 1); 
							if(guideTimer) {
								window.clearInterval(guideTimer);
								guideTimer = null;
							}
						} else {
							displayControlPanel();
							showGoPanel();
						}
					}
				} 				
			} else if(pReminderMode) {		
				tuneToScheduledProgram();
			} else if(unlockMode && bKeyChannel) { 
					window.clearTimeout(oTriggerSwitchTimer);
					oTriggerSwitchTimer = null;												
					oTriggerSwitchTimer = window.setTimeout('verifyPassword();', 1);		
			} else {
				if(nSelectedCategory != nCurrentCategory) {
					// change category too
					nSelectedCategory = nCurrentCategory;
				}
	
				if(bKeyChannel) { // NEED TO REDESIGN?
					window.clearTimeout(oTriggerSwitchTimer);
					oTriggerSwitchTimer = null;
					// do it NOW, instead of waiting for 2 sec
					triggerSwitchChannel();

				}
	
				if ( nSelectedChannel != nCurrentChannel ) {
					nCurrentChannel = ( nCurrentChannel < 0 ) ? ( channelIdCache.length - 1 ) : ( nCurrentChannel > ( channelIdCache.length - 1 ) ) ? 0 : nCurrentChannel;
	
					nLastSelectedChannel = nSelectedChannel; // save currently selected channel before it is updated
					nSelectedChannel = nCurrentChannel;
					
					// Switch stream 
					if(oSwitchTimer) {
						window.clearTimeout ( oSwitchTimer );
						oSwitchTimer = null;
					}
					oSwitchTimer = window.setTimeout('switchChannel();', 1);
					 // Redraw panel               
					bExtInfoMode = false;			
					channelChanged = true;
					launchViewer(); 	
				}
				doFade();
			}				
		break;

		case rcLASTCH: 
			if(menuActive) 
				return 0;		
		
			if(nLastSelectedChannel == nSelectedChannel)
				break;

			resetGuideIndex();
			nCurrentChannel = nLastSelectedChannel; // set current channel to last channel selected
			nLastSelectedChannel = nSelectedChannel; // save currently selected channel before it is updated

			// Keep in bounds
			nCurrentChannel = ( nCurrentChannel < 0 ) ? ( channelIdCache.length - 1 ) : ( nCurrentChannel > ( channelIdCache.length - 1 ) ) ? 0 : nCurrentChannel;

			nSelectedChannel = nCurrentChannel;

			// Switch stream 
			if(oSwitchTimer) {
				window.clearTimeout ( oSwitchTimer );
				oSwitchTimer = null;
			}
			
			oSwitchTimer = window.setTimeout ("switchChannel();", 1);

            // Redraw panel               
			bExtInfoMode = false;			
			channelChanged = true;
			launchViewer(); 
			
			nOldChannel = nCurrentChannel;
			
			return 0;           
		break;			
												
		//////////////////////////////////////////////
		// RTSP Exclusive
		case rcHOME:
			if(menuActive && vodActive) { 
				hideStatusPanel();
				document.getElementById("statusMessagePanel").innerHTML = '';
				document.getElementById("layer8").style.display = "block";	
				document.getElementById("keyDigitPanel").style.visibility = "hidden";			
				//waitPanel.style.backgroundImage="url(/view/tv/images/banner.png)";											
			}
		break;
// previously refresh and play had the same functionality.
		
		case rcREFRESH:
//			if((getSystemModel() == "aminet130h") || (getSystemModel() == "aminet110h")) { 
				refreshSTB();
//				return 0;
//			} 
		break;
		case rcPLAY:
			if(menuActive && vodActive && feedType != "rtsp") { 
				startVodStream();
			} else if(feedType == "rtsp") {
				if(pauseFlag == 1) {
					hideStatusPanel();
					document.getElementById("statusMessagePanel").innerHTML = '';		
					if(document.getElementById("keyDigitPanel") != null)
						document.getElementById("keyDigitPanel").style.visibility = "hidden";		
					continueStream();
					pauseFlag = 0;
				} else {
					if(stbTypeId != 7) {
						var rtspUrl = 'src=rtsp://' + vodServer + '/' + selAssetNameCache[vodTitleSelected] + ';servertype=ncube';
						playStream(rtspUrl);
					}
				}				
			} 
			// It refreshs the STB [the functionality works if the stb box is either 110h or 130h]  
		break;
		
		case rcRED: 			
		case rcSTOP:
			if(feedType == "rtsp" && stbTypeId != 7) {
				hideStatusPanel();
				document.getElementById("statusMessagePanel").innerHTML = '';
				document.getElementById("keyDigitPanel").style.visibility = "hidden";
				stopStream();
				document.getElementById("layer8").style.display = "block";					
				//waitPanel.style.backgroundImage="url(/view/tv/images/banner.png)";															
			}
		break;	
						
		case rcGREEN: 
			if(feedType == "rtsp" && stbTypeId != 7) {
				hideStatusPanel();
				document.getElementById("statusMessagePanel").innerHTML = '';
				document.getElementById("keyDigitPanel").style.visibility = "hidden";
				var rtspUrl = 'src=rtsp://' + vodServer + '/' + selAssetNameCache[vodTitleSelected] + ';servertype=ncube';
				playStream(rtspUrl);
				document.getElementById("layer8").style.display = "none";					
				//waitPanel.style.backgroundImage="none";											
			} else {
				playStream('src=igmp://' + getStreamAddress());		
			}
		break;			
		
		case rcFWD: 
			if(feedType == "rtsp" && stbTypeId != 7) {				
				if(pauseFlag == 1) {
					hideStatusPanel();
					document.getElementById("statusMessagePanel").innerHTML = '';
					document.getElementById("keyDigitPanel").style.visibility = "hidden";
					continueStream();
					pauseFlag = 0;
					trickPlay = false;				
				} else {
					showStatusPanel();
					document.getElementById("statusMessagePanel").innerHTML = trim(records.key450) + " " + records.key272 + " 6x"; // 'forwarding at 6x';					
					fastForward();
					pauseFlag = 1;
					trickPlay = true;
				}
			}
		break;

		case rcRWR: 
			if(feedType == "rtsp" && stbTypeId != 7) {
				if(pauseFlag == 1) {
					hideStatusPanel();
					document.getElementById("statusMessagePanel").innerHTML = '';
					continueStream();
					pauseFlag = 0;
					trickPlay = false;					
				} else {
					showStatusPanel();
					document.getElementById("statusMessagePanel").innerHTML = trim(records.key451) + " " + records.key272 + " 6x"; //'rewinding at 6x';				
					rewind();
					pauseFlag = 1;
					trickPlay = true;
				}
			}
		break;
		
		case rcPAUSE: 
			if(feedType == "rtsp" && stbTypeId != 7) {
				if(pauseFlag == 1) {
					hideStatusPanel();
					document.getElementById("statusMessagePanel").innerHTML = '';				
					continueStream();
					pauseFlag = 0;
				} else {
					showStatusPanel();
					document.getElementById("statusMessagePanel").innerHTML = records.key449;//'paused';						
					pauseStream();
					pauseFlag = 1;
				}
			}
		break;

	}

	// Keep in bounds
	nCurrentChannel = ( nCurrentChannel < 0 ) ? ( channelIdCache.length - 1 ) : ( nCurrentChannel > ( channelIdCache.length - 1 ) ) ? 0 : nCurrentChannel;

	if ( nCurrentChannel != nOldChannel ) {
		if ( bSwitchChannel ) { // rcCHANNELPLUS, rcCHANNELMINUS
			nLastSelectedChannel = nSelectedChannel;
			nSelectedChannel = nCurrentChannel;
			nOldChannel = nCurrentChannel;
			
			// Switch stream 
			if(oSwitchTimer) {
				window.clearTimeout ( oSwitchTimer );
				oSwitchTimer = null;
			}
			oSwitchTimer = window.setTimeout('switchChannel();', 1);
			
            // Redraw panel               
			bExtInfoMode = false;			
			channelChanged = true;
			launchViewer(); 
		
			// Fade out...
			doFade();
			//return 0;
		}

		// NOW SHOW THE NEW CHANNEL PANEL
		if(bItsAllDark) { // if it was already dark
			bExtInfoMode = false; // there is no question of extended info
			redrawLayers();
		} else {
			if(oFadeOutTimer) { // if the fade had already started -- like AlphaLevel = 60 instead of 100
				doFade(); // restart fading
				// Fahgeddahbahtit
				nCurrentChannel = nOldChannel;
			} else {
				clearLockPanel();
				redrawLayers();         				
			}
		}
	} // if condition for (nCurrentChannel != nOldChannel) finished

	nOldChannel = nCurrentChannel;	
	if(unlockMode) {
		fadeStop();
	}
	return 0;	
}

// keyHandler.js 
/////////////////////////////////////////////////////////////////////
