var _4INFO = {
	SPORTS:'sports',STATS:'stats',STOCK:'stock',HOROSCOPE:'horoscope',WEATHER:'weather',OP_KEYWORD:'OP Keyword',OP_KEYWORDS:'OP Keywords',SPORTS_PICKER:'Sports Picker',STATS_PICKER:'Stats Picker',TOURNEY_PASS:'tournamentPass',
	SERVICE_IDS:{sports:102,stats:106,stock:302,horoscope:303,weather:301,opKeyword:325,tourneyPass:323},
	LEAGUE_MAP:{1:'MLB',3:'NBA',7:'NFL',10:'NHL',15:'NASCAR',8:'NCAAF',5:'NCAAB',3483:'PGA'},
	LEAGUE:'league', CONFERENCE:'conference', TEAM:'team', PLAYER:'player', TRACKING:{URL:'alert/listeners/getSportsListing.jsp',INIT:'loaded',INIT_CONF_PH:'loadedConfPh',CONF_SENT:'sentCode',DONE:'done',SUCC:'success',FAIL:'failed',SUCC_CONF_PH:'succConfPh',FAIL_CONF_PH:'failConfPh'},
	MLB:1, NBA:3, NFL:7, NHL:10, NASCAR:15, NCAAF:8, NCAAB:5, PGA:3483, CHS1:-1, phone:{number:'',isValid:0,isConfirmed:0,ph1:'',ph2:'',ph3:''}, widgetIdIsValid:0, timeoutDur:1200000, SEED:'seed', SESS_ID:'sessId',
	STATUS:{NEW:'new',SKIP:'skip',VALIDATED:'validated',PROCESSED:'processed',INVALID:'invalid',ERROR:'error',SUCCESS:'success'}, alerts:[], alertSfxIdxMap:{}, confCode:'', validAlertCnt:0, isBusy:0, stopSubmit:0,
	env:{serverUrl:'http://www.4info.com/',delSessId:'includes/utilities/searchRightNav.jsp',listener:'ConfirmAlert',sportsListener:'alert/listeners/getSportsListing.jsp',urlParams:null,sessionId:null,seed:null,fstClr:0,widgetId:null},
	cookie:{set:function(name,val,ms){var expires='';if(ms){var date=new Date();date.setTime(date.getTime()+ms);expires="; expires="+date.toGMTString();}document.cookie=name+"="+val+expires;}, get:function(name){var results=document.cookie.match('(^|;) ?'+name+'=([^;]*)(;|$)'); return results?unescape(results[2]):null;}, del:function(name){this.set(name,"",-1);}},	
	dsp:function(id,b){if(this.gel(id)) this.gel(id).style.display=b?'':'none';}, dsps:function(arr){for (var i=0;i<arr.length;i++) this.dsp(arr[i][0],arr[i][1]);}, setVsb:function(obj,b){if(obj)obj.style.visibility=b?'visible':'hidden';},
	gel:function(id){return document.getElementById(id);},
	val:function(id){return this.gel(id).value;},
	foc:function(id){try{this.gel(id).blur();this.gel(id).focus();}catch(e){}},
	enb:function(id,b){if(this.gel(id)) this.gel(id).disabled=!b; },
	vsb:function(id){return this.gel(id).style.display != 'none';},	
	xst:function(id){return this.gel(id)!=null;},
	num:function(n){return /^[2-9][0-8][0-9][2-9][0-9]{6}$/.test(n);},
	chk:function(id,b){var bl=typeof(b)=='undefined'?1:b;this.gel(id).checked=bl;},
	tab:function(fld,pfx,idx,e,sfx){sfx=sfx||''; if(fld.value.length>2 && idx<3) { this.gel(pfx+(idx+1)+sfx).focus();this.env.fstClr=1;return; } var evt = e || window.event;this.env.fstClr=!this.env.fstClr&&fld.value.length==0;if(fld.value.length==0 && !this.env.fstClr && evt.keyCode==8 && idx>1){this.gel(pfx+(idx-1)+sfx).focus();this.env.fstClr=0;}},
	run:function(url){var jsNode=document.createElement("script");jsNode.type="text/javascript";jsNode.src=url+(this.env.is4iSvr?'':'&seed='+this.env.seed)+'&rand='+Math.random(); document.getElementsByTagName("head")[0].appendChild(jsNode); },	
	trk:function(params){if(!_4i.ldr){_4i.ldr=_4i.newLdr();}_4i.setVsb(_4i.ldr,1);_4i.ldr.src=this.env.serverUrl+this.TRACKING.URL+(this.sessIdValid()?';jsessionid='+this.env.sessionId:'')+'?'+params+(this.env.is4iSvr?'':'&seed='+this.env.seed)+'&rand='+Math.random()+'&url='+window.location;_4i.setVsb(_4i.ldr,0); }, ldr:null,
	snd:function(params,name,callback){var callback=callback||'callback'; this.run(this.env.serverUrl+this.env.listener+(this.sessIdValid()?';jsessionid='+this.env.sessionId:'')+'?widgetID='+this.env.widgetId+'&phonenumber='+this.phone.number+'&'+params+'&callback='+name+'.'+callback+'&userInputConfCode='+_4i.confCode); },
	get:function(params){this.run(this.env.serverUrl+this.env.sportsListener+(this.sessIdValid()?';jsessionid='+this.env.sessionId:'')+'?'+params+'&output=json');},
	mnu:function(id,obj,def){if (!obj||!this.gel(id)) return; this.gel(id).options.length=0; var defId=-1; for (var i=0; i<obj.length; i++) { this.gel(id).options[i] = new Option(obj[i].name.replace(/&amp;/,'&'),obj[i].id); if(obj[i].name==def)defId=obj[i].id; } this.gel(id).value=defId;},
	add:function(name,value,params){params=params||''; return (params==''?'':'&')+name+'='+value;}, sessIdValid:function(){var s=this.env.sessionId;return s&&s.length==32;},
	def:function(v){return typeof(v)!='undefined';}, defAndIsTrue:function(v){return this.def(v)&&v},	
	varExists:function(v){return eval('typeof '+v)!='undefined';},size:function(obj){if(!obj)return 0; var s=0; for(var k in obj)s++; return s;}, getAlertBySfx:function(sfx){sfx=sfx||'one'; var idx=parseInt(_4i.alertSfxIdxMap[sfx]); return _4i.alerts[idx];},
	newLdr:function(){var n=document.createElement('iframe');n.width='1';n.height='1';n.style.border='none';n.style.position='absolute';_4i.gel('fiWidget').appendChild(n);return n},	
	lcFirst:function(str){if(!str||str=='')return str;return str.substring(0,1).toLowerCase()+str.substring(1,str.length);},ucFirst:function(str){if(!str||str=='')return str;return str.substring(0,1).toUpperCase()+str.substring(1,str.length);},
	isNum:function(n){return /^\d+$/.test(n);},isFunc:function(f){return typeof(f)=='function';},isStr:function(s){return typeof(s)=='string';},isObj:function(o){return typeof(o)=='object';},isDropDown:function(o){return _4i.def(o.selectedIndex)},	
	addLoadEvent:function(fn){var old=window.onload; if (typeof window.onload!='function') window.onload=fn; else window.onload = function() { if(old)old();fn(); }},
	onLoad:function(){return function(){ if(_4i.util.isIE())_4i.comm.delSessId(); _4i.comm.init(); _4i.alert.setDefaults();}}
};
var _4i = _4INFO;

_4INFO.initWidgets = function(cfg) {
	if(!cfg||!cfg.alerts) return;
	_4i.util.checkSeed();
	_4i.util.checkSessId();
	_4i.env.widgetId = cfg.widgetID;
	_4i.env.is4iSvr = location.host.toLowerCase().indexOf('www.4info.com')>-1;
	_4i.lastActive = new Date();
	_4i.runOnSuccess = cfg.runOnSuccess||null;
	_4i.runOnConfirm = cfg.runOnConfirm||null;
	_4i.confirmFirst = cfg.confirmFirst||0;
	if (_4i.isFunc(cfg.runOnSubmit)) _4i.e.onSubmit.sub({obj:cfg.runOnSubmit});	
	if (cfg.lang){ var lang='MSG_'+cfg.lang; if(_4i[lang])_4i.MSG=_4i[lang]; }
	for(var i=0;i<cfg.alerts.length;i++) {
		_4i.alerts.push(_4i.alert.Factory(cfg.alerts[i]));
		var sfx=cfg.alerts[i].idSuffix||'one';
		_4i.alertSfxIdxMap[sfx] = i;
	}
	_4i.addLoadEvent(_4i.onLoad());
};

_4INFO.addAlert = function(a) { _4i.alerts.push(a); return _4i.alerts.length-1; };
_4INFO.busy = function(b) { 
	if (_4i.isBusy==b) return;
	_4i.isBusy=b; 
	_4i.ui.toggleBusy(b);
}

_4INFO.setAlerts = function() {
	_4i.e.onSubmit.fire();
	if (_4i.stopSubmit||_4i.isBusy) { _4i.stopSubmit=0; return; }
	if (_4i.confirmFirst) { _4i.comm.confirmIfNeeded();if(!_4i.phone.isValid||_4i.isBusy)return; }
	_4i.util.validateAll();
	if (_4i.validAlertCnt < 1) { _4i.busy(0); alert(_4i.MSG.NO_VALID_ALERT); }
	else { if (!_4i.confirmFirst) { _4i.comm.confirmIfNeeded();if(!_4i.phone.isValid||_4i.isBusy)return; } _4i.comm.sendRequests(); }
};

_4INFO.Picker = {
	carts:{}, ids:{cart:'fiCart',btnAdd:'fiBtnAdd',btnRemove:'fiBtnRemove'},
	addTeam:function(sfx) {
		var picker=this.getPickerBySfx(sfx);
		var cfg={type:_4INFO.SPORTS, idSuffix:sfx, usingTriggers:picker.usingTriggers, isVirtualObj:1, getInputsOnSubmit:picker.cfg.getInputsOnSubmit, getTriggersOnSubmit:picker.cfg.getTriggersOnSubmit}, team=_4i.alert.Factory(cfg), idx=null;
		_4i.getInputs(team); if(team.params.length<=2)return;
		if(team.errors.length>0) { alert(_4i.MSG.PLS_SELECT_CHKBOX); return; }
		idx=_4i.addAlert(team);
		if (!_4i.xst(this.ids.cart+sfx)) return;
		this.carts[sfx].add(_4i.alerts[idx].name, idx);
	},
	addPlayer:function(sfx) {
		var picker=this.getPickerBySfx(sfx);		
		var cfg={type:_4INFO.STATS, idSuffix:sfx, usingTriggers:picker.usingTriggers, isVirtualObj:1, getTriggersOnSubmit:picker.cfg.getTriggersOnSubmit}, player=_4i.alert.Factory(cfg), idx=null;
		_4i.getInputs(player); if(player.params.length<=2)return;
		if(player.errors.length>0) { alert(_4i.MSG.PLS_SELECT_CHKBOX); return; }
		idx=_4i.addAlert(player);
		if (!_4i.xst(this.ids.cart+sfx)) return;
		this.carts[sfx].add(_4i.alerts[idx].name, idx);
	},
	runOnSubmit:function(args) {
		if (!this.carts[args.sfx].isEmpty()) return;
		var picker=this.getPickerBySfx(args.sfx);
		var name=picker.type==_4i.STATS_PICKER?'player':'team';
		alert('Please add a '+name+' to continue.');
		_4i.stopSubmit=1;
	},
	resetMenus:function(sfx) {
		var ID=_4i.ui.ids, picker=this.getPickerBySfx(sfx), hide=picker.cfg.hide, enb=_4i.LEAGUE, ids={leag:ID.leagueId+sfx,conf:ID.conferenceId+sfx,team:ID.teamId+sfx,player:ID.playerId+sfx}, xst={leag:_4i.xst(ids.leag),conf:_4i.xst(ids.conf),team:_4i.xst(ids.team),player:_4i.xst(ids.player)}, isNCAA=_4i.val(ids.leag)==_4i.NCAAB||_4i.val(ids.leag)==_4i.NCAAF;
		if (_4i.defAndIsTrue(hide.league)){ enb=_4i.CONFERENCE; if (_4i.defAndIsTrue(hide.conference)||!xst.conf||!isNCAA) enb=_4i.TEAM; if (_4i.defAndIsTrue(hide.team)&&xst.player) enb=_4i.PLAYER; }		
		var reset={leag:0,conf:0,team:0,player:0}, disable={leag:enb!=_4i.LEAGUE&&!_4i.defAndIsTrue(hide.league),conf:enb!=_4i.CONFERENCE,team:enb!=_4i.TEAM,player:enb!=_4i.PLAYER};
		if (!_4i.defAndIsTrue(hide.league)) reset.leag=1; if (!_4i.defAndIsTrue(hide.conference)&&isNCAA) reset.conf=1; if (!_4i.defAndIsTrue(hide.team)) reset.team=1; if (!_4i.defAndIsTrue(hide.player)) reset.player=1;
		if (xst.leag){if(reset.leag)_4i.gel(ids.leag).value=_4i.CHS1;if(disable.leag)_4i.gel(ID.leagueId+sfx).disabled=1;}if (xst.conf){if(reset.conf)_4i.gel(ids.conf).value=_4i.CHS1;if(disable.conf)_4i.gel(ID.conferenceId+sfx).disabled=1;}if (xst.team){if(reset.team)_4i.gel(ids.team).value=_4i.CHS1;if(disable.team)_4i.gel(ID.teamId+sfx).disabled=1;}if (xst.player){if(reset.player)_4i.gel(ids.player).value=_4i.CHS1;if(disable.player)_4i.gel(ID.playerId+sfx).disabled=1;}
		_4INFO.gel('fiBtnAdd'+sfx).disabled=1;
	},
	addCart:function(sfx) { if (!this.carts[sfx]) this.carts[sfx]=new _4i.Cart(sfx); },
	remove:function(sfx) { this.carts[sfx].remove(); },
	emptyAllCarts:function() { for(var k in this.carts) { if(k=='toJSONString')continue;this.carts[k].empty();} },
	emptyCart:function(sfx) { this.carts[sfx].empty(); },
	allCartsAreEmpty:function() { var r=1; for(var k in this.carts){ if(k=='toJSONString')continue;if(!this.carts[k].isEmpty())r=0;}return r; },
	refreshUI:function(sfx) { this.carts[sfx].refRemoveBtn(); },
	getPickerBySfx:function(sfx) { for(var i=0;i<_4i.alerts.length;i++) { var a=_4i.alerts[i]; if((a.type==_4i.STATS_PICKER||a.type==_4i.SPORTS_PICKER)&&a.sfx==sfx) return a; } }
};

_4INFO.Cart = function(sfx) { 
	this.sfx=sfx; this.elSel=_4i.gel(this.ids.cart+sfx); this.refRemoveBtn();
	var e=_4i.events, f='refAddBtn'; e.leagueChg.sub({obj:this,fn:f,args:{mnuType:_4i.LEAGUE}}); e.confChg.sub({obj:this,fn:f,args:{mnuType:_4i.CONFERENCE}}); e.teamChg.sub({obj:this,fn:f,args:{mnuType:_4i.TEAM}}); e.playerChg.sub({obj:this,fn:f,args:{mnuType:_4i.PLAYER}});
};

_4INFO.Cart.prototype = {
	nameMap:{}, ids:{cart:_4i.Picker.ids.cart,btnAdd:'fiBtnAdd',btnRemove:'fiBtnRemove'},
	add:function(name,idx) {
		if (_4i.def(this.nameMap[name])) this.del(name);
		var selSize=this.elSel.options.length;
		this.elSel.options[selSize]=new Option(name, idx, 0, 0);
		this.nameMap[name]=idx;
	},
	del:function(name) {
		if (!this.nameMap[name]) return;
		var selIndex=-1, selValue=null;
		for(var i=0;i<this.elSel.options.length;i++) if (this.elSel.options[i].text==name) { selIndex=i; selValue=this.elSel.options[i].value; }
		if (selIndex>-1) { this.elSel.options[selIndex]=null; if(_4i.alerts[selValue])_4i.alerts[selValue].status=_4i.STATUS.SKIP; }
	},
	isEmpty:function() { return this.elSel.options.length==0; },
	remove:function() { var sels=this.getSels(); for(var i=sels.length-1;i>=0;i--) this.del(this.elSel.options[sels[i]].text);this.refRemoveBtn(); },
	empty:function() { var opts=this.elSel.options; for(var i=0;i<opts.length;i++) this.del(opts[i].text); opts.length=0; this.refRemoveBtn(); },	
	getSels:function() { var sels=[]; if(!this.elSel)return sels; for(var i=0;i<this.elSel.options.length;i++) if (this.elSel.options[i].selected) sels.push(i); return sels; },
	refRemoveBtn:function() {_4i.enb(this.ids.btnRemove+this.sfx,this.getSels().length>0); },
	refAddBtn:function(args,alertObj) {
		var ID=_4i.ui.ids, sfx=this.sfx, mnuType=args.mnuType, a=_4i.Picker.getPickerBySfx(sfx), enab=0;
		if (!a.isPicker || alertObj.sfx!=sfx) return;
		if (a.type==_4i.SPORTS_PICKER && mnuType==_4i.TEAM && _4i.val(ID.teamId+sfx)!=_4i.CHS1) enab=1;
		else if (a.type==_4i.STATS_PICKER && mnuType==_4i.PLAYER && _4i.val(ID.playerId+sfx)!=_4i.CHS1) enab=1;
		_4i.enb(_4i.Picker.ids.btnAdd+sfx,enab);
	}
};

_4INFO.alert = {
	Factory:function(cfg) {
		var a, s=_4i.STATUS;
		switch (cfg.type) {
			case _4i.SPORTS: a = new _4i.alert.Team(); break;
			case _4i.STATS: a = new _4i.alert.Player(); break;
			case _4i.STOCK: a = new _4i.alert.Stock(); break;
			case _4i.WEATHER: a = new _4i.alert.Weather(); break;
			case _4i.HOROSCOPE: a = new _4i.alert.Horoscope(); break;
			case _4i.OP_KEYWORDS: a = new _4i.alert.OpenKeywords(); break;
			case _4i.OP_KEYWORD: a = new _4i.alert.OpenKeyword(); break;
			case _4i.SPORTS_PICKER: a = new _4i.alert.Team(); break;
			case _4i.STATS_PICKER: a = new _4i.alert.Player(); break;
			default: return null;
		}
		a.cfg = cfg;
		a.sfx = cfg.idSuffix;
		a.idx = _4i.alerts.length;
		a.type = cfg.type;
		a.isPicker = a.type==_4i.SPORTS_PICKER||a.type==_4i.STATS_PICKER;
		a.status = a.isPicker?s.SKIP:s.NEW;
		a.name = cfg.name||_4i.ucFirst(a.type);
		a.usingTriggers = _4i.def(cfg.usingTriggers)?cfg.usingTriggers:1;
		a.getInputsOnSubmit = _4i.def(cfg.getInputsOnSubmit)?cfg.getInputsOnSubmit:1;
		a.params = [];
		a.errors = [];
		a.resultMsg = '';
		a.def = cfg.defaults||{};
		a.hide = cfg.hide||{};
		if ((a.type==_4i.STATS&&!a.cfg.isVirtualObj)||a.type==_4i.STATS_PICKER) _4i.events.playerChg.sub({obj:a,fn:'refreshTriggers',args:{mnuType:_4i.PLAYER}});
		if (a.def.triggers) a.availableTriggers = a.def.triggers;
		return a;
	},	
	Player:function() { },
	Team:function() { },
	Stock:function() { },
	Weather:function() { },
	Horoscope:function() { },
	OpenKeywords:function() { },
	OpenKeyword:function() { },
	setDefaults:function() { for (var i=0;i<_4i.alerts.length;i++) if (_4i.alerts[i].usingTriggers) _4i.alerts[i].setDefaults(); }
};

_4INFO.util = {
	validateAll:function() {
		_4i.validAlertCnt=0; _4i.processedCnt=0;
		for (var i=0;i<_4i.alerts.length;i++) this.validate(_4i.alerts[i]);
	},
	validate:function(a) {
		var s=_4i.STATUS;		
		if (a.status==s.SKIP) { return; }
		if (a.type==_4i.OP_KEYWORDS) { a.getInputs(); return; }
		if (a.params.length!=0&&a.cfg.getTriggersOnSubmit) a.getTriggersFromUI();
		else {
			if ((a.status==s.SUCCESS||a.status==s.ERROR||a.status==s.VALIDATED)&&!a.getInputsOnSubmit) { if (a.status==s.VALIDATED)_4i.validAlertCnt++; return; }
			a.getInputs();
		}
		if(a.usingTriggers||a.type==_4i.OP_KEYWORD) a.params.push({usingTriggers:1});
		if (a.errors.length>0) {
			a.status = s.INVALID;
			var str=_4i.ui.html.divNotSet+_4i.ui.formatName(a.name)+_4i.MSG.NOT_SET_BECAUSE;
			for(var i=0;i<a.errors.length;i++) str += a.errors[i]+'<br />';
			a.resultMsg = str+_4i.ui.html.divClose;
		} else {
			a.status=s.VALIDATED;
			_4i.validAlertCnt++;
		}
	},
	validatePhone:function() {
		var ID=_4i.ui.ids;
		_4i.phone.number=_4i.val(ID.ph1)+_4i.val(ID.ph2)+_4i.val(ID.ph3)+'';
		_4i.phone.isValid=_4i.num(_4i.phone.number);
		if (!_4i.phone.isValid) { alert(_4i.MSG.ENTER_VALID_PHONE_NO); _4i.busy(0);_4i.foc(ID.ph1); }
	},
	resetAllStatus:function() {
		for(var i=0;i<_4i.alerts.length;i++) {
			var a=_4i.alerts[i];
			if (a.status==_4i.STATUS.SKIP) continue;
			a.resultMsg=''; a.errors=[];
			a.status=_4i.STATUS.NEW;
		}
		_4i.util.deleteSelAlerts();
		_4i.validAlertCnt=0;
	},
	deleteSelAlerts:function() {
		var delIdxLst=[];
		for(var i=0;i<_4i.alerts.length;i++) if(_4i.alerts[i].cfg.isVirtualObj) delIdxLst.push(i);
		for(var i=delIdxLst.length-1;i>=0;i--) _4i.alerts.splice(delIdxLst[i],1);
	},
	getDayHourZone:function(a) {
		var sfx=a.sfx, triggers=a.availableTriggers, deliverOnDay=triggers.deliverOnDay;
		for(var key in deliverOnDay) { if (key=='toJSONString') continue; if (_4i.xst('fi'+key+sfx) && _4i.gel('fi'+key+sfx).checked) a.params.push({'deliverOnDay':key}); }
		var selHour=_4i.val('fiHour'+sfx), AM=0, PM=1;
		a.params.push({'hour12':selHour==0?12:selHour%12});
		a.params.push({'ampm':selHour<12?AM:PM});
		a.params.push({'userZone':_4i.val('fiUserZone'+sfx)});
	},
	setDefaultDayHourZone:function(a) {
		var pfx='fi', sfx=a.sfx, triggers=a.availableTriggers, deliverOnDay=triggers.deliverOnDay;
		for(var key in deliverOnDay) { if (key=='toJSONString') continue; _4i.chk(pfx+key+sfx,deliverOnDay[key]==1); }
		if (_4i.isNum(triggers.hour)) _4i.gel(pfx+'Hour'+sfx).value = triggers.hour;
		if (_4i.isNum(triggers.userZone)) _4i.gel(pfx+'UserZone'+sfx).value = triggers.userZone;
	},
	addOpenKeyword:function(obj) {
		if (!obj||!obj.id)return;
		var cfg={type:_4i.OP_KEYWORD,idSuffix:obj.sfx,isVirtualObj:1}, opKw=_4i.alert.Factory(cfg), idx=null;
		var defName=obj.id==_4i.TOURNEY_PASS?'Tournament pass':'OP keyword';
		opKw.name=obj.name||defName;
		opKw.serviceId=obj.id;
		opKw.queryStr=obj.queryStr;
		opKw.isSubKw=obj.isSubKw||0;
		_4i.addAlert(opKw);
	},
	isIE:function(){ var ua=navigator.userAgent.toLowerCase(), isIE=((ua.indexOf("msie")!=-1)&&(ua.indexOf("opera")==-1)); return isIE; },
	minOneDayChecked:function(a) { var p=a.params; if(!p) return false; for(var i=0,j=p.length;i<j;i++) if (p[i].deliverOnDay) return true; return false; },
	track:function(st) { var trk=_4i.TRACKING, params='cmd=trk&widgetId='+_4i.env.widgetId; if(_4i.isStr(st))params+='&state='+st; else if(_4i.isObj(st)){ var succCnt=st.succCnt,failCnt=st.failCnt,isConfPh=trk.initState==trk.INIT_CONF_PH,succ=isConfPh?trk.SUCC_CONF_PH:trk.SUCC,fail=isConfPh?trk.FAIL_CONF_PH:trk.FAIL; params+='&state='+trk.DONE+(succCnt?'&'+succ+'='+succCnt:'')+(failCnt?'&'+fail+'='+failCnt:''); } _4i.trk(params); },
	checkSeed:function() { if(_4i.env.seed)return; var ckSeed=_4i.cookie.get(_4i.SEED); if(!ckSeed){ckSeed=Math.ceil(Math.random()*1000000); _4i.cookie.set(_4i.SEED,ckSeed);} _4i.env.seed=ckSeed; },
	checkSessId:function() { if(_4i.sessIdValid())return; var ckSessId=_4i.cookie.get(_4i.SESS_ID); if(ckSessId&&!_4i.env.is4iSvr)_4i.env.sessionId=ckSessId; },
	getSelIdxText:function(idOrObj) { var el=typeof(idOrObj)=='object'?idOrObj:_4i.gel(idOrObj); return el.options[el.selectedIndex].text; },
	getParamsString:function(a) { var str='', trigStr=''; str=this.getStrFromParams(a.params); trigStr=this.getStrFromParams(a.triggerParams); if(trigStr!='') str+='&'+trigStr; return str; },
	getStrFromParams:function(p) { var str='';	if(!p)return str; for(var i=0;i<p.length;i++) { for(var k in p[i]) { if (k=='toJSONString')continue; str += k+'='+p[i][k]; } if (i<p.length-1) str+='&'; } return str; },
	clone:function(o) { var n={}; for(k in o) if(typeof o[k]=='object')n[k]=new _4i.clone(o[k]);else n[k]=o[k]; return n; },
	alwaysShow:function(a,prop) { return _4i.def(a.cfg.alwaysShow)?a.cfg.alwaysShow[prop]:0; },
	reloadPage:function() { location.reload(true); }
};

_4INFO.comm = {
	init:function() {
		_4i.isCheckingWidgetId=1;
		_4i.snd('','_4INFO.comm','initCallback');
	},
	initCallback:function(json) {
		_4i.widgetIdValid=json['creativeIdValid']!=0;
		if (!_4i.widgetIdValid) { _4i.ui.widgetIdInvalid(); return; }
		this.procResult(json);
		this.initSportsMenus();
		var trk=_4i.TRACKING; trk.initState=_4i.phone.isConfirmed?trk.INIT_CONF_PH:trk.INIT;
		_4i.util.track(trk.initState);
	},
	initSportsMenus:function() {
		var DIV=_4i.ui.ids.divs;
		for(var i=0;i<_4i.alerts.length;i++) {
			var a=_4i.alerts[i];
			if ((a.type==_4i.SPORTS||a.type==_4i.STATS||a.isPicker) && _4i.xst(DIV.league+a.sfx)) _4i.menu.populateMenu(a,_4i.LEAGUE);
			if (a.isPicker) { _4i.Picker.addCart(a.sfx); if(!_4i.def(a.cfg.checkList)||a.cfg.checkList) _4i.e.onSubmit.sub({obj:_4i.Picker,fn:'runOnSubmit',args:{sfx:a.sfx}}); }
		}
	},
	sendRequests:function() {
		_4i.busy(1); var sendCnt=0;
		for (var i=0;i<_4i.alerts.length;i++) {
			var a=_4i.alerts[i];
			if (a.status!=_4i.STATUS.VALIDATED||a.type==_4i.OP_KEYWORDS) continue;
			this.send(a); sendCnt++;
		}
		if (sendCnt==0) _4i.busy(0);
	},
	send:function(a) {
		var paramsStr=_4i.util.getParamsString(a);
		_4i.snd(paramsStr,'_4i.alerts['+a.idx+']','callback');
	},	
	confirmIfNeeded:function() {
		if (!this.checkTimeout() && _4i.phone.isConfirmed) return;
		_4i.util.validatePhone();
		if (!_4i.confirmFirst) _4i.util.deleteSelAlerts();
		if (_4i.phone.isValid) { _4i.util.track(_4i.TRACKING.CONF_SENT);_4i.comm.sendConfReq(); }
	},
	confirmSubmit:function() {
		var ID=_4i.ui.ids; this.checkTimeout(); _4i.confCode=_4i.val(ID.confCode);
		if (_4i.confCode=='') {
			alert(_4i.MSG.ENTER_CONF_CODE);
			_4i.foc(ID.confCode);
			return;
		}
		_4i.comm.sendConfReq({isConfirming:1});
	},
	sendConfReq:function(isConfirming) { _4i.busy(1);_4i.snd('','_4INFO.comm','confirmCallback'+(isConfirming?'':_4i.comm.tpShortCodeFlag())); },
	tpShortCodeFlag:function() { for (var i=0; i<_4i.alerts.length; i++) { if (_4i.alerts[i].cfg.type==_4i.OP_KEYWORDS) return '&alertServiceID='+_4i.SERVICE_IDS.opKeyword+'&openServiceId='+(_4i.val('fiOpKeyword'+_4i.alerts[i].cfg.idSuffix+'1').split(',')[0]); } return ''; },
	delSessId:function() { var ldr=_4i.newLdr();_4i.setVsb(ldr,1);ldr.src=_4i.env.serverUrl+_4i.env.delSessId;_4i.setVsb(ldr,0); },	
	checkTimeout:function() { var now=new Date(),idleTime=now-_4i.lastActive; if(idleTime>_4i.timeoutDur){ alert(_4i.MSG.SESS_TIMED_OUT);_4i.util.reloadPage();return 1; } return 0; },
	resendCode:function() { _4i.isResendReq=1; _4i.confCode=''; _4i.comm.sendConfReq(); },
	invalidatePhone:function() { _4i.snd('cmd=invalidatePhoneNo','_4i.ui','clearPhone'); },
	confirmCallback:function(json) { this.procResult(json); this.callback(null,json); },
	resultTemplate:{'phoneNumberValid':0,'confCodeSent':0,'confCodeValid':0,'alertCreated':0,'maxAttempts':0,'maxResends':0,'duplicateAlert':0,'creativeIdValid':0},
	procResult:function(json) {
		_4i.lastActive=new Date();
		var result=_4i.comm.resultTemplate;
		if (json['sessionId'] && _4i.env.sessionId!=json['sessionId'] && !_4i.env.is4iSvr) _4i.env.sessionId=json['sessionId'];
		if(_4i.sessIdValid()) _4i.cookie.set(_4i.SESS_ID,_4i.env.sessionId);
		for (var key in result) { if (key=='toJSONString') continue; result[key] = (json[key] && json[key]==1)?1:0; }
		if (json['alertCreated']!=null) result['confCodeValid']=1; // flag appears only when phone is confirmed
		if (json['confCodeSent']!=null&&json['confCodeSent']==0) result['maxResends']=1;
		if (_4i.isCheckingWidgetId&&json['sessionedIn']!=null&&json['sessionedIn']!=0) { _4i.ui.phoneIsConfirmed(json['sessionedIn']); _4i.isCheckingWidgetId=0; }
		return result;
	},
	callback:function(a,json) {
		var result=this.procResult(json), isConfirmCallback=a==null, ID=_4i.ui.ids, DIV=ID.divs, HTML=_4i.ui.html, msg='', err='', m=_4i.MSG, showConf=0;
		if (result['creativeIdValid']==0) { _4i.widgetIdIsValid=0; msg=m.INVALID_WIDGET_ID; }
		else if (result['phoneNumberValid']==0) { err=m.INVALID_INPUT; }
		else if (result['duplicateAlert']==1) { err=m.DUPLICATE_ALERT; }
		else if (result['alertCreated']==1) { a.status=_4i.STATUS.SUCCESS; }
		else if (result['alertCreated']==0 && result['phoneNumberValid']==1 && result['confCodeValid']==1) { err=m.INVALID_INPUT; }
		else if (result['confCodeSent']==1) { showConf=1; if(_4i.isResendReq) { _4i.busy(0); alert(m.CONF_CODE_RESENT); _4i.gel(ID.confCode).value=''; _4i.isResendReq=0; } }
		else if (result['maxAttempts']==1&&result['confCodeValid']==0) { alert(m.CONFIRM_MAXED_OUT);_4i.busy(0); }
		else if (result['maxResends']==1) { alert(m.RESEND_MAXED_OUT1+_4i.phone.number+m.RESEND_MAXED_OUT2);_4i.busy(0); }
		else if (result['confCodeValid']==0) { alert(m.INVALID_CONF_CODE); showConf=1; }
		if (!_4i.phone.isConfirmed && showConf) { _4i.ui.showConfDiv(); _4i.busy(0); }
		if (!_4i.phone.isConfirmed && (result['confCodeValid']==1||result['alertCreated']==1||result['duplicateAlert']==1)) {
			_4i.ui.phoneIsConfirmed(_4i.phone.number); _4i.busy(0); _4i.isResendReq=0;
			if (_4i.isFunc(_4i.runOnConfirm)) _4i.runOnConfirm(); else _4i.setAlerts();
			return;
		}
		if (isConfirmCallback) { return; }
		if (err!='') { a.status=_4i.STATUS.ERROR; a.resultMsg=HTML.divNotSet+_4i.ui.formatName(a.name)+m.NOT_SET_BECAUSE+err+HTML.divClose; }
		else if (a.status==_4i.STATUS.SUCCESS) a.resultMsg=HTML.divSuccess+_4i.ui.formatName(a.name)+m.CREATED_SUCCESSFULLY+HTML.divClose;
		this.checkProgress();
	},
	checkProgress:function() {
		var done=1, s=_4i.STATUS;
		for (var i=0;i<_4i.alerts.length;i++) { var a=_4i.alerts[i]; if (a.type!=_4i.OP_KEYWORDS&&(a.status==s.NEW||a.status==s.VALIDATED)) { done=0;break; } }
		if (done) { _4i.ui.showMessageDiv(); _4i.busy(0); }
	}
};

_4INFO.ui = {
	ids:{ ph1:'fiPh1',ph2:'fiPh2',ph3:'fiPh3',lblPhNo:'fiPhNo',confCode:'fiConfCode',lnkResend:'fiResendLink',lblMsg:'fiMsgTxt',
		  leagueId:'fiLeagueId',conferenceId:'fiConferenceId',teamId:'fiTeamId',playerId:'fiPlayerId',btns:{cont:'fiBtnContinue',cont2:'fiBtnContinue2',conf:'fiBtnConfirm'},
		  divs:{widget:'fiWidget',league:'fiLeagueMenu',conference:'fiConferenceMenu',team:'fiTeamMenu',player:'fiPlayerMenu',
			  	passing:'fiNflPassing',offense:'fiNflOffense',kicking:'fiNflKicking',defense:'fiNflDefense',teamDefense:'fiNflTeamDefense',
		  		phInput:'fiPhInput',phTxt:'fiPhTxt',input:'fiInputs',phone:'fiPhone','confirm':'fiConfirm',msg:'fiMessage',created:'fiCreated',notCreated:'fiNotCreated'
		  }
	},
	html:{ divSuccess:'<div class="fiSuccess">',divNotSet:'<div class="fiNotSet">',divClose:'</div>' },
	widgetIdInvalid:function() { _4i.gel(this.ids.divs.widget).innerHTML = _4i.MSG.INVALID_WIDGET_ID; },
	hideWidget:function() { _4i.gel(this.ids.divs.widget).innerHTML=''; },
	formatName:function(str) { return '<b>'+str+' alert</b>'; },
	showMessageDiv:function() {
		var ID=_4i.ui.ids, DIV=ID.divs, sfx='', str=this.getResultMsgs(), succ=str==_4i.MSG.ALERT_SET_SUCCESS;
		_4i.gel(ID.lblMsg).innerHTML = str;
		_4i.dsps([[DIV.input+sfx,0],[DIV.phone+sfx,0],[DIV.confirm+sfx,0],[DIV.created+sfx,succ],[DIV.notCreated+sfx,!succ],[DIV.msg+sfx,1]]);
	},
	getResultMsgs:function() {
		var strSuccess='', strFailed='', alerts=_4i.alerts, s=_4i.STATUS, setAlertNames=[], trk=_4i.TRACKING, succCnt=0, failCnt=0;
		for (var i=0;i<alerts.length;i++) { var status=alerts[i].status; if(status==s.SKIP||alerts[i].isSubKw||alerts[i].name=='Choose one')continue; else if(status==s.SUCCESS){succCnt++; strSuccess+=alerts[i].resultMsg; setAlertNames.push(alerts[i].name);} else {var str=alerts[i].resultMsg;if(str)failCnt++;strFailed+=str;} }
		_4i.successAlertNames = setAlertNames;
		if (strSuccess!='' && _4i.isFunc(_4i.runOnSuccess)) _4i.runOnSuccess();
		_4i.successAlertNames = [];
		if (succCnt!=0||failCnt!=0) _4i.util.track({'succCnt':succCnt,'failCnt':failCnt});
		if (strFailed=='') return _4i.MSG.ALERT_SET_SUCCESS;
		return strSuccess+strFailed;
	},
	showInputDiv:function(sfx) {
		_4i.util.resetAllStatus();
		var ID=_4i.ui.ids, DIV=ID.divs, sfx=sfx||'';
		_4i.dsps([[DIV.confirm+sfx,0],[DIV.msg+sfx,0],[DIV.input+sfx,1],[DIV.phone+sfx,1]]);
	},
	showConfDiv:function(sfx) {
		var ID=_4i.ui.ids, DIV=ID.divs, sfx=sfx||'';
		_4i.dsps([[DIV.input,0],[DIV.msg,0],[DIV.phone,0],[DIV.confirm,1]]); _4i.gel(ID.confCode).value=''; _4i.foc(ID.confCode);
	},
	phoneIsConfirmed:function(phNo) {
		_4i.phone.isConfirmed=1; _4i.phone.isValid=1; _4i.phone.number=phNo;
		_4i.phone.ph1=phNo.substr(0,3); _4i.phone.ph2=phNo.substr(3,3); _4i.phone.ph3=phNo.substr(6,4);
		_4i.ui.savePhone();
	},
	savePhone:function(sfx) {
		var cf=_4i.phone, ID=this.ids, DIV=ID.divs, sfx=sfx||'';
		_4i.gel(ID.ph1+sfx).value = cf.ph1; _4i.gel(ID.ph2+sfx).value = cf.ph2; _4i.gel(ID.ph3+sfx).value = cf.ph3;
		_4i.gel(ID.lblPhNo+sfx).innerHTML = '('+cf.ph1+')'+cf.ph2+'-'+cf.ph3+' ';
		_4i.dsps([[DIV.phInput+sfx,0],[DIV.phTxt+sfx,1]]);
	},	
	clearPhone:function(sfx) {
		var ID=_4i.ui.ids, DIV=ID.divs, sfx=typeof(sfx)=='String'?sfx:'';
		_4i.gel(ID.ph1+sfx).value=''; _4i.gel(ID.ph2+sfx).value=''; _4i.gel(ID.ph3+sfx).value='';
		_4i.dsps([[DIV.phTxt+sfx,0],[DIV.phInput+sfx,1]]);
		_4i.phone.isConfirmed=0;
		_4i.phone.isValid=0;
		_4i.phone.ph1=''; _4i.phone.ph2=''; _4i.phone.ph3='';
		_4i.confCode='';
		_4i.util.resetAllStatus();
		_4i.foc(ID.ph1+sfx);
	},
	toggleBusy:function(b) {
		var BTN=_4i.ui.ids.btns, m=_4i.MSG;
		_4i.gel(BTN.cont).value=b?m.PROCESSING:m.CONTINUE; _4i.enb(BTN.cont,!b); _4i.enb(BTN.cont2,!b);
		_4i.gel(BTN.conf).value=b?m.PROCESSING:m.CONFIRM; _4i.enb(BTN.conf,!b);
	}
};

_4INFO.alert.OpenKeywords.prototype = {
	getInputs:function() {
		var a=this; a.params=[]; a.errors=[];
		var pfx='fi', sfx=a.sfx, frmObj=_4i.gel(pfx+'WidgetForm'), arrKw=frmObj[pfx+'OpKeyword'+sfx], cnt=0, opQueryStrId = pfx+'OpKeywordQuery'+sfx, opQueryStr = null;
		if (!arrKw.length||_4i.isDropDown(arrKw)) {
			var val=arrKw.value, arr=val.split(','), lbl=_4i.isDropDown(arrKw)?_4i.util.getSelIdxText(arrKw):arrKw.parentNode.getElementsByTagName('label')[0].innerHTML; lbl=(lbl?lbl:'');
			if (_4i.gel(opQueryStrId)) {
				if (arrKw.type=='checkbox' && arrKw.checked && !_4i.val(opQueryStrId)) { a.errors.push('Query was not entered.'); return; }
				else opQueryStr = escape(_4i.val(opQueryStrId));
			}
			for(var j=0;j<arr.length;j++) { if (_4i.util.addOpenKeyword({id:arr[j],name:lbl,isSubKw:j>0,sfx:sfx,queryStr:opQueryStr})) cnt++; }
		} else {
			for(var i=0;i<arrKw.length;i++) {
				if (arrKw[i].name!=pfx+'OpKeyword'+sfx) continue;
				if(arrKw[i].checked) { var val=arrKw[i].value, arr=val.split(','), lbl=arrKw[i].parentNode.getElementsByTagName('label')[0].innerHTML; lbl=(lbl?lbl:''); for(var j=0;j<arr.length;j++) { if (_4i.util.addOpenKeyword({id:arr[j],name:lbl,isSubKw:j>0,sfx:sfx})) cnt++; } }
			}
		}
		if(cnt<1) a.errors.push('No alert checkbox was checked.');
	},
	callback:function(json) { _4i.comm.callback(this,json); },
	setDefaults:function() { }
};

_4INFO.alert.OpenKeyword.prototype = {
	serviceId:null, isSubKw:0,
	availableTriggers:{ deliverOnDay:{'Monday':1,'Tuesday':1,'Wednesday':1,'Thursday':1,'Friday':1,'Saturday':1,'Sunday':1}, hour:9, userZone:3 },
	getInputs:function() {
		var a=this; a.params=[]; a.errors=[], svcId=_4i.SERVICE_IDS.opKeyword;
		if (a.serviceId==_4i.TOURNEY_PASS){ svcId=_4i.SERVICE_IDS.tourneyPass;a.params.push({'tournamentPassRadio':'tournamentPass'}); } 
		else a.params.push({'openServiceId':a.serviceId});
		a.params.push({'alertServiceID':svcId});		
		if (a.queryStr) a.params.push({'openQueryString':a.queryStr});
		if (a.usingTriggers && _4i.gel('fiUserZone'+a.sfx)) { _4i.util.getDayHourZone(a); if (!_4i.util.minOneDayChecked(a)) { a.errors.push('Day was not checked.'); return false; } }		
		a.status=_4i.STATUS.VALIDATED;
		return true;
	},
	callback:function(json) { _4i.comm.callback(this,json); },
	setDefaults:function() { }
};

_4INFO.alert.Stock.prototype = {
	availableTriggers:{'marketOpen':0,'marketClose':1,'abovePrice':0,'belowPrice':0,'percentUpFromOpen':0,'percentDownFromOpen':0},
	getInputs:function() {		
		var a=this; a.params=[]; a.errors=[];
		var pfx='fi', sfx=a.sfx, triggers=a.availableTriggers, allowed=_4i.allowed.stock, symbol=_4i.val(pfx+'Symbol'+sfx);
		if (symbol==''||symbol=='Enter Stock Symbol') { a.errors.push('A stock symbol was not entered.'); return; }
		if (a.usingTriggers) {
			for(var trigger in triggers) {
				if (trigger=='toJSONString') continue;
				var chkId=pfx+_4i.ucFirst(trigger)+sfx;
				if (allowed[trigger] && _4i.xst(chkId) && _4i.gel(chkId).checked) {
					a.params.push({'notify':trigger});
					if (allowed[trigger]>1) {
						var obj={}; obj[trigger]=_4i.val(pfx+_4i.ucFirst(trigger)+'Sel'+sfx); 
						if ((trigger=='abovePrice'||trigger=='belowPrice')&&!a.isNumeric(obj[trigger],1)) 
							a.errors.push('Invalid '+(trigger=='abovePrice'?'above':'below')+' price.');
						a.params.push(obj);
					}
				}
			}
			if (a.params.length<1) a.errors.push('No stock alert option checkbox was checked.');
		}
		a.params.push({'alertServiceID':_4i.SERVICE_IDS.stock});
		a.params.push({'symbol':symbol});
	},
	callback:function(json) { _4i.comm.callback(this,json); },
	setDefaults:function() {
		var pfx='fi', sfx=this.sfx, triggers=this.availableTriggers;
		for(var key in triggers) {
			var chkId=pfx+_4i.ucFirst(key)+sfx;
			if (_4i.xst(chkId)&&triggers[key]!=0) { _4i.chk(chkId); if (triggers[key]>1&&_4i.xst(pfx+_4i.ucFirst(key)+'Sel'+sfx)) _4i.gel(pfx+_4i.ucFirst(key)+'Sel'+sfx).value = triggers[key]; }
		}
	},
	isNumeric:function(str, isPositive) {
		if (str=='') return 0; var startIdx=(str.charAt(0)=='+' || str.charAt(0)=='-')?1:0; if (isPositive && str.charAt(0)=='-') return 0;
		for (var i=startIdx;i<str.length;i++) { var chr = str.charAt(i); if (!(chr>=0&&chr<=9) && chr!='.') return 0; } return 1;
	}
};

_4INFO.alert.Weather.prototype = {
	availableTriggers:{ deliverOnDay:{'Monday':1,'Tuesday':1,'Wednesday':1,'Thursday':1,'Friday':1,'Saturday':1,'Sunday':1}, hour:9, userZone:3 },
	getInputs:function() {
		var a=this; a.params=[]; a.errors=[];
		var sfx=a.sfx, location=_4i.val('fiLocation'+sfx);
		if (location=='') { a.errors.push('Location was not entered.'); return; }
		if (a.usingTriggers) { _4i.util.getDayHourZone(a); if (!_4i.util.minOneDayChecked(a)) { a.errors.push('Day was not checked.'); return; } }
		a.params.push({'alertServiceID':_4i.SERVICE_IDS.weather});
		a.params.push({'location':location});
	},
	callback:function(json) { _4i.comm.callback(this,json); },
	setDefaults:function() { _4i.util.setDefaultDayHourZone(this); }
};

_4INFO.alert.Horoscope.prototype = {
	availableTriggers:{ deliverOnDay:{'Monday':1,'Tuesday':1,'Wednesday':1,'Thursday':1,'Friday':1,'Saturday':1,'Sunday':1}, hour:9, userZone:3 },
	getInputs:function() {
		var a=this; a.params=[]; a.errors=[];
		var pfx='fi', sfx=a.sfx, sign=_4i.val(pfx+'Sign'+sfx);
		if (a.usingTriggers) { _4i.util.getDayHourZone(a); if (!_4i.util.minOneDayChecked(a)) { a.errors.push('Day was not checked.'); return; } }		
		a.params.push({'alertServiceID':_4i.SERVICE_IDS.horoscope});
		a.params.push({'sign':sign});
	},
	callback:function(json) { _4i.comm.callback(this,json); },
	setDefaults:function() { _4i.util.setDefaultDayHourZone(this); }
};

_4INFO.alert.Player.prototype = {
	leagueId:_4i.CHS1, teamId:_4i.CHS1, playerId:_4i.CHS1, positionId:_4i.CHS1,	
	mlb:{pitchingId:11}, nfl:{passingId:22,kickingId:18,offenseIds:{23:1,26:1,27:1,13:1,17:1,25:1},teamDefenseId:12},
	triggerDivIds:['NflPassing','NflOffense','NflKicking','NflDefense','NflTeamDefense','MlbPitching','MlbBatting','Nba','Nhl'],
	triggerPrefixes:{MLB:{Pitching:'pitching',Batting:'batting'},NFL:{Passing:'nflPassing',Offense:'nflOffense',Kicking:'nflKicking',Defense:'nflDefense',TeamDefense:'nflTeamDefense'},NBA:'nba',NHL:'nhl'},
	availableTriggers:{
		MLB:{Pitching:{'StrikeOut':3,'EarnedRun':3,'Walk':3,'Pulled':1,'Playing':1,'NotPlaying':0,/*'PlayerStatus':0,*/'GameEnd':1},
			 Batting:{'HomeRun':1,'Run':2,'StolenBase':1,'Rbi':2,'Hit':2,'Playing':0,'NotPlaying':1,/*'PlayerStatus':0,*/'GameEnd':1}},
		NFL:{Passing:{'TD':1,'TP':1,'Int':1,'FL':1,'Pass':1,'Rush':1,/*'Player':0,*/'GE':1},
			 Offense:{'TD':1,'TP':1,'FL':1,'Rush':1,'Rec':1,/*'Player':0,*/'GE':1},
			 Kicking:{'FGM':1,'FGA':1,'FGB':1,/*'Player':0,*/'GE':1},
			 Defense:{'Tackle':1,'Sack':1,'Int':1,'FR':1,'TD':1,'FF':1,'PassDef':1,'BlockedKick':1,'Safety':1,/*'Player':0,*/'GE':1},
			 TeamDefense:{'PA':1,'YA':1,'Sacks':1,'Int':1,'FR':1,'TD':1,'Safety':1,'BlockedKick':1,'GE':1}},
		NBA:{'GameEnd':1,'PeriodEnd':1},
		NHL:{'GameEnd':1,'PeriodEnd':1,'PlayerScore':1,'PlayerAssist':1}
	},
	getInputs:function() {
		var a=this, ID=_4i.ui.ids, sfx=a.sfx; a.errors=[];
		if (!a.cfg.isVirtualObj) a.params=[];
		if (a.cfg.isVirtualObj) {
			if (a.status==_4i.STATUS.VALIDATED) return;
			var picker=_4i.Picker.getPickerBySfx(sfx), p=picker.getInputs(); if(!p)return;
			a.leagueId=p.leagueId; a.params=p.params; a.triggerParams=p.triggerParams; a.errors=p.errors; a.name=p.name;
			return;
		}
		if (_4i.xst(ID.playerId+sfx)) {
			a.playerId=_4i.val(ID.playerId+sfx);
			a.name=_4i.util.getSelIdxText(ID.playerId+sfx);			
		}
		if (a.usingTriggers) a.getTriggersFromUI();
		if (a.playerId==_4i.CHS1) { a.errors.push('No player was selected.'); return; }
		a.params.push({'alertServiceID':_4i.SERVICE_IDS.stats});
		a.params.push({'league':a.leagueId});
		a.params.push({'player':a.playerId});
		if (a.isPicker) return a;
	},
	getTriggersFromUI:function() {
		var a=this, sfx=a.sfx, league=_4i.LEAGUE_MAP[a.leagueId], triggersToCheck=a.availableTriggers[league], allowed=_4i.allowed.stats[league], pfx=a.triggerPrefixes[league], position=a.getPosition();							
		a.triggerParams=[];
		if (position) {
			pfx=a.triggerPrefixes[league][position];
			triggersToCheck=a.availableTriggers[league][position];
			allowed = _4i.allowed.stats[league][position];
		}
		for(var trigger in triggersToCheck) {
			if (trigger=='toJSONString') continue;
			var elId=pfx+trigger+'Chk'+sfx, trigName=position?pfx+trigger:_4i.lcFirst(trigger);
			if (allowed[trigName] && _4i.xst(elId) && _4i.gel(elId).checked) {
				a.triggerParams.push({'playerEvent':trigName});
				if (allowed[trigName]>1) { var obj={}; obj[trigName]=_4i.val(pfx+trigger+'Sel'+sfx); a.triggerParams.push(obj); }
			}
		}
		if (a.triggerParams.length<1) a.errors.push('No player alert option checkbox was checked.');
	},
	callback:function(json) { _4i.comm.callback(this,json); },
	refreshPosMap:function(json) {
		var a=this; a.posMap={};
		if (a.leagueId!=_4i.NFL && a.leagueId!=_4i.MLB) return;
		for(var i=0;i<json.length;i++) a.posMap[json[i].id] = json[i].p;
	},
	refreshTriggers:function() {
		var a=this, divId='', ID=_4i.ui.ids, sfx=a.sfx, alwaysShowOptions=_4i.util.alwaysShow(a,'options');
		a.teamId=_4i.val(ID.teamId+sfx);
		a.playerId=_4i.val(ID.playerId+sfx);
		if ((a.teamId==_4i.CHS1||a.playerId==_4i.CHS1)&&!alwaysShowOptions) { a.showTrigger(''); return; }
		switch (parseInt(a.leagueId)) {
			case _4i.MLB: divId='Mlb'+a.getMlbPosition(); break;
			case _4i.NFL: divId='Nfl'+a.getNflPosition(); break;
			case _4i.NBA: divId='Nba'; break;
			case _4i.NHL: divId='Nhl';
			default: break;
		}
		this.showTrigger(divId);
	},
	getNflPosition:function() {
		var nfl=this.nfl, pos='';
		switch (this.positionId) {
			case nfl.passingId: pos='Passing'; break;
			case nfl.kickingId: pos='Kicking'; break;
			case nfl.teamDefenseId: pos='TeamDefense'; break;
			default: pos='Defense';
		}
		if (nfl.offenseIds[this.positionId]) pos='Offense';
		return pos;
	},	
	getMlbPosition:function() { return this.positionId==this.mlb.pitchingId?'Pitching':'Batting'; },
	getPosition:function() { if (this.leagueId==_4i.NFL) return this.getNflPosition(); else if (this.leagueId==_4i.MLB) return this.getMlbPosition(); return null; },
	showTrigger:function(divId) {
		var a=this; if (!a.usingTriggers) return;
		var divIds=a.triggerDivIds, alwaysShowOptions=_4i.util.alwaysShow(a,'options');
		if (alwaysShowOptions&&!a.runOnceFlag) { a.runOnceFlag=1; return; }
		for(var i=0;i<divIds.length;i++) _4i.dsp('fi'+divIds[i]+a.sfx,divIds[i]==divId);
		a.setDefaults();
	},
	setDefaults:function() {
		var a=this; if (a.leagueId==_4i.CHS1||!a.usingTriggers) return;
		var league=_4i.LEAGUE_MAP[a.leagueId], position, allCheckboxes=a.availableTriggers[league], defChecked, pfx=this.triggerPrefixes[league], sfx=this.sfx;
		if (a.leagueId==_4i.NFL) position=a.getNflPosition();
		else if (a.leagueId==_4i.MLB) position=a.getMlbPosition();
		if (position) {
			pfx=a.triggerPrefixes[league][position];
			allCheckboxes=a.availableTriggers[league][position];
		}
		for (var key in allCheckboxes) {
			if (key=='toJSONString') continue;
			var trigger=allCheckboxes[key];
			_4i.chk(pfx+key+'Chk'+sfx,trigger!=0);
			if (trigger>1&&_4i.xst(pfx+key+'Sel'+sfx)) _4i.gel(pfx+key+'Sel'+sfx).value = trigger;
		}
	},
	popLeagues:function(json) { _4i.menu.popLeagues(this,json); },
	popTeams:function(json) { _4i.menu.popTeams(this,json); },
	popPlayers:function(json) { _4i.menu.popPlayers(this,json); },
	leagueSelect:function(keepDef) { _4i.menu.leagueSelect(this,keepDef); }
};

_4INFO.alert.Team.prototype = {
	leagueId:_4i.CHS1, conferenceId:_4i.CHS1, teamId:_4i.CHS1,
	triggerDivIds:['GameEnd','PeriodEnd','ScoreChange','LeadChange','Turnover','RaceStart','RaceEnd','News'],
	periodLabels:{NCAAF:'quarter ends',NCAAB:'half ends',MLB:'inning ends',NBA:'quarter ends',NFL:'quarter ends',NHL:'period ends',NASCAR:'period ends','-1':'period ends'},
	availableTriggers:{
		NCAAF:{'GameEnd':1,'PeriodEnd':1,'ScoreChange':0,'LeadChange':0},
		NCAAB:{'GameEnd':1,'PeriodEnd':1},
		MLB:{'GameEnd':1,'PeriodEnd':0,'ScoreChange':0,'LeadChange':0,'News':0},
		NBA:{'GameEnd':1,'PeriodEnd':1,'News':0},
		NFL:{'GameEnd':1,'PeriodEnd':1,'ScoreChange':0,'LeadChange':0,'Turnover':0,'News':0},
		NHL:{'GameEnd':1,'PeriodEnd':1,'ScoreChange':0,'LeadChange':0,'News':0},
		NASCAR:{'RaceStart':1,'RaceEnd':1}
	},
	getInputs:function() {
		var a=this, ID=_4i.ui.ids, sfx=a.sfx||''; a.params=[]; a.errors=[];
		if (a.cfg.isVirtualObj) {
			var picker=_4i.Picker.getPickerBySfx(sfx), p=picker.getInputs(); if(!p)return;
			a.leagueId=p.leagueId; a.params=p.params; a.triggerParams=p.triggerParams; a.errors=p.errors; a.name=p.name;
			return;
		}
		if(_4i.xst(ID.teamId+sfx)) {
			a.teamId=_4i.val(ID.teamId+sfx);
			a.name=_4i.util.getSelIdxText(ID.teamId+sfx);
		}
		if (a.usingTriggers) this.getTriggersFromUI();
		if (a.teamId==_4i.CHS1&&a.leagueId!=_4i.NASCAR&&a.leagueId!=_4i.PGA) { a.errors.push('No team was selected.'); return; }
		if (a.leagueId==_4i.PGA){_4i.util.addOpenKeyword({id:_4i.PGA,name:'PGA news',isSubKw:0});return;};
		a.params.push({'alertServiceID':_4i.SERVICE_IDS.sports});
		a.params.push({'league':a.leagueId});
		if(a.leagueId!=_4i.NASCAR) a.params.push({'team':a.teamId});
		if (a.isPicker) return a;
	},
	getTriggersFromUI:function() {
		var a=this, triggers=a.availableTriggers, sfx=a.sfx||''; a.triggerParams=[];
		if (a.leagueId==_4i.CHS1) a.leagueId=_4i.val(_4i.ui.ids.leagueId+sfx);
		var league=_4i.LEAGUE_MAP[a.leagueId], allowed=_4i.allowed.sports[league];		
		for(var trig in triggers[league]) {
			if (trig=='toJSONString') continue;
			var elId='fi'+trig+sfx;
			if (allowed[_4i.lcFirst(trig)] && _4i.xst(elId) && _4i.gel(elId).checked) {
				var cn=_4i.def(a.cfg.customNews)?a.cfg.customNews:null;
				if (!cn||trig!='News'||!cn.teamId||cn.teamId!=a.teamId||!cn.opServiceId) a.triggerParams.push({'sportsEvent':_4i.lcFirst(trig)});
				else _4i.util.addOpenKeyword({id:cn.opServiceId,name:'Custom news',isSubKw:1});
			}
		}
		if (a.triggerParams.length<1) a.errors.push('No team alert option checkbox was checked.');
	},
	showTrigger:function() {
		var a=this, label='fiPeriodLabel'+a.sfx; if (a.leagueId==_4i.CHS1||!a.usingTriggers) return;
		var league=_4i.LEAGUE_MAP[a.leagueId], divIds=a.triggerDivIds, triggers=a.availableTriggers;
		if (a.leagueId==_4i.PGA) triggers['PGA']={};
		if (_4i.gel(label)&&_4i.gel(label).className!='fiNoUpdate') _4i.gel(label).innerHTML = a.periodLabels[league];
		for(var i=0;i<divIds.length;i++) _4i.dsp('fiLi'+divIds[i]+a.sfx,triggers[league][divIds[i]]!=null);
		a.setDefaults();
	},
	setDefaults:function() {
		var a=this; if (a.leagueId==_4i.CHS1||!a.usingTriggers) return;
		var league=_4i.LEAGUE_MAP[a.leagueId], divIds=a.triggerDivIds, triggers=a.availableTriggers;
		for(var i=0;i<divIds.length;i++) _4i.chk('fi'+divIds[i]+a.sfx,triggers[league][divIds[i]]==1);
	},
	callback:function(json) { _4i.comm.callback(this,json); },
	initMenu:function() { _4i.menu.populateMenu(this,_4i.LEAGUE); },
	popLeagues:function(json) { _4i.menu.popLeagues(this,json); },
	popConferences:function(json) { _4i.menu.popConferences(this,json); },
	popTeams:function(json) { _4i.menu.popTeams(this,json); },
	leagueSelect:function(keepDef) { _4i.menu.leagueSelect(this,keepDef); }
};

_4i.events = {}; _4i.e=_4i.events; _4i.e.Custom = function() { this.q=[]; }
_4i.e.Custom.prototype = { fire:function(a) { for(var i=0;i<this.q.length;i++) { var o=this.q[i]; if(_4i.isFunc(o.obj))o.obj(a);else o.obj[o.fn](o.args,a); } }, sub:function(o) { if(!o||!o.obj)return; if(_4i.isFunc(o.obj[o.fn])||_4i.isFunc(o.obj)) this.q.push(o); } };
_4i.e.onSubmit = new _4i.e.Custom(); _4i.e.leagueChg = new _4i.e.Custom(); _4i.e.confChg = new _4i.e.Custom(); _4i.e.teamChg = new _4i.e.Custom(); _4i.e.playerChg = new _4i.e.Custom();

_4INFO.menu = {
	popLeagues:function(a,json){ if(a.cfg.showPGA)json.push({'id':_4i.PGA,'name':'PGA'}); var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx; _4i.mnu(ID.leagueId+sfx,json,a.def&&a.def.league?a.def.league:''); _4i.dsp(DIV.league+sfx,!a.hide.league); var keepDef=true; a.leagueSelect(keepDef); _4i.events.leagueChg.fire(a); },
	popConferences:function(a,json){ var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx; _4i.mnu(ID.conferenceId+sfx,json,a.def&&a.def.conference?a.def.conference:''); _4i.enb(ID.conferenceId+sfx,1); _4i.dsp(DIV.conference+sfx,!a.hide.conference); _4i.menu.populateMenu(a,_4i.TEAM); _4i.events.confChg.fire(a); },
	popTeams:function(a,json){ var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx; _4i.mnu(ID.teamId+sfx,json,a.def&&a.def.team?a.def.team:''); _4i.enb(ID.teamId+sfx,1); _4i.dsp(DIV.team+sfx,!a.hide.team); if(a.type==_4i.STATS||a.type==_4i.STATS_PICKER) _4i.menu.populateMenu(a,_4i.PLAYER); _4i.events.teamChg.fire(a); if(a.def.player)_4i.menu.chkDefTeam(a); },
	popPlayers:function(a,json){ var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx; a.refreshPosMap(json); _4i.mnu(ID.playerId+sfx,json,a.def&&a.def.player?a.def.player:''); _4i.enb(ID.playerId+sfx,1); _4i.dsp(DIV.player+sfx,!a.hide.player); if (a.def&&a.def.player) _4i.menu.playerSelect(a); _4i.events.playerChg.fire(a); _4i.menu.chkDefPlayer(a); },
	populateMenu:function(a,fldType){
		var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx, idx=a.idx, params='', leagueId=_4i.val(ID.leagueId+sfx), conferenceId=_4i.gel(ID.conferenceId+sfx)?_4i.val(ID.conferenceId+sfx):_4i.CHS1, teamId=_4i.val(ID.teamId+sfx);		
		switch (fldType) {
			case _4i.LEAGUE: params += 'get='+(a.type==_4i.STATS||a.type==_4i.STATS_PICKER?'statsLeagues':'leagues')+'&callback=_4i.alerts['+idx+'].popLeagues'; break;
			case _4i.CONFERENCE: if (leagueId==_4i.CHS1) return; params += 'get=conferences&leagueId='+leagueId+'&callback=_4i.alerts['+idx+'].popConferences'; break;
			case _4i.TEAM: if (leagueId==_4i.CHS1) return; params += 'get=teams&leagueId='+leagueId+'&conferenceId='+conferenceId+'&callback=_4i.alerts['+idx+'].popTeams'; break;
			case _4i.PLAYER: var addOn=(leagueId==_4i.MLB||leagueId==_4i.NFL)?'&includePositions=1':''; if (teamId==_4i.CHS1) return; params += 'get=players&teamId='+teamId+addOn+'&callback=_4i.alerts['+idx+'].popPlayers'; break;
			default: break;
		}
		if (params != "") _4i.get(params);
	},
	leagueSelect:function(a,keepDef) {
		var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx, idx=a.idx, leagueId=_4i.val(ID.leagueId+sfx);
		a.leagueId=_4i.val(ID.leagueId+sfx); a.teamId=_4i.CHS1; a.playerId=_4i.CHS1;
		//if (!_4i.widgetIdValid) return;
		if (!keepDef && a.def) a.def={};
		var alwaysShowTeam=_4i.util.alwaysShow(a,'team');
		_4i.dsp(DIV.team+sfx,alwaysShowTeam); _4i.gel(ID.teamId+sfx).value=_4i.CHS1; _4i.enb(ID.teamId+sfx,0); _4i.enb(ID.playerId+sfx,0);
		if (_4i.gel(ID.conferenceId+sfx)) { _4i.dsp(DIV.conference+sfx,0); _4i.gel(ID.conferenceId+sfx).value=_4i.CHS1; }	
		if (a.type==_4i.STATS||a.type==_4i.STATS_PICKER) { var alwaysShowPlayer=_4i.util.alwaysShow(a,'player'); _4i.dsp(DIV.player+sfx,alwaysShowPlayer); _4i.gel(ID.playerId+sfx).value=_4i.CHS1; }
		a.showTrigger('');
		if (leagueId==_4i.NASCAR||leagueId==_4i.PGA) return;
		_4i.menu.populateMenu(a,leagueId==_4i.NCAAB||leagueId==_4i.NCAAF?_4i.CONFERENCE:_4i.TEAM);
	},
	chkDefTeam:function(a) { var ID=_4i.ui.ids,sfx=a.sfx;if(a.def.team&&a.def.hideWidgetIfDefaultsInvalid&&_4i.val(ID.teamId+sfx)==_4i.CHS1)_4i.ui.hideWidget(); },
	chkDefPlayer:function(a) { var ID=_4i.ui.ids,sfx=a.sfx;if(a.def.player&&a.def.hideWidgetIfDefaultsInvalid&&_4i.val(ID.playerId+sfx)==_4i.CHS1)_4i.ui.hideWidget(); },
	conferenceSelect:function(a) { var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx, idx=a.idx; a.conferenceId=_4i.val(ID.conferenceId+sfx); a.def={}; if (a.type==_4i.STATS) { _4i.dsp(DIV.player+sfx,0); _4i.gel(ID.playerId+sfx).value=_4i.CHS1; } if (_4i.gel(ID.conferenceId+sfx).value==_4i.CHS1) { _4i.dsp(DIV.team+sfx,0); _4i.gel(ID.teamId+sfx).value=_4i.CHS1; } else _4i.menu.populateMenu(a,_4i.TEAM); },
	teamSelect:function(a){ var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx, idx=a.idx; a.teamId=_4i.val(ID.teamId+sfx); a.playerId=_4i.CHS1; a.def={}; if (a.type!=_4i.STATS&&a.type!=_4i.STATS_PICKER) return; var alwaysShowPlayer=_4i.util.alwaysShow(a,'player'); if (_4i.gel(ID.teamId+sfx).value==_4i.CHS1){ _4i.enb(ID.playerId+sfx,0);_4i.dsp(DIV.player+sfx,alwaysShowPlayer); _4i.gel(ID.playerId+sfx).value=_4i.CHS1; } else _4i.menu.populateMenu(a,_4i.PLAYER); },
	playerSelect:function(a) { var ID=_4i.ui.ids, DIV=ID.divs, sfx=a.sfx, idx=a.idx; a.playerId=_4i.val(ID.playerId+sfx); try { a.positionId=parseInt(a.posMap[a.playerId]); } catch(e){ a.positionId=-1; } }
};

_4INFO.MSG = { 
	ALERT_CREATED:'Your alert has been created.', INVALID_INPUT:'Invalid alert data.', INVALID_CONF_CODE:'Invalid confirmation code. Please try again.', CONF_SENT:'A confirmation code has been sent. Please check your phone shortly.', RESEND_MAXED_OUT1:'You have reached the limit for sending confirmation codes to phone number ', RESEND_MAXED_OUT2:'. Please try again later. If you are attempting to confirm your phone but have not received a code, please contact support@4info.net for assistance.', 
	DUPLICATE_ALERT:'You already have an alert with the same options.', CONFIRM_MAXED_OUT:'You have reached the limit of attempts to enter a valid confirmation code. You may try again by sending a new code to your phone.', INVALID_WIDGET_ID:'Please obtain a valid widgetID before using this widget on your site.', CONF_CODE_RESENT:'A new confirmation code has been sent. Please check your phone shortly.', CONF_CODE_BLANK:'Please enter the confirmation code we sent to your phone in order to continue.',
	ALERT_SET_SUCCESS:'<div style="font-size:18px;font-weight:bold;">Your alert has been set!</div>',SESS_TIMED_OUT:'Your widget session has timed out.', NOT_SET_BECAUSE:' was not set. ', CREATED_SUCCESSFULLY:' was created successfully.<br />', ENTER_CONF_CODE:'Please enter the confirmation code we sent to your phone to continue.', PLS_SELECT_CHKBOX:'Please select at least one checkbox to continue.', NO_VALID_ALERT:'Please set at least one alert to continue.',
	CONTINUE:'Continue', PROCESSING:'Processing...', CONFIRM:'Confirm', CANCEL:'Cancel', ENTER_VALID_PHONE_NO:'Please enter a valid number.'
};

_4i.setMoreAlerts = function() { _4i.ui.showInputDiv();_4i.Picker.emptyAllCarts();_4i.busy(0); };
_4i.confirm = function() { if(_4i.isBusy)return;_4i.comm.confirmSubmit(); }
_4i.resendCode = function() { if(_4i.isBusy)return;_4i.comm.resendCode(); };
_4i.cancel = function() { if(_4i.isBusy)return;_4i.ui.showInputDiv();_4i.Picker.emptyAllCarts(); };
_4i.clear = function() { if(_4i.isBusy)return;_4i.comm.invalidatePhone(); };
_4i.leagueSelect = function(sfx) { var a=_4i.getAlertBySfx(sfx);_4i.menu.leagueSelect(a);_4i.events.leagueChg.fire(a); };
_4i.conferenceSelect = function(sfx) { var a=_4i.getAlertBySfx(sfx);_4i.menu.conferenceSelect(a);_4i.events.confChg.fire(a); };
_4i.teamSelect = function(sfx) { var a=_4i.getAlertBySfx(sfx);_4i.menu.teamSelect(a);_4i.events.teamChg.fire(a); };
_4i.teamSelectSports = function(sfx) { var a=_4i.getAlertBySfx(sfx);_4i.events.teamChg.fire(a); };
_4i.playerSelect = function(sfx) { var a=_4i.getAlertBySfx(sfx);_4i.menu.playerSelect(a);_4i.events.playerChg.fire(a); };
_4i.getInputs = _4i.util.validate;

_4i.allowed = {
	sports:{
		NCAAF:{'gameEnd':1,'periodEnd':1,'scoreChange':1,'leadChange':1},
		NCAAB:{'gameEnd':1,'periodEnd':1},
		MLB:{'gameEnd':1,'periodEnd':1,'scoreChange':1,'leadChange':1,'news':1},
		NBA:{'gameEnd':1,'periodEnd':1,'news':1},
		NFL:{'gameEnd':1,'periodEnd':1,'scoreChange':1,'leadChange':1,'turnover':1,'news':1},
		NHL:{'gameEnd':1,'periodEnd':1,'scoreChange':1,'leadChange':1,'news':1},
		NASCAR:{'raceStart':1,'raceEnd':1}		
	},
	stats:{
		MLB:{ // triggerName:2 => checkboxValue:(has select dropdown menu and it's the same as the checkboxValue)?2:1			
			Pitching:{'pitchingStrikeOut':2,'pitchingEarnedRun':2,'pitchingWalk':2,'pitchingPulled':1,'pitchingPlaying':1,'pitchingNotPlaying':1,/*'pitchingPlayerStatus':1,*/'pitchingGameEnd':1},
			Batting:{'battingHomeRun':2,'battingRun':2,'battingStolenBase':2,'battingRbi':2,'battingHit':2,'battingPlaying':1,'battingNotPlaying':1,/*'battingPlayerStatus':1,*/'battingGameEnd':1}
		},
		NFL:{
			Passing:{'nflPassingGE':1,'nflPassingTD':2,'nflPassingTP':2,'nflPassingInt':2,'nflPassingFL':2,'nflPassingPass':2,'nflPassingRush':2/*,'nflPassingPlayer':1*/},
			Offense:{'nflOffenseGE':1,'nflOffenseTD':2,'nflOffenseTP':2,'nflOffenseFL':2,'nflOffenseRush':2,'nflOffenseRec':2/*,'nflOffensePlayer':1*/},
			Kicking:{'nflKickingGE':1,'nflKickingFGM':2,'nflKickingFGA':2,'nflKickingFGB':2/*,'nflKickingPlayer':1*/},
			Defense:{'nflDefenseGE':1,'nflDefenseTackle':2,'nflDefenseSack':2,'nflDefenseInt':2,'nflDefenseFR':2,'nflDefenseTD':2,'nflDefenseFF':2,'nflDefensePassDef':2,'nflDefenseBlockedKick':2,'nflDefenseSafety':2/*,'nflDefensePlayer':1*/},
			TeamDefense:{'nflTeamDefenseGE':1,'nflTeamDefensePA':2,'nflTeamDefenseYA':2,'nflTeamDefenseSacks':2,'nflTeamDefenseInt':2,'nflTeamDefenseFR':2,'nflTeamDefenseTD':2,'nflTeamDefenseSafety':2,'nflTeamDefenseBlockedKick':2}
		},
		NBA:{'gameEnd':1,'periodEnd':1},
		NHL:{'gameEnd':1,'periodEnd':1,'playerScore':1,'playerAssist':1}
	},
	stock:{'marketOpen':1,'marketClose':1,'abovePrice':2,'belowPrice':2,'percentUpFromOpen':2,'percentDownFromOpen':2},
	weather:{'deliverOnDay':1,'hour12':1,'ampm':1,'userZone':1},
	openKeyword:{'deliverOnDay':1,'hour12':1,'ampm':1,'userZone':1},
	horoscope:{'deliverOnDay':1,'hour12':1,'ampm':1,'userZone':1},
	common:{
		deliverOnDay:{'Monday':1,'Tuesday':1,'Wednesday':1,'Thursday':1,'Friday':1,'Saturday':1,'Sunday':1}
	}
};