//模板类
function Template(elementId)
{this.e=document.getElementById(elementId);this.tpl=this.e.innerHTML;this.temp=this.tpl;this.cycleCache=[];}
Template.prototype.replace=function(name,value)
{var regExp=new RegExp('{'+name+'}','g');this.temp=this.temp.replace(regExp,encodeURIComponent(value));}
Template.prototype.cycleReplace=function(id,json)
{if(this.cycleCache[id])
{var cycleTpl=this.cycleCache[id];}
else
{var cycleTpl=document.getElementById(id).innerHTML;this.cycleCache[id]=cycleTpl;}
var cycletemp=[];for(var i=0,j=json.length;i<j;i++)
{var str=cycleTpl.replace(/{(\w+)}/g,function($0,$1){return encodeURIComponent(json[i][$1]);});cycletemp.push(str);}
this.temp=this.temp.replace(cycleTpl,cycletemp.join(''));}
Template.prototype.dump=function()
{this.e.innerHTML=decodeURIComponent(this.temp);this.e.style.visibility='visible';this.temp=this.tpl;}
//跨域加载JS
var callbacks=[];//执行的callback函数数组
var scripts=[];//待删除的script标签数组
function loadScript(src,cmd)
{
    if(!src||!cmd){return null;}

    if(src.indexOf('?')==-1)
    {src+='?cmd='+cmd;}
    else
    {src+='&cmd='+cmd;}
    var script=document.createElement('script');
    script.setAttribute('type','text/javascript');
    script.setAttribute('src',encodeURI(src));
    document.body.appendChild(script);
    return script;
}
//页码条
function PageBar(id,normalTpl,onTpl,evntTpl,offset)
{if(!id||!evntTpl||!onTpl||!normalTpl){return;}
this.e=document.getElementById(id);this.onTpl=onTpl.replace('{event}',evntTpl);this.normalTpl=normalTpl.replace('{event}',evntTpl);this.offset=offset;if(!offset){this.offset=2;}
this.step=this.offset+2;}
PageBar.prototype.adapt=function(cp,tp)
{if(cp<1||cp>tp){return false;}
if(tp<2){this.e.innerHTML='';return false;}
var lLack=0,rLack=0;if(cp-2<this.step){lLack=this.step-(cp-1);}
if(tp-cp-1<this.step){rLack=this.step-(tp-cp);}
var le=cp-this.offset-rLack;var re=cp+this.offset+lLack;var str=[];if(cp>1)
{var s=this.normalTpl.replace('{i}',cp-1);s=s.replace('{i}','上一页');str.push(s);}
else{str.push('<span>上一页</span>');}
if(le>1){str.push(this.normalTpl.replace(/{i}/g,1));}
if(le==3){str.push(this.normalTpl.replace(/{i}/g,2));}
if(le>3){str.push("...");}
for(var j=cp,i=le;i<j;i++){if(i<1){continue;}
str.push(this.normalTpl.replace(/{i}/g,i));}
str.push(this.onTpl.replace(/{i}/g,cp));for(var i=cp+1,j=re+1;i<j;i++)
{if(i>tp){break;}
str.push(this.normalTpl.replace(/{i}/g,i));}
if(re==tp-2){str.push(this.normalTpl.replace(/{i}/g,tp-1));}
if(re<tp-2){str.push("...");}
if(re<tp){str.push(this.normalTpl.replace(/{i}/g,tp));}
if(cp<tp){var s=this.normalTpl.replace('{i}',cp+1);s=s.replace('{i}','下一页');str.push(s);}
else
{str.push('<span>下一页</span>');}
str.push('<input type="hidden" id="__tplist" value="'+tp+'">');
this.e.innerHTML=str.join('');return true;};
//common
var undefined;
function hide(id1,id2)
{for(var i=0,j=arguments.length;i<j;i++)
{$(arguments[i]).style.visibility='hidden';}}
function show(id1,id2)
{for(var i=0,j=arguments.length;i<j;i++)
{$(arguments[i]).style.visibility='visible';}}
function $(id){return document.getElementById(id);}
function trim(str)
{return str.replace(/^\s*|\s*$/g,'');}
function getQueryValue(key)
{var search=window.location.search;if(search=='')return null;var pos=search.indexOf(key+'=');if(pos==-1)return null;var start=pos+key.length+1;var end=search.indexOf('&',start);if(end==-1)end=search.length;return search.substring(start,end);}
function sprintf(template,value1,value2)
{if(!template){return;}
for(var i=1,j=arguments.length;i<j;i++)
{template=template.replace('%s',encodeURIComponent(arguments[i]));}
return decodeURIComponent(template);}

function showNav(id)
{if(hideNav.to){clearTimeout(hideNav.to);}
document.getElementById(id).style.visibility='visible';}
function hideNav(id)
{hideNav.to=setTimeout(function(){document.getElementById(id).style.visibility='hidden';},300);}

var tipsTpl=new Template('tips');
function showTips(type,tipsInfo)
{tipsTpl.replace('type',type);tipsTpl.replace('brief',tipsInfo.brief);tipsTpl.replace('detail',tipsInfo.detail);tipsTpl.dump();show('tips_shadow');}

function onError(error)
{
   switch(error)
   {
       case 1001:openLogin();break;
       case 1000: break;//用户输入有误
       case 1002:window.location.href="http://imgcache.qq.com/club/face/v4/notvip.html";break;
       case 1016:showTips('error',tipsInfo['exceed_max_favs']);break;
       case 1017:showTips('tips',tipsInfo['fav_exists']);break;
       case 1020:showTips('tips',tipsInfo['user_limit']);break;
       case 2001:showTips('error',tipsInfo['invalid_size']);break;
       case 2002:showTips('error',tipsInfo['invalid_type']);break;
       case 3011:showTips('tips',tipsInfo['invalid_user']);break;
       default:showTips('error',tipsInfo['sys_busy']);break;
    }
}

function go2search()
{var keyword = trim($('keyword').value);if(keyword){window.location.href='search.html?foreignKeyword='+encodeURIComponent(keyword);}}
function enter_search(event){var keycode=event.keyCode;if(keycode==13){go2search();}}
callbacks['set_default_keyword']=function(response){$('keyword').value=response.data.keyword;};
function set_default_keyword(){scripts['set_default_keyword']=loadScript('http://imgcache.qq.com/club/item/face/json_v4/m/default_key.js','set_default_keyword');}
var setFaceTo=0;//设置头像频率控制信号,默认可以设置
function set_face(itemId,type)//设置官方头像
{
	if(setFaceTo){showTips('tips',tipsInfo['set_face_2fast']);return;}

    var src=JSON_PHP+"?item_id="+itemId;
    if(type==0)//静态
    {
        scripts['set_static_face']=loadScript(src,'set_static_face');
    }
    else if(type==1)
    {
        scripts['set_dynamic_face']=loadScript(src,'set_dynamic_face');
    }

	setFaceTo = setTimeout('setFaceTo=0',1000);
}
function set_share_face(qq,hash,type)//设置分享头像
{
	if(setFaceTo){showTips('tips',tipsInfo['set_face_2fast']);return;}

    var src=SHARE_PHP+"?qq="+qq+"&hash="+hash+"&type="+type;
    scripts['set_share_face']=loadScript(src,'set_share_face');

	setFaceTo = setTimeout('setFaceTo=0',1000);

}
function set_used_face(hash,type)//设置使用过的头像
{
	if(setFaceTo){showTips('tips',tipsInfo['set_face_2fast']);return;}

    var src=SHARE_PHP+"?hash="+hash+"&type="+type;
    scripts['set_used_face']=loadScript(src,'set_used_face');

	setFaceTo = setTimeout('setFaceTo=0',1000);
}
function set_face_callback(response)//所有类型的setface共用callback
{
    if(response.result==0)
    {
        showTips('success',tipsInfo['set_face_success']);
    }
	else if(response.result==1)//已帮用户关闭了7天自动换头像
	{
		showTips('success',tipsInfo['autofaceTurnOff']);
	}
    else{ onError(response.result); }
}
///设置头像共用callback
callbacks['set_static_face']    = set_face_callback;
callbacks['set_dynamic_face']   = set_face_callback;
callbacks['set_share_face']     = set_face_callback;
callbacks['set_used_face']      = set_face_callback;

callbacks['add_favorite']=function(response)
{
    switch (response.result)
    {
        case 0:
	      var class_id = response.classid?response.classid:0;
              tipsInfo['add_fav']['detail'] = sprintf(tipsInfo['add_fav']['detail'],class_id);
              showTips('success',tipsInfo['add_fav']);
              break;
        case 3097:/*没有设定默认class*/
              window.location.href='fav_add.html?item_id='+response.item_id;
              break;
        case 1017:/*收藏过*/
              showTips('tips',tipsInfo['fav_exists']);
              break;
        default:
              onError(response.result);
              break;
    }
}
function add_favorite(item_id,class_id)
{
    if(class_id == undefined){class_id='';}
    var src=JSON_PHP+"?item_id="+item_id+"&class_id="+class_id;
    scripts['add_favorite']=loadScript(src,'add_favorite');
}

function checkLogin()
{
	var cuin	= getCookie('clientuin');
	var ckey	= getCookie("clientkey");
	var skey	= getCookie("skey");
	var uin		= getCookie("uin");

	if(cuin && ckey )
	{
		get_user_info();
	}
	else if ( skey && uin)
	{
		get_user_info();
	}
	else
	{
		$('user_info').innerHTML=MSG['tips_not_login'].replace('%s','openLogin(1,null,true);');
	}
}
function login_success()
{get_user_info();location.reload();}
callbacks['get_user_info']=function(response)
{
	var html="";
	var userInfo = getCookie('userInfo');
	if(userInfo == '')//不存在用户信息cookie, set cookie
	{
		var infoTpl ='{"result":%s,"data":{"nickname":"%s","is_club":%s,"is_bean":%s,"service_dates":%s}}';
			infoTpl = sprintf(infoTpl, response.result, response.data.nickname, response.data.is_club, response.data.is_bean,response.data.service_dates);			
			infoTpl = encodeURIComponent(infoTpl);
			
		setCookie('userInfo',infoTpl);
	}

	if(response.result==1001)
	{
		html=MSG['tips_not_login'].replace('%s','openLogin(1,null,true);');
	}
	else if(response.data.is_club==1)
	{
		html=MSG['tips_is_club'].replace('%s',response.data.nickname);
	}
	else if(response.data.is_club==0)
	{
		if(response.data.is_bean==1)
		{
			html=sprintf(MSG['tips_is_bean'],response.data.nickname,response.data.service_dates);
		}else{
			var pay_url="http://paycenter.qq.com/club/index.html?aid=FACE.TIPS";
			html=sprintf(MSG['tips_unknown'],response.data.nickname,pay_url,pay_url);
		}
	}
	$("user_info").innerHTML=html;
};
function get_user_info()
{
	var userInfo = getCookie('userInfo');
		userInfo = decodeURIComponent(userInfo);
	if(userInfo != '' && userInfo.length < 90)//用户已登录
	{
		userInfo = userInfo.replace(/</g,'&lt;');
		userInfo = userInfo.replace(/>/g,'&gt;');
		userInfo = eval('('+userInfo+')');
		callbacks['get_user_info'](userInfo);
	}
	else//用户未登录或者userinfo不合法
	{
		$("user_info").innerHTML=MSG['loading'];
		scripts['get_user_info']=loadScript(JSON_PHP,'get_user_info');	
	}
}
function logOut()
{
	delCookie('clientuin');
	delCookie('clientkey');
	delCookie('skey');
	delCookie('uin');
	delCookie('userInfo','imgcache.qq.com');
	
	window.location.href='http://imgcache.qq.com/club/face/v4/index.html';
}
function getCookie(name)
{
	var r=new RegExp("(?:^|;+|\\s+)"+name+"=([^;]*)");var m=document.cookie.match(r);return(!m?"":m[1]);
}

function setCookie(name, value, domain, path, hour) 
{
	if (hour)
	{
		var today = new Date();
		var expire = new Date();
		expire.setTime(today.getTime() + 3600000 * hour);
	}
	document.cookie = name + "=" + value + "; " + (hour ? ("expires=" + expire.toGMTString() + "; ") : "") + (path ? ("path=" + path + "; ") : "path=/; ") + (domain ? ("domain=" + domain + ";") : ("domain=imgcache.qq.com;"));
	return true;
}

function delCookie(name, domain, path) 
{
	document.cookie = name + "=; expires=Mon, 26 Jul 1997 05:00:00 GMT; " + (path ? ("path=" + path + "; ") : "path=/; ") + (domain ? ("domain=" + domain + ";") : ("domain=qq.com;"));
}
function getPage(id)//从给定id元素获取page值
{
	var page = $(id).value;
	page = parseInt(page,10);
	if(isNaN(page)){return false;}//输入非数字
	if(page < 1){return false;}//page应该大于1
	return page;
}
function sentLog(type,module,operate,ext1)
{
	if(!type || !module || !operate){return;}//输入不合法
	var src = 'http://face.qq.com/face_log.php?type='+type+'&module='+module+'&operate='+operate+'&ext1='+ext1;
	var img=new Image();img.src=src;
}

//跳转web带登陆态使用
function client_goto_web( url , flag)
{
    var url_flag = "";
    flag==0 ? url_flag="_self" : url_flag="_blank";
    var uin  = getCookie("uin");
    var skey = getCookie("skey");
    if(uin!=null && uin!="" && skey!=null && skey!=""){
        var uri = 'http://clubclient.qq.com/set_cookie.php?uin=' + escape(uin) + '&skey=' + escape(skey) + '&url=' + escape(url);
        window.open(uri , url_flag);
        return;
    }

    var clientuin  = getCookie("clientuin");
    var clientkey = getCookie("clientkey");
    if(clientuin!=null && clientuin!="" && clientkey!=null && clientkey!=""){
        var uri = 'http://clubclient.qq.com/clubclient_goto.php?clientuin='+escape(clientuin)+'&clientkey='+escape(clientkey)+'&gotourl='+escape(url);
        window.open(uri , url_flag);
        return;
    }
    window.open(url, url_flag);
};

//配置
var SHARE_ITEM_JS='http://imgcache.qq.com/club/item/face/json_v4/share/%s/%s/shareItem_%s_%s.js';
var DOWNLOAD_PHP="http://face.qq.com/client/download.php";
var JSON_PHP="http://face.qq.com/client/json_v4.php";
var URL_ITEM_BMP="src='http://imgcache.qq.com/club/item/face/img/%s/%s.bmp'";
var URL_ITEM_GIF="src='http://imgcache.qq.com/club/item/face/img/%s/%s.gif'";
var URL_TSS_IMG="src='http://face.qq.com/client/share_download.php?hash=%s&uin=%s&type=%s'";
var SHARE_PHP='http://face.qq.com/client/share.php';
var STATIC_SHARED_IMG = "src='http://imgcache.qq.com/club/item/face/img/shareimg/%s/%s_%s_%s.%s'";
var DAY=['日','一','二','三','四','五','六'];
var MSG={
    'tips_not_login':'尊敬的用户，请先<a href="javascript:%s"><font color="#c60a00">登录</font></a>后使用丰富精彩的QQ会员功能。<a href="http://paycenter.qq.com/club/?aid=FACE.TIPS" target="_blank"><font color="#c60a00"><img src="http://imgcache.qq.com/club/client/login_open.gif" width="66" height="20" border="0" align="absmiddle" /></font></a>',
    "tips_is_bean":'尊敬的%s，会员头像为QQ会员专属特权，您的会员头像体验资格还剩<span class="red">%s</span>天 [<a href="javascript:logOut()">退出</a>]',
    "tips_is_club":'尊贵的QQ会员<font color="#c60a00">%s</font>，您可以免费设置会员头像，个性从“头”开始！[<a href="javascript:logOut()">退出</a>]',
    "tips_unknown":'欢迎您%s，会员头像为QQ会员专属特权，使用特权请先<a href="%s" target="_blank"><font color="#c60a00"><img src="http://imgcache.qq.com/club/client/login_open.gif" width="66" height="20" border="0" align="absmiddle" /></font></a> [<a href="javascript:logOut()">退出</a>]',
    "dirty_word":"***",
    "loading":"正在加载个人信息..."
};
var tipsInfo={
        "share_limit":{"brief":"抱歉！","detail":"您每天只能分享10个头像，感谢您的热心分享"},
        "no_share_name":{"brief":"抱歉！","detail":"请为您分享的头像命名"},
        "share_agree":{"brief":"温馨提示","detail":"请您先同意\"QQ会员头像分享协议\""},
        "keyword2long":{"brief":"温馨提示","detail":"您输入的关键字太长,请不要超过10个字"},
        "set_face_success":{"brief":"设置成功！","detail":"请查看您的QQ客户端头像，动态头像需要QQ2008正式版及其以上版本才能展现动态效果"},
        "autofaceTurnOff":{"brief":"设置成功！","detail":"请查看您的QQ客户端头像，<font color='#c60a00'>已帮您关闭了７天自动换头像</font>，您可以在此<a class='link_hot'href='http://imgcache.qq.com/club/face/v4/autoface_index.html'><font color='#c60a00'>重新开启</font></a>"},
        "upload_face":{"brief":"设置成功！","detail":"请查看您的QQ客户端头像，您还可以继续选择其他头像或者参加我们的会员头像活动！"},
        "fav_is_empty":{"brief":"温馨提示","detail":"您这个收藏分组还未收藏任何头像，现在就去选择头像收藏！"},
        "add_fav":{"brief":"收藏成功！","detail":"您可以到<a href='my_fav.html?classId=%s'>我收藏过的头像</a>查看"},
        "move_fav":{"brief":"移动成功！","detail":""},
        "delete_fav":{"brief":"删除成功！","detail":""},
        "set_autoface_theme":{"brief":"设置成功！","detail":"请查看您的QQ客户端头像，您还可以继续选择其他头像"},
        "set_autoface_select":{"brief":"设置成功！","detail":"请查看您的QQ客户端头像，您还可以继续选择其他头像"},
        "empty_items":{"brief":"温馨提示","detail":"当前分类暂时没有头像！"},
        "fav_exists":{"brief":"温馨提示","detail":"您已经收藏过这个会员头像！"},
        "user_limit":{"brief":"温馨提示","detail":"对不起，您的操作太频繁，喝杯茶休息下吧！"},
        "old_ver":{"brief":"抱歉！","detail":"您的好友的QQ版本不支持会员头像！"},
        "friend_off":{"brief":"抱歉！","detail":"您的好友不在线或者好友的QQ版本不支持会员头像！"},
        "sys_busy":{"brief":"抱歉！","detail":"系统繁忙，请稍后再试！"},
        "user_off":{"brief":"抱歉！","detail":"您还没有登录会员头像网站！"},
        "not_checked":{"brief":"抱歉！","detail":"您未选中任何会员头像！"},
        "has_dirty_word":{"brief":"抱歉！","detail":"您输入的文字含有国家禁止的敏感字，请重新输入"},
        "error_used_items":{"brief":"抱歉！","detail":"系统繁忙，暂时获取不到最近使用的会员头像！"},
        "exceed_max_favs":{"brief":"抱歉！","detail":"您收藏的表情数量已达上限！"},
        "not_friend":{"brief":"抱歉！","detail":"您不是对方的好友，不能向对方发送会员头像！"},
        "empty_group":{"brief":"抱歉！","detail":"请输入正确的收藏分组名称！"},
        "empty_file":{"brief":"抱歉！","detail":"请选择您要上传的头像文件！"},
        "empty_fav":{"brief":"抱歉！","detail":"此收藏分组还未收藏任何头像！"},
        "invalid_size":{"brief":"抱歉！","detail":"您上传的文件超过指定大小，请您更换其他图片上传！"},
        "invalid_type":{"brief":"抱歉！","detail":"图片格式只能为JPG,GIF,BMP,PNG！"},
        "empty_day_hash":{"brief":"抱歉！","detail":"您没有设置头像！"},
        "class_name_too_long":{"brief":"抱歉！","detail":"分类名不能超过6个汉字"},
        "share_name_2long":{"brief":"抱歉！","detail":"头像名称不能超过4个汉字"},
        "empty_share_name":{"brief":"抱歉！","detail":"头像名称不能为空"},
        "no_check":{"brief":"温馨提示","detail":"您没选择任何头像"},
        "invalid_user":{"brief":"非常抱歉！","detail":"该功能仅面向头像分享用户，您暂时无法使用"},
        "face_not_set":{"brief":"抱歉！","detail":"您没有选择自定义头像！"},
        "set_face_2fast":{"brief":"温馨提示","detail":"您设置头像太快了，请稍候！"},
        "shareExist":{"brief":"温馨提示","detail":"您已分享过该头像，请更换其他头像继续分享"},
        "shareMaxNum":{"brief":"温馨提示","detail":"对不起，您上传的头像数已达最大限制，<br />您可以在头像管理中删除部分已分享头像后再继续分享"},
        "2much_frame":{"brief":"抱歉！","detail":"您上传的图片超过40帧，请您更换其他图片上传"}
    };
var shareCates=[
	{'id':1,'name':'卡通'},
	{'id':2,'name':'人物'},
	{'id':3,'name':'风景'},
	{'id':4,'name':'LOMO'},
	{'id':5,'name':'动物'},
	{'id':6,'name':'植物'},
	{'id':7,'name':'字头像'},
	{'id':8,'name':'爱情'},
	{'id':9,'name':'其他'}
];
var defaultClass=[
    {"id":0,"name":"我的头像小窝"},
    {"id":1,"name":"我的收藏1"},
    {"id":2,"name":"我的收藏2"},
    {"id":3,"name":"我的收藏3"},
    {"id":4,"name":"我的收藏4"}
];
/*  |xGv00|4cd24c37a30f17a8bbbfabad10728e4a */