$(document).ready(function() {

 	//因为有些地方没有作品class.所以它的值就为负一
	try
	{
		if (com_asset_class == 'undefined')
		{
			com_asset_class	= -1;
		}		
	}
	catch (Exception)
	{
		com_asset_class	= -1;
	}

	comResetAll();
	textFocus();
	outputCommentFace('');
	outputCommentFace('2');	
	loadComment(1);

	try{
		addLoginedFuncs(comResetAll);
	}
	catch(Exception){}
})

var pageArray, pageNow,serTime=0,sendTime=0;

var replyFunction = "replyComment";
var deleteFunction = "deleteComment";
var comDomain="www.aipai.com";
var WORDS_MAX = 500,REPEAT_MAX = 30;
var TYPE_BOOK=1,TYPE_CARD=2,TYPE_USER = 3,TYPE_PHOTO = 11,TYPE_GAME = 10;
var replyCom, replyDiv, replyID=0;
var com_bid,com_sid,com_nick,com_authTag,com_bLogin=false;
var divNum='';
var headBase = "http://www.aipai.com/app/www/templates/common/img/userhead/";

var firstTurn = false;			//第一次加载，不用调用分页锚点

function gel(a){
	return document.getElementById?document.getElementById(a):null;
}

function comResetAll()
{
	loadCookie();
	
	comReset('');
	comReset('2');
}

function loadCookie()
{
	com_bid = Cookies.get("b");
	com_sid = Cookies.get("s");
	com_nick = Cookies.get("n",false);
	com_authTag = Cookies.get("at");
	
	if ((com_bid && com_bid>0) && (com_authTag && com_authTag.length>0))
		com_bLogin = true;
	
	if (!com_bid || com_bid<=0)
		com_bid = 0;
			
	if (!com_sid || com_sid<=0)
		com_sid = -1;
	
}

function getNum(num)
{
	if (typeof(num)=="undefined")
		num = '';
	return num;
}

function comReset(num)
{
	num = getNum(num);
	
	var text = gel('comment_text'+num); 
    var vali = gel('comment_validate'+num);
	var valiBox = gel('comment_validbox'+num);
    var valiPic = gel('comment_validatePic'+num);
    var wordLeft = gel('comment_words'+num);
    var sendLogin = gel('comment_send_login'+num);
    
    var btnSubmit = gel('comment_btnSubmit'+num);
    
    //text.value = "";
    text.style.backgroundImage= "";
    
	valiBox.value = "";

	valiPic.style.display = "none";		
	wordLeft.style.display = "none";
	
	var imgPath;
	if (btnSubmit.src.length>0)
	{
		var pos = btnSubmit.src.lastIndexOf("/");
		imgPath = btnSubmit.src.substr(0,pos+1);
	}

    //是否登录
    if (com_bLogin)
	{
		btnSubmit.src = imgPath+"bu5.gif";
		vali.style.display = "none";
		sendLogin.style.display = "none";
		
		//播放页
		try
		{
			gel('comment_class'+num).style.display = "none";
			gel("anonymous").style.display = "";
			gel("comment_btnSubmit2").style.display = "";
		}
		catch(Exception)
		{
			
		}
	}
	else
	{

		btnSubmit.src = btnSubmit.src = imgPath+"anonymous.gif";
		
		if (com_asset_class != 1)
		{
			vali.style.display = "";	//如果不是精华作品就显示验证框		
		}
		else
		{
			gel("comment_class").style.display = "";
			gel("anonymous").style.display = "none";
			gel("comment_btnSubmit2").style.display = "none";
			
		}
		sendLogin.style.display = "";	
	}
}

function loadComment(page)
{	
	//show loading 
	//$("#comment_loading").show()；
	var metadata = '{"cid":'+com_cid+',"type":'+com_type+',"bid":'+com_bid+',"page":'+page+',"rows":'+com_rows+'}';    
	var metadata = encodeURI("metadata="+metadata+"&callback=loadSuccess");

	var comViewUrl = "http://"+comDomain+"/bus/comment/view.php";
	
	 $.ajax({
	    type: "GET",		
	    url: comViewUrl,
	    dataType: 'jsonp',
	    data: metadata,
	    //jsonp: 'loadSuccess',
	   error: function(msg)
	   {
	   		alert( "读取评论失败：" + msg );
	   }
    });
}

function loadSuccess(ret)
{
	if (ret['code'] == 0)	//成功读取评论
	{
		pageNow = ret['page'];
		//serTime = ret['serTime'];
		
		pageArray = ret;
		renderComment(ret);
		//翻页跳上去
		if(firstTurn == false)
		{
			if (pageNow == 1)
			{
				firstTurn = true;
			}
			else
			{
				window.location.hash = "comment_area2";
			}
		}
		else
		{
			window.location.hash = "comment_area2";
		}
	
		//$("#comment_loading").hide();
	}
	else
	{
		alert("读取评论失败: " + ret['msg']);
	}
}

function renderComment(ret)
{
	genPageView(ret,0);
	
	//TODO: 没有评论时候的处理
	if (ret['count'] == 0)
	{
		$("#comment_list").innerHTML = "作品还没有评论，快来发表吧：）";
		$("#comment_output")[0].innerHTML = "";
		return;
	}
	
	if (ret['top'] && ret['top'] != '')
	{
		if (ret['data'][0]['class'] != 1)
		{
			ret['data'].unshift(ret['top']);
			ret['data'][0]['class'] = 1;
		}
		else
		{
			ret['data'][0] = ret['top'];
		}
		
		for(var i=1;i<ret['data'].length;i++ )
		{
			if (ret['data'][i]['id'] == ret['data'][0]['id'])
			{
				ret['data'].splice(i,1);
				break;
			}
		}		
	}
	
	for(var i=0;i<ret['data'].length;i++ )
	{		
		//处理置顶的情况
		if(ret['data'][i]['class'] == 1)
			ret['data'][i]['commCss'] = 'commenD';
		else
			ret['data'][i]['commCss'] = 'commenL';
		
		if(ret['data'][i]['bRender'] && ret['data'][i]['bRender'] == true)
			continue;
		ret['data'][i]['bid_link']	= "http://www.aipai.com/space.php?bid="+ret['data'][i]['bid'];
		ret['data'][i]['bid_mail']	= "http://www.aipai.com/sms.php?action=send&toid="+ret['data'][i]['bid'];
		
		//alert(ret['data'][i]['middle']);
		ret['data'][i]['bid_pic'] = ret['data'][i]['middle'];
		
		var comTime = ret['data'][i]['time'];
		
		var niceTime = new Date(dateline(ret['data'][i]['time']));
		ret['data'][i]['time'] = niceTime.timeformat5()+"说";
		ret['data'][i]['avatarCss'] = 'avatar';
		
		if (ret['data'][i]['bid'] <=0)
		{
			if (ret['data'][i]['ipa'] && ret['data'][i]['ipa'] != '保留地址')
				ret['data'][i]['nick'] = ret['data'][i]['ipa'] + "玩家";
			else
				ret['data'][i]['nick'] = "玩家游客";
			
			ret['data'][i]['bid_link'] = "javascript:void(0);";
			ret['data'][i]['bid_mail'] = "javascript:void(0);";
			
			ret['data'][i]['parse_name'] = ret['data'][i]['nick'];
			ret['data'][i]['parse_mail'] = "";

			var headNum = comTime % 9;
			ret['data'][i]['parse_avatar'] = "<img src='" + headBase + headNum +".jpg' />";
		}
		else
		{
			if (!ret['data'][i]['nick'])
			{
				ret['data'][i]['nick'] = "玩家"+ret['data'][i]['bid'];
			}
			
			if ((com_type == TYPE_USER) && (ret['data'][i]['bid'] == ret['data'][i]['cid']))
			{
				ret['data'][i]['nick'] += '(主人)';
				ret['data'][i]['avatarCss'] = 'avatar avatar1';
			}
			else if((com_type == TYPE_BOOK || com_type == TYPE_CARD) && (com_asset_bid == ret['data'][i]['bid']))
			{
				ret['data'][i]['nick'] += '(作者)';
				ret['data'][i]['avatarCss'] = 'avatar avatar1';
				ret['data'][i]['setTop'] = '';
			}
			
			if (ret['data'][i]['commCss'] == 'commenD')		
				ret['data'][i]['nick'] = '[置顶]'+ret['data'][i]['nick'];
			
			//信息飘窗
			try 
			{  
				if(typeof(eval(actioveTip))=="function")  
				{            
					ret['data'][i]['parse_name'] = "<a href='" + ret['data'][i]['bid_link'] + "' target='_blank' onmouseover='actioveTip(event,this,"+ret['data'][i]['bid']+")' onmouseout='outTips(this)'>" + ret['data'][i]['nick'] + "</a>";
					ret['data'][i]['parse_avatar'] = "<a href='" + ret['data'][i]['bid_link'] + "' target='_blank' onmouseover='actioveTip(event,this,"+ret['data'][i]['bid']+")' onmouseout='outTips(this)'><img src='" + ret['data'][i]['bid_pic'] +"' /></a>";	
				}      
			}
			catch(e)       
			{
				ret['data'][i]['parse_name'] = "<a href='" + ret['data'][i]['bid_link'] + "' target='_blank' >"+ ret['data'][i]['nick'] + "</a>";
				ret['data'][i]['parse_avatar'] = "<a href='" + ret['data'][i]['bid_link'] + "' target='_blank'><img src='" + ret['data'][i]['bid_pic'] +"' /></a>";	
			}  	
			ret['data'][i]['parse_mail'] = "<a title='给他/她发短消息' href='" + ret['data'][i]['bid_mail'] + "' target='_blank'><img src='http://www.aipai.com/app/www/templates/comment/img/mail.gif' /></a>";			

			
			
		
		}
		
		ret['data'][i]['reply'] = "<a href='javascript:"+replyFunction+"("+ret['data'][i]['id']+");'>"+"回复"+"</a>";
		
		if ((com_bid != 0 && com_bid == ret['data'][i]['bid']) ||
			 (ret['data'][i]['type']==TYPE_USER && com_bid == ret['data'][i]['cid']) || 
			 (ret['data'][i]['type']==TYPE_BOOK && com_bid == com_asset_bid) ||
			 (ret['data'][i]['type']==TYPE_CARD && com_bid == com_asset_bid) ||
			 (ret['data'][i]['type']==TYPE_PHOTO && com_bid == com_asset_bid) 
			 )
		{
			ret['data'][i]['del_link'] = "<a href='javascript:"+deleteFunction+"("+ret['data'][i]['id']+");'><img src='http://www.aipai.com/app/www/templates/comment/img/del.gif' height='20' width='24' alt='删除' /></a>";
		}
		else
		{
			ret['data'][i]['del_link'] = "";
		}
		
		if (com_type == TYPE_GAME)
		{
			if (typeof(is_admin_game) === 'undefined')
			{
			}
			if (is_admin_game == 2)
			{
				ret['data'][i]['del_link'] = "<a href='javascript:"+deleteFunction+"("+ret['data'][i]['id']+");'><img src='http://www.aipai.com/app/www/templates/comment/img/del.gif' height='20' width='24' alt='删除' /></a>";				
			}
		}


		if ( (ret['data'][i]['type']==TYPE_USER && com_bid == ret['data'][i]['cid']) || 
			 (ret['data'][i]['type']==TYPE_BOOK && com_bid == com_asset_bid) ||
			 (ret['data'][i]['type']==TYPE_CARD && com_bid == com_asset_bid))
		{
			if (ret['data'][i]['commCss'] != 'commenD' && (ret['data'][i]['type']==TYPE_BOOK || ret['data'][i]['type']==TYPE_CARD))
			{
				ret['data'][i]['top_link'] = '<a href="javascript:setTop('+ret['data'][i]['id']+');"><img width="24" height="20" alt="置顶" src="/app/www/templates/card/img/ding.gif"/></a>';
			}
		}

		//把UBB代码恢复成html代码
		if (ret['data'][i]['comment'].indexOf("[QUOTE]") == -1)
		{
			ret['data'][i]['comment'] = "[P]"+ret['data'][i]['comment']+"[/P]";
		}
		
		ret['data'][i]['comment'] = comUBBCom(ret['data'][i]['comment']);
		
		//是否已经render过了
		ret['data'][i]['bRender'] = true;
	}
	  	
	$("#comment_output")[0].innerHTML = TrimPath.processDOMTemplate('comment_tpl', ret);
}

function sendComment()
{	
	var textObj = gel('comment_text'+divNum); 
	var comStr = textObj.value;
	comStr = comStr.replace(/\s*$/,""); 
	
	var validatePic = gel('comment_validatePic'+divNum);
	var validbox = gel('comment_validbox'+divNum);
	var user_auth_code=0;

	if (validatePic.style.display == "none")
	{
		user_auth_code = -1;
	}
	else
	{
		//检查是否为数字
		if(!validbox.value.match(/^\d*$/))
		{ 
            alert("请输入正确的验证码喔");
            return validbox.focus();
        }
		user_auth_code = validbox.value?validbox.value:0;        
	}
	
	if ((Date.parse(Date()) - sendTime) < 5000)
	{
		alert("你发表的太快了吧");	
		return textObj.focus();	
	}
	
	if (comStr.length == 0)
	{
		return textObj.focus();
	}
	else if(comStr.length <= 3)
	{
		alert("你输入的文字太少了喔");
		return textObj.focus();
	}
	else if (comStr.length > WORDS_MAX)
	{
		alert("你输入的文字太多了喔，最多"+WORDS_MAX+"个字");
		return textObj.focus();
	}
	
	if (maxRepeatStrNum(comStr) > REPEAT_MAX)
	{
		alert("你的评论里含有不允许的词句喔...");
		return textObj.focus();		
	}
	
	//CopyToClipBoard(comStr);

	//json内容有 \ " & 会出错
	comStr = comStr.replace(/\\/g,'\\\\');
	comStr = comStr.replace(/\"/g,'\\\"');
	
	comStr = comStr.replace(/&/g,'＆');
	
	//json里面有\r\n，\t会有问题，替换UBB代码
	comStr = comStr.replace(/\r\n/g,'[br]');
	comStr = comStr.replace(/\t/g,'[T]');
	
	//过滤其他的控制符
	comStr = comStr.replace(/[\x00-\x1F]/g,'');
		
	var metadata = '{"cid":'+com_cid+',"type":'+com_type+',"bid":'+com_bid+',"sid":'+com_sid+',"comment":"'+comStr+'"'; //+'","serTime":'+serTime;	

	if (com_nick && com_nick.length > 0)
		metadata +=	',"nick":"'+com_nick+'"';
		
	if (user_auth_code != -1)
		metadata += ',"user_auth_code":"'+user_auth_code+'"';

	
	//if回复框发表
	if (divNum == '2')
		metadata += ',"replyID":'+replyID;

	metadata += '}';
	
	var sendUrl = "http://" + comDomain + "/bus/comment/insert.php";
	var metadata = encodeURI("metadata="+metadata+"&url="+sendUrl);
	
	//需要上传的字符可能超过1024byte，使用服务器代理的方式来实现ajax post模式跨域，如果是get模式可以用jquery很方便的实现
	if (window.location.hostname != comDomain)
	{
		//TODO: 由于使用了不同域的proxy，session会失效，验证码不能工作
		sendUrl = "http://"+window.location.hostname+"/bus/share/proxy.php";
	}

	$.ajax({
		   type: "POST",
		   url: sendUrl,
		   data: metadata,	
		   dataType: "json", 
		   success: sendSuccess,
		   error: function(msg)
		   {
		   		alert( "error: " + msg );
		   }
	 });
}

function showInfo(info)
{
	gel('comment_info').innerHTML = info;
	setInterval("clearInfo()",3000);
}

function clearInfo()
{
	gel('comment_info').innerHTML = '';
	clearInterval();
}

function sendSuccess(ret)
{
	//alert(var_dump(ret));
	var textObj = gel('comment_text'+divNum);
	var validBox = gel('comment_validbox'+divNum);
		
	if (ret['code'] == 0)
	{
		//alert("恭喜，评论发表成功。");
		showInfo('发表成功！');
		
		textObj.value = "";
		comReset(divNum);		

		if (divNum == '2')
		{
			replyCancle(false);
		}
		
		sendTime = Date.parse(Date());
		genPageView(pageArray,1);
		
		if (pageNow == 1)
		{
			//模拟插入到最前面
			if (pageArray['data'].length>0){
				if (pageArray['data'][0]['class'] == 1)
				{
					newArray = pageArray['data'].slice(1,pageArray['data'].length);
					newArray.unshift(ret['data']);
					newArray.unshift(pageArray['data'][0]);
					pageArray['data'] = newArray;
				}else{
					pageArray['data'].unshift(ret['data']);
				}
			}else{
				pageArray['data'].unshift(ret['data']);
			}
			
			pageArray['rows'] = pageArray['data'].length;
			renderComment(pageArray);
			
		}
		else
		{
			//TODO: 如果是回复评论，在当前页找到节点并显示一个假回复
			loadComment(1);
		}
	}
	else if (ret['code'] == 7003)
	{
		alert(ret['msg']);
		validBox.focus();
	}
	else
	{
		alert(ret['msg']);
	}
}

function replyComment(id)
{
	var bRender = (typeof(bRender)=="undefined")?true:false;   
	var tempReplyID = replyID;
	
	if (replyID != 0)
	{
		//恢复
		for(var i=0;i<pageArray['data'].length;i++ )
		{
			if (pageArray['data'][i]['id'] == replyID)
			{
				pageArray['data'][i]['reply'] = "<a href='javascript:"+replyFunction+"("+pageArray['data'][i]['id']+");'>"+"回复"+"</a>";
				pageArray['data'][i]['comment'] = replyCom;
				$("#comment_div2")[0].innerHTML = replyDiv;
				replyID = 0;
				break;
			}
		}
		
		if (tempReplyID == id)
		{
			if (bRender)
			{
				renderComment(pageArray);
			}
			
			return;
		}		
	}

	//生成回复框
	for(var i=0;i<pageArray['data'].length;i++ )
	{
		if (pageArray['data'][i]['id'] == id)
		{
			pageArray['data'][i]['reply'] = "<a href='javascript:"+replyFunction+"("+pageArray['data'][i]['id']+");'>"+"返回"+"</a>";
			replyCom = pageArray['data'][i]['comment'];
			
			//防止登陆成功没有修改replyDiv的值,如果登陆了重新更改HTML
			if(com_bLogin) 
			{
				comReset('2');
			}
			
			replyDiv = $("#comment_div2")[0].innerHTML;
			
			$("#comment_div2")[0].innerHTML = "";
			pageArray['data'][i]['comment'] += replyDiv;
			replyID = id;
			
			break;
		}
	}
	
	if (bRender)
	{
		renderComment(pageArray);
	}
}

function replyCancle(bRender)
{
	var bRender = (typeof(bRender)=="undefined")?true:false;  	
	replyComment(replyID,bRender);
}

function deleteComment(id)
{	
	if(!window.confirm("你确定要删除这条记录吗？"))
	{
		return;
	}  
	
	var metadata = '{"id":'+id+',"cid":'+com_cid+',"type":'+com_type+',"bid":'+com_bid+'}';    
	var metadata = encodeURI("metadata="+metadata+"&callback=deleteSuccess");
		    
	var comUrl = "http://"+comDomain+"/bus/comment/delete.php";
	
	 $.ajax({
	    type: "GET",		
	    url: comUrl,
	    dataType: 'jsonp',
	    data: metadata,
	    //jsonp: 'deleteSuccess',    
	    error: function(msg)
	    {
	   		alert( "发表评论失败：" + msg );
	    }
    });
}

function deleteSuccess(ret)
{
	if (ret['code'] == 0)
	{
		for(var i=0;i<pageArray['data'].length;i++ )
		{
			if (pageArray['data'][i]['id'] == ret['id'])
			{
				pageArray['data'].splice(i,1);
				break;
			}
		}
		genPageView(pageArray,-1);
			
		renderComment(pageArray);
		
		//alert( "提示：记录删除成功。" );
		showInfo('记录删除成功');
	}
	else if (ret['code'] == 7001)
		alert( "记录删除失败，该记录不存在。" );
	else if (ret['code'] == 7010)
		alert( "记录删除失败，没有权限。" );
	else
		alert( "记录删除失败，服务器忙。" );	
}

// 评论置顶

function setTop(id)
{	
	if(!window.confirm("确定将该条评论置顶吗？"))
		return;
	
	var metadata = '{"id":'+id+',"cid":'+com_cid+',"type":'+com_type+',"bid":'+com_bid+'}';    
	var metadata = encodeURI("metadata="+metadata+"&callback=setTopSuccess");
		    
	var comUrl = "http://"+comDomain+"/bus/comment/setTop.php";
	
	 $.ajax({
	    type: "GET",		
	    url: comUrl,
	    dataType: 'jsonp',
	    data: metadata,
	    //jsonp: 'setTopSuccess',    
	    error: function(msg)
	    {
	   		alert( "操作失败：" + msg );
	    }
    });
}

function setTopSuccess(ret)
{
	if (ret['code'] == 0)
	{
		for(var i=0;i<pageArray['data'].length;i++ )
		{
			if (pageArray['data'][i]['id'] == ret['id'])
			{
				pageArray['data'].splice(i,1);
				break;
			}
		}
		
		//renderComment(pageArray);
		loadComment(1);
		//alert( "提示：置顶成功。" );
		showInfo('置顶成功');
	}
	else if (ret['code'] == 7001)
		alert( "置顶失败，该记录不存在。" );
	else if (ret['code'] == 7010)
		alert( "置顶失败，没有权限。" );
	else
		alert( "置顶失败，服务器忙。" );	
}

function getPageView(pageNow,pageCount)
{
	if (pageCount == 1)
		return;
	
	var lFunc = "loadComment";
	var sPage,ePage;
	
	if (pageNow < 6)
	{
		sPage = 1;
		ePage = 9;	
	}
	else if (pageNow > pageCount-6)
	{
		sPage = (pageNow-6)>1?(pageNow-6):1;
		ePage = pageNow + 4;
	}
	else
	{
		sPage = pageNow - 4;
		ePage = pageNow + 4;
	}
	
	var html = "<ul>";
	//next end
	if (pageNow < pageCount )
	{
		//html += "<li class='zw'><a href='javascript:"+lFunc+"("+pageCount+");'>尾页</a></li>";
		if (pageNow!=pageCount)
		{
			html += "<li class='after'><a href='javascript:"+lFunc+"("+(pageNow+1)+");'></a></li>";
		}
	}
	//after
	for(var i=0;(pageNow+i)<ePage;i++)
	{
		var page = ePage - i;
		if (page> pageCount)
			continue;
		
		html += "<li><a href='javascript:"+lFunc+"("+page+");'>"+page+"</a></li>";
	}
	//self
	html += "<li class='noLink'>"+pageNow+"</li>";
	//before
	for(var i=1;(pageNow-i)>=sPage;i++)
	{
		var page = pageNow - i;
		if (page<1)
			continue;
		
		html += "<li><a href='javascript:"+lFunc+"("+page+");'>"+page+"</a></li>";
	}
	//first and back
	if (pageNow >1 )
	{
		if (pageNow!=1)
		{
			html += "<li class='before'><a href='javascript:"+lFunc+"("+(pageNow-1)+");'></a></li>";
		}
		
		//html += "<li class='zw'><a href='javascript:"+lFunc+"(1);'>首页</a></li>";
	}
	html += "</ul>";
	return html;
}

function genPageView(pageArr,num)
{
	if(pageArr)
	{
		pageArr['count'] = parseInt(pageArr['count'])+parseInt(num);
		pageArr['page_count'] = Math.ceil(pageArr['count']/pageArr['page_rows']);
		pageArr['com_count'] = pageArr['count'];
		pageArr['page_view'] = getPageView(pageArr['page'],pageArr['page_count']);
	}	
}

function textOnfocus(num) 
{
	num = getNum(num);
	divNum = num;
	
    var text = gel('comment_text'+divNum);
    var validate = gel('comment_validate'+divNum);
    var validatePic = gel('comment_validatePic'+divNum);
    var wordLeft = gel('comment_words'+divNum);
    
    //var sendLogin = gel('comment_send_login'+divNum);
	text.style.backgroundImage= "none";
	
	checkToComment();
	wordLeft.style.display = "";
	
	//是否登录,测试都打开验证码		 且不是精华作品
	if (!com_bLogin && com_asset_class != 1)
	{
		validate.style.display = "";
		
		if (validatePic.style.display == "none")
		{
			refreshCc();
		}
	
		//$("#validatePic").show("100");
		validatePic.style.display = "";
	}


}

function refreshCc()
{
	var img = gel("comment_checkImg"+divNum);	
	if(img)
		img.src="http://" + comDomain + "/app/www/common/authimg.php?width=70&height=22&rid=" + Math.random();
}

var faceUrlOld = "http://www.aipai.com/app/www/templates/comment/facem";
var faceUrlNew = "http://www.aipai.com/app/www/templates/comment/facei";

var faceArrayCom = {};
faceArrayCom[0] = {"key":"[we_laugh]","value":faceUrlOld+"/2.gif"};
faceArrayCom[1] = {"key":"[we_lol]","value":faceUrlOld+"/14.gif"};
faceArrayCom[2] = {"key":"[we_cool]","value":faceUrlOld+"/6.gif"};
faceArrayCom[3] = {"key":"[we_cry]","value":faceUrlOld+"/11.gif"};
faceArrayCom[4] = {"key":"[we_confuse]","value":faceUrlOld+"/21.gif"};
faceArrayCom[5] = {"key":"[we_angry]","value":faceUrlOld+"/7.gif"};
faceArrayCom[6] = {"key":"[we_horrify]","value":faceUrlOld+"/8.gif"};
faceArrayCom[7] = {"key":"[we_emb]","value":faceUrlOld+"/9.gif"};
faceArrayCom[8] = {"key":"[we_love]","value":faceUrlOld+"/16.gif"};
faceArrayCom[9] = {"key":"[we_perspire]","value":faceUrlOld+"/17.gif"};
faceArrayCom[10] = {"key":"[we_yum]","value":faceUrlOld+"/18.gif"};
faceArrayCom[11] = {"key":"[we_kiss]","value":faceUrlOld+"/15.gif"};			
faceArrayCom[12] = {"key":"[we_noword]","value":faceUrlOld+"/24.gif"};
faceArrayCom[13] = {"key":"[we_like]","value":faceUrlOld+"/26.gif"};
faceArrayCom[14] = {"key":"[we_yeah]","value":faceUrlOld+"/29.gif"};
faceArrayCom[15] = {"key":"[we_adore]","value":faceUrlOld+"/33.gif"};
faceArrayCom[16] = {"key":"[we_faint]","value":faceUrlOld+"/34.gif"};
faceArrayCom[17] = {"key":"[we_flower]","value":faceUrlOld+"/45.gif"};
faceArrayCom[18] = {"key":"[we_heart]","value":faceUrlOld+"/52.gif"};
faceArrayCom[19] = {"key":"[we_ding]","value":faceUrlOld+"/56.gif"};
faceArrayCom[20] = {"key":"[we_bad]","value":faceUrlOld+"/55.gif"};
//new face
faceArrayCom[21] = {"key":"[o_exp01]","value":faceUrlNew+"/exp01.gif"};
faceArrayCom[22] = {"key":"[o_exp20]","value":faceUrlNew+"/exp20.gif"};
faceArrayCom[23] = {"key":"[o_exp02]","value":faceUrlNew+"/exp02.gif"};
faceArrayCom[24] = {"key":"[o_exp03]","value":faceUrlNew+"/exp03.gif"};
faceArrayCom[25] = {"key":"[o_exp05]","value":faceUrlNew+"/exp05.gif"};
faceArrayCom[26] = {"key":"[o_exp06]","value":faceUrlNew+"/exp06.gif"};
faceArrayCom[27] = {"key":"[o_exp07]","value":faceUrlNew+"/exp07.gif"};
faceArrayCom[28] = {"key":"[o_exp08]","value":faceUrlNew+"/exp08.gif"};
faceArrayCom[29] = {"key":"[o_exp09]","value":faceUrlNew+"/exp09.gif"};
faceArrayCom[30] = {"key":"[o_exp10]","value":faceUrlNew+"/exp10.gif"};
faceArrayCom[31] = {"key":"[o_exp11]","value":faceUrlNew+"/exp11.gif"};
faceArrayCom[32] = {"key":"[o_exp12]","value":faceUrlNew+"/exp12.gif"};
faceArrayCom[33] = {"key":"[o_exp16]","value":faceUrlNew+"/exp16.gif"};
faceArrayCom[34] = {"key":"[o_exp17]","value":faceUrlNew+"/exp17.gif"};
faceArrayCom[35] = {"key":"[o_exp18]","value":faceUrlNew+"/exp18.gif"};
faceArrayCom[36] = {"key":"[o_exp19]","value":faceUrlNew+"/exp19.gif"};
faceArrayCom[37] = {"key":"[o_exp21]","value":faceUrlNew+"/exp21.gif"};
faceArrayCom[38] = {"key":"[o_exp22]","value":faceUrlNew+"/exp22.gif"};
faceArrayCom[39] = {"key":"[o_exp24]","value":faceUrlNew+"/exp24.gif"};
faceArrayCom[40] = {"key":"[o_exp33]","value":faceUrlNew+"/exp33.gif"};
faceArrayCom[41] = {"key":"[o_exp29]","value":faceUrlNew+"/exp29.gif"};
faceArrayCom[42] = {"key":"[o_exp30]","value":faceUrlNew+"/exp30.gif"};
faceArrayCom[43] = {"key":"[o_exp28]","value":faceUrlNew+"/exp28.gif"};
faceArrayCom[44] = {"key":"[o_exp32]","value":faceUrlNew+"/exp32.gif"};
faceArrayCom[45] = {"key":"[o_lei]","value":faceUrlNew+"/lei.gif"};
faceArrayCom[46] = {"key":"[o_jiong]","value":faceUrlNew+"/jiong.gif"};
faceArrayCom[47] = {"key":"[o_niub]","value":faceUrlNew+"/niub.gif"};
faceArrayCom[48] = {"key":"[o_cai]","value":faceUrlNew+"/cai.gif"};
faceArrayCom[49] = {"key":"[o_ifu]","value":faceUrlNew+"/ifu.gif"};
faceArrayCom[50] = {"key":"[o_da]","value":faceUrlNew+"/da.gif"};
faceArrayCom[51] = {"key":"[o_dalove]","value":faceUrlNew+"/dalove.gif"};

function outputCommentFace(num)		//评论表情
{	
	var num = getNum(num);
	var html = "";
	//alert(var_dump(faceArrayCom.length)); //json 获取 length有点问题
	
	var setFaceLoopMax = 51;
	var setFaceLoopStart = 21;
	
	for(var i=setFaceLoopStart;(faceArrayCom[i]!=undefined && i<=setFaceLoopMax);i++)
	{
		faceArrayCom[i]['reg'] = new RegExp(faceArrayCom[i]['key'],"gm");
		html += "<li><IMG onclick=\"clickFace('" + faceArrayCom[i]["key"] + "','"+num+"' );\" src='" + faceArrayCom[i]["value"] +"'></li>";
	}
	
	$("#comment_face"+num)[0].innerHTML = html;
	
}

function clickFace(faceStr,num)
{
	num = getNum(num);
	textOnfocus(num);
	
	textAreaAppend('comment_text'+num,faceStr);
	
  	checkToComment();
}

Date.prototype.dateDiff = function(interval,objDate){
    if(arguments.length<2||objDate.constructor!=Date)	return undefined;
    switch (interval) {
      case "s":return parseInt((objDate-this)/1000);
      case "n":return parseInt((objDate-this)/60000);
      case "h":return parseInt((objDate-this)/3600000);
      case "d":return parseInt((objDate-this)/86400000);
      case "w":return parseInt((objDate-this)/(86400000*7));
      case "m":return (objDate.getMonth()+1)+((objDate.getFullYear()-this.getFullYear())*12)-(this.getMonth()+1);
      case "y":return objDate.getFullYear()-this.getFullYear();
      default:return undefined;
    }
  }
	
 Date.prototype.timeformat5 = function(){
 	var now_time = new Date(); 
	var time_left = this.dateDiff("s",now_time)>=0?this.dateDiff("s",now_time):0;

	var ret = {};
	ret['y'] = Math.floor(time_left/(24*3600*365));
	ret['m'] = Math.floor((time_left-ret['y']*(24*3600*365))/(24*3600*30));
	ret['w'] = Math.floor((time_left-ret['m']*(24*3600*30)-ret['y']*(24*3600*365))/(24*3600*7));
	ret['d'] = Math.floor((time_left-ret['w']*(24*3600*7)-ret['m']*(24*3600*30)-ret['y']*(24*3600*365))/(24*3600));
	ret['h'] = Math.floor((time_left-ret['d']*(24*3600)-ret['w']*(24*3600*7)-ret['m']*(24*3600*30)-ret['y']*(24*3600*365))/3600);
	ret['im'] = Math.floor((time_left-ret['h']*3600-ret['d']*(24*3600)-ret['w']*(24*3600*7)-ret['m']*(24*3600*30)-ret['y']*(24*3600*365))/60);
	ret['s'] = Math.floor(time_left-ret['im']*60-ret['h']*3600-ret['d']*(24*3600)-ret['w']*(24*3600*7)-ret['m']*(24*3600*30)-ret['y']*(24*3600*365));
	var _time = {};
	_time[0] =ret['y']?ret['y']+"年":"";
	_time[1] =ret['m']?ret['m']+"月":"";
	_time[2] =ret['w']?ret['w']+"周":"";
	_time[3] =ret['d']?ret['d']+"天":"";
	_time[4] =ret['h']?ret['h']+"小时":"";
	_time[5] =ret['im']?ret['im']+"分":"";
	_time[6] =ret['s']?ret['s']+"秒":"";
	var __ret = {};
	var count=0;
	for(var p=0;p<7;p++) {
		if(_time[p]!="") {
			__ret[count]=_time[p];
			count++; 
		}
	}
	if(count==0) {
		return "刚刚";
	}
	if(count==1) {
		return __ret[0]+"前";
	}else{
		var j=0;
		var _now_="";
		for(var p=0;p<count;p++) {
			_now_ += __ret[p];
			j++; 
			if(j>0) {
				return _now_+"前";
			}
		}
	}
 } 

  function dateline(timestamp) {
	timestamp = timestamp*1000;
	var __d__;
	__d__ = new Date(timestamp);
	return (__d__.getFullYear())+"/"+(__d__.getMonth()+1)+"/"+(__d__.getDate())+" "+(__d__.getHours())+":"+(__d__.getMinutes())+":"+(__d__.getSeconds());
}

function comUBBCom(str)   
{   
    //用户输入的换行，限制8次
	for(var i=0;i<8;i++)
	{
		if (str.indexOf("[br]") > -1)
			str=str.replace(/\[br\]/,"<br/>");/*用户输入的回车*/
		else
			break;
	}
    str=str.replace(/\[br\]/g," ");
    
    str=str.replace(/\[BR\]/g,"<br/>");	/*系统回车*/
    str=str.replace(/\[T\]/g,"&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");	//制表符
    str=str.replace(/\[QUOTE\](.+?)\[\/QUOTE\]/ig,"<div class='quo'>$1</div>");
    str=str.replace(/\[QUOTE_1\](.+?)\[\/QUOTE_1\]/ig,"<div class='qti'>$1</div>");
    str=str.replace(/\[QUOTE_2\](.+?)\[\/QUOTE_2\]/ig,"<div class='qcon'>$1</div>");
    str=str.replace(/\[USER\=0\](.+?)\[\/USER\]/ig,"<span>$1</span>");
    str=str.replace(/\[USER\=(.+?)\](.+?)\[\/USER\]/ig,"<span><a href=\"http://www.aipai.com/space.php?bid=$1\" target='_blank'>$2</a></span>");  
    str=str.replace(/\[TIME\](.+?)\[\/TIME\]/ig,getHumanTime);
    str=str.replace(/\[P\](.+?)\[\/P\]/ig,"<P>$1</P>");
    str=str.replace(/\[URL\](.+?)\[\/URL\]/ig,"<a href=\"$1\" target='_blank'>$1</a>");
  	str=str.replace(/\[SYS\]/g,"");	
  	
	for(var j=0;faceArrayCom[j]!=undefined;j++)
	{
		while( str.indexOf(faceArrayCom[j]['key']) > -1 ) 
		{ 
			str = str.replace(faceArrayCom[j]['key'],"<IMG src='"+faceArrayCom[j]["value"]+"'>");
		}			
	}
	
   return str;   
}

function textAreaAppend(id,str) 
{    
    var eObj = document.getElementById(id);
   
    if (eObj.createTextRange)
    {
    	// ie    
        eObj.focus();    
        document.selection.createRange().duplicate().text = str;    
    } else 
    {    
        // firefox    
        var iStart = eObj.selectionStart;    
        var iEnd = eObj.selectionEnd;    
        eObj.value = eObj.value.substr(0, iStart) + str + eObj.value.substr(iEnd, eObj.value.length);    
        eObj.focus();    
    }    
} 

function getHumanTime()
{
	var niceTime = new Date(dateline(arguments[1]));
	return niceTime.timeformat5();
}

function CopyToClipBoard(text)
{
	if ($.browser.msie)
		window.clipboardData.setData("Text",text);
}

function checkToComment()
{
	var text = gel('comment_text'+divNum);
	var wordLeft = gel('comment_words'+divNum);
	
	var words = text.value.length;
	if (words > WORDS_MAX)
		wordLeft.innerHTML = "(超过字数限制)";
	else
		wordLeft.innerHTML = "(剩余" + (WORDS_MAX - words) + "字)";
	
	if ($.browser.msie)
	{
		if((event.ctrlKey && event.keyCode==13) || (event.altKey && window.event.keyCode == 83))
			sendComment();
	}
}

function loginComment(responseText)
{
	loadCookie();
	
	//这里设置不显示验证码，在注册用户也输入验证码的时候比较容易调整
	var validatePic = gel('comment_validatePic'+divNum);
	validatePic.style.display = "none"
	
	sendComment(divNum);
	//alert(responseText);
}
 
function maxRepeatStrNum(str)
{     
	var max=0,num=0,oldStr;     
    for(var i=0;i<str.length;i++)
    {     
    	if (oldStr == str.charAt(i))
    	{
    		num++;
    	}
    	else
    	{
    	    max = max>num?max:num;	
    		num = 0;
    	}
    	
    	max = max>num?max:num;
    	oldStr = str.charAt(i);  
    }     
    return max;  
}

//头部已经load了 var Cookies...

function textFocus(){
	$('textarea').focus(function(){
		$(this).css('background','none');
		return $(this).css('background','url(textarea_bg.gif) no-repeat 5px 48px #fff');
	});
}

//diy.js //diy.js 合并的文件
if(typeof(TrimPath)=='undefined')
TrimPath={};
(function(){
if(TrimPath.evalEx==null)
TrimPath.evalEx=function(src){return eval(src);};
var UNDEFINED;
if(Array.prototype.pop==null)
Array.prototype.pop=function(){
if(this.length===0){return UNDEFINED;}
return this[--this.length];
};
if(Array.prototype.push==null)
Array.prototype.push=function(){
for(var i=0;i<arguments.length;++i){this[this.length]=arguments[i];}
return this.length;
};
TrimPath.parseTemplate=function(tmplContent,optTmplName,optEtc){
if(optEtc==null)
optEtc=TrimPath.parseTemplate_etc;
var funcSrc=parse(tmplContent,optTmplName,optEtc);
var func=TrimPath.evalEx(funcSrc,optTmplName,1);
if(func!=null)
return new optEtc.Template(optTmplName,tmplContent,funcSrc,func,optEtc);
return null;
}
var exceptionDetails=function(e){
return(e.toString())+";\n "+
(e.message)+";\n "+
(e.name)+";\n "+
(e.stack||'no stack trace')+";\n "+
(e.description||'no further description')+";\n "+
(e.fileName||'no file name')+";\n "+
(e.lineNumber||'no line number');
}
try{
String.prototype.process=function(context,optFlags){
var template=TrimPath.parseTemplate(this,null);
if(template!=null)
return template.process(context,optFlags);
return this;
}
}catch(e){
}
TrimPath.parseTemplate_etc={};
TrimPath.parseTemplate_etc.statementTag="forelse|for|if|elseif|else|var|macro";
TrimPath.parseTemplate_etc.statementDef={
"if":{delta:1,prefix:"if (",suffix:") {",paramMin:1},
"else":{delta:0,prefix:"} else {"},
"elseif":{delta:0,prefix:"} else if (",suffix:") {",paramDefault:"true"},
"/if":{delta:-1,prefix:"}"},
"for":{delta:1,paramMin:3,
prefixFunc:function(stmtParts,state,tmplName,etc){
if(stmtParts[2]!="in")
throw new etc.ParseError(tmplName,state.line,"bad for loop statement: "+stmtParts.join(' '));
var iterVar=stmtParts[1];
var listVar="__LIST__"+iterVar;
return["var ",listVar," = ",stmtParts[3],";",
"var __LENGTH_STACK__;",
"if (typeof(__LENGTH_STACK__) == 'undefined' || !__LENGTH_STACK__.length) __LENGTH_STACK__ = new Array();",
"__LENGTH_STACK__[__LENGTH_STACK__.length] = 0;",
"if ((",listVar,") != null) { ",
"var ",iterVar,"_ct = 0;",
"for (var ",iterVar,"_index in ",listVar,") { ",
"if (typeof(",listVar,"[",iterVar,"_index]) == 'function') {continue;}",
iterVar,"_ct++;",
"__LENGTH_STACK__[__LENGTH_STACK__.length - 1]++;",
"var ",iterVar," = ",listVar,"[",iterVar,"_index];"].join("");
}},
"forelse":{delta:0,prefix:"} } if (__LENGTH_STACK__[__LENGTH_STACK__.length - 1] == 0) { if (",suffix:") {",paramDefault:"true"},
"/for":{delta:-1,prefix:"} }; delete __LENGTH_STACK__[__LENGTH_STACK__.length - 1];"},
"var":{delta:0,prefix:"var ",suffix:";"},
"macro":{delta:1,
prefixFunc:function(stmtParts,state,tmplName,etc){
var macroName=stmtParts[1].split('(')[0];
return["var ",macroName," = function",
stmtParts.slice(1).join(' ').substring(macroName.length),
"{ var _OUT_arr = []; var _OUT = { write: function(m) { if (m) _OUT_arr.push(m); } }; "].join('');
}},
"/macro":{delta:-1,prefix:" return _OUT_arr.join(''); };"}
}
TrimPath.parseTemplate_etc.modifierDef={
"eat":function(v){return"";},
"escape":function(s){return String(s).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");},
"capitalize":function(s){return String(s).toUpperCase();},
"default":function(s,d){return s!=null?s:d;}
}
TrimPath.parseTemplate_etc.modifierDef.h=TrimPath.parseTemplate_etc.modifierDef.escape;
TrimPath.parseTemplate_etc.Template=function(tmplName,tmplContent,funcSrc,func,etc){
this.process=function(context,flags){
if(context==null)
context={};
if(context._MODIFIERS==null)
context._MODIFIERS={};
if(context.defined==null)
context.defined=function(str){return(context[str]!=undefined);};
for(var k in etc.modifierDef){
if(context._MODIFIERS[k]==null)
context._MODIFIERS[k]=etc.modifierDef[k];
}
if(flags==null)
flags={};
var resultArr=[];
var resultOut={write:function(m){resultArr.push(m);}};
try{
func(resultOut,context,flags);
}catch(e){
if(flags.throwExceptions==true)
throw e;
var result=new String(resultArr.join("")+
"[ERROR: template: <pre>"+exceptionDetails(e)+"</pre>]");
result["exception"]=e;
return result;
}
return resultArr.join("");
}
this.name=tmplName;
this.source=tmplContent;
this.sourceFunc=funcSrc;
this.toString=function(){return"TrimPath.Template ["+tmplName+"]";}
}
TrimPath.parseTemplate_etc.ParseError=function(name,line,message){
this.name=name;
this.line=line;
this.message=message;
}
TrimPath.parseTemplate_etc.ParseError.prototype.toString=function(){
return("TrimPath template ParseError in "+this.name+": line "+this.line+", "+this.message);
}
var parse=function(body,tmplName,etc){
body=cleanWhiteSpace(body);
var funcText=["var TrimPath_Template_TEMP = function(_OUT, _CONTEXT, _FLAGS) { with (_CONTEXT) {"];
var state={stack:[],line:1};
var endStmtPrev=-1;
while(endStmtPrev+1<body.length){
var begStmt=endStmtPrev;
begStmt=body.indexOf("{",begStmt+1);
while(begStmt>=0){
var endStmt=body.indexOf('}',begStmt+1);
var stmt=body.substring(begStmt,endStmt);
var blockrx=stmt.match(/^\{(cdata|minify|eval)/);
if(blockrx){
var blockType=blockrx[1];
var blockMarkerBeg=begStmt+blockType.length+1;
var blockMarkerEnd=body.indexOf('}',blockMarkerBeg);
if(blockMarkerEnd>=0){
var blockMarker;
if(blockMarkerEnd-blockMarkerBeg<=0){
blockMarker="{/"+blockType+"}";
}else{
blockMarker=body.substring(blockMarkerBeg+1,blockMarkerEnd);
}
var blockEnd=body.indexOf(blockMarker,blockMarkerEnd+1);
if(blockEnd>=0){
emitSectionText(body.substring(endStmtPrev+1,begStmt),funcText);
var blockText=body.substring(blockMarkerEnd+1,blockEnd);
if(blockType=='cdata'){
emitText(blockText,funcText);
}else if(blockType=='minify'){
emitText(scrubWhiteSpace(blockText),funcText);
}else if(blockType=='eval'){
if(blockText!=null&&blockText.length>0)
funcText.push('_OUT.write( (function() { '+blockText+' })() );');
}
begStmt=endStmtPrev=blockEnd+blockMarker.length-1;
}
}
}else if(body.charAt(begStmt-1)!='$'&&
body.charAt(begStmt-1)!='\\'){
var offset=(body.charAt(begStmt+1)=='/'?2:1);
if(body.substring(begStmt+offset,begStmt+10+offset).search(TrimPath.parseTemplate_etc.statementTag)==0)
break;
}
begStmt=body.indexOf("{",begStmt+1);
}
if(begStmt<0)
break;
var endStmt=body.indexOf("}",begStmt+1);
if(endStmt<0)
break;
emitSectionText(body.substring(endStmtPrev+1,begStmt),funcText);
emitStatement(body.substring(begStmt,endStmt+1),state,funcText,tmplName,etc);
endStmtPrev=endStmt;
}
emitSectionText(body.substring(endStmtPrev+1),funcText);
if(state.stack.length!=0)
throw new etc.ParseError(tmplName,state.line,"unclosed, unmatched statement(s): "+state.stack.join(","));
funcText.push("}}; TrimPath_Template_TEMP");
return funcText.join("");
}
var emitStatement=function(stmtStr,state,funcText,tmplName,etc){
var parts=stmtStr.slice(1,-1).split(' ');
var stmt=etc.statementDef[parts[0]];
if(stmt==null){
emitSectionText(stmtStr,funcText);
return;
}
if(stmt.delta<0){
if(state.stack.length<=0)
throw new etc.ParseError(tmplName,state.line,"close tag does not match any previous statement: "+stmtStr);
state.stack.pop();
}
if(stmt.delta>0)
state.stack.push(stmtStr);
if(stmt.paramMin!=null&&
stmt.paramMin>=parts.length)
throw new etc.ParseError(tmplName,state.line,"statement needs more parameters: "+stmtStr);
if(stmt.prefixFunc!=null)
funcText.push(stmt.prefixFunc(parts,state,tmplName,etc));
else
funcText.push(stmt.prefix);
if(stmt.suffix!=null){
if(parts.length<=1){
if(stmt.paramDefault!=null)
funcText.push(stmt.paramDefault);
}else{
for(var i=1;i<parts.length;i++){
if(i>1)
funcText.push(' ');
funcText.push(parts[i]);
}
}
funcText.push(stmt.suffix);
}
}
var emitSectionText=function(text,funcText){
if(text.length<=0)
return;
var nlPrefix=0;
var nlSuffix=text.length-1;
while(nlPrefix<text.length&&(text.charAt(nlPrefix)=='\n'))
nlPrefix++;
while(nlSuffix>=0&&(text.charAt(nlSuffix)==' '||text.charAt(nlSuffix)=='\t'))
nlSuffix--;
if(nlSuffix<nlPrefix)
nlSuffix=nlPrefix;
if(nlPrefix>0){
funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');
var s=text.substring(0,nlPrefix).replace('\n','\\n');
if(s.charAt(s.length-1)=='\n')
s=s.substring(0,s.length-1);
funcText.push(s);
funcText.push('");');
}
var lines=text.substring(nlPrefix,nlSuffix+1).split('\n');
for(var i=0;i<lines.length;i++){
emitSectionTextLine(lines[i],funcText);
if(i<lines.length-1)
funcText.push('_OUT.write("\\n");\n');
}
if(nlSuffix+1<text.length){
funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');
var s=text.substring(nlSuffix+1).replace('\n','\\n');
if(s.charAt(s.length-1)=='\n')
s=s.substring(0,s.length-1);
funcText.push(s);
funcText.push('");');
}
}
var emitSectionTextLine=function(line,funcText){
var endMarkPrev='}';
var endExprPrev=-1;
while(endExprPrev+endMarkPrev.length<line.length){
var begMark="${",endMark="}";
var begExpr=line.indexOf(begMark,endExprPrev+endMarkPrev.length);
if(begExpr<0)
break;
if(line.charAt(begExpr+2)=='%'){
begMark="${%";
endMark="%}";
}
var endExpr=line.indexOf(endMark,begExpr+begMark.length);
if(endExpr<0)
break;
emitText(line.substring(endExprPrev+endMarkPrev.length,begExpr),funcText);
var exprArr=line.substring(begExpr+begMark.length,endExpr).replace(/\|\|/g,"#@@#").split('|');
for(var k in exprArr){
if(exprArr[k].replace)
exprArr[k]=exprArr[k].replace(/#@@#/g,'||');
}
funcText.push('_OUT.write(');
emitExpression(exprArr,exprArr.length-1,funcText);
funcText.push(');');
endExprPrev=endExpr;
endMarkPrev=endMark;
}
emitText(line.substring(endExprPrev+endMarkPrev.length),funcText);
}
var emitText=function(text,funcText){
if(text==null||
text.length<=0)
return;
text=text.replace(/\\/g,'\\\\');
text=text.replace(/\n/g,'\\n');
text=text.replace(/"/g,'\\"');
funcText.push('_OUT.write("');
funcText.push(text);
funcText.push('");');
}
var emitExpression=function(exprArr,index,funcText){
var expr=exprArr[index];
if(index<=0){
funcText.push(expr);
return;
}
var parts=expr.split(':');
funcText.push('_MODIFIERS["');
funcText.push(parts[0]);
funcText.push('"](');
emitExpression(exprArr,index-1,funcText);
if(parts.length>1){
funcText.push(',');
funcText.push(parts[1]);
}
funcText.push(')');
}
var cleanWhiteSpace=function(result){
result=result.replace(/\t/g,"    ");
result=result.replace(/\r\n/g,"\n");
result=result.replace(/\r/g,"\n");
result=result.replace(/^(\s*\S*(\s+\S+)*)\s*$/,'$1');
return result;
}
var scrubWhiteSpace=function(result){
result=result.replace(/^\s+/g,"");
result=result.replace(/\s+$/g,"");
result=result.replace(/\s+/g," ");
result=result.replace(/^(\s*\S*(\s+\S+)*)\s*$/,'$1');
return result;
}
TrimPath.parseDOMTemplate=function(elementId,optDocument,optEtc){
if(optDocument==null)
optDocument=document;
var element=optDocument.getElementById(elementId);
var content=element.value;
if(content==null)
content=element.innerHTML;
content=content.replace(/\<%=/g,"${").replace(/\<%/g,"{").replace(/%\>/g,"}")
.replace(/\[%=/g,"${").replace(/\[%/g,"{").replace(/%\]/g,"}")
.replace(/\{%=/g,"${").replace(/\{%/g,"{").replace(/%\}/g,"}")
.replace(/<!--%=/g,"%{").replace(/<!--%/g,"{").replace(/%-->/g,"}")
.replace(/\/\*%=/g,"${").replace(/\/\*%/g,"{").replace(/%\*\//g,"}")
.replace(/&lt;/g,"<").replace(/&gt;/g,">");
return TrimPath.parseTemplate(content,elementId,optEtc);
}
TrimPath.processDOMTemplate=function(elementId,context,optFlags,optDocument,optEtc){
return TrimPath.parseDOMTemplate(elementId,optDocument,optEtc).process(context,optFlags);
}
})();
