(function(window,undefined){if(window.KindEditor){return;} if(!window.console){window.console={};} if(!console.log){console.log=function(){};} var _VERSION='4.1.10 (2013-11-23)',_ua=navigator.userAgent.toLowerCase(),_IE=_ua.indexOf('msie')>-1&&_ua.indexOf('opera')==-1,_NEWIE=_ua.indexOf('msie')==-1&&_ua.indexOf('trident')>-1,_GECKO=_ua.indexOf('gecko')>-1&&_ua.indexOf('khtml')==-1,_WEBKIT=_ua.indexOf('applewebkit')>-1,_OPERA=_ua.indexOf('opera')>-1,_MOBILE=_ua.indexOf('mobile')>-1,_IOS=/ipad|iphone|ipod/.test(_ua),_QUIRKS=document.compatMode!='CSS1Compat',_IERANGE=!window.getSelection,_matches=/(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua),_V=_matches?_matches[1]:'0',_TIME=new Date().getTime();function _isArray(val){if(!val){return false;} return Object.prototype.toString.call(val)==='[object Array]';} function _isFunction(val){if(!val){return false;} return Object.prototype.toString.call(val)==='[object Function]';} function _inArray(val,arr){for(var i=0,len=arr.length;i=0;} function _addUnit(val,unit){unit=unit||'px';return val&&/^\d+$/.test(val)?val+unit:val;} function _removeUnit(val){var match;return val&&(match=/(\d+)/.exec(val))?parseInt(match[1],10):0;} function _escape(val){return val.replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"');} function _unescape(val){return val.replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/&/g,'&');} function _toCamel(str){var arr=str.split('-');str='';_each(arr,function(key,val){str+=(key>0)?val.charAt(0).toUpperCase()+val.substr(1):val;});return str;} function _toHex(val){function hex(d){var s=parseInt(d,10).toString(16).toUpperCase();return s.length>1?s:'0'+s;} return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig,function($0,$1,$2,$3){return'#'+hex($1)+hex($2)+hex($3);});} function _toMap(val,delimiter){delimiter=delimiter===undefined?',':delimiter;var map={},arr=_isArray(val)?val:val.split(delimiter),match;_each(arr,function(key,val){if((match=/^(\d+)\.\.(\d+)$/.exec(val))){for(var i=parseInt(match[1],10);i<=parseInt(match[2],10);i++){map[i.toString()]=true;}}else{map[val]=true;}});return map;} function _toArray(obj,offset){return Array.prototype.slice.call(obj,offset||0);} function _undef(val,defaultVal){return val===undefined?defaultVal:val;} function _invalidUrl(url){return!url||/[<>"]/.test(url);} function _addParam(url,param){return url.indexOf('?')>=0?url+'&'+param:url+'?'+param;} function _extend(child,parent,proto){if(!proto){proto=parent;parent=null;} var childProto;if(parent){var fn=function(){};fn.prototype=parent.prototype;childProto=new fn();_each(proto,function(key,val){childProto[key]=val;});}else{childProto=proto;} childProto.constructor=child;child.prototype=childProto;child.parent=parent?parent.prototype:null;} function _json(text){var match;if((match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))){text=match[0];} var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});} if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){return eval('('+text+')');} throw'JSON parse error';} var _round=Math.round;var K={DEBUG:false,VERSION:_VERSION,IE:_IE,GECKO:_GECKO,WEBKIT:_WEBKIT,OPERA:_OPERA,V:_V,TIME:_TIME,each:_each,isArray:_isArray,isFunction:_isFunction,inArray:_inArray,inString:_inString,trim:_trim,addUnit:_addUnit,removeUnit:_removeUnit,escape:_escape,unescape:_unescape,toCamel:_toCamel,toHex:_toHex,toMap:_toMap,toArray:_toArray,undef:_undef,invalidUrl:_invalidUrl,addParam:_addParam,extend:_extend,json:_json};var _INLINE_TAG_MAP=_toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'),_BLOCK_TAG_MAP=_toMap('address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul'),_SINGLE_TAG_MAP=_toMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed'),_STYLE_TAG_MAP=_toMap('b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u'),_CONTROL_TAG_MAP=_toMap('img,table,input,textarea,button'),_PRE_TAG_MAP=_toMap('pre,style,script'),_NOSPLIT_TAG_MAP=_toMap('html,head,body,td,tr,table,ol,ul,li'),_AUTOCLOSE_TAG_MAP=_toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'),_FILL_ATTR_MAP=_toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'),_VALUE_TAG_MAP=_toMap('input,button,textarea,select');function _getBasePath(){var els=document.getElementsByTagName('script'),src;for(var i=0,len=els.length;i
'};var _useCapture=false;var _INPUT_KEY_MAP=_toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222');var _CURSORMOVE_KEY_MAP=_toMap('33..40');var _CHANGE_KEY_MAP={};_each(_INPUT_KEY_MAP,function(key,val){_CHANGE_KEY_MAP[key]=val;});_each(_CURSORMOVE_KEY_MAP,function(key,val){_CHANGE_KEY_MAP[key]=val;});function _bindEvent(el,type,fn){if(el.addEventListener){el.addEventListener(type,fn,_useCapture);}else if(el.attachEvent){el.attachEvent('on'+type,fn);}} function _unbindEvent(el,type,fn){if(el.removeEventListener){el.removeEventListener(type,fn,_useCapture);}else if(el.detachEvent){el.detachEvent('on'+type,fn);}} var _EVENT_PROPS=('altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,'+'data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,'+'pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which').split(',');function KEvent(el,event){this.init(el,event);} _extend(KEvent,{init:function(el,event){var self=this,doc=el.ownerDocument||el.document||el;self.event=event;_each(_EVENT_PROPS,function(key,val){self[val]=event[val];});if(!self.target){self.target=self.srcElement||doc;} if(self.target.nodeType===3){self.target=self.target.parentNode;} if(!self.relatedTarget&&self.fromElement){self.relatedTarget=self.fromElement===self.target?self.toElement:self.fromElement;} if(self.pageX==null&&self.clientX!=null){var d=doc.documentElement,body=doc.body;self.pageX=self.clientX+(d&&d.scrollLeft||body&&body.scrollLeft||0)-(d&&d.clientLeft||body&&body.clientLeft||0);self.pageY=self.clientY+(d&&d.scrollTop||body&&body.scrollTop||0)-(d&&d.clientTop||body&&body.clientTop||0);} if(!self.which&&((self.charCode||self.charCode===0)?self.charCode:self.keyCode)){self.which=self.charCode||self.keyCode;} if(!self.metaKey&&self.ctrlKey){self.metaKey=self.ctrlKey;} if(!self.which&&self.button!==undefined){self.which=(self.button&1?1:(self.button&2?3:(self.button&4?2:0)));} switch(self.which){case 186:self.which=59;break;case 187:case 107:case 43:self.which=61;break;case 189:case 45:self.which=109;break;case 42:self.which=106;break;case 47:self.which=111;break;case 78:self.which=110;break;} if(self.which>=96&&self.which<=105){self.which-=48;}},preventDefault:function(){var ev=this.event;if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},stopPropagation:function(){var ev=this.event;if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},stop:function(){this.preventDefault();this.stopPropagation();}});var _eventExpendo='kindeditor_'+_TIME,_eventId=0,_eventData={};function _getId(el){return el[_eventExpendo]||null;} function _setId(el){el[_eventExpendo]=++_eventId;return _eventId;} function _removeId(el){try{delete el[_eventExpendo];}catch(e){if(el.removeAttribute){el.removeAttribute(_eventExpendo);}}} function _bind(el,type,fn){if(type.indexOf(',')>=0){_each(type.split(','),function(){_bind(el,this,fn);});return;} var id=_getId(el);if(!id){id=_setId(el);} if(_eventData[id]===undefined){_eventData[id]={};} var events=_eventData[id][type];if(events&&events.length>0){_unbindEvent(el,type,events[0]);}else{_eventData[id][type]=[];_eventData[id].el=el;} events=_eventData[id][type];if(events.length===0){events[0]=function(e){var kevent=e?new KEvent(el,e):undefined;_each(events,function(i,event){if(i>0&&event){event.call(el,kevent);}});};} if(_inArray(fn,events)<0){events.push(fn);} _bindEvent(el,type,events[0]);} function _unbind(el,type,fn){if(type&&type.indexOf(',')>=0){_each(type.split(','),function(){_unbind(el,this,fn);});return;} var id=_getId(el);if(!id){return;} if(type===undefined){if(id in _eventData){_each(_eventData[id],function(key,events){if(key!='el'&&events.length>0){_unbindEvent(el,key,events[0]);}});delete _eventData[id];_removeId(el);} return;} if(!_eventData[id]){return;} var events=_eventData[id][type];if(events&&events.length>0){if(fn===undefined){_unbindEvent(el,type,events[0]);delete _eventData[id][type];}else{_each(events,function(i,event){if(i>0&&event===fn){events.splice(i,1);}});if(events.length==1){_unbindEvent(el,type,events[0]);delete _eventData[id][type];}} var count=0;_each(_eventData[id],function(){count++;});if(count<2){delete _eventData[id];_removeId(el);}}} function _fire(el,type){if(type.indexOf(',')>=0){_each(type.split(','),function(){_fire(el,this);});return;} var id=_getId(el);if(!id){return;} var events=_eventData[id][type];if(_eventData[id]&&events&&events.length>0){events[0]();}} function _ctrl(el,key,fn){var self=this;key=/^\d{2,}$/.test(key)?key:key.toUpperCase().charCodeAt(0);_bind(el,'keydown',function(e){if(e.ctrlKey&&e.which==key&&!e.shiftKey&&!e.altKey){fn.call(el);e.stop();}});} var _readyFinished=false;function _ready(fn){if(_readyFinished){fn(KindEditor);return;} var loaded=false;function readyFunc(){if(!loaded){loaded=true;fn(KindEditor);_readyFinished=true;}} function ieReadyFunc(){if(!loaded){try{document.documentElement.doScroll('left');}catch(e){setTimeout(ieReadyFunc,100);return;} readyFunc();}} function ieReadyStateFunc(){if(document.readyState==='complete'){readyFunc();}} if(document.addEventListener){_bind(document,'DOMContentLoaded',readyFunc);}else if(document.attachEvent){_bind(document,'readystatechange',ieReadyStateFunc);var toplevel=false;try{toplevel=window.frameElement==null;}catch(e){} if(document.documentElement.doScroll&&toplevel){ieReadyFunc();}} _bind(window,'load',readyFunc);} if(_IE){window.attachEvent('onunload',function(){_each(_eventData,function(key,events){if(events.el){_unbind(events.el);}});});} K.ctrl=_ctrl;K.ready=_ready;function _getCssList(css){var list={},reg=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g,match;while((match=reg.exec(css))){var key=_trim(match[1].toLowerCase()),val=_trim(_toHex(match[2]));list[key]=val;} return list;} function _getAttrList(tag){var list={},reg=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g,match;while((match=reg.exec(tag))){var key=(match[1]||match[2]||match[4]||match[6]).toLowerCase(),val=(match[2]?match[3]:(match[4]?match[5]:match[7]))||'';list[key]=val;} return list;} function _addClassToTag(tag,className){if(/\s+class\s*=/.test(tag)){tag=tag.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function($0,$1,$2,$3){if((' '+$2+' ').indexOf(' '+className+' ')<0){return $2===''?$1+className+$3:$1+$2+' '+className+$3;}else{return $0;}});}else{tag=tag.substr(0,tag.length-1)+' class="'+className+'">';} return tag;} function _formatCss(css){var str='';_each(_getCssList(css),function(key,val){str+=key+':'+val+';';});return str;} function _formatUrl(url,mode,host,pathname){mode=_undef(mode,'').toLowerCase();if(url.substr(0,5)!='data:'){url=url.replace(/([^:])\/\//g,'$1/');} if(_inArray(mode,['absolute','relative','domain'])<0){return url;} host=host||location.protocol+'//'+location.host;if(pathname===undefined){var m=location.pathname.match(/^(\/.*)\//);pathname=m?m[1]:'';} var match;if((match=/^(\w+:\/\/[^\/]*)/.exec(url))){if(match[1]!==host){return url;}}else if(/^\w+:/.test(url)){return url;} function getRealPath(path){var parts=path.split('/'),paths=[];for(var i=0,len=parts.length;i0){paths.pop();}}else if(part!==''&&part!='.'){paths.push(part);}} return'/'+paths.join('/');} if(/^\//.test(url)){url=host+getRealPath(url.substr(1));}else if(!/^\w+:\/\//.test(url)){url=host+getRealPath(pathname+'/'+url);} function getRelativePath(path,depth){if(url.substr(0,path.length)===path){var arr=[];for(var i=0;i0){prefix+='/'+arr.join('/');} if(pathname=='/'){prefix+='/';} return prefix+url.substr(path.length);}else{if((match=/^(.*)\//.exec(path))){return getRelativePath(match[1],++depth);}}} if(mode==='relative'){url=getRelativePath(host+pathname,0).substr(2);}else if(mode==='absolute'){if(url.substr(0,host.length)===host){url=url.substr(host.length);}} return url;} function _formatHtml(html,htmlTags,urlType,wellFormatted,indentChar){if(html==null){html='';} urlType=urlType||'';wellFormatted=_undef(wellFormatted,false);indentChar=_undef(indentChar,'\t');var fontSizeList='xx-small,x-small,small,medium,large,x-large,xx-large'.split(',');html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function($0,$1,$2,$3){return $1+$2.replace(/<(?:br|br\s[^>]*)>/ig,'\n')+$3;});html=html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig,'

');html=html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig,'$1
$2');html=html.replace(/\u200B/g,'');html=html.replace(/\u00A9/g,'©');html=html.replace(/\u00AE/g,'®');html=html.replace(/<[^>]+/g,function($0){return $0.replace(/\s+/g,' ');});var htmlTagMap={};if(htmlTags){_each(htmlTags,function(key,val){var arr=key.split(',');for(var i=0,len=arr.length;i]*)>)([\s\S]*?)(<\/script>)/ig,'');} if(!htmlTagMap.style){html=html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig,'');}} var re=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g;var tagStack=[];html=html.replace(re,function($0,$1,$2,$3,$4,$5,$6){var full=$0,startNewline=$1||'',startSlash=$2||'',tagName=$3.toLowerCase(),attr=$4||'',endSlash=$5?' '+$5:'',endNewline=$6||'';if(htmlTags&&!htmlTagMap[tagName]){return'';} if(endSlash===''&&_SINGLE_TAG_MAP[tagName]){endSlash=' /';} if(_INLINE_TAG_MAP[tagName]){if(startNewline){startNewline=' ';} if(endNewline){endNewline=' ';}} if(_PRE_TAG_MAP[tagName]){if(startSlash){endNewline='\n';}else{startNewline='\n';}} if(wellFormatted&&tagName=='br'){endNewline='\n';} if(_BLOCK_TAG_MAP[tagName]&&!_PRE_TAG_MAP[tagName]){if(wellFormatted){if(startSlash&&tagStack.length>0&&tagStack[tagStack.length-1]===tagName){tagStack.pop();}else{tagStack.push(tagName);} startNewline='\n';endNewline='\n';for(var i=0,len=startSlash?tagStack.length:tagStack.length-1;i=0){attrMap[key]=_formatUrl(val,urlType);} if(htmlTags&&key!=='style'&&!htmlTagMap[tagName]['*']&&!htmlTagMap[tagName][key]||tagName==='body'&&key==='contenteditable'||/^kindeditor_\d+$/.test(key)){delete attrMap[key];} if(key==='style'&&val!==''){var styleMap=_getCssList(val);_each(styleMap,function(k,v){if(htmlTags&&!htmlTagMap[tagName].style&&!htmlTagMap[tagName]['.'+k]){delete styleMap[k];}});var style='';_each(styleMap,function(k,v){style+=k+':'+v+';';});attrMap.style=style;}});attr='';_each(attrMap,function(key,val){if(key==='style'&&val===''){return;} val=val.replace(/"/g,'"');attr+=' '+key+'="'+val+'"';});} if(tagName==='font'){tagName='span';} return startNewline+'<'+startSlash+tagName+attr+endSlash+'>'+endNewline;});html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function($0,$1,$2,$3){return $1+$2.replace(/\n/g,'\n')+$3;});html=html.replace(/\n\s*\n/g,'\n');html=html.replace(/\n/g,'\n');return _trim(html);} function _clearMsWord(html,htmlTags){html=html.replace(//ig,'').replace(//ig,'').replace(/]*>[\s\S]*?<\/style>/ig,'').replace(/]*>[\s\S]*?<\/script>/ig,'').replace(/]+>[\s\S]*?<\/w:[^>]+>/ig,'').replace(/]+>[\s\S]*?<\/o:[^>]+>/ig,'').replace(/[\s\S]*?<\/xml>/ig,'').replace(/<(?:table|td)[^>]*>/ig,function(full){return full.replace(/border-bottom:([#\w\s]+)/ig,'border:$1');});return _formatHtml(html,htmlTags);} function _mediaType(src){if(/\.(rm|rmvb)(\?|$)/i.test(src)){return'audio/x-pn-realaudio-plugin';} if(/\.(swf|flv)(\?|$)/i.test(src)){return'application/x-shockwave-flash';} return'video/x-ms-asf-plugin';} function _mediaClass(type){if(/realaudio/i.test(type)){return'ke-rm';} if(/flash/i.test(type)){return'ke-flash';} return'ke-media';} function _mediaAttrs(srcTag){return _getAttrList(unescape(srcTag));} function _mediaEmbed(attrs){var html='0){style+='width:'+width+'px;';} if(/\D/.test(height)){style+='height:'+height+';';}else if(height>0){style+='height:'+height+'px;';} var html='';return html;} function _tmpl(str,data){var fn=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};"+"with(obj){p.push('"+ str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return data?fn(data):fn;} K.formatUrl=_formatUrl;K.formatHtml=_formatHtml;K.getCssList=_getCssList;K.getAttrList=_getAttrList;K.mediaType=_mediaType;K.mediaAttrs=_mediaAttrs;K.mediaEmbed=_mediaEmbed;K.mediaImg=_mediaImg;K.clearMsWord=_clearMsWord;K.tmpl=_tmpl;function _contains(nodeA,nodeB){if(nodeA.nodeType==9&&nodeB.nodeType!=9){return true;} while((nodeB=nodeB.parentNode)){if(nodeB==nodeA){return true;}} return false;} var _getSetAttrDiv=document.createElement('div');_getSetAttrDiv.setAttribute('className','t');var _GET_SET_ATTRIBUTE=_getSetAttrDiv.className!=='t';function _getAttr(el,key){key=key.toLowerCase();var val=null;if(!_GET_SET_ATTRIBUTE&&el.nodeName.toLowerCase()!='script'){var div=el.ownerDocument.createElement('div');div.appendChild(el.cloneNode(false));var list=_getAttrList(_unescape(div.innerHTML));if(key in list){val=list[key];}}else{try{val=el.getAttribute(key,2);}catch(e){val=el.getAttribute(key,1);}} if(key==='style'&&val!==null){val=_formatCss(val);} return val;} function _queryAll(expr,root){var exprList=expr.split(',');if(exprList.length>1){var mergedResults=[];_each(exprList,function(){_each(_queryAll(this,root),function(){if(_inArray(this,mergedResults)<0){mergedResults.push(this);}});});return mergedResults;} root=root||document;function escape(str){if(typeof str!='string'){return str;} return str.replace(/([^\w\-])/g,'\\$1');} function stripslashes(str){return str.replace(/\\/g,'');} function cmpTag(tagA,tagB){return tagA==='*'||tagA.toLowerCase()===escape(tagB.toLowerCase());} function byId(id,tag,root){var arr=[],doc=root.ownerDocument||root,el=doc.getElementById(stripslashes(id));if(el){if(cmpTag(tag,el.nodeName)&&_contains(root,el)){arr.push(el);}} return arr;} function byClass(className,tag,root){var doc=root.ownerDocument||root,arr=[],els,i,len,el;if(root.getElementsByClassName){els=root.getElementsByClassName(stripslashes(className));for(i=0,len=els.length;i-1){arr.push(el);}}}} return arr;} function byName(name,tag,root){var arr=[],doc=root.ownerDocument||root,els=doc.getElementsByName(stripslashes(name)),el;for(var i=0,len=els.length;i])+)/.exec(expr);var tag=matches?matches[1]:'*';if((matches=/#((?:[\w\-]|\\.)+)$/.exec(expr))){arr=byId(matches[1],tag,root);}else if((matches=/\.((?:[\w\-]|\\.)+)$/.exec(expr))){arr=byClass(matches[1],tag,root);}else if((matches=/\[((?:[\w\-]|\\.)+)\]/.exec(expr))){arr=byAttr(matches[1].toLowerCase(),null,tag,root);}else if((matches=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(expr))){var key=matches[1].toLowerCase(),val=matches[2];if(key==='id'){arr=byId(val,tag,root);}else if(key==='class'){arr=byClass(val,tag,root);}else if(key==='name'){arr=byName(val,tag,root);}else{arr=byAttr(key,val,tag,root);}}else{var els=root.getElementsByTagName(tag),el;for(var i=0,len=els.length;i])+|[\s>])/g;while((arr=re.exec(expr))){if(arr[1]!==' '){parts.push(arr[1]);}} var results=[];if(parts.length==1){return select(parts[0],root);} var isChild=false,part,els,subResults,val,v,i,j,k,length,len,l;for(i=0,lenth=parts.length;i'){isChild=true;continue;} if(i>0){els=[];for(j=0,len=results.length;j0?arr[0]:null;} K.query=_query;K.queryAll=_queryAll;function _get(val){return K(val)[0];} function _getDoc(node){if(!node){return document;} return node.ownerDocument||node.document||node;} function _getWin(node){if(!node){return window;} var doc=_getDoc(node);return doc.parentWindow||doc.defaultView;} function _setHtml(el,html){if(el.nodeType!=1){return;} var doc=_getDoc(el);try{el.innerHTML=''+html;var temp=doc.getElementById('__kindeditor_temp_tag__');temp.parentNode.removeChild(temp);}catch(e){K(el).empty();K('@'+html,doc).each(function(){el.appendChild(this);});}} function _hasClass(el,cls){return _inString(cls,el.className,' ');} function _setAttr(el,key,val){if(_IE&&_V<8&&key.toLowerCase()=='class'){key='className';} el.setAttribute(key,''+val);} function _removeAttr(el,key){if(_IE&&_V<8&&key.toLowerCase()=='class'){key='className';} _setAttr(el,key,'');el.removeAttribute(key);} function _getNodeName(node){if(!node||!node.nodeName){return'';} return node.nodeName.toLowerCase();} function _computedCss(el,key){var self=this,win=_getWin(el),camelKey=_toCamel(key),val='';if(win.getComputedStyle){var style=win.getComputedStyle(el,null);val=style[camelKey]||style.getPropertyValue(key)||el.style[camelKey];}else if(el.currentStyle){val=el.currentStyle[camelKey]||el.style[camelKey];} return val;} function _hasVal(node){return!!_VALUE_TAG_MAP[_getNodeName(node)];} function _docElement(doc){doc=doc||document;return _QUIRKS?doc.body:doc.documentElement;} function _docHeight(doc){var el=_docElement(doc);return Math.max(el.scrollHeight,el.clientHeight);} function _docWidth(doc){var el=_docElement(doc);return Math.max(el.scrollWidth,el.clientWidth);} function _getScrollPos(doc){doc=doc||document;var x,y;if(_IE||_NEWIE||_OPERA){x=_docElement(doc).scrollLeft;y=_docElement(doc).scrollTop;}else{x=_getWin(doc).scrollX;y=_getWin(doc).scrollY;} return{x:x,y:y};} function KNode(node){this.init(node);} _extend(KNode,{init:function(node){var self=this;node=_isArray(node)?node:[node];var length=0;for(var i=0,len=node.length;i0?self[0].nodeType:null;self.win=_getWin(self[0]);},each:function(fn){var self=this;for(var i=0;i0?list.eq(0):null;},last:function(){var list=this.children();return list.length>0?list.eq(list.length-1):null;},index:function(){if(this.length<1){return-1;} var i=-1,sibling=this[0];while(sibling){i++;sibling=sibling.previousSibling;} return i;},prev:function(){if(this.length<1){return null;} var node=this[0].previousSibling;return node?new KNode(node):null;},next:function(){if(this.length<1){return null;} var node=this[0].nextSibling;return node?new KNode(node):null;},scan:function(fn,order){if(this.length<1){return;} order=(order===undefined)?true:order;function walk(node){var n=order?node.firstChild:node.lastChild;while(n){var next=order?n.nextSibling:n.previousSibling;if(fn(n)===false){return false;} if(walk(n)===false){return false;} n=next;}} walk(this[0]);return this;}});_each(('blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,'+'mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,'+'change,select,submit,keydown,keypress,keyup,error,contextmenu').split(','),function(i,type){KNode.prototype[type]=function(fn){return fn?this.bind(type,fn):this.fire(type);};});var _K=K;K=function(expr,root){if(expr===undefined||expr===null){return;} function newNode(node){if(!node[0]){node=[];} return new KNode(node);} if(typeof expr==='string'){if(root){root=_get(root);} var length=expr.length;if(expr.charAt(0)==='@'){expr=expr.substr(1);} if(expr.length!==length||/<.+>/.test(expr)){var doc=root?root.ownerDocument||root:document,div=doc.createElement('div'),list=[];div.innerHTML=''+expr;for(var i=0,len=div.childNodes.length;i0){centerNode=cloneNode.splitText(startOffset);}else{centerNode=cloneNode;} if(endOffset0){center=node.splitText(startOffset);range.setStart(node,startOffset);} if(endOffset=0&&incStart<=0){incStart=testRange.compareBoundaryPoints(_START_TO_START,range);} if(incStart>=0&&incEnd<=0){incEnd=testRange.compareBoundaryPoints(_END_TO_END,range);} if(incEnd>=0&&end<=0){end=testRange.compareBoundaryPoints(_END_TO_START,range);} if(end>=0){return false;} nextNode=node.nextSibling;if(start>0){if(node.nodeType==1){if(incStart>=0&&incEnd<=0){if(isCopy){frag.appendChild(node.cloneNode(true));} if(isDelete){nodeList.push(node);}}else{var childFlag;if(isCopy){childFlag=node.cloneNode(false);frag.appendChild(childFlag);} if(extractNodes(node,childFlag)===false){return false;}}}else if(node.nodeType==3){var textNode;if(node==copyRange.startContainer){textNode=splitTextNode(node,copyRange.startOffset,node.nodeValue.length);}else if(node==copyRange.endContainer){textNode=splitTextNode(node,0,copyRange.endOffset);}else{textNode=splitTextNode(node,0,node.nodeValue.length);} if(isCopy){try{frag.appendChild(textNode);}catch(e){}}}} node=nextNode;}} extractNodes(ancestor,frag);if(isDelete){range.up().collapse(true);} for(var i=0,len=nodeList.length;i0){startPos+=nodeRange.text.replace(/\r\n|\n|\r/g,'').length;}else{startPos=0;} if(dummy){K(dummy).remove();}}else if(node.nodeType==3){testRange.moveStart('character',node.nodeValue.length);startPos+=node.nodeValue.length;} if(cmp<0){startNode=node;}} if(cmp<0&&startNode.nodeType==1){return{node:parent,offset:K(parent.lastChild).index()+1};} if(cmp>0){while(startNode.nextSibling&&startNode.nodeType==1){startNode=startNode.nextSibling;}} testRange=rng.duplicate();_moveToElementText(testRange,parent);testRange.setEndPoint('StartToEnd',pointRange);startPos-=testRange.text.replace(/\r\n|\n|\r/g,'').length;if(cmp>0&&startNode.nodeType==3){var prevNode=startNode.previousSibling;while(prevNode&&prevNode.nodeType==3){startPos-=prevNode.nodeValue.length;prevNode=prevNode.previousSibling;}} return{node:startNode,offset:startPos};} function _getEndRange(node,offset){var doc=node.ownerDocument||node,range=doc.body.createTextRange();if(doc==node){range.collapse(true);return range;} if(node.nodeType==1&&node.childNodes.length>0){var children=node.childNodes,isStart,child;if(offset===0){child=children[0];isStart=true;}else{child=children[offset-1];isStart=false;} if(!child){return range;} if(K(child).name==='head'){if(offset===1){isStart=true;} if(offset===2){isStart=false;} range.collapse(isStart);return range;} if(child.nodeType==1){var kchild=K(child),span;if(kchild.isControl()){span=doc.createElement('span');if(isStart){kchild.before(span);}else{kchild.after(span);} child=span;} _moveToElementText(range,child);range.collapse(isStart);if(span){K(span).remove();} return range;} node=child;offset=isStart?0:child.nodeValue.length;} var dummy=doc.createElement('span');K(node).before(dummy);_moveToElementText(range,dummy);range.moveStart('character',offset);K(dummy).remove();return range;} function _toRange(rng){var doc,range;function tr2td(start){if(K(start.node).name=='tr'){start.node=start.node.cells[start.offset];start.offset=0;}} if(_IERANGE){if(rng.item){doc=_getDoc(rng.item(0));range=new KRange(doc);range.selectNode(rng.item(0));return range;} doc=rng.parentElement().ownerDocument;var start=_getStartEnd(rng,true),end=_getStartEnd(rng,false);tr2td(start);tr2td(end);range=new KRange(doc);range.setStart(start.node,start.offset);range.setEnd(end.node,end.offset);return range;} var startContainer=rng.startContainer;doc=startContainer.ownerDocument||startContainer;range=new KRange(doc);range.setStart(startContainer,rng.startOffset);range.setEnd(rng.endContainer,rng.endOffset);return range;} function KRange(doc){this.init(doc);} _extend(KRange,{init:function(doc){var self=this;self.startContainer=doc;self.startOffset=0;self.endContainer=doc;self.endOffset=0;self.collapsed=true;self.doc=doc;},commonAncestor:function(){function getParents(node){var parents=[];while(node){parents.push(node);node=node.parentNode;} return parents;} var parentsA=getParents(this.startContainer),parentsB=getParents(this.endContainer),i=0,lenA=parentsA.length,lenB=parentsB.length,parentA,parentB;while(++i){parentA=parentsA[lenA-i];parentB=parentsB[lenB-i];if(!parentA||!parentB||parentA!==parentB){break;}} return parentsA[lenA-i+1];},setStart:function(node,offset){var self=this,doc=self.doc;self.startContainer=node;self.startOffset=offset;if(self.endContainer===doc){self.endContainer=node;self.endOffset=offset;} return _updateCollapsed(this);},setEnd:function(node,offset){var self=this,doc=self.doc;self.endContainer=node;self.endOffset=offset;if(self.startContainer===doc){self.startContainer=node;self.startOffset=offset;} return _updateCollapsed(this);},setStartBefore:function(node){return this.setStart(node.parentNode||this.doc,K(node).index());},setStartAfter:function(node){return this.setStart(node.parentNode||this.doc,K(node).index()+1);},setEndBefore:function(node){return this.setEnd(node.parentNode||this.doc,K(node).index());},setEndAfter:function(node){return this.setEnd(node.parentNode||this.doc,K(node).index()+1);},selectNode:function(node){return this.setStartBefore(node).setEndAfter(node);},selectNodeContents:function(node){var knode=K(node);if(knode.type==3||knode.isSingle()){return this.selectNode(node);} var children=knode.children();if(children.length>0){return this.setStartBefore(children[0]).setEndAfter(children[children.length-1]);} return this.setStart(node,0).setEnd(node,0);},collapse:function(toStart){if(toStart){return this.setEnd(this.startContainer,this.startOffset);} return this.setStart(this.endContainer,this.endOffset);},compareBoundaryPoints:function(how,range){var rangeA=this.get(),rangeB=range.get();if(_IERANGE){var arr={};arr[_START_TO_START]='StartToStart';arr[_START_TO_END]='EndToStart';arr[_END_TO_END]='EndToEnd';arr[_END_TO_START]='StartToEnd';var cmp=rangeA.compareEndPoints(arr[how],rangeB);if(cmp!==0){return cmp;} var nodeA,nodeB,nodeC,posA,posB;if(how===_START_TO_START||how===_END_TO_START){nodeA=this.startContainer;posA=this.startOffset;} if(how===_START_TO_END||how===_END_TO_END){nodeA=this.endContainer;posA=this.endOffset;} if(how===_START_TO_START||how===_START_TO_END){nodeB=range.startContainer;posB=range.startOffset;} if(how===_END_TO_END||how===_END_TO_START){nodeB=range.endContainer;posB=range.endOffset;} if(nodeA===nodeB){var diff=posA-posB;return diff>0?1:(diff<0?-1:0);} nodeC=nodeB;while(nodeC&&nodeC.parentNode!==nodeA){nodeC=nodeC.parentNode;} if(nodeC){return K(nodeC).index()>=posA?-1:1;} nodeC=nodeA;while(nodeC&&nodeC.parentNode!==nodeB){nodeC=nodeC.parentNode;} if(nodeC){return K(nodeC).index()>=posB?1:-1;} nodeC=K(nodeB).next();if(nodeC&&nodeC.contains(nodeA)){return 1;} nodeC=K(nodeA).next();if(nodeC&&nodeC.contains(nodeB)){return-1;}}else{return rangeA.compareBoundaryPoints(how,rangeB);}},cloneRange:function(){return new KRange(this.doc).setStart(this.startContainer,this.startOffset).setEnd(this.endContainer,this.endOffset);},toString:function(){var rng=this.get(),str=_IERANGE?rng.text:rng.toString();return str.replace(/\r\n|\n|\r/g,'');},cloneContents:function(){return _copyAndDelete(this,true,false);},deleteContents:function(){return _copyAndDelete(this,false,true);},extractContents:function(){return _copyAndDelete(this,true,true);},insertNode:function(node){var self=this,sc=self.startContainer,so=self.startOffset,ec=self.endContainer,eo=self.endOffset,firstChild,lastChild,c,nodeCount=1;if(node.nodeName.toLowerCase()==='#document-fragment'){firstChild=node.firstChild;lastChild=node.lastChild;nodeCount=node.childNodes.length;} if(sc.nodeType==1){c=sc.childNodes[so];if(c){sc.insertBefore(node,c);if(sc===ec){eo+=nodeCount;}}else{sc.appendChild(node);}}else if(sc.nodeType==3){if(so===0){sc.parentNode.insertBefore(node,sc);if(sc.parentNode===ec){eo+=nodeCount;}}else if(so>=sc.nodeValue.length){if(sc.nextSibling){sc.parentNode.insertBefore(node,sc.nextSibling);}else{sc.parentNode.appendChild(node);}}else{if(so>0){c=sc.splitText(so);}else{c=sc;} sc.parentNode.insertBefore(node,c);if(sc===ec){ec=c;eo-=so;}}} if(firstChild){self.setStartBefore(firstChild).setEndAfter(lastChild);}else{self.selectNode(node);} if(self.compareBoundaryPoints(_END_TO_END,self.cloneRange().setEnd(ec,eo))>=1){return self;} return self.setEnd(ec,eo);},surroundContents:function(node){node.appendChild(this.extractContents());return this.insertNode(node).selectNode(node);},isControl:function(){var self=this,sc=self.startContainer,so=self.startOffset,ec=self.endContainer,eo=self.endOffset,rng;return sc.nodeType==1&&sc===ec&&so+1===eo&&K(sc.childNodes[so]).isControl();},get:function(hasControlRange){var self=this,doc=self.doc,node,rng;if(!_IERANGE){rng=doc.createRange();try{rng.setStart(self.startContainer,self.startOffset);rng.setEnd(self.endContainer,self.endOffset);}catch(e){} return rng;} if(hasControlRange&&self.isControl()){rng=doc.body.createControlRange();rng.addElement(self.startContainer.childNodes[self.startOffset]);return rng;} var range=self.cloneRange().down();rng=doc.body.createTextRange();rng.setEndPoint('StartToStart',_getEndRange(range.startContainer,range.startOffset));rng.setEndPoint('EndToStart',_getEndRange(range.endContainer,range.endOffset));return rng;},html:function(){return K(this.cloneContents()).outer();},down:function(){var self=this;function downPos(node,pos,isStart){if(node.nodeType!=1){return;} var children=K(node).children();if(children.length===0){return;} var left,right,child,offset;if(pos>0){left=children.eq(pos-1);} if(pos0&&(child=self.endContainer.childNodes[self.endOffset-1])&&child.nodeType==1&&!K(child).isSingle()){self.setEnd(child,child.childNodes.length);} return self;},createBookmark:function(serialize){var self=this,doc=self.doc,endNode,startNode=K('',doc)[0];startNode.id='__kindeditor_bookmark_start_'+(_BOOKMARK_ID++)+'__';if(!self.collapsed){endNode=startNode.cloneNode(true);endNode.id='__kindeditor_bookmark_end_'+(_BOOKMARK_ID++)+'__';} if(endNode){self.cloneRange().collapse(false).insertNode(endNode).setEndBefore(endNode);} self.insertNode(startNode).setStartAfter(startNode);return{start:serialize?'#'+startNode.id:startNode,end:endNode?(serialize?'#'+endNode.id:endNode):null};},moveToBookmark:function(bookmark){var self=this,doc=self.doc,start=K(bookmark.start,doc),end=bookmark.end?K(bookmark.end,doc):null;if(!start||start.length<1){return self;} self.setStartBefore(start[0]);start.remove();if(end&&end.length>0){self.setEndBefore(end[0]);end.remove();}else{self.collapse(true);} return self;},dump:function(){console.log('--------------------');console.log(this.startContainer.nodeType==3?this.startContainer.nodeValue:this.startContainer,this.startOffset);console.log(this.endContainer.nodeType==3?this.endContainer.nodeValue:this.endContainer,this.endOffset);}});function _range(mixed){if(!mixed.nodeName){return mixed.constructor===KRange?mixed:_toRange(mixed);} return new KRange(mixed);} K.RangeClass=KRange;K.range=_range;K.START_TO_START=_START_TO_START;K.START_TO_END=_START_TO_END;K.END_TO_END=_END_TO_END;K.END_TO_START=_END_TO_START;function _nativeCommand(doc,key,val){try{doc.execCommand(key,false,val);}catch(e){}} function _nativeCommandValue(doc,key){var val='';try{val=doc.queryCommandValue(key);}catch(e){} if(typeof val!=='string'){val='';} return val;} function _getSel(doc){var win=_getWin(doc);return _IERANGE?doc.selection:win.getSelection();} function _getRng(doc){var sel=_getSel(doc),rng;try{if(sel.rangeCount>0){rng=sel.getRangeAt(0);}else{rng=sel.createRange();}}catch(e){} if(_IERANGE&&(!rng||(!rng.item&&rng.parentElement().ownerDocument!==doc))){return null;} return rng;} function _singleKeyMap(map){var newMap={},arr,v;_each(map,function(key,val){arr=key.split(',');for(var i=0,len=arr.length;i]+>/g,'')==='';} function _mergeWrapper(a,b){a=a.clone(true);var lastA=_getInnerNode(a),childA=a,merged=false;while(b){while(childA){if(childA.name===b.name){_mergeAttrs(childA,b.attr(),b.css());merged=true;} childA=childA.first();} if(!merged){lastA.append(b.clone(false));} merged=false;b=b.first();} return a;} function _wrapNode(knode,wrapper){wrapper=wrapper.clone(true);if(knode.type==3){_getInnerNode(wrapper).append(knode.clone(false));knode.replaceWith(wrapper);return wrapper;} var nodeWrapper=knode,child;while((child=knode.first())&&child.children().length==1){knode=child;} child=knode.first();var frag=knode.doc.createDocumentFragment();while(child){frag.appendChild(child[0]);child=child.next();} wrapper=_mergeWrapper(nodeWrapper,wrapper);if(frag.firstChild){_getInnerNode(wrapper).append(frag);} nodeWrapper.replaceWith(wrapper);return wrapper;} function _mergeAttrs(knode,attrs,styles){_each(attrs,function(key,val){if(key!=='style'){knode.attr(key,val);}});_each(styles,function(key,val){knode.css(key,val);});} function _inPreElement(knode){while(knode&&knode.name!='body'){if(_PRE_TAG_MAP[knode.name]||knode.name=='div'&&knode.hasClass('ke-script')){return true;} knode=knode.parent();} return false;} function KCmd(range){this.init(range);} _extend(KCmd,{init:function(range){var self=this,doc=range.doc;self.doc=doc;self.win=_getWin(doc);self.sel=_getSel(doc);self.range=range;},selection:function(forceReset){var self=this,doc=self.doc,rng=_getRng(doc);self.sel=_getSel(doc);if(rng){self.range=_range(rng);if(K(self.range.startContainer).name=='html'){self.range.selectNodeContents(doc.body).collapse(false);} return self;} if(forceReset){self.range.selectNodeContents(doc.body).collapse(false);} return self;},select:function(hasDummy){hasDummy=_undef(hasDummy,true);var self=this,sel=self.sel,range=self.range.cloneRange().shrink(),sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset,doc=_getDoc(sc),win=self.win,rng,hasU200b=false;if(hasDummy&&sc.nodeType==1&&range.collapsed){if(_IERANGE){var dummy=K(' ',doc);range.insertNode(dummy[0]);rng=doc.body.createTextRange();try{rng.moveToElementText(dummy[0]);}catch(ex){} rng.collapse(false);rng.select();dummy.remove();win.focus();return self;} if(_WEBKIT){var children=sc.childNodes;if(K(sc).isInline()||so>0&&K(children[so-1]).isInline()||children[so]&&K(children[so]).isInline()){range.insertNode(doc.createTextNode('\u200B'));hasU200b=true;}}} if(_IERANGE){try{rng=range.get(true);rng.select();}catch(e){}}else{if(hasU200b){range.collapse(false);} rng=range.get(true);sel.removeAllRanges();sel.addRange(rng);if(doc!==document){var pos=K(rng.endContainer).pos();win.scrollTo(pos.x,pos.y);}} win.focus();return self;},wrap:function(val){var self=this,doc=self.doc,range=self.range,wrapper;wrapper=K(val,doc);if(range.collapsed){range.shrink();range.insertNode(wrapper[0]).selectNodeContents(wrapper[0]);return self;} if(wrapper.isBlock()){var copyWrapper=wrapper.clone(true),child=copyWrapper;while(child.first()){child=child.first();} child.append(range.extractContents());range.insertNode(copyWrapper[0]).selectNode(copyWrapper[0]);return self;} range.enlarge();var bookmark=range.createBookmark(),ancestor=range.commonAncestor(),isStart=false;K(ancestor).scan(function(node){if(!isStart&&node==bookmark.start){isStart=true;return;} if(isStart){if(node==bookmark.end){return false;} var knode=K(node);if(_inPreElement(knode)){return;} if(knode.type==3&&_trim(node.nodeValue).length>0){var parent;while((parent=knode.parent())&&parent.isStyle()&&parent.children().length==1){knode=parent;} _wrapNode(knode,wrapper);}}});range.moveToBookmark(bookmark);return self;},split:function(isStart,map){var range=this.range,doc=range.doc;var tempRange=range.cloneRange().collapse(isStart);var node=tempRange.startContainer,pos=tempRange.startOffset,parent=node.nodeType==3?node.parentNode:node,needSplit=false,knode;while(parent&&parent.parentNode){knode=K(parent);if(map){if(!knode.isStyle()){break;} if(!_hasAttrOrCss(knode,map)){break;}}else{if(_NOSPLIT_TAG_MAP[knode.name]){break;}} needSplit=true;parent=parent.parentNode;} if(needSplit){var dummy=doc.createElement('span');range.cloneRange().collapse(!isStart).insertNode(dummy);if(isStart){tempRange.setStartBefore(parent.firstChild).setEnd(node,pos);}else{tempRange.setStart(node,pos).setEndAfter(parent.lastChild);} var frag=tempRange.extractContents(),first=frag.firstChild,last=frag.lastChild;if(isStart){tempRange.insertNode(frag);range.setStartAfter(last).setEndBefore(dummy);}else{parent.appendChild(frag);range.setStartBefore(dummy).setEndBefore(first);} var dummyParent=dummy.parentNode;if(dummyParent==range.endContainer){var prev=K(dummy).prev(),next=K(dummy).next();if(prev&&next&&prev.type==3&&next.type==3){range.setEnd(prev[0],prev[0].nodeValue.length);}else if(!isStart){range.setEnd(range.endContainer,range.endOffset-1);}} dummyParent.removeChild(dummy);} return this;},remove:function(map){var self=this,doc=self.doc,range=self.range;range.enlarge();if(range.startOffset===0){var ksc=K(range.startContainer),parent;while((parent=ksc.parent())&&parent.isStyle()&&parent.children().length==1){ksc=parent;} range.setStart(ksc[0],0);ksc=K(range.startContainer);if(ksc.isBlock()){_removeAttrOrCss(ksc,map);} var kscp=ksc.parent();if(kscp&&kscp.isBlock()){_removeAttrOrCss(kscp,map);}} var sc,so;if(range.collapsed){self.split(true,map);sc=range.startContainer;so=range.startOffset;if(so>0){var sb=K(sc.childNodes[so-1]);if(sb&&_isEmptyNode(sb)){sb.remove();range.setStart(sc,so-1);}} var sa=K(sc.childNodes[so]);if(sa&&_isEmptyNode(sa)){sa.remove();} if(_isEmptyNode(sc)){range.startBefore(sc);sc.remove();} range.collapse(true);return self;} self.split(true,map);self.split(false,map);var startDummy=doc.createElement('span'),endDummy=doc.createElement('span');range.cloneRange().collapse(false).insertNode(endDummy);range.cloneRange().collapse(true).insertNode(startDummy);var nodeList=[],cmpStart=false;K(range.commonAncestor()).scan(function(node){if(!cmpStart&&node==startDummy){cmpStart=true;return;} if(node==endDummy){return false;} if(cmpStart){nodeList.push(node);}});K(startDummy).remove();K(endDummy).remove();sc=range.startContainer;so=range.startOffset;var ec=range.endContainer,eo=range.endOffset;if(so>0){var startBefore=K(sc.childNodes[so-1]);if(startBefore&&_isEmptyNode(startBefore)){startBefore.remove();range.setStart(sc,so-1);if(sc==ec){range.setEnd(ec,eo-1);}} var startAfter=K(sc.childNodes[so]);if(startAfter&&_isEmptyNode(startAfter)){startAfter.remove();if(sc==ec){range.setEnd(ec,eo-1);}}} var endAfter=K(ec.childNodes[range.endOffset]);if(endAfter&&_isEmptyNode(endAfter)){endAfter.remove();} var bookmark=range.createBookmark(true);_each(nodeList,function(i,node){_removeAttrOrCss(K(node),map);});range.moveToBookmark(bookmark);return self;},commonNode:function(map){var range=this.range;var ec=range.endContainer,eo=range.endOffset,node=(ec.nodeType==3||eo===0)?ec:ec.childNodes[eo-1];function find(node){var child=node,parent=node;while(parent){if(_hasAttrOrCss(K(parent),map)){return K(parent);} parent=parent.parentNode;} while(child&&(child=child.lastChild)){if(_hasAttrOrCss(K(child),map)){return K(child);}} return null;} var cNode=find(node);if(cNode){return cNode;} if(node.nodeType==1||(ec.nodeType==3&&eo===0)){var prev=K(node).prev();if(prev){return find(prev);}} return null;},commonAncestor:function(tagName){var range=this.range,sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset,startNode=(sc.nodeType==3||so===0)?sc:sc.childNodes[so-1],endNode=(ec.nodeType==3||eo===0)?ec:ec.childNodes[eo-1];function find(node){while(node){if(node.nodeType==1){if(node.tagName.toLowerCase()===tagName){return node;}} node=node.parentNode;} return null;} var start=find(startNode),end=find(endNode);if(start&&end&&start===end){return K(start);} return null;},state:function(key){var self=this,doc=self.doc,bool=false;try{bool=doc.queryCommandState(key);}catch(e){} return bool;},val:function(key){var self=this,doc=self.doc,range=self.range;function lc(val){return val.toLowerCase();} key=lc(key);var val='',knode;if(key==='fontfamily'||key==='fontname'){val=_nativeCommandValue(doc,'fontname');val=val.replace(/['"]/g,'');return lc(val);} if(key==='formatblock'){val=_nativeCommandValue(doc,key);if(val===''){knode=self.commonNode({'h1,h2,h3,h4,h5,h6,p,div,pre,address':'*'});if(knode){val=knode.name;}} if(val==='Normal'){val='p';} return lc(val);} if(key==='fontsize'){knode=self.commonNode({'*':'.font-size'});if(knode){val=knode.css('font-size');} return lc(val);} if(key==='forecolor'){knode=self.commonNode({'*':'.color'});if(knode){val=knode.css('color');} val=_toHex(val);if(val===''){val='default';} return lc(val);} if(key==='hilitecolor'){knode=self.commonNode({'*':'.background-color'});if(knode){val=knode.css('background-color');} val=_toHex(val);if(val===''){val='default';} return lc(val);} return val;},toggle:function(wrapper,map){var self=this;if(self.commonNode(map)){self.remove(map);}else{self.wrap(wrapper);} return self.select();},bold:function(){return this.toggle('',{span:'.font-weight=bold',strong:'*',b:'*'});},italic:function(){return this.toggle('',{span:'.font-style=italic',em:'*',i:'*'});},underline:function(){return this.toggle('',{span:'.text-decoration=underline',u:'*'});},strikethrough:function(){return this.toggle('',{span:'.text-decoration=line-through',s:'*'});},forecolor:function(val){return this.wrap('').select();},hilitecolor:function(val){return this.wrap('').select();},fontsize:function(val){return this.wrap('').select();},fontname:function(val){return this.fontfamily(val);},fontfamily:function(val){return this.wrap('').select();},removeformat:function(){var map={'*':'.font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent'},tags=_STYLE_TAG_MAP;_each(tags,function(key,val){map[key]='*';});this.remove(map);return this.select();},inserthtml:function(val,quickMode){var self=this,range=self.range;if(val===''){return self;} function pasteHtml(range,val){val=''+val;var rng=range.get();if(rng.item){rng.item(0).outerHTML=val;}else{rng.pasteHTML(val);} var temp=range.doc.getElementById('__kindeditor_temp_tag__');temp.parentNode.removeChild(temp);var newRange=_toRange(rng);range.setEnd(newRange.endContainer,newRange.endOffset);range.collapse(false);self.select(false);} function insertHtml(range,val){var doc=range.doc,frag=doc.createDocumentFragment();K('@'+val,doc).each(function(){frag.appendChild(this);});range.deleteContents();range.insertNode(frag);range.collapse(false);self.select(false);} if(_IERANGE&&quickMode){try{pasteHtml(range,val);}catch(e){insertHtml(range,val);} return self;} insertHtml(range,val);return self;},hr:function(){return this.inserthtml('
');},print:function(){this.win.print();return this;},insertimage:function(url,title,width,height,border,align){title=_undef(title,'');border=_undef(border,0);var html='';return self.inserthtml(html);} if(range.isControl()){var node=K(range.startContainer.childNodes[range.startOffset]);html+='>';node.after(K(html,doc));node.next().append(node);range.selectNode(node[0]);return self.select();} function setAttr(node,url,type){K(node).attr('href',url).attr('data-ke-src',url);if(type){K(node).attr('target',type);}else{K(node).removeAttr('target');}} var sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset;if(sc.nodeType==1&&sc===ec&&so+1===eo){var child=sc.childNodes[so];if(child.nodeName.toLowerCase()=='a'){setAttr(child,url,type);return self;}} _nativeCommand(doc,'createlink','__kindeditor_temp_url__');K('a[href="__kindeditor_temp_url__"]',doc).each(function(){setAttr(this,url,type);});return self;},unlink:function(){var self=this,doc=self.doc,range=self.range;self.select();if(range.collapsed){var a=self.commonNode({a:'*'});if(a){range.selectNode(a.get());self.select();} _nativeCommand(doc,'unlink',null);if(_WEBKIT&&K(range.startContainer).name==='img'){var parent=K(range.startContainer).parent();if(parent.name==='a'){parent.remove(true);}}}else{_nativeCommand(doc,'unlink',null);} return self;}});_each(('formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,'+'insertunorderedlist,indent,outdent,subscript,superscript').split(','),function(i,name){KCmd.prototype[name]=function(val){var self=this;self.select();_nativeCommand(self.doc,name,val);if(_IERANGE&&_inArray(name,'justifyleft,justifycenter,justifyright,justifyfull'.split(','))>=0){self.selection();} if(!_IERANGE||_inArray(name,'formatblock,selectall,insertorderedlist,insertunorderedlist'.split(','))>=0){self.selection();} return self;};});_each('cut,copy,paste'.split(','),function(i,name){KCmd.prototype[name]=function(){var self=this;if(!self.doc.queryCommandSupported(name)){throw'not supported';} self.select();_nativeCommand(self.doc,name,null);return self;};});function _cmd(mixed){if(mixed.nodeName){var doc=_getDoc(mixed);mixed=_range(doc).selectNodeContents(doc.body).collapse(false);} return new KCmd(mixed);} K.CmdClass=KCmd;K.cmd=_cmd;function _drag(options){var moveEl=options.moveEl,moveFn=options.moveFn,clickEl=options.clickEl||moveEl,beforeDrag=options.beforeDrag,iframeFix=options.iframeFix===undefined?true:options.iframeFix;var docs=[document];if(iframeFix){K('iframe').each(function(){var src=_formatUrl(this.src||'','absolute');if(/^https?:\/\//.test(src)){return;} var doc;try{doc=_iframeDoc(this);}catch(e){} if(doc){var pos=K(this).pos();K(doc).data('pos-x',pos.x);K(doc).data('pos-y',pos.y);docs.push(doc);}});} clickEl.mousedown(function(e){e.stopPropagation();var self=clickEl.get(),x=_removeUnit(moveEl.css('left')),y=_removeUnit(moveEl.css('top')),width=moveEl.width(),height=moveEl.height(),pageX=e.pageX,pageY=e.pageY;if(beforeDrag){beforeDrag();} function moveListener(e){e.preventDefault();var kdoc=K(_getDoc(e.target));var diffX=_round((kdoc.data('pos-x')||0)+e.pageX-pageX);var diffY=_round((kdoc.data('pos-y')||0)+e.pageY-pageY);moveFn.call(clickEl,x,y,width,height,diffX,diffY);} function selectListener(e){e.preventDefault();} function upListener(e){e.preventDefault();K(docs).unbind('mousemove',moveListener).unbind('mouseup',upListener).unbind('selectstart',selectListener);if(self.releaseCapture){self.releaseCapture();}} K(docs).mousemove(moveListener).mouseup(upListener).bind('selectstart',selectListener);if(self.setCapture){self.setCapture();}});} function KWidget(options){this.init(options);} _extend(KWidget,{init:function(options){var self=this;self.name=options.name||'';self.doc=options.doc||document;self.win=_getWin(self.doc);self.x=_addUnit(options.x);self.y=_addUnit(options.y);self.z=options.z;self.width=_addUnit(options.width);self.height=_addUnit(options.height);self.div=K('
');self.options=options;self._alignEl=options.alignEl;if(self.width){self.div.css('width',self.width);} if(self.height){self.div.css('height',self.height);} if(self.z){self.div.css({position:'absolute',left:self.x,top:self.y,'z-index':self.z});} if(self.z&&(self.x===undefined||self.y===undefined)){self.autoPos(self.width,self.height);} if(options.cls){self.div.addClass(options.cls);} if(options.shadowMode){self.div.addClass('ke-shadow');} if(options.css){self.div.css(options.css);} if(options.src){K(options.src).replaceWith(self.div);}else{K(self.doc.body).append(self.div);} if(options.html){self.div.html(options.html);} if(options.autoScroll){if(_IE&&_V<7||_QUIRKS){var scrollPos=_getScrollPos();K(self.win).bind('scroll',function(e){var pos=_getScrollPos(),diffX=pos.x-scrollPos.x,diffY=pos.y-scrollPos.y;self.pos(_removeUnit(self.x)+diffX,_removeUnit(self.y)+diffY,false);});}else{self.div.css('position','fixed');}}},pos:function(x,y,updateProp){var self=this;updateProp=_undef(updateProp,true);if(x!==null){x=x<0?0:_addUnit(x);self.div.css('left',x);if(updateProp){self.x=x;}} if(y!==null){y=y<0?0:_addUnit(y);self.div.css('top',y);if(updateProp){self.y=y;}} return self;},autoPos:function(width,height){var self=this,w=_removeUnit(width)||0,h=_removeUnit(height)||0,scrollPos=_getScrollPos();if(self._alignEl){var knode=K(self._alignEl),pos=knode.pos(),diffX=_round(knode[0].clientWidth/2-w/2),diffY=_round(knode[0].clientHeight/2-h/2);x=diffX<0?pos.x:pos.x+diffX;y=diffY<0?pos.y:pos.y+diffY;}else{var docEl=_docElement(self.doc);x=_round(scrollPos.x+(docEl.clientWidth-w)/2);y=_round(scrollPos.y+(docEl.clientHeight-h)/2);} if(!(_IE&&_V<7||_QUIRKS)){x-=scrollPos.x;y-=scrollPos.y;} return self.pos(x,y);},remove:function(){var self=this;if(_IE&&_V<7||_QUIRKS){K(self.win).unbind('scroll');} self.div.remove();_each(self,function(i){self[i]=null;});return this;},show:function(){this.div.show();return this;},hide:function(){this.div.hide();return this;},draggable:function(options){var self=this;options=options||{};options.moveEl=self.div;options.moveFn=function(x,y,width,height,diffX,diffY){if((x=x+diffX)<0){x=0;} if((y=y+diffY)<0){y=0;} self.pos(x,y);};_drag(options);return self;}});function _widget(options){return new KWidget(options);} K.WidgetClass=KWidget;K.widget=_widget;function _iframeDoc(iframe){iframe=_get(iframe);return iframe.contentDocument||iframe.contentWindow.document;} var html,_direction='';if((html=document.getElementsByTagName('html'))){_direction=html[0].dir;} function _getInitHtml(themesPath,bodyClass,cssPath,cssData){var arr=[(_direction===''?'':''),'',''];if(!_isArray(cssPath)){cssPath=[cssPath];} _each(cssPath,function(i,path){if(path){arr.push('');}});if(cssData){arr.push('');} arr.push('');return arr.join('\n');} function _elementVal(knode,val){if(knode.hasVal()){if(val===undefined){var html=knode.val();html=html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig,'');return html;} return knode.val(val);} return knode.html(val);} function KEdit(options){this.init(options);} _extend(KEdit,KWidget,{init:function(options){var self=this;KEdit.parent.init.call(self,options);self.srcElement=K(options.srcElement);self.div.addClass('ke-edit');self.designMode=_undef(options.designMode,true);self.beforeGetHtml=options.beforeGetHtml;self.beforeSetHtml=options.beforeSetHtml;self.afterSetHtml=options.afterSetHtml;var themesPath=_undef(options.themesPath,''),bodyClass=options.bodyClass,cssPath=options.cssPath,cssData=options.cssData,isDocumentDomain=location.protocol!='res:'&&location.host.replace(/:\d+/,'')!==document.domain,srcScript=('document.open();'+ (isDocumentDomain?'document.domain="'+document.domain+'";':'')+'document.close();'),iframeSrc=_IE?' src="javascript:void(function(){'+encodeURIComponent(srcScript)+'}())"':'';self.iframe=K('').css('width','100%');self.textarea=K('').css('width','100%');self.tabIndex=isNaN(parseInt(options.tabIndex,10))?self.srcElement.attr('tabindex'):parseInt(options.tabIndex,10);self.iframe.attr('tabindex',self.tabIndex);self.textarea.attr('tabindex',self.tabIndex);if(self.width){self.setWidth(self.width);} if(self.height){self.setHeight(self.height);} if(self.designMode){self.textarea.hide();}else{self.iframe.hide();} function ready(){var doc=_iframeDoc(self.iframe);doc.open();if(isDocumentDomain){doc.domain=document.domain;} doc.write(_getInitHtml(themesPath,bodyClass,cssPath,cssData));doc.close();self.win=self.iframe[0].contentWindow;self.doc=doc;var cmd=_cmd(doc);self.afterChange(function(e){cmd.selection();});if(_WEBKIT){K(doc).click(function(e){if(K(e.target).name==='img'){cmd.selection(true);cmd.range.selectNode(e.target);cmd.select();}});} if(_IE){self._mousedownHandler=function(){var newRange=cmd.range.cloneRange();newRange.shrink();if(newRange.isControl()){self.blur();}};K(document).mousedown(self._mousedownHandler);K(doc).keydown(function(e){if(e.which==8){cmd.selection();var rng=cmd.range;if(rng.isControl()){rng.collapse(true);K(rng.startContainer.childNodes[rng.startOffset]).remove();e.preventDefault();}}});} self.cmd=cmd;self.html(_elementVal(self.srcElement));if(_IE){doc.body.disabled=true;doc.body.contentEditable=true;doc.body.removeAttribute('disabled');}else{doc.designMode='on';} if(options.afterCreate){options.afterCreate.call(self);}} if(isDocumentDomain){self.iframe.bind('load',function(e){self.iframe.unbind('load');if(_IE){ready();}else{setTimeout(ready,0);}});} self.div.append(self.iframe);self.div.append(self.textarea);self.srcElement.hide();!isDocumentDomain&&ready();},setWidth:function(val){var self=this;val=_addUnit(val);self.width=val;self.div.css('width',val);return self;},setHeight:function(val){var self=this;val=_addUnit(val);self.height=val;self.div.css('height',val);self.iframe.css('height',val);if((_IE&&_V<8)||_QUIRKS){val=_addUnit(_removeUnit(val)-2);} self.textarea.css('height',val);return self;},remove:function(){var self=this,doc=self.doc;K(doc.body).unbind();K(doc).unbind();K(self.win).unbind();if(self._mousedownHandler){K(document).unbind('mousedown',self._mousedownHandler);} _elementVal(self.srcElement,self.html());self.srcElement.show();doc.write('');self.iframe.unbind();self.textarea.unbind();KEdit.parent.remove.call(self);},html:function(val,isFull){var self=this,doc=self.doc;if(self.designMode){var body=doc.body;if(val===undefined){if(isFull){val=''+body.parentNode.innerHTML+'';}else{val=body.innerHTML;} if(self.beforeGetHtml){val=self.beforeGetHtml(val);} if(_GECKO&&val=='
'){val='';} return val;} if(self.beforeSetHtml){val=self.beforeSetHtml(val);} if(_IE&&_V>=9){val=val.replace(/(<.*?checked=")checked(".*>)/ig,'$1$2');} K(body).html(val);if(self.afterSetHtml){self.afterSetHtml();} return self;} if(val===undefined){return self.textarea.val();} self.textarea.val(val);return self;},design:function(bool){var self=this,val;if(bool===undefined?!self.designMode:bool){if(!self.designMode){val=self.html();self.designMode=true;self.html(val);self.textarea.hide();self.iframe.show();}}else{if(self.designMode){val=self.html();self.designMode=false;self.html(val);self.iframe.hide();self.textarea.show();}} return self.focus();},focus:function(){var self=this;self.designMode?self.win.focus():self.textarea[0].focus();return self;},blur:function(){var self=this;if(_IE){var input=K('',self.div);self.div.append(input);input[0].focus();input.remove();}else{self.designMode?self.win.blur():self.textarea[0].blur();} return self;},afterChange:function(fn){var self=this,doc=self.doc,body=doc.body;K(doc).keyup(function(e){if(!e.ctrlKey&&!e.altKey&&_CHANGE_KEY_MAP[e.which]){fn(e);}});K(doc).mouseup(fn).contextmenu(fn);K(self.win).blur(fn);function timeoutHandler(e){setTimeout(function(){fn(e);},1);} K(body).bind('paste',timeoutHandler);K(body).bind('cut',timeoutHandler);return self;}});function _edit(options){return new KEdit(options);} K.EditClass=KEdit;K.edit=_edit;K.iframeDoc=_iframeDoc;function _selectToolbar(name,fn){var self=this,knode=self.get(name);if(knode){if(knode.hasClass('ke-disabled')){return;} fn(knode);}} function KToolbar(options){this.init(options);} _extend(KToolbar,KWidget,{init:function(options){var self=this;KToolbar.parent.init.call(self,options);self.disableMode=_undef(options.disableMode,false);self.noDisableItemMap=_toMap(_undef(options.noDisableItems,[]));self._itemMap={};self.div.addClass('ke-toolbar').bind('contextmenu,mousedown,mousemove',function(e){e.preventDefault();}).attr('unselectable','on');function find(target){var knode=K(target);if(knode.hasClass('ke-outline')){return knode;} if(knode.hasClass('ke-toolbar-icon')){return knode.parent();}} function hover(e,method){var knode=find(e.target);if(knode){if(knode.hasClass('ke-disabled')){return;} if(knode.hasClass('ke-selected')){return;} knode[method]('ke-on');}} self.div.mouseover(function(e){hover(e,'addClass');}).mouseout(function(e){hover(e,'removeClass');}).click(function(e){var knode=find(e.target);if(knode){if(knode.hasClass('ke-disabled')){return;} self.options.click.call(this,e,knode.attr('data-name'));}});},get:function(name){if(this._itemMap[name]){return this._itemMap[name];} return(this._itemMap[name]=K('span.ke-icon-'+name,this.div).parent());},select:function(name){_selectToolbar.call(this,name,function(knode){knode.addClass('ke-selected');});return self;},unselect:function(name){_selectToolbar.call(this,name,function(knode){knode.removeClass('ke-selected').removeClass('ke-on');});return self;},enable:function(name){var self=this,knode=name.get?name:self.get(name);if(knode){knode.removeClass('ke-disabled');knode.opacity(1);} return self;},disable:function(name){var self=this,knode=name.get?name:self.get(name);if(knode){knode.removeClass('ke-selected').addClass('ke-disabled');knode.opacity(0.5);} return self;},disableAll:function(bool,noDisableItems){var self=this,map=self.noDisableItemMap,item;if(noDisableItems){map=_toMap(noDisableItems);} if(bool===undefined?!self.disableMode:bool){K('span.ke-outline',self.div).each(function(){var knode=K(this),name=knode[0].getAttribute('data-name',2);if(!map[name]){self.disable(knode);}});self.disableMode=true;}else{K('span.ke-outline',self.div).each(function(){var knode=K(this),name=knode[0].getAttribute('data-name',2);if(!map[name]){self.enable(knode);}});self.disableMode=false;} return self;}});function _toolbar(options){return new KToolbar(options);} K.ToolbarClass=KToolbar;K.toolbar=_toolbar;function KMenu(options){this.init(options);} _extend(KMenu,KWidget,{init:function(options){var self=this;options.z=options.z||811213;KMenu.parent.init.call(self,options);self.centerLineMode=_undef(options.centerLineMode,true);self.div.addClass('ke-menu').bind('click,mousedown',function(e){e.stopPropagation();}).attr('unselectable','on');},addItem:function(item){var self=this;if(item.title==='-'){self.div.append(K('
'));return;} var itemDiv=K('
'),leftDiv=K('
'),rightDiv=K('
'),height=_addUnit(item.height),iconClass=_undef(item.iconClass,'');self.div.append(itemDiv);if(height){itemDiv.css('height',height);rightDiv.css('line-height',height);} var centerDiv;if(self.centerLineMode){centerDiv=K('
');if(height){centerDiv.css('height',height);}} itemDiv.mouseover(function(e){K(this).addClass('ke-menu-item-on');if(centerDiv){centerDiv.addClass('ke-menu-item-center-on');}}).mouseout(function(e){K(this).removeClass('ke-menu-item-on');if(centerDiv){centerDiv.removeClass('ke-menu-item-center-on');}}).click(function(e){item.click.call(K(this));e.stopPropagation();}).append(leftDiv);if(centerDiv){itemDiv.append(centerDiv);} itemDiv.append(rightDiv);if(item.checked){iconClass='ke-icon-checked';} if(iconClass!==''){leftDiv.html('');} rightDiv.html(item.title);return self;},remove:function(){var self=this;if(self.options.beforeRemove){self.options.beforeRemove.call(self);} K('.ke-menu-item',self.div[0]).unbind();KMenu.parent.remove.call(self);return self;}});function _menu(options){return new KMenu(options);} K.MenuClass=KMenu;K.menu=_menu;function KColorPicker(options){this.init(options);} _extend(KColorPicker,KWidget,{init:function(options){var self=this;options.z=options.z||811213;KColorPicker.parent.init.call(self,options);var colors=options.colors||[['#E53333','#E56600','#FF9900','#64451D','#DFC5A4','#FFE500'],['#009900','#006600','#99BB00','#B8D100','#60D978','#00D5FF'],['#337FE5','#003399','#4C33E5','#9933E5','#CC33E5','#EE33EE'],['#FFFFFF','#CCCCCC','#999999','#666666','#333333','#000000']];self.selectedColor=(options.selectedColor||'').toLowerCase();self._cells=[];self.div.addClass('ke-colorpicker').bind('click,mousedown',function(e){e.stopPropagation();}).attr('unselectable','on');var table=self.doc.createElement('table');self.div.append(table);table.className='ke-colorpicker-table';table.cellPadding=0;table.cellSpacing=0;table.border=0;var row=table.insertRow(0),cell=row.insertCell(0);cell.colSpan=colors[0].length;self._addAttr(cell,'','ke-colorpicker-cell-top');for(var i=0;i').css('background-color',color));}else{cell.html(self.options.noColor);} K(cell).attr('unselectable','on');self._cells.push(cell);},remove:function(){var self=this;_each(self._cells,function(){this.unbind();});KColorPicker.parent.remove.call(self);return self;}});function _colorpicker(options){return new KColorPicker(options);} K.ColorPickerClass=KColorPicker;K.colorpicker=_colorpicker;function KUploadButton(options){this.init(options);} _extend(KUploadButton,{init:function(options){var self=this,button=K(options.button),fieldName=options.fieldName||'file',url=options.url||'',title=button.val(),extraParams=options.extraParams||{},cls=button[0].className||'',target=options.target||'kindeditor_upload_iframe_'+new Date().getTime();options.afterError=options.afterError||function(str){alert(str);};var hiddenElements=[];for(var k in extraParams){hiddenElements.push('');} var html=['
',(options.target?'':''),(options.form?'
':'
'),'',hiddenElements.join(''),'','','',(options.form?'
':''),'
'].join('');var div=K(html,button.doc);button.hide();button.before(div);self.div=div;self.button=button;self.iframe=options.target?K('iframe[name="'+target+'"]'):K('iframe',div);self.form=options.form?K(options.form):K('form',div);self.fileBox=K('.ke-upload-file',div);var width=options.width||K('.ke-button-common',div).width();K('.ke-upload-area',div).width(width);self.options=options;},submit:function(){var self=this,iframe=self.iframe;iframe.bind('load',function(){iframe.unbind();var tempForm=document.createElement('form');self.fileBox.before(tempForm);K(tempForm).append(self.fileBox);tempForm.reset();K(tempForm).remove(true);var doc=K.iframeDoc(iframe),pre=doc.getElementsByTagName('pre')[0],str='',data;if(pre){str=pre.innerHTML;}else{str=doc.body.innerHTML;} str=_unescape(str);iframe[0].src='javascript:false';try{data=K.json(str);}catch(e){self.options.afterError.call(self,''+doc.body.parentNode.innerHTML+'');} if(data){self.options.afterUpload.call(self,data);}});self.form[0].submit();return self;},remove:function(){var self=this;if(self.fileBox){self.fileBox.unbind();} self.iframe.remove();self.div.remove();self.button.show();return self;}});function _uploadbutton(options){return new KUploadButton(options);} K.UploadButtonClass=KUploadButton;K.uploadbutton=_uploadbutton;function _createButton(arg){arg=arg||{};var name=arg.name||'',span=K(''),btn=K('');if(arg.click){btn.click(arg.click);} span.append(btn);return span;} function KDialog(options){this.init(options);} _extend(KDialog,KWidget,{init:function(options){var self=this;var shadowMode=_undef(options.shadowMode,true);options.z=options.z||811213;options.shadowMode=false;options.autoScroll=_undef(options.autoScroll,true);KDialog.parent.init.call(self,options);var title=options.title,body=K(options.body,self.doc),previewBtn=options.previewBtn,yesBtn=options.yesBtn,noBtn=options.noBtn,closeBtn=options.closeBtn,showMask=_undef(options.showMask,true);self.div.addClass('ke-dialog').bind('click,mousedown',function(e){e.stopPropagation();});var contentDiv=K('
').appendTo(self.div);if(_IE&&_V<7){self.iframeMask=K('').appendTo(self.div);}else if(shadowMode){K('
').appendTo(self.div);} var headerDiv=K('
');contentDiv.append(headerDiv);headerDiv.html(title);self.closeIcon=K('').click(closeBtn.click);headerDiv.append(self.closeIcon);self.draggable({clickEl:headerDiv,beforeDrag:options.beforeDrag});var bodyDiv=K('
');contentDiv.append(bodyDiv);bodyDiv.append(body);var footerDiv=K('');if(previewBtn||yesBtn||noBtn){contentDiv.append(footerDiv);} _each([{btn:previewBtn,name:'preview'},{btn:yesBtn,name:'yes'},{btn:noBtn,name:'no'}],function(){if(this.btn){var button=_createButton(this.btn);button.addClass('ke-dialog-'+this.name);footerDiv.append(button);}});if(self.height){bodyDiv.height(_removeUnit(self.height)-headerDiv.height()-footerDiv.height());} self.div.width(self.div.width());self.div.height(self.div.height());self.mask=null;if(showMask){var docEl=_docElement(self.doc),docWidth=Math.max(docEl.scrollWidth,docEl.clientWidth),docHeight=Math.max(docEl.scrollHeight,docEl.clientHeight);self.mask=_widget({x:0,y:0,z:self.z-1,cls:'ke-dialog-mask',width:docWidth,height:docHeight});} self.autoPos(self.div.width(),self.div.height());self.footerDiv=footerDiv;self.bodyDiv=bodyDiv;self.headerDiv=headerDiv;self.isLoading=false;},setMaskIndex:function(z){var self=this;self.mask.div.css('z-index',z);},showLoading:function(msg){msg=_undef(msg,'');var self=this,body=self.bodyDiv;self.loading=K('
'+msg+'
').width(body.width()).height(body.height()).css('top',self.headerDiv.height()+'px');body.css('visibility','hidden').after(self.loading);self.isLoading=true;return self;},hideLoading:function(){this.loading&&this.loading.remove();this.bodyDiv.css('visibility','visible');this.isLoading=false;return this;},remove:function(){var self=this;if(self.options.beforeRemove){self.options.beforeRemove.call(self);} self.mask&&self.mask.remove();self.iframeMask&&self.iframeMask.remove();self.closeIcon.unbind();K('input',self.div).unbind();K('button',self.div).unbind();self.footerDiv.unbind();self.bodyDiv.unbind();self.headerDiv.unbind();K('iframe',self.div).each(function(){K(this).remove();});KDialog.parent.remove.call(self);return self;}});function _dialog(options){return new KDialog(options);} K.DialogClass=KDialog;K.dialog=_dialog;function _tabs(options){var self=_widget(options),remove=self.remove,afterSelect=options.afterSelect,div=self.div,liList=[];div.addClass('ke-tabs').bind('contextmenu,mousedown,mousemove',function(e){e.preventDefault();});var ul=K('
    ');div.append(ul);self.add=function(tab){var li=K('
  • '+tab.title+'
  • ');li.data('tab',tab);liList.push(li);ul.append(li);};self.selectedIndex=0;self.select=function(index){self.selectedIndex=index;_each(liList,function(i,li){li.unbind();if(i===index){li.addClass('ke-tabs-li-selected');K(li.data('tab').panel).show('');}else{li.removeClass('ke-tabs-li-selected').removeClass('ke-tabs-li-on').mouseover(function(){K(this).addClass('ke-tabs-li-on');}).mouseout(function(){K(this).removeClass('ke-tabs-li-on');}).click(function(){self.select(i);});K(li.data('tab').panel).hide();}});if(afterSelect){afterSelect.call(self,index);}};self.remove=function(){_each(liList,function(){this.remove();});ul.remove();remove.call(self);};return self;} K.tabs=_tabs;function _loadScript(url,fn){var head=document.getElementsByTagName('head')[0]||(_QUIRKS?document.body:document.documentElement),script=document.createElement('script');head.appendChild(script);script.src=url;script.charset='utf-8';script.onload=script.onreadystatechange=function(){if(!this.readyState||this.readyState==='loaded'){if(fn){fn();} script.onload=script.onreadystatechange=null;head.removeChild(script);}};} function _chopQuery(url){var index=url.indexOf('?');return index>0?url.substr(0,index):url;} function _loadStyle(url){var head=document.getElementsByTagName('head')[0]||(_QUIRKS?document.body:document.documentElement),link=document.createElement('link'),absoluteUrl=_chopQuery(_formatUrl(url,'absolute'));var links=K('link[rel="stylesheet"]',head);for(var i=0,len=links.length;imaxWidth){maxWidth=this.width;}}});while(items.length>0&&items[0].title=='-'){items.shift();} while(items.length>0&&items[items.length-1].title=='-'){items.pop();} var prevItem=null;_each(items,function(i){if(this.title=='-'&&prevItem.title=='-'){delete items[i];} prevItem=this;});if(items.length>0){e.preventDefault();var pos=K(self.edit.iframe).pos(),menu=_menu({x:pos.x+e.clientX,y:pos.y+e.clientY,width:maxWidth,css:{visibility:'hidden'},shadowMode:self.shadowMode});_each(items,function(){if(this.title){menu.addItem(this);}});var docEl=_docElement(menu.doc),menuHeight=menu.div.height();if(e.clientY+menuHeight>=docEl.clientHeight-100){menu.pos(menu.x,_removeUnit(menu.y)-menuHeight);} menu.div.css('visibility','visible');self.menu=menu;}});} function _bindNewlineEvent(){var self=this,doc=self.edit.doc,newlineTag=self.newlineTag;if(_IE&&newlineTag!=='br'){return;} if(_GECKO&&_V<3&&newlineTag!=='p'){return;} if(_OPERA&&_V<9){return;} var brSkipTagMap=_toMap('h1,h2,h3,h4,h5,h6,pre,li'),pSkipTagMap=_toMap('p,h1,h2,h3,h4,h5,h6,pre,li,blockquote');function getAncestorTagName(range){var ancestor=K(range.commonAncestor());while(ancestor){if(ancestor.type==1&&!ancestor.isStyle()){break;} ancestor=ancestor.parent();} return ancestor.name;} K(doc).keydown(function(e){if(e.which!=13||e.shiftKey||e.ctrlKey||e.altKey){return;} self.cmd.selection();var tagName=getAncestorTagName(self.cmd.range);if(tagName=='marquee'||tagName=='select'){return;} if(newlineTag==='br'&&!brSkipTagMap[tagName]){e.preventDefault();self.insertHtml('
    '+(_IE&&_V<9?'':'\u200B'));return;} if(!pSkipTagMap[tagName]){_nativeCommand(doc,'formatblock','

    ');}});K(doc).keyup(function(e){if(e.which!=13||e.shiftKey||e.ctrlKey||e.altKey){return;} if(newlineTag=='br'){return;} if(_GECKO){var root=self.cmd.commonAncestor('p');var a=self.cmd.commonAncestor('a');if(a&&a.text()==''){a.remove(true);self.cmd.range.selectNodeContents(root[0]).collapse(true);self.cmd.select();} return;} self.cmd.selection();var tagName=getAncestorTagName(self.cmd.range);if(tagName=='marquee'||tagName=='select'){return;} if(!pSkipTagMap[tagName]){_nativeCommand(doc,'formatblock','

    ');} var div=self.cmd.commonAncestor('div');if(div){var p=K('

    '),child=div[0].firstChild;while(child){var next=child.nextSibling;p.append(child);child=next;} div.before(p);div.remove();self.cmd.range.selectNodeContents(p[0]);self.cmd.select();}});} function _bindTabEvent(){var self=this,doc=self.edit.doc;K(doc).keydown(function(e){if(e.which==9){e.preventDefault();if(self.afterTab){self.afterTab.call(self,e);return;} var cmd=self.cmd,range=cmd.range;range.shrink();if(range.collapsed&&range.startContainer.nodeType==1){range.insertNode(K('@ ',doc)[0]);cmd.select();} self.insertHtml('    ');}});} function _bindFocusEvent(){var self=this;K(self.edit.textarea[0],self.edit.win).focus(function(e){if(self.afterFocus){self.afterFocus.call(self,e);}}).blur(function(e){if(self.afterBlur){self.afterBlur.call(self,e);}});} function _removeBookmarkTag(html){return _trim(html.replace(/]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig,''));} function _removeTempTag(html){return html.replace(/]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig,'');} function _addBookmarkToStack(stack,bookmark){if(stack.length===0){stack.push(bookmark);return;} var prev=stack[stack.length-1];if(_removeBookmarkTag(bookmark.html)!==_removeBookmarkTag(prev.html)){stack.push(bookmark);}} function _undoToRedo(fromStack,toStack){var self=this,edit=self.edit,body=edit.doc.body,range,bookmark;if(fromStack.length===0){return self;} if(edit.designMode){range=self.cmd.range;bookmark=range.createBookmark(true);bookmark.html=body.innerHTML;}else{bookmark={html:body.innerHTML};} _addBookmarkToStack(toStack,bookmark);var prev=fromStack.pop();if(_removeBookmarkTag(bookmark.html)===_removeBookmarkTag(prev.html)&&fromStack.length>0){prev=fromStack.pop();} if(edit.designMode){edit.html(prev.html);if(prev.start){range.moveToBookmark(prev);self.select();}}else{K(body).html(_removeBookmarkTag(prev.html));} return self;} function KEditor(options){var self=this;self.options={};function setOption(key,val){if(KEditor.prototype[key]===undefined){self[key]=val;} self.options[key]=val;} _each(options,function(key,val){setOption(key,options[key]);});_each(K.options,function(key,val){if(self[key]===undefined){setOption(key,val);}});var se=K(self.srcElement||'