var easyTemplate = function(s,d){
	if(!s||!d){return '';}
	var separate = function(s){
		var sRet = s.replace(/[\r\n\t]/g,'');
		sRet = sRet.replace(/'/g,'\\\'');
		sRet = sRet.replace(/<\/#([^>]*?)>/g,'{|}-$1{|}');
		sRet = sRet.replace(/<#(if|elseif)\s?(\(.*?\)[^>]*?)>/g,'{|}+$1 $2{|}');
		sRet = sRet.replace(/<#(([^\s>]*?)[^>]*?)>/g,'{|}+$1{|}');
		return sRet;
	};
	var parsing = function(s,d){
		var mName,vName,sTmp,aTmp,sFL,sEl,aList,aStm = [],aRet = [];
		aList = s.split(/\{\|\}/);
		var r = /\$\{([^\}]*?)\}/g,r2 = /\\'/g,r3 = /\s/;
		while(aList.length){
			sTmp = aList.shift();
			if(!sTmp){continue;}
			sFL = sTmp.charAt(0);
			if(sFL!=='+'&&sFL!=='-'){
				sTmp = '\''+sTmp+'\'',sEl = sTmp.replace(r,function(a,b){return '\'+('+b.replace(r2,'\'')+')+\''});
				aStm.push('aRet.push('+sEl+');');
				continue;
			}
			aTmp = sTmp.split(r3);
			switch(aTmp[0]){
				case '+et':mName = aTmp[1],vName = aTmp[2];aStm.push('aRet.push("<!--'+mName+' start--\>");');break;
				case '-et':aStm.push('aRet.push("<!--'+mName+' end--\>");');break;
				case '+if':aTmp.splice(0,1);aStm.push('if'+aTmp.join(' ')+'{');break;
				case '+elseif':aTmp.splice(0,1);aStm.push('}else if'+aTmp.join(' ')+'{');break;
				case '-if':aStm.push('}');break;
				case '+else':aStm.push('}else{');break;
				case '+list':aStm.push('if('+aTmp[1]+'.constructor === Array){var l='+aTmp[1]+'.length,list_idx=0,'+aTmp[3]+';for(var i=l;i--;){list_idx=(l-i-1);'+aTmp[3]+'='+aTmp[1]+'[list_idx];');break;
				case '-list':aStm.push('}}');break;
				default:break;
			}
		}
		(new Function(vName,'aRet',aStm.join('')))(d,aRet);
		return aRet.join('');
	};
	return parsing(separate(s),d);
};