
function launchResetPasswordWidget(){
	var memberId = getFromParam('memberId');
	if(memberId == null) memberId = getFromParam('memberid');
	if(memberId != null) {
		gim.renderWidget('MyForgotResetPasswordWidget','resetPassword', 'en_US', 'memberId='+memberId);
	}
}

function launchUpdatePrizeInfoWidget(){
	var ticket = getFromParam('ticket');
	if(ticket != null) {
		gim.renderWidget('MyUpdatePrizeInfoWidget','start', 'en_US', 'ticket='+ticket);
	}
}
function openContestRules(contestId,bAnchor){
	if(contestId == null) contestId = getFromParam('contestId');
	if(contestId == null) contestId = getFromParam('contestId');
	if(contestId != null) {
		logger.log("openContestRules: "+contestId);
		//Do Open Contest Rules
		var aPos = "top";
	
		var url = homeBase+"en_US/Rewards/Rules/"+contestId+"_en_US.jsp";
		if(bAnchor) goToAnchor("top");
		openDivPopup_external("contest_rules","privacy",url,aPos);
	}
	return false;
}

function initializeKOWidgets()
{	
	if(userAuthenticated && $("#pointsWidget").not(".KOWidget_wait").length > 0)
	{
		$("#pointsWidget").show();
//		gim.renderWidget('MyPointBalanceWidget', 'start', 'en_US');
	}
	else
		$("#pointsWidget").hide();

	$(".KOWidget").not(".KOWidget_wait").each(function(){
		var sLang = 'en_US';
		var sView = 'start';
		var sParam = null;
		var sWidget = null;
		if($(".name",this).length > 0)
			sWidget = $(".name",this).html();
		if($(".view",this).length > 0)
			sView = $(".view",this).html();
		if($(".lang",this).length > 0)
			sLang = $(".lang",this).html();
		if($(".param",this).length > 0)
		{
			var sParamValue = getFromParam($(".param",this).html());
			if(sParamValue != null) sParam = $(".param",this).html()+"="+sParamValue;
		}
		if(sParam == null && $(".paramValue",this).length > 0)
		{
			sParam = $(".paramValue",this).html();
		}
		$(this).empty();
		if(sWidget != null)
			gim.renderWidget(sWidget, sView, sLang, sParam);
	});
/*
	//Redeem Pin Widget
	if($("#enterPin:not(KOWidget_wait)").length > 0)
		gim.renderWidget('MyRedeemPinWidget', 'redeemPin', 'en_US');
	
	//Search Catalog Widget
	if($("#searchCatalog:not(KOWidget_wait)").length > 0)
		gim.renderWidget('MySearchCatalogWidget', 'searchCatalog', 'en_US');
	//Browse Catalog Widget
	if($("#browseCatalog:not(KOWidget_wait)").length > 0)
		gim.renderWidget('MyBrowseCatalogWidget', 'browseCatalog', 'en_US');
	//Catalog Widget
	if($("#catalogWidget:not(KOWidget_wait)").length > 0)
		gim.renderWidget('MyItemListWidget', 'showItemList', 'en_US');
	//Tell a friend
	if($(".tellAFriend:not(KOWidget_wait)").length > 0)
		gim.renderWidget('MyTellAFriendWidget', 'tellAFriend', "en_us");
*/
	if($(".NOSWidget.leadersboard").not(".NOSWidget_wait").length > 0)
		$(".NOSWidget.leadersboard").leadersboard({widgetUrl:homeBase});
		//$(".leadersboard").leadersboard(/*widgetUrl:'',servicePath:'en_US/Widget/leadersBoard/leadersBoard.do_en_US.xml'}*/);

	// Login Widget
	gim.renderWidget('MyLoginWidget', 'start', 'en_US');
}

$(document).ready(initializeKOWidgets);
/*$(document).ready(function(){
	$("#KOPopupWidget").resize();
});*/

//var 

//var userAuthenticated = false;
var bInitializing = true;
function updateUserStatus()
{
	if(userAuthenticated)
	{
		$("#auth").addClass("logged");
		//Authenticated
		$("#pointsWidget").show();
		gim.renderWidget('MyPointBalanceWidget', 'start', 'en_US');
		$("#footer #menu .item.register").hide();
		$("#footer #menu .item.login").hide();
		
		if($(".registerLink").length > 0)
		{
			$(".registerLink").addClass("disable");
			$(".registerLink").unbind('click', openRegister);
		}
	}
	else
	{
		$("#auth").removeClass("logged");
		//Unauthenticated
		$("#pointsWidget").hide();
		$("#footer #menu .item.register").show();
		$("#footer #menu .item.login").show();
		
		if($(".registerLink").length > 0)
		{
			$(".registerLink").removeClass("disable");
			$(".registerLink").bind('click', openRegister);
		}
	}
	
	if($("#tellFriendWidget.KOWidget").length > 0){
		if(userAuthenticated)
		{
			$(".tellFriend .tell_noauth").hide();
			$(".tellFriend .tell_auth").show();
			//$("#tellFriendWidget.KOWidget").show();
			gim.renderWidget('MyTellAFriendWidget', 'tellAFriend', 'en_US');
		}
		else
		{
			$(".tellFriend .tell_noauth").show();
			$(".tellFriend .tell_auth").hide();
			$(".tellFriend .tell_confirm").hide();
			gim.closeWidget({'name' : 'MyTellAFriendWidget','remWrp' : true});
		}
	}
}

function ko_platform_ui_widgetDimensions_override(data)
{
	if(data.srcWidget == "ShareSessionWidget")
	{
		callSimpleWS(homeBase + "setTypePadCookies.do");
		return false;
	}
	
	var sView = data.srcView + "";
	sView = sView.toLowerCase();
	if(data.srcWidget == "MyLoginWidget" && bInitializing)
	{
		bInitializing = false;
		userAuthenticated = !(sView == "login" || sView == "prelogin");
		ko_platform_ui_widgetDimensions = null;
		updateUserStatus();
	}
	var obj = $("."+data.srcWidget+"_"+data.srcView);
	if($("."+data.srcWidget+"_"+data.srcView).length <= 0) {
		obj = $("."+data.srcWidget);
	}
	
	if(obj.length > 0 && !($(obj).hasClass("KOWidget_fixed")) && $(obj).parents(".KOWidget_fixed").length <= 0)
	{
		var nSizeDelta = 0;
		var nW = parseInt(data.width)+nSizeDelta;
		var nH = parseInt(data.height)+nSizeDelta;
		$(obj).css({width:nW+"px",height:nH+"px"});
		if($(obj).hasClass("popupWidget"))
			$(obj).css({marginLeft:(nW/-2.0)});
	}
	
	sView = data.srcView + "";
	switch(data.srcWidget)
	{
		case "MyRegistrationWidget":
			//if(sView == "confirmation") setTimeout(closeRegistrationConfirmation,5000);
			break;
		case "MyEnterContestWidget":
			if(sView == "sweepStakes")
			{
				$(".catalog.detail").addClass("redeemed");
				$(".catalog.detail").removeClass("contactInfo");
				$(".catalog.detail").removeClass("confirmation");
			}
			break;
		case "MyPurchaseRewardWidget":
			if(sView == "purchaseReward")
			{
				$(".catalog.detail").addClass("redeemed");
				$(".catalog.detail").removeClass("contactInfo");
				$(".catalog.detail").removeClass("confirmation");
/*				$(".catalog.detail .reward_confirm").show();
				$(".catalog.detail .back").show();*/
			}
			break;
		case "MyProfileWidget":
			if(sView == "viewEntireProfile") $(".myAccount .bkg").removeClass("edit");
			else  $(".myAccount .bkg").addClass("edit");
			//if(sView == "confirmation") setTimeout(closeRegistrationConfirmation,5000);
			break;
	}
	
	return false;
}
function reloadWidgets()
{
	//changeLocation();
	for(var key in gim.widget)
	{
		if(gim.widget[key].setting.isInline === true)
		gim.widget[key].reload();
	}
}
function ko_platform_state_logout_override(data) {
	userAuthenticated = false;
	userLogout();
	if($("#KOPopupWidget").length > 0)
		gim.onCloseClick('KOPopupWidget');
	updateUserStatus();
	
	$("#weeklyTracker").empty();
	$("#weeklyTracker").hide();
	reloadWidgets();
	if(menuSection == "myAccount"){
		changeLocation(homeBase);
	}
	else
		window.scroll(0,0);
	return true;
}
function ko_platform_state_login_override(data) {
	var bReturn = true;
	var bClosePopup = true;
	userAuthenticated = true;
	
	var sView = data.srcView + "";
	switch(data.srcWidget)
	{
		case"MyRegistrationWidget":
			bClosePopup = bReturn = !(sView == "confirmation");
			break;
	}
	if(bClosePopup && $("#KOPopupWidget").length > 0)
		gim.onCloseClick('KOPopupWidget');
	//userLogin();
	gim.renderWidget('MyLoginWidget','start',"en_us");
	shareSession();
	updateUserStatus();
	reloadWidgets();
	window.scroll(0,0);
	return bReturn;
}

function findWidget(id) {
	for(var i = 0; i < widgetData.length; i++)
	{
		if(widgetData[i].widget.type == id)
			return widgetData[i].widget;
	}
	return null;
}
/*function findWidget(id) {
}*/


function shareSession(){
	if($("#KOShareSession").length <= 0)
		$("body").append("<div id='KOShareSession' class='hidden'></div>");
		
	gim.renderWidget('ShareSessionWidget', 'shareSession', 'en_US');
}

function ko_platform_state_loginRequired_override(data){
	var sView = data.srcView + "";
	switch(data.srcWidget)
	{
		case "MyRedeemPinWidget": if(!bInitializing) openAuthenticationRequired();
			return false;
		case "MyProfileWidget": 
		case "MyViewHistoryWidget": 
			changeLocation(homeBase);
			return false;
	}
	return (!bInitializing);
}

function ko_platform_ui_cancel_override(data){
	var sView = data.srcView + "";
	
	switch(data.srcWidget)
	{
		case"MyProfileWidget":
			if(sView == "updateEntireProfile")
			{
				gim.renderWidget('MyProfileWidget', 'viewEntireProfile', "en_us");
			}
			break;
		case "MyPurchaseRewardWidget":
			changeLocation(homeBase+"rewards.do");
			break;
		case "MyEnterContestWidget":
			if(sView == "sweepStakes")
				changeLocation(homeBase+"rewards.do");
			else
				changeLocation();
			break;
		default:  return true;
	}
	return false;
}
/*
function ko_platform_ui_displayItemDetails_override(data){
/*
Source Widget : MyItemListWidget
Source View: showItemList
Widget Type : ko.platform.ui.displayItemDetails
Destination Widget Type : ItemDetailWidget
Destination View : showItemDetails
itemId : 30872
fromListItem : true
parentItemId : 30872
* /
//	alert(data.srcWidget+" - "+data.itemId);
	return true;
}*/


function ko_platform_state_pointsBalance_override(data){
	$("#weeklyTracker").weeklytracker();
	return true;
}
function ko_platform_state_pointsChanged_override(data){
	if(data.srcWidget == "MyRedeemPinWidget")
	{
		gim.renderWidget('MyViewHistoryWidget','pointsHistory','en_US');
	}
	return true;
}

function closeRegistrationConfirmation(){
	gim.closeWidget({'name' : 'MyRegistrationWidget','remWrp' : true});
}
var nConfirmationFade = null;
function ko_platform_ui_changeView_override(data){
	var sView = data.srcView + "";
	var dstView = data.dstView + "";
	switch(data.srcWidget)
	{
		case "MyTellAFriendWidget":
			if(dstView == "confirmation")
			{
				$(".tellFriend .tell_noauth").hide();
				$(".tellFriend .tell_auth").hide();
				$(".tellFriend .tell_confirm").show();
			}
			return false;
		case "MyRegistrationWidget":
			if(sView == "registerUserStepTwo" && dstView == "confirmation")
			{
			}
			break;
		case "MyEnterContestWidget":
			if(sView == "confirmContestSelection" && dstView == "confirmationContactInfo")
			{				
				$(".catalog.detail").addClass("contactInfo");
/*				$(".catalog.detail .back").hide();*/
			}
			else if(sView == "confirmationContactInfo" && dstView == "sweepStakes")
			{
			}
			break;
		case "MyPurchaseRewardWidget":
			if(sView == "confirmRewardSelection" && dstView == "confirmationContactInfo")
			{				
				$(".catalog.detail").addClass("contactInfo");
/*				$(".catalog.detail .back").hide();*/
			}
			else if(sView == "confirmationContactInfo" && dstView == "purchaseReward")
			{
			}
			break;
	}
	return true;
}

function ko_platform_ui_popup_override(data){
	var sURLPage = "";
	var sView = data.srcView + "";
	switch(data.srcWidget)
	{
		case"MyLoginWidget":
			if(sView != "postLogin") break;
		case"MyRegistrationWidget":
			sURLPage = Url.decode(data.url);
			sURLPage = sURLPage.substring(sURLPage.lastIndexOf("/")+1);
			switch(sURLPage)
			{
				case 'terms.jsp':
					openTermsAndConditions();
					return false;
				case 'privacy.jsp':
					openPrivacyPolicy();
					return false;
				default:
					openDivPopup_external("default","default",Url.decode(data.url),"top");
					return false;
			}
			break;
	}
	return true;
}

/**
 * Boolean that will enable/disable logger function
 * @private
 */
var _debug = true;

/**
 *  This is a logger object with store various functions like log, info etc. which internally use
 *  console.* functions. Market site can override this function if required to enable their own logging concept.
 *  @public
 */
var logger = {
	'log' : function(){},
	'info' : function(){},
	'warn' : function(){},
	'error' : function(){}
};
if(typeof _debug !== 'undefined' && _debug === true){
	if (typeof window.console !== 'undefined'){
		logger.log = (typeof window.console.log !== 'undefined')? function(){
			window.console.log(arguments);
		} : function(){};
		logger.info = (typeof window.console.info !== 'undefined')? function(){
			window.console.info(arguments);
		} : function(){};
		logger.warn = (typeof window.console.warn !== 'undefined')? function(){
			window.console.warn(arguments);
		} : function(){};
		logger.error = (typeof window.console.error !== 'undefined')? function(){
			window.console.error(arguments);
		} : function(){};
	}
}

function ko_platform_ui_changeCatalogWidget_override(data){
	var sView = data.srcView + "";
	var dstView = data.dstView + "";
	switch(data.srcWidget)
	{
		case"MyItemDetailWidget":
			if(sView == "showItemDetails"){
				switch(data.dstWidgetType){
					case "PurchaseRewardWidget":
						$(".catalog.detail").addClass("confirmation");
						$(".catalog.detail").removeClass("contest");
						$(".banner.catalog.detail").removeClass("detail").addClass("confirmation");
						break;
					case "EnterContestWidget":
						$(".catalog.detail").addClass("confirmation");
						$(".catalog.detail").addClass("contest");
						$(".banner.catalog.detail").removeClass("detail").addClass("confirmation");
						break;
				}
			}
			break;
	}
	return true;
}

function resetCatalog(){
	$(".catalog .back.reset").hide();
	gim.renderWidget('MySearchCatalogWidget', 'searchCatalog', 'en_US');
	gim.renderWidget('MyItemListWidget', 'showItemList', 'en_US');
	
	return false;
}

function ko_platform_ui_displayListItems_override(data){
	if(data.srcWidgetType == "SearchCatalogWidget" && data.dstWidgetType == "ListItemsWidget")
		$(".catalog .back.reset").show();

	return true;
}

function sc_custom_sweepstakes_openRules_override(data){
	logger.log("sc_custom_sweepstakes_openRules_override: "+data.contestId)
	if(data.contestId != null)
		openContestRules(data.contestId, true);
}
