/*
 * hipic.web.app
 * Copyright(c) 2010, FeiKan.
 * 
 * This code is licensed under BSD license. Use it as you wish, 
 * but keep this copyright intact.
 */


$(function()
{app.init=function()
{LANG.translate();var _silder,_trd,_act,_spt;var _pool=[];var _procpool=function()
{if(_pool.length)
{var fn=_pool.shift();if(fn)
{fn();}}};var _buildCompontent=function(c,t,elSearchPart,inPool,bindable)
{var el=BODY.find(elSearchPart);if(el.length)
{c=new t(el);if(inPool)
{_pool.push(c.load);app.controlPool.push(c);}
if(bindable)
{if(TYPE.isFunction(bindable))
{el.bind('ondataload',bindable);}
else if(bindable===true)
{el.bind('ondataload',_procpool);}}
return c;}};switch(PATH)
{case'/':case'/default.htm':_buildCompontent(_act,app.controls.activityList,'#activitiesbox > .body',true,true);_buildCompontent(_spt,app.controls.support,'#supportbox > .body',true,true);_buildCompontent(_silder,app.controls.sliderBox,'#sliderbox',true,false);app.controlPool.push(app.ui.slider);break;case'/activity.list.htm':_buildCompontent(_act,app.controls.activityList,'.ui-panebox > .body',true,true);break;case'/activity.detail.htm':_buildCompontent(_act,app.controls.activityItem,'.ui-panebox',true,true);break;}
_procpool();};$.extend(app.controls,{trands:function(elem)
{var _proxy=DB2();var lo=new app.ui.loading(elem);lo.show();var _setItem=function(el,username,channel,date)
{var elm=el||$('<div></div>').appendTo(elem);var u=username?app.translater.getWord('d0001')+'<em style="font-weight:bold;">['+username+']</em>':'<em style="font-weight:bold;">guest</em>';var c=channel==1&&app.translater.getWord('d0003')||app.translater.getWord('d0002');elm.empty().append('{0}{1} <span>{2}</span> {3}{4}'.toString(u,app.translater.getWord('d0003-1'),c,app.translater.getWord('d0003-2'),date)).children('span').css('color','#008fd5');return elm;};var _ondata=function(data)
{lo.hide();lo=null;if(data)
{elem.hide().empty();$.each(data,function()
{var d=(new Date()).parse(this.dtime).format('yyyy.MM.dd HH:mm');_setItem(null,this.uname,this.channel,d).data('user',this.uname).data('channel',this.channel).data('date',d);});elem.fadeIn();}
elem.trigger('ondataload');};return{load:function()
{if(!lo)
{lo=new app.ui.loading(elem);lo.show();}
_proxy.reset().bind(ENUM.ASNY.COMPLETE,_ondata).run({'cmd':'getCountUp'});},translate:function()
{elem.children('div').each(function()
{var el=$(this);_setItem(el,el.data('user'),el.data('channel'),el.data('date'));});}};},activityList:function(elem)
{var _proxy=DB2();var _isSmallList=location.pathname.toLowerCase()!='/activity.list.htm';var lo;var _onpnaemover=function()
{$(this).addClass('hover');};var _onpanemout=function()
{$(this).removeClass('hover');};var _ondata=function(data)
{lo.hide();lo=null;var db=data&&data.items;if(db&&db.length)
{var size_max=_isSmallList?OP['ctl-activity-keyimg-small-size']:OP['ctl-activity-keyimg-big-size'];elem.empty();$.each(db,function()
{var item=this;if(item.pics.items)
{$.each(item.pics.items,function()
{this.thumb=this.id;if(this.iskey===true)
{item.keypic=this;return false;}});}
var pane=$('<div class="pane"></div>');var pImg=$('<div class="pane-img"></div>').appendTo(pane);var pCn=$('<div class="pane-contents"></div>').appendTo(pane);if(item.keypic)
{var img=$('<img src="{0}{1}_key{2}" />'.toString(OP['url-activity-base'],item.keypic.thumb,item.keypic.extension)).appendTo(pImg);var size_source=[item.keypic.width,item.keypic.height];_scale(img,size_source,size_max);}
var laddr=_isSmallList?45:100;pCn.append('<span class="c-time" style="height:16px;">{0} - {1}</span>'.toString(Date.parse(item.date_begin,'yy-MM-dd'),Date.parse(item.date_end,'yy-MM-dd')));pCn.append('<span class="c-addr">{0}: {1}<br />{2}: {3}</span>'.toString(WORD('ui-activity-[subject]'),this.subject,WORD('ui-activity-[address]'),this.address.noHtml().sub(laddr)));var contents=$('<span class="c-content"></span>').appendTo(pCn);var cval;switch(app.translater.getLanguageId())
{case'en':contents.append(item.contents&&item.contents.en);break;case'zh-cn':contents.append(item.contents&&item.contents.cn);break;}
pCn.mouseover(_onpnaemover).mouseout(_onpanemout).click(function()
{window.open('activity.detail.htm#{0}'.toString(item.id));});pane.hide().appendTo(elem).fadeIn();});}
elem.trigger('ondataload');};var _load=function()
{if(!lo)
{lo=new app.ui.loading(elem);}
lo.show();_proxy.reset().bind(ENUM.ASNY.COMPLETE,_ondata).run({'cmd':'getActivityList','fragment':_isSmallList?45:200});};var _scale=function(img,size_source,size_max)
{var w=size_source[0],h=size_source[1];if(w>size_max[0])
{h*=size_max[0]/w;w=size_max[0];}
if(h>size_max[1])
{w*=size_max[1]/h;h=size_max[1];}
img.css({'width':w+'px','height':h+'px'});};var _onLangChange=function()
{_load();};WIN.bind(E['app-lang-update'],_onLangChange);return{load:function()
{_load();}};},activityItem:function(elem)
{var _id;var _autoalbum=null;var header=elem.children('h1');var body=elem.children('.body');var lo;var _proxy=DB2();var _onimgclick=function(e)
{var i=$(this).data('index');if(hipic.type.isInteger(i))
{_autoalbum.show(i);}};var _ondata=function(data)
{lo.hide();lo=null;var item=data;if(item)
{var size_max=OP['ctl-activity-keyimg-big-size'];var size_source;header.html(item.subject);var t;var d=[];var pane=$('<div class="pane"></div>');var pImg=$('<div class="pane-img"></div>').appendTo(pane);var pCn=$('<div class="pane-contents"></div>').appendTo(pane);var pTbs=$('<ul class="c-thumbs"></ul>');if(item.pics.items)
{if(!_autoalbum)
{_autoalbum=new app.ui.album.automatic();}
$.each(item.pics.items,function()
{if(!item.keypic&&this.iskey===true)
{item.keypic=this;}
var src='{0}{1}_thumb{2}'.toString(OP['url-activity-base'],this.id,this.extension);var tmb=$('<li><img src="{0}" /></li>'.toString(src)).appendTo(pTbs).children('img');size_source=[this.width,this.height];_scale(tmb,size_source,size_max);_autoalbum.appendImage('{0}{1}{2}'.toString(OP['url-activity-base'],this.id,this.extension));tmb.data('index',_autoalbum.countup()-1).click(_onimgclick);});}
if(item.keypic)
{var img=$('<img src="{0}{1}_key{2}" />'.toString(OP['url-activity-base'],item.keypic.id,item.keypic.extension)).appendTo(pImg);size_source=[item.keypic.width,item.keypic.height];_scale(img,size_source,size_max);}
pCn.append('<span class="c-time">{0} - {1}</span>'.toString(Date.parse(item.date_begin,'yyyy-MM-dd'),Date.parse(item.date_end,'yyyy-MM-dd')));pCn.append('<span class="c-addr">{0}：{1}<br />{2}：{3}</span>'.toString(WORD('ui-activity-[address]'),item.address||'',WORD('ui-activity-[host]'),item.host));var contents=$('<div class="c-content" style="width:100%;height:auto;"></div>').appendTo(pCn);var cont='';switch(app.translater.getLanguageId())
{case'en':cont=item.contents&&item.contents.en;break;case'zh-cn':cont=item.contents&&item.contents.cn;break;}
if(cont)
{contents.append(cont);}
pCn.append(pTbs);pane.hide().appendTo(body.empty()).fadeIn();}};var _load=function()
{var p=location.hash2;if(hipic.type.isNumber(p))
{_id=p;}
if(!lo)
{lo=new app.ui.loading(body);}
lo.show();_proxy.reset().bind(ENUM.ASNY.COMPLETE,_ondata).run({'cmd':'getActivityItem','id':_id||0});};var _scale=function(img,size_source,size_max)
{var w=size_source[0],h=size_source[1];if(w>size_max[0])
{h*=size_max[0]/w;w=size_max[0];}
if(h>size_max[1])
{w*=size_max[1]/h;h=size_max[1];}
img.css({'width':w+'px','height':h+'px'});};var _onLangChange=function()
{_load();};WIN.bind(E['app-lang-update'],_onLangChange);return{load:function()
{_load();}};},support:function(elem)
{var _inited=false;var _lo;var _ondata=function(data)
{_lo.hide();_lo=null;if(data)
{elem.hide().empty().append(data).fadeIn();}
if(!_inited)
{_inited=true;elem.trigger('ondataload');}};var _get=function()
{if(!_lo)
{_lo=new app.ui.loading(elem);}
_lo.show();var url=(app.translater.getLanguageId()==='en')?'data-supportEN.htm':'data-supportCN.htm';app.server.getHtml(url,this,_ondata);};return{load:function()
{_get();},translate:function()
{_get();}};},sliderBox:function(elem)
{var _sd=null;var lo=new app.ui.loading(elem);lo.show();return{load:function()
{lo.hide();lo=null;if(!_sd)
{_sd=new app.ui.slider();}
_sd.ready(elem).load();},translate:function()
{if(_sd)
{_sd.translate();}}}}});app.init();});
