var APP={};
var APPH = {
	_baseURL:'http://www.emusclor.com',
	exercises:[],
	machines:[],
	FilteringTableFill:function(id) {
		w=dojo.widget.createWidget("dojo:FilteringTable",{id:id,alternateRows:true,multiple:true,valueField:"id"},dojo.byId(id));
		if(w.id=='h_exercises_list') {
			if(APPH.exercises.length==0) { //else use cache
				for(i in APPdta.exercises) {
					var o={
						id:parseInt(i),
						n:'<a href="'+APPH._baseURL+APPdta.exercises[i].url+'" title="'+APPdta.exercises[i].n+'">'+APPdta.exercises[i].n+'</a>',
						m:APPH.string.convert.Muscles(APPdta.exercises[i].m)
					};
					APPH.exercises.push(o);
				}
			}
			w.store.setData(APPH.exercises);
		}
		else if(w.id=='h_machines_list') {
			if(APPH.machines.length==0) { //else use cache
				for(i in APPdta.machines) {
					var o={
						id:i,
						n:'<a href="'+APPH._baseURL+APPdta.machines[i].url+'" title="'+APPdta.machines[i].n+'">'+APPdta.machines[i].n+'</a>'
					};
					APPH.machines.push(o);
				}
			}
			w.store.setData(APPH.machines);
		}
	},
	FilteringTableFilter:function(w,f) {
		if(dojo.html.hasClass(w.domNode,"collapsed")) dojo.html.removeClass(w.domNode,"collapsed");
		if(f=="") w.clearFilters();
		else if(dojo.string.startsWith(f,'musclegrp')) {
			APPH.tmp=f.substr(9);
			//w.setFilter('g',APPH.filterstring);
			w.setFilter('id',function(id){sum=0;for(var i=8*APPH.tmp;i<Math.min(8*APPH.tmp+8,31);i++) sum+=parseInt(APPdta.exercises[id].m.charAt(i),16);return sum>0;});
		}
		else if(dojo.string.startsWith(f,'muscle')) {
			APPH.tmp=f.substr(6);
			w.setFilter('id',function(id){return parseInt(APPdta.exercises[id].m.charAt(APPH.tmp),16)>0;});
		}
	},
	string:{
		color:{
			Highlight:function(s,val) {
				if(dojo.lang.isString(val)) val=16*parseInt(val,16);
				return '<span style="color:'+dojo.gfx.color.rgb2hex(val,0,0)+'">'+s+'</span>';
			}
		},
		convert:{
			Muscles:function(m) {
				s=new Array();
				for(var i=0;i<m.length;i++) {
					if(m.charAt(i)!="0") s.push(APPH.string.color.Highlight(APPH.t("muscle"+i),m.charAt(i)));
				}
				return s.join(', ');
			},
			MusclesGroup:function(m) {
				result=-1;
				tmp=-1;
				grp=new Array(0,0,0,0);
				for(var i=0;i<31;i++) { grp[Math.floor(0.125*i)]+=parseInt(m.charAt(i),16); }
				for(var i=0;i<4;i++) {
					if(grp[i]>tmp) { result=i; tmp=grp[i]; }
				}
				return result;
			}
		}

	},
	t:function(s) {
		if(APP.dic[s]) return APP.dic[s];
		else return s;
	},
	tt:function(el) {
		dojo.html.removeClass(el,"tt");
		if(!el.id) el.id=dojo.dom.getUniqueId();
		text="";url="";
		if(el.getAttribute('url')) url=el.getAttribute('url');
		else if(el.title) {
			text=el.title;
			el.removeAttribute('title');
		}
		//if(dojo.lang.has(APP._w,'tt'+el.id)==false) APP._w['tt'+el.id]=dojo.widget.createWidget("dojo:Tooltip",{caption:text,connectId:el.id,id:'tt'+el.id,adjustPaths:false,cacheContent:false,extractContent:false,executeScripts:true,href:url,parseContent:false,refreshOnShow:true});
		if(dojo.lang.has(APP,'_w')) APP._w['tt'+el.id]=dojo.widget.createWidget("dojo:Tooltip",{caption:text,connectId:el.id,id:'tt'+el.id,adjustPaths:false,cacheContent:false,extractContent:false,executeScripts:true,href:url,parseContent:false,refreshOnShow:true});
		else {
			if(url.indexOf('?')>-1) url=url+"&demo";
			else url=url+"?demo";
			url="/apig"+url;
			dojo.widget.createWidget("dojo:Tooltip",{caption:text,connectId:el.id,id:'tt'+el.id,adjustPaths:false,cacheContent:false,extractContent:false,executeScripts:true,href:url,parseContent:false,refreshOnShow:true});
		}
	}
}

var FCARD = {
	poseid:0,
	uid:0,
	uid0:'pose-male',
	uid1:'ronnie-coleman',
	loadCard:function(uid) {
		FCARD.uid=FCARD.uid0=uid;
		try { dojo.widget.createWidget("dojo:FilteringTable",{id:"fcard_perf",alternateRows:true,multiple:false,noSort:true,valueField:"id"},dojo.byId("fcard_perf")); } catch(e) { };
		w=dojo.widget.createWidget("dojo:FilteringTable",{id:"fcard_vstats",alternateRows:true,multiple:false,noSort:true,valueField:"id"},dojo.byId("fcard_vstats"));
		var tmp=new Array();
		var fjdt=FCARD.vstats.calcJ(FCARD.vstats.uids[uid]['musclesiz5']);
		var fjds=FCARD.vstats.calcS(FCARD.vstats.uids[uid]['height']);
		var fjdc=FCARD.vstats.calcC(FCARD.vstats.uids[uid]['height'],FCARD.vstats.uids[uid]['musclesiz5'],FCARD.vstats.uids[uid]['musclesiz10']);
		for(i=0;i<FCARD.vstats.list.length;i++) {
			s=FCARD.vstats.list[i];
			var o={
				id:i,
				n:APPH.t(s),
				b:FCARD.vstats.uids[uid][s],
				fj:fjdt[s],
				fs:fjds[s],
				fc:fjdc[s]
			};
			tmp.push(o);
		}
		w.store.setData(tmp);
		//dojo.byId('posefight_pose').selectedIndex=0;
		//dojo.byId('posefight_uid1').selectedIndex=0;
		//dojo.debug(FCARD);
	},
	poses:{
		poses:new Array('face-rest','face-biceps','side-biceps','back-biceps','back-rest'),
		uids:[],
		display:function(poseid) {
			if(!dojo.lang.isUndefined(poseid)) FCARD.poseid=parseInt(poseid);
			img0=dojo.byId('posefight_img0');img1=dojo.byId('posefight_img1');
			if(!dojo.lang.isNumber(FCARD.poseid)) {img0.style.backgroundImage='url()';img1.style.backgroundImage='url()'}
			else {
				var reload=false;
				//detect user
				user0=dojo.byId('posefight_user0').value;user1=dojo.byId('posefight_user1').value;
				if(user0) {
					var pos=user0.lastIndexOf('#');
					user0=user0.substr(pos+1);
					if(user0) {
						FCARD.uid0=user0;
						if(!FCARD.poses.uids[FCARD.uid0]) reload=true;
					}
				}
				if(user1) {
					var pos=user1.lastIndexOf('#');
					user1=user1.substr(pos+1);
					if(user1) {
						FCARD.uid1=user1;
						if(!FCARD.poses.uids[FCARD.uid1]) reload=true;
					}
				}
				if(reload) document.location="pose-fight?user0="+FCARD.uid0+"&user1="+FCARD.uid1;
				//uid0 -> left
				if(!isNaN(FCARD.uid0)) {
					try {img0.style.backgroundImage='url('+FCARD.poses.uids[FCARD.uid0][FCARD.poseid]+')';}
					catch(err) {dojo.debug(err);img0.style.backgroundImage='url()';}
				}
				else {
					if(dojo.string.endsWith(FCARD.uid0,'male')) img0.style.backgroundImage='url(/img/3d/'+FCARD.uid0+'-'+FCARD.poses.poses[FCARD.poseid]+'.png)';
					else img0.style.backgroundImage='url(/img/celebs/'+FCARD.uid0+'-'+FCARD.poses.poses[FCARD.poseid]+'.jpg)';
				}
				//uid1 -> right
				if(!isNaN(FCARD.uid1)) {
					try {img1.style.backgroundImage='url('+FCARD.poses.uids[FCARD.uid1][FCARD.poseid]+')';}
					catch(err) {img1.style.backgroundImage='url()';}
				}
				else {
					if(dojo.string.endsWith(FCARD.uid1,'male')) img1.style.backgroundImage='url(/img/3d/'+FCARD.uid1+'-'+FCARD.poses.poses[FCARD.poseid]+'.png)';
					else img1.style.backgroundImage='url(/img/celebs/'+FCARD.uid1+'-'+FCARD.poses.poses[FCARD.poseid]+'.jpg)';
				}
			}
			return true;
		},
		select:function(uid,val) {
			n=dojo.byId('posefight_uid'+uid);
			for(var i=0;i<n.options.length;i++) {
				if(n.options[i].value==val) {
					n.options[i].selected="selected";
					return true;
				}
			}
		}
	},
	vstats:{
		list:['height','w1','w2','musclesiz0','musclesiz1','musclesiz2','musclesiz3','musclesiz4','musclesiz5','musclesiz6','musclesiz7','musclesiz8','musclesiz9','musclesiz10'],
		uids:[],
		calcJ:function(wrist) {
			t=new Array();
			for(i=0;i<FCARD.vstats.list.length;i++) t[FCARD.vstats.list[i]]="-";
			t['musclesiz5']="base";
			if(!wrist) return t;
			t['musclesiz0']=dojo.math.round(6.5*wrist*0.37,1);
			t['musclesiz2']=dojo.math.round(6.5*wrist,1);
			t['musclesiz3']=dojo.math.round(6.5*wrist*0.36,1);
			t['musclesiz4']=dojo.math.round(6.5*wrist*0.29,1);
			t['musclesiz6']=dojo.math.round(6.5*wrist*0.7,1);
			t['musclesiz7']=dojo.math.round(6.5*wrist*0.85,1);
			t['musclesiz8']=dojo.math.round(6.5*wrist*0.53,1);
			t['musclesiz9']=dojo.math.round(6.5*wrist*0.34,1);
			return t;
		},
		calcS:function(height) {
			t=new Array();
			for(i=0;i<FCARD.vstats.list.length;i++) t[FCARD.vstats.list[i]]="-";
			t['height']="base";
			if(!height) return t;
			if(height<157.48) {t['height']="157cm minimum";	return t;}
			c=(height-157.48)/2.54;
			t['musclesiz0']=dojo.math.round(16*2.54+c*2.54*0.25,1);t['musclesiz3']=t['musclesiz9']=t['musclesiz0'];
			t['musclesiz2']=dojo.math.round(38*2.54+c*2.54*0.75,1);
			t['musclesiz6']=dojo.math.round(28*2.54+c*2.54*0.5,1);
			t['musclesiz8']=dojo.math.round(21*2.54+c*2.54/3,1);
			return t;
		},
		calcC:function(height,wrist,ankle) {
			t=new Array();
			for(i=0;i<FCARD.vstats.list.length;i++) t[FCARD.vstats.list[i]]="-";
			t['height']=t['musclesiz5']=t['musclesiz10']="base";
			if(!height||!wrist||!ankle) return t;
			a=Math.pow(1.13,ankle/2.54-0.1345*height/2.54);
			b=Math.pow(1.13,wrist/2.54-0.1087*height/2.54);
			c=Math.pow(1.03125,height/2.54-60);
			t['w2']=dojo.math.round(59.8*c*(1.5*a+b)*0.453592,1);
			t['musclesiz0']=dojo.math.round(14.25*b*c*2.54,1);
			t['musclesiz2']=dojo.math.round(20.03*c*(a+b)*2.54,1);
			t['musclesiz3']=dojo.math.round(14.42*b*c*2.54,1);
			t['musclesiz4']=dojo.math.round(11.54*b*c*2.54,1);
			t['musclesiz8']=dojo.math.round(20.63*a*c*2.54,1);
			t['musclesiz9']=dojo.math.round(13.95*a*c*2.54,1);
			return t;
		}
	}
}

Behaviour.register({
'table.collapsible caption' : function(el) {
	if(!el.title) el.title=APPH.t('Show/Hide '),
	el.onclick=function() {
		t=dojo.dom.getFirstAncestorByTag(el,'table');
		if(dojo.html.hasClass(t,"collapsed")) dojo.html.removeClass(t,"collapsed");
		else dojo.html.addClass(t,"collapsed");
		//APPH.dom.TbodyToggle(el);
	}
},
'.tt':function(el) {
	APPH.tt(el);
}
})

