switch(true){
    case(typeof(YAHOO) == 'undefined'):{
        throw new Error('YAHOO is not defined');
        break;
    };
    default:{
        try {
            var _F2E = YAHOO.CE.widget.rte;
        }
        catch (oError) {
            YAHOO.namespace('CE.widget.rte');
        };
    };
};
String.prototype.Replace = function(from,to){
    var r, re;
    re = eval("/" + from + "/g");
    r = this.replace(re, to);
    return(r);
};

YAHOO.CE.widget.rte = {
    HTMLEditor:function(dTextarea,sEditorType,oConfig) {

        var oComponent = this;
        if(typeof(oConfig)=='undefined'){oConfig = {};};
        
        /**
     * @description 允许的图片前缀
		* @property allowImageSrc
		* @private
		* @type string
        **/
        var defConfig={
					sourceContainerId:"sourceContainer",
					needReverse:false
        	};
        var config  = CE.applyIf(oConfig||{}, defConfig);
        oConfig.allowImageSrc=(oConfig.allowImageSrc==null)?oConfig.allowImageSrc="img.machinery-industry.com":oConfig.allowImageSrc;
        
        oConfig.withImage=(oConfig.withImage==null)?true:oConfig.withImage;
        /**
		* @description 所需顯示的提示訊息, 預設 null
		* @property promptMessage
		* @public
		* @type string
		*/
        oComponent.promptMessage = (oConfig.promptMessage!=null)?oConfig.promptMessage:null;
		/**
		* @description 編輯與檢視原始碼的字型樣式, 預設 'normal 16px PMingLiu'
		* @property fontStyle
		* @public
		* @type string
		*/
        oComponent.fontStyle = (oConfig.fontStyle!=null)?oConfig.fontStyle:'normal 13px Arial';
		/**
		* 目前字數
		* @property wordTotal
		* @public
		* @type int
		*/
        oComponent.wordTotal = 0;
        oComponent.maxWordLength = (oConfig.maxWordLength!=null && YL.isNumber(oConfig.maxWordLength))?oConfig.maxWordLength:8000;
		/**
		* 截除行首及行尾空白
		* @method trim
		* @param {string} sString 欲處理的字串
		* @return {string} 截除後的字串
		*/
        var trim = function(sString){
            return sString.replace(/(^\s+)|\s+$/g,'');
        };
		/**
		* 簡化建立 DOM 節點的方法
		* @method addNode
		* @param {string} sTagName 節點標籤名稱
		* @param {string} sClassName 欲賦予的 class 名稱
		* @param {string} sHtml  欲賦予的 html 內容
		* @param {object} dParent 父節點物件
		* @return {object}  建立的節點物件
		*/
        var addNode = function(sTagName,sClassName,sHtml,dParent) {
            var dNode = document.createElement(sTagName);
            dNode.className = sClassName;
            if(typeof(sHtml) != 'undefined' && sHtml != '' && sHtml != null) {
                dNode.innerHTML = sHtml;
            };
            if(typeof(dParent)!='undefined'){
                dParent.appendChild(dNode);
            }
            else {
                document.body.appendChild(dNode)
            };
            return dNode;
        };
        switch(sEditorType){
            case 'html':{
                var dToolbar,dEditorWindow,dNumber,dCloneTextarea,dTooUgly;
                var dForm,dBorder,dEditor,dPrompt,dCalculator,dRequirement,dCheckBox,dLabel;
                var dToolbarItems,dAlignLinks,dListLinks,dSpecialCodesTds,dUploadImageButton;
                var syncTimer;
                var dataForm = addNode("form","","<textarea name='origHtml'></textarea>",document.body);
                dataForm.id="rteDataForm";
                dataForm.style.display="none";
                
                var fileForm = addNode("form","","<div style='position:relative;z-index:999;overflow:hidden;height:26px;width:26px;'><input type='file' name='rteFileButton' style='position:absolute;top:0px;right:0px;z-index:998;font-size:50px!important;filter:alpha(opacity=0);opacity:0;' />",document.body);
                fileForm.id="rteFileForm";
                fileForm.style.position="absolute";
                fileForm.style.zIndex=999;

                var onPasteTmpTextRange =  addNode("div","","",document.body);
                onPasteTmpTextRange.style.visibilty="hidden";
                onPasteTmpTextRange.style.width="1px";
                onPasteTmpTextRange.style.height="1px";
                onPasteTmpTextRange.style.overflow="hidden";
								onPasteTmpTextRange.style.position="absolute";
                var isIE = (navigator.appName=="Microsoft Internet Explorer")?true:false;
                var canCheckCodes=true;
                
                
                var originalData = dTextarea.value;
                //var dSourceData = get(config.sourceContainerId);
                
				/**
				* 初始化：自訂事件
				* @method init
				* @return void
				*/
                var init = function() {
                    oComponent.onContentChange = new YAHOO.util.CustomEvent('contentChange',this);
                    oComponent.onViewChange = new YAHOO.util.CustomEvent('viewChange',this);
                    oComponent.onRenderComplete = new YAHOO.util.CustomEvent('renderComplete',this);
                };
                init();



							if(oConfig.userType!=null && oConfig.userType=="service"){
								//问题
								
									oComponent.aUnlawfulTagName=["script","input","select","style","frame","iframe","meta","textarea","a"];
								}else{
               oComponent.aUnlawfulTagName=["script","input","select","style","frame","iframe","meta","textarea","a"];
              }
              
              
               //oComponent.aUnlawfulTagName=new Array();

                
              
				/**
				* 是否為檢視原始碼的狀態，預設 false
				* @property isVewSource
				* @type boolean
				*/
                oComponent.isViewSource = (oConfig.isViewSource!=null)?oConfig.isViewSource:false;
				/**
				* 圖檔的所在根目錄 url, 結尾必需是 / (預設 'i7')
				* @property imageBaseUrl
				* @type string
				*/
                oComponent.imageBaseUrl = (oConfig.imageBaseUrl!=null)?oConfig.imageBaseUrl:'http://img.machinery-industry.com/misc/rte/';

                    
         /**
				* 特殊符号集合
				* @property specialCodes
				* @type array
				*/
                oComponent.specialCodes = (oConfig.specialCodes!=null)?oConfig.specialCodes:function(){return [
                '&Sigma;','&Phi;','&Psi;','&Omega;'
,'&alpha;','&beta;','&gamma;','&delta;'
,'&epsilon;','&zeta;','&eta;','&theta;'
,'&iota;','&lambda;','&mu;','&nu;'
,'&xi;','&omicron;','&pi;','&rho;'
,'&sigma;','&tau;','&upsilon;'
,'&phi;','&chi;','&psi;','&omega;'
,'&larr;','&uarr;','&rarr;','&darr;'
,'&isin;','&prod;','&sum;','&radic;'
,'&prop;','&infin;','&ang;','&and;'
,'&or;','&cap;','&cup;','&int;'
,'&there4;','&#8757;','&asymp;','&ne;'
,'&equiv;','&le;','&ge;','&plusmn;'
,'<sup>o</sup>C','m<sup>2</sup>','m<sup>3</sup>','&times;','&#165;','&#163;','No.','&#162;'
];}();


				/**
				* 字串取代規則 (正規表式示)
				* @property replaceRules
				* @type array
				*/
                oComponent.replaceRules = (oConfig.replaceRules!=null)?oConfig.replaceRules:function(){return [
                    [/\r\n/gm, '\n'],
                    [/\n\r/gm, '\n'],
                    [/<br>/gm, '<br />'],
                    [/<b>(.*?)<\/.>/gm, '<strong>$1</strong>'],
                    [/<i>(.*?)<\/.>/gm, '<em>$1</em>'],
                    [/<p>&nbsp;<\/p>/gm, '<p></p>'],
                    [/<p>(.*?)<\/p>/gm, '<p>$1</p>'],
                    [/<a (.*?)<\/a>/gm, '<a $1</a>'],
                    [/<img (.*?)>/gm, '<img $1 >'],
                    [/<pre (.*?)<\/pre>/gm, '<div $1</div>'],
                    [/<span style="font-weight: normal;">(.*?)<\/span>/gm, "$1"],
                    [/<div class="main">(.*?)<\/div>/gm, "$1"],
                    [/<div class="ghd">(.*?)<\/div>/gm, "$1"],
                    [/<span style="font-weight: bold;">(.*?)<\/span>/gm, "<strong>$1</strong>"],
                    [/<span style="font-style: italic;">(.*?)<\/span>/gm, "<em>$1</em>"],
                    [/<span style="(font-weight: bold; ?|font-style: italic; ?){2}">(.*?)<\/span>/gm, "<strong><em>$2</em></strong>"],
                    [/<([a-z]+) style="font-weight: normal;">(.*?)<\/.>/gm, "<$1>$2</$1>"],
                    [/<([a-z]+) style="font-weight: bold;">(.*?)<\/.>/gm, "<$1><strong>$2</strong></$1>"],
                    [/<([a-z]+) style="font-style: italic;">(.*?)<\/.>/gm, "<$1><em>$2</em></$1>"],
                    [/<([a-z]+) style="(font-weight: bold; ?|font-style: italic; ?){2}">(.*?)<\/.>/gm, "<$1><strong><em>$3</em></strong></$1>"],
                    [/<\/p>[\s]*/g, "</p>\n"],
                    [/alt=(.*?) /gm, "alt=\"$1\" "],
                    [/Σ/gm, "&Sigma;"],
										[/Φ/gm, "&Phi;"],
										[/Ψ/gm, "&Psi;"],
										[/Ω/gm, "&Omega;"],
										[/α/gm, "&alpha;"],
										[/β/gm, "&beta;"],
										[/γ/gm, "&gamma;"],
										[/δ/gm, "&delta;"],
										[/ε/gm, "&epsilon;"],
										[/ζ/gm, "&zeta;"],
										[/η/gm, "&eta;"],
										[/θ/gm, "&theta;"],
										[/ι/gm, "&iota;"],
										[/λ/gm, "&lambda;"],
										[/μ/gm, "&mu;"],
										[/ν/gm, "&nu;"],
										[/ξ/gm, "&xi;"],
										[/ο/gm, "&omicron;"],
										[/π/gm, "&pi;"],
										[/ρ/gm, "&rho;"],
										[/σ/gm, "&sigma;"],
										[/τ/gm, "&tau;"],
										[/υ/gm, "&upsilon;"],
										[/φ/gm, "&phi;"],
										[/χ/gm, "&chi;"],
										[/ψ/gm, "&psi;"],
										[/ω/gm, "&omega;"],
										[/←/gm, "&larr;"],
										[/↑/gm, "&uarr;"],
										[/→/gm, "&rarr;"],
										[/↓/gm, "&darr;"],
										[/∈/gm, "&isin;"],
										[/∏/gm, "&prod;"],
										[/∑/gm, "&sum;"],
										[/√/gm, "&radic;"],
										[/∝/gm, "&prop;"],
										[/∞/gm, "&infin;"],
										[/∠/gm, "&ang;"],
										[/∧/gm, "&and;"],
										[/∨/gm, "&or;"],
										[/∩/gm, "&cap;"],
										[/∪/gm, "&cup;"],
										[/∫/gm, "&int;"],
										[/∴/gm, "&there4;"],
										[/∵/gm, "&#8757;"],
										[/～/gm, "&#8764;"],
										[/≈/gm, "&asymp;"],
										[/≠/gm, "&ne;"],
										[/≡/gm, "&equiv;"],
										[/≤/gm, "&le;"],
										[/≥/gm, "&ge;"],
										[/±/gm, "&plusmn;"],
										[/×/gm, "&times;"]
										//,[/[^\x00-\xFF]/gm, ""]
                ];}();
                
				/**
				* 依據目前狀態 (是否為檢視原始碼中), 同步資料內容
				* @method syncData
				* @return void
				*/
                oComponent.syncData = function() {
                	if(oConfig.withImage==false){oComponent.removeImage();}
                	if(!isIE){oComponent.isTooUgly();}
                    switch(oComponent.isViewSource) {
                        case true:{ 
														dCloneTextarea.value = dCloneTextarea.value.replace(/[^\x00-\xFF]/g,"");
                            var sHtml = dCloneTextarea.value;
                            dTextarea.value = sHtml;
                            break;
                        };
                        case false:{ 
                        		
                            var sHtml = oComponent.getSourceCode();
                            if(!YL.isAscii(sHtml)){
                            sHtml = sHtml.replaceAll("，",",");
                            sHtml = sHtml.replaceAll("．",".");
                            sHtml = sHtml.replaceAll("。",".");
                           	sHtml = sHtml.replace(/[^\x00-\xFF]/g,"");
                           	sHtml = sHtml.replaceAll("\\n","");
                           	setEditor(sHtml);
                          }
                            dTextarea.value = sHtml;
                            dCloneTextarea.value = sHtml;
                            break;
                        };
                    };
                };
				/**
				* 取得 Editor (iframe) 中的原始碼
				* @method getSourceCode
				* @return void
				*/
                oComponent.getSourceCode = function() {
                    var sHtml = dEditorWindow.document.body.innerHTML;
                    // remove Firefox's newline code
                    if (!document.uniqueID) {
                        sHtml = escape(sHtml);
                        while(sHtml.indexOf('%0D%0A') > -1) {
                            sHtml = sHtml.replace('%0D%0A','');
                        };
                        while(sHtml.indexOf('%0A') > -1) {
                            sHtml = sHtml.replace('%0A','');
                        };
                        while(sHtml.indexOf('%0D') > -1) {
                            sHtml = sHtml.replace('%0D','');
                        };
                        sHtml = unescape(sHtml);
                    };

                    sHtml = sHtml.replace(/(?=<)[^> ]*/g, function(sMatch){
                        return sMatch.toLowerCase();
                    });

                    for (var i=0,j=oComponent.replaceRules.length;i<j;i++){
                        sHtml = sHtml.replace(oComponent.replaceRules[i][0], oComponent.replaceRules[i][1]);
                    };

                    if(sHtml == '<br />') {sHtml = '';};
                    if(sHtml == '<p></p>') {sHtml = '';};
                    if(sHtml == '<p>&nbsp;</p>') {sHtml = '';};
                    return sHtml;
                };
                
                
      /**
				* 删除图片
				* @method removeImage
				* @return void
				*/
      oComponent.removeImage = function() {
      	 var iframeDocument = dEditorWindow.document.body;
      	 var aImages = iframeDocument.getElementsByTagName("img");
      	 for(var i=0, n=aImages.length;i<n;i++){
      	 	try{
      	 	aImages[i].parentNode.removeChild(aImages[i]);
      	}catch(E){}
      	 	}
      	}
         /**
				* 排除恶意代码中的原始碼
				* @method isTooUgly
				* @return void
				*/
               oComponent.isTooUgly = function() {
                   //var sHtml = dEditorWindow.document.body.innerHTML;
                   // remove Firefox's newling code

                  var iframeDocument = dEditorWindow.document.body;
									for(i=0;i<oComponent.aUnlawfulTagName.length;i++){
									var unlawful = iframeDocument.getElementsByTagName(oComponent.aUnlawfulTagName[i]);
									var unlawfulLength = unlawful.length.toString();
										for(j=0;j<unlawfulLength;j++){
							
											if((unlawful[j])&&( unlawful[j].tagName=="img" || unlawful[j].tagName=="IMG")){
												try{
													if(oConfig.allowImageSrc!=null){													
													var RegEx=new RegExp("^http:\/\/"+oConfig.allowImageSrc);
														if(!RegEx.test(unlawful[j].src)){
															unlawful[j].parentNode.removeChild(unlawful[j]);
															}
														}else{
														unlawful[j].parentNode.removeChild(unlawful[j]);
														}

														}catch(e){}
												}else{
												try{
												unlawful[j].parentNode.removeChild(unlawful[j]);
												}catch(e){}
											}

										}
									}

               };
                
            // reset editor;
       oComponent.resetEditor = function(){
       	setEditor(originalData);
       	oComponent.syncData();
       	}
            
           /**
				* 取得 向服务器提交，校验代码
				* @method checkCodes
				* @return void
				*/
var checkCodesSuccess = function(o){
	if(o.responseText !== undefined){
dEditorWindow.document.body.innerHTML=o.responseText;
oComponent.syncData();
	}
canCheckCodes = true;
setTimeout(msgBox.closeMsgBox,500);
};
var checkCodesFailure = function(o){
	if(o.responseText !== undefined){
msgBox.xAlert(IL.plsTryAgain,[200,0]);
	}
	canCheckCodes = true;
	setTimeout(msgBox.closeMsgBox,1000);
};
var checkCodesCallback =
{
  success:checkCodesSuccess,
  failure:checkCodesFailure,
  argument:['foo','bar']
};

oComponent.checkCodesByServer = function(e) {
	if(oConfig.checkAllCodesUrl!=null){
		if(!canCheckCodes){
			YUE.stopEven(e);
			msgBox.xLock(IL.processing+IL.comma+IL.plsTryAgain,[300,0]);
			setTimeout(function(){msgBox.closeMsgBox();},2000);
			return false;
			}
canCheckCodes = false;
msgBox.xLock(IL.plsWait,[200,0]);
var sUrl = oConfig.checkAllCodesUrl;
dataForm.origHtml.value= dEditorWindow.document.body.innerHTML;
YAHOO.util.Connect.setForm(dataForm.id);
var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, checkCodesCallback);
  }
               };
               
 //check codes on paste, begin              
var checkCodesOnPasteSuccess = function(o){
if(o.responseText !== undefined){
setEditor(o.responseText);
oComponent.syncData();

	}
canCheckCodes = true;
};
var checkCodesOnPasteFailure = function(o){
	if(o.responseText !== undefined){
msgBox.xAlert(IL.plsTryAgain,[200,0]);
	}
canCheckCodes = true;
};
var checkCodesOnPasteCallback =
{
  success:checkCodesOnPasteSuccess,
  failure:checkCodesOnPasteFailure,
  argument:['foo','bar']
};

oComponent.checkCodesOnPaste = function(oEvent) {
if(oConfig.checkPasteCodesUrl!=null){
YUE.stopEvent(oEvent);
		if(!canCheckCodes){
			msgBox.xLock(IL.processing+IL.comma+IL.plsTryAgain,[300,0]);
			setTimeout(function(){msgBox.closeMsgBox();},2000);
			return false;
			}
canCheckCodes = false;
onPasteTmpTextRange.innerHTML="";
var oTextRange = document.body.createTextRange() ;
 oTextRange.moveToElementText(onPasteTmpTextRange) ;
 oTextRange.execCommand("Paste");
 insertEditorHtml(onPasteTmpTextRange.innerHTML)
 dataForm.origHtml.value=dEditorWindow.document.body.innerHTML;
var sUrl = oConfig.checkPasteCodesUrl;
YAHOO.util.Connect.setForm(dataForm.id);
var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, checkCodesOnPasteCallback);
oTextRange=null;

          }   
               
               };    
 //check codes on paste, end
            
           //upload image 
            
var uploadImageSuccess = function(o){

if(o.responseText !== undefined){
if(o.responseText=='false'){
dEditorWindow.focus();
msgBox.closeMsgBox();
msgBox.xAlert(IL.uploadFaild,[200,0]);
}else{
dEditorWindow.focus();
dEditorWindow.document.execCommand('InsertImage',false,o.responseText);
oComponent.syncData();
msgBox.closeMsgBox();
}
	}
};

var uploadImageCallback =
{
  upload:uploadImageSuccess,
  argument:['foo','bar']
};      
 oComponent.uploadImage=function(){
 	if(oConfig.uploadImageUrl!=null){
 msgBox.xLock(IL.uploading+IL.comma+IL.plsWait+"......",[300,0]);
var sUrl = oConfig.uploadImageUrl;

YAHOO.util.Connect.setForm(fileForm,true);

var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, uploadImageCallback);

}


 	};
   
   oComponent.setFocus = function(){dEditorWindow.focus();}
   
                
                
				/**
				* 切換檢視原始碼與編輯器
				* @method switchView
				* @private
				*/				
				oComponent.switchView = function() {
                    oComponent.syncData();
                    oComponent.isViewSource = (oComponent.isViewSource == false)?true:false;
                    oComponent.wordTotal = getWordTotal();
                    displayWordCount(oComponent.wordTotal);                   
                    setView();
                    switch (oComponent.isViewSource){
                        case false: { 
                        	// if editor
                            setEditor(dTextarea.value);
                            break;
                        };
                        case true: { 
                        	// if view source
                            if(document.uniqueID){
                                dCloneTextarea.select();
                                var dRange = document.selection.createRange();
                                dRange.collapse(false);
                                dRange.select();
                            }
                            else {
                                dCloneTextarea.focus();
                            };
                            break;
                        };
                    };
                    oComponent.onViewChange.fire();				
				};
				
				
		oComponent.destroyEditor = function (){
			if(oComponent.isViewSource == false){	
			oComponent.switchView();
			}
		
		YUD.setStyle(dEditor.parentNode,'display','none');
		YUD.setStyle(dRequirement,'display','none');
		YUD.setStyle(dTextarea,'display','block');
		
					};
					
		oComponent.reDisplayEditor = function (){
			if(oComponent.isViewSource  == true){
			oComponent.switchView();	
			}

		YUD.setStyle(dEditor.parentNode,'display','block');
		YUD.setStyle(dRequirement,'display','block');
		YUD.setStyle(dTextarea,'display','none');
		};
				/**
				* 依照目前的 oComponent.isViewSource 顯示適當的介面
				* @method setView
				* @private
				*/
                var setView = function() {
                    switch (oComponent.isViewSource){
                        case false: {
                            YUD.setStyle(dToolbar,'display','block');
                            YUD.setStyle(dCloneTextarea,'display','none');
                            YUD.setStyle(dEditor,'display','block');
                            YUD.setStyle(dCalculator,'display','block');
                            dLabel.innerHTML = IL.editSource;
                            break;
                        };
                        case true: {
                            YUD.setStyle(dToolbar,'display','none');
                            YUD.setStyle(dCloneTextarea,'display','block');
                            YUD.setStyle(dEditor,'display','none');
                            YUD.setStyle(dCalculator,'display','none');
                            dLabel.innerHTML = IL.editSource;
                            break;
                        };
                    };
                };
				/**
				* 檢查是否為支援的瀏覽器
				* @method checkBrowserSupport
				* @return boolean
				*/
                var checkBrowserSupport = function() {
                    var ua = navigator.userAgent.toLowerCase();
                    isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1));
                    isGecko = (ua.indexOf("gecko") != -1);
                    isSafari = (ua.indexOf("safari") != -1);
                    isKonqueror = (ua.indexOf("konqueror") != -1);
                    return (document.getElementById && document.designMode && !isSafari && !isKonqueror);
                };
				/**
				* 取得目前的選取區域
				* @method getSelectionRange
				* @private
				* @param {object} oWindow
				* @return object
				*/
                var getSelectionRange = function() {
                    if(document.uniqueID){
                        var dSelect = dEditorWindow.document.selection;
                        if (dSelect!=null) {
                            return dSelect.createRange();
                        }
                        else {
                            return null;
                        };
                    }
                    else {
                        var dSelect = dEditorWindow.getSelection();
                        return dSelect.getRangeAt(dSelect.rangeCount-1).cloneRange();
                    };
                    return null;
                };
				/**
				* 隱藏選擇面版 (調色盤, 表情符號, 對齊,項目清單)
				* @method hideTool
				* @private
				* @return object
				*/
                var hideTool = function() {
                    //YUD.setStyle(YUD.getElementsByClassName('palette_picker','div',dToolbar)[0],'display','none');
                    //YUD.setStyle(YUD.getElementsByClassName('smiley_picker','div',dToolbar)[0],'display','none');
                    YUD.setStyle(YUD.getElementsByClassName('align_picker','div',dToolbar)[0],'display','none');
                    YUD.setStyle(YUD.getElementsByClassName('list_picker','div',dToolbar)[0],'display','none');
                    YUD.setStyle(YUD.getElementsByClassName('special_codes_picker','div',dToolbar)[0],'display','none');
                    YUD.setStyle(get('rte_upload_image_box'),'display','none');
                };
				/**
				* 插入 HTML 到編輯器中 (目前只有插入圖片、插入超連結會用到)
				* @method insertEditorHtml
				* @private
				* @param {string} sHtml 欲插入的原始碼
				* @return void
				*/
                var insertEditorHtml = function(sHtml) {
                    // focus to editor
                    dEditorWindow.focus()
                    if(document.uniqueID) {
                        var dRange = getSelectionRange();
                        // dRange.text can paste text, dRange.pasteHTML can paste HTML
                        // if range include html, dont use pasteHTML, may be error
                        dRange.pasteHTML(sHtml);
                        // collapse(true) to top, collapse(false) to end
                        dRange.collapse(false);
                        dRange.select();
                    }
                    else {
                        dEditorWindow.document.execCommand('insertHTML', false, sHtml);
                    };
                };
				/**
				* 重新設定編輯器的內容
				* @method setEditor
				* @private
				* @param {string} sHtml 欲插入的原始碼
				* @return void
				*/
                var setEditor = function(sHtml) {
                    // FF must create a new file, cant  us  about:blank direct
                    //  put the content of textarea into editor
                    var aHtml = ['<!doctype html public \'-//W3C//DTD HTML 4.01//EN\' \'http://www.w3.org/TR/html4/strict.dtd\'>'
                                       ,'<html>'
                                       ,'<head>'
                                       ,'<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />'
                                     	,'<style>'
                                       ,'body{background:#fff;font:' + oComponent.fontStyle + ';margin:5px;padding:0;}'
                                       ,'.richTextDescription table{background:#fff;border:1px solid #ccc;}'
                                       ,'.richTextDescription  table td{background:#fff;border:1px solid #ccc;}'
                                       ,'.richTextDescription pre{font:1em arial;}'
                                       ,'.richTextDescription p{margin:0px;padding:0px;}'
                                       ,'</style>'
                                       ,'</head>'
                                       ,'<body class="richTextDescription">' + sHtml.Replace('\\n','') + '</body>'
                                       ,'</html>'];
                    dEditorWindow.document.open();
                    dEditorWindow.document.write(aHtml.join(''));
                    dEditorWindow.document.close();
                    
                    with(dEditorWindow.document.body){ 
   												 		try{
   												 			attachEvent("onpaste",oComponent.checkCodesOnPaste);
   												 			}catch(e){}
   												 		}   

                    // tie all event
                    var aEvent = ['keyup','click','blur'];
                    for(var i=0,j=aEvent.length;i<j;i++){
                        YUE.addListener(dEditorWindow.document,aEvent[i],onEditorKeyup);
                    };




                    
                    YUE.on(dEditorWindow.document,'mousedown', hideTool);
                    try {
                        // check is it support execCommand
                        dEditorWindow.document.execCommand('undo', false, null);
                    }
                    catch (oError) {
                        alert(oError.message);
                        return;
                    };
                };
                
         /**
				* 重写数据,
				* @method coverContent
				* @private
				* @return void
				*/
             oComponent.rewriteContent = function (sHtml){
             	if(!sHtml){var sHtml = dTextarea.value;}
                setEditor(sHtml);
                	oComponent.syncData();
                	}     
                
               oComponent.insertHTML = function(oEvent,sHtml){
               							if(oEvent)YUE.stopEvent(oEvent);
                            dEditorWindow.focus();
                            insertEditorHtml(sHtml);
                            oComponent.syncData();
                            hideTool();
                            oComponent.onContentChange.fire();
                            return false;
                        }
				/**
				* 取得現在的字數
				* @method getWordTotal
				* @private
				* @return int
				*/
                var getWordTotal = function() {
                	var wordLength = dTextarea.value.length;
										if(wordLength>oComponent.maxWordLength){
                            	dTooUgly.style.display="";
                            }else{
                            	dTooUgly.style.display="none";
                            }
                  return wordLength;
                };
				/**
				* 當指令被點選時
				* @event onCommandClick
				* @private
				*/
                var onCommandClick = function(oEvent) {
                    var dLink = this;
                    hideTool();
                    dEditorWindow.focus();
                    dEditorWindow.document.execCommand(dLink.className, false, null);
                    oComponent.syncData();
                    oComponent.wordTotal = getWordTotal();
                    dNumber.innerHTML = oComponent.wordTotal;
                    oComponent.onContentChange.fire();
                    YUE.stopEvent(oEvent)
                    return false;
                };
				/**
				* 當觸發編輯器的 keyup 事件時 ( keypress, paste, click 等事件也會觸發 )
				* @event onEditorKeyup
				* @private
				*/
                var onEditorKeyup = function(oEvent) {
                	if(syncTimer){clearTimeout(syncTimer)}
                    syncTimer = setTimeout(function(){
                    oComponent.syncData();
                    oComponent.wordTotal = getWordTotal();
                    displayWordCount(oComponent.wordTotal);
                   
                    hideTool();
                    oComponent.onContentChange.fire();
                    }
                    ,500);
                    
                };
                
                var displayWordCount = function(wordTotal){
										if(config.needReverse){
											dNumber.innerHTML = oComponent.maxWordLength - wordTotal;
										} else {
											dNumber.innerHTML = wordTotal;
										}
                }
				/**
				* 當檢視原始碼發生 keyup 事件時...
				* @event onTextareaKeyup
				* @private
				*/
                var onTextareaKeyup = function(oEvent){
                    oComponent.syncData();
                    oComponent.wordTotal = getWordTotal();
                    displayWordCount(oComponent.wordTotal);
                    oComponent.onContentChange.fire();
                }
				/**
				* 當檢視原始碼與編輯器的切換 input 發生 click 事件時
				* @event onViewSwitchClick
				* @private
				*/
                var onViewSwitchClick = function(oEvent){
					oComponent.switchView();
                };

				/**
				* 當工具列上的任一項目被點選時
				* @event onToolbarItemClick
				* @private
				*/
                var onToolbarItemClick = function(oEvent){

                    var dImg = this.getElementsByTagName('img')[0];
                    if(typeof(dImg) == 'undefined'){
                        YUE.stopEvent(oEvent);
                        return false;
                    };

                    hideTool();
                    // stop bubble up
                    YUE.stopEvent(oEvent);

                    var setPosition = function(dNode, dParent){
                        YUD.setStyle(dNode,'display','block');
                        YUD.setX(dNode,YUD.getX(dParent));
                        YUD.setY(dNode,YUD.getY(dParent) + dParent.offsetHeight);
                    };
                    switch (dImg.className) {

                        case 'align':{
                            setPosition(YUD.getElementsByClassName('align_picker','div',dToolbar)[0],this);
                            break;
                        };
                        case 'list':{
                            setPosition(YUD.getElementsByClassName('list_picker','div',dToolbar)[0],this);
                            break;
                        };
                        case 'insertimage':{
                            var sUrl = prompt('请输入图片的 URL:', 'http://');
                            if(sUrl) {

                                insertEditorHtml('<img src="' + sUrl + '"/>');
                            };
                            break;
                        };
                        
                        case 'link':{
                            var dRange = getSelectionRange();
                            var sSelection = (document.uniqueID)?dRange.htmlText:dRange.toString();
                            var sUrl = window.prompt(IL.plsInputUrl, 'http://');
                            if(sUrl) {
                                if(sSelection=='') {sSelection = prompt(IL.plsInputUrlContent,'');};
                                if(sSelection) {
                                    if(document.uniqueID){
                                        dEditorWindow.document.execCommand('createLink',false,'<a href="' + sUrl + '">' + sSelection + '</a>');
                                    }
                                    else {
                                        insertEditorHtml('<a href="' + sUrl + '">' + sSelection + '</a>');
                                    };
                                };
                            };
                            break;
                        };
                        
                         case 'specialCodes':{
                            setPosition(YUD.getElementsByClassName('special_codes_picker','div',dToolbar)[0],this);
                            break;
                        };
                         case 'uploadImage':{
                         	
                         	
                            //setPosition(get('rte_upload_image_box'),this);
                            
                            
                            return true;
                            
                            break;
                        };
                         
                         case 'resetEditor':{
                           oComponent.resetEditor()
                            break;
                        };
                          Y
                        
                        
                        default:{
                            dEditorWindow.document.execCommand(this.getElementsByTagName('img')[0].className, false, null);
                        };
                    };
                    // 點選之後需要重新計算字數
                    oComponent.syncData();
                    oComponent.wordTotal = getWordTotal();
                    oComponent.onContentChange.fire();
                };
				/**
				* 當工具列上的任一項目產生 mouseover 事件時
				* @event onToolbarItemOver
				* @private
				*/
                var onToolbarItemOver = function(oEvent){
                    var dImg = this.getElementsByTagName('img')[0];
                    if(typeof(dImg) == 'undefined'){
                        YUE.stopEvent(oEvent);
                        return false;
                    };
                    this.className = 'over';
                };
				/**
				* 當工具列上的任一項目產生 mousedown 事件時
				* @event onToolbarItemDown
				* @private
				*/
                var onToolbarItemDown = function(oEvent){

                    var dImg = this.getElementsByTagName('img')[0];
                    if(typeof(dImg) == 'undefined'){
                        YUE.stopEvent(oEvent);
                        return false;
                    };
                    this.className = 'down';
                };
				/**
				* 當工具列上的任一項目產生 mouseout 事件時
				* @event onToolbarItemOut
				* @private
				*/
                var onToolbarItemOut = function(oEvent){

                    var dImg = this.getElementsByTagName('img')[0];
                    if(typeof(dImg) == 'undefined'){
                        YUE.stopEvent(oEvent);
                        return false;
                    };
                    this.className = 'out';
                };
				/**
				* 當工具列上的任一項目產生 mouseup 事件時
				* @event onToolbarItemUp
				* @private
				*/
                var onToolbarItemUp = function(oEvent){

                    var dImg = this.getElementsByTagName('img')[0];
                    if(typeof(dImg) == 'undefined'){
                        YUE.stopEvent(oEvent);
                        return false;
                    };
                    this.className = 'up';
                };
				/**
				* 產生 HTML Editor 的主要方法
				* @method
				* @public
				*/
                oComponent.render = function() {
                    if(typeof(dBorder)!='undefined'){
                        throw new Error('Sorry cant render。');
                        return;
                    };
                 
                    // check is browser support 
                    if(!checkBrowserSupport()) {return;};
                    // factory
                    (function(){
                        // toolbar, prompt, calculator, border
                        dForm = dTextarea.form;
                        YUD.addClass(dTextarea.parentNode,'tw-rte')
                        dBorder = addNode('div','border','',dTextarea.parentNode);
                        dToolbar = addNode('div','toolbar','',dBorder);
                        dPrompt = addNode('div','prompt','',dTextarea.parentNode);
                        dRequirement = addNode('div','requirement','',dPrompt);
                        
												if(!config.needReverse){
													//dCalculator = addNode('div','calculation','<span></span>'+IL.wordNum+'<em>0</em>'+IL.letter+IL.comma+'HTML'+IL.most+oComponent.maxWordLength+IL.characters+IL.fullStop+IL.doNotPutHTML +IL.fullStop+'<span id="rteTipsContainer"></span>',dPrompt);
													dCalculator = addNode('div','calculation','<div style="width:50%;float:left;"><span></span>'+IL.wordNum+'<em>0</em>'+ IL.comma + " " + oComponent.maxWordLength + IL.characters + IL.most +IL.fullStop+ '</div><div style="float:right;width:49.9%;text-align:right;">' + IL.doNotPutHTML +IL.fullStop+'<span id="rteTipsContainer"></span></div>',dPrompt);	
													YUD.setStyle(dCalculator,'position','relative');
													YUD.setStyle(dCalculator,'width','100%');
												} else {
													dCalculator = addNode('div','calculation','<span></span>'+IL.reverseWordNum+'<em>0</em>'+IL.hintLetter+'&nbsp;&nbsp;&nbsp;&nbsp;'+IL.doNotPutHTML +'<span id="rteTipsContainer"></span>',dPrompt);
												}
												
												
                        dNumber = dCalculator.getElementsByTagName('em')[0];
                        dTooUgly = dCalculator.getElementsByTagName('span')[0];
                        dTooUgly.innerHTML="<div class='board errorB' style='width:95%;'>"+IL.charNumLimited+" <a href='javascript:vd()'>"+IL.clearCode+"</a>"+IL.fullStop+IL.ifCodeTooLong+IL.fullStop+" <a href='javascript:void(0)' class='resetEditor'>"+IL.resetEditor+"</a></div>&nbsp;";
                    		YUE.on(dTooUgly.getElementsByTagName("a")[0],"click",oComponent.checkCodesByServer);
                    		YUE.on(dCalculator.getElementsByTagName("a")[1],"click",oComponent.resetEditor);
                    		dTooUgly.style.display="none";
                    }());
                    // create editor
                    (function(){
                    	
                        // make iframe
                        dEditor = document.createElement('iframe');
                        dEditor.className = 'editor';
                        dEditor.frameborder = 'no';
                        dEditor.frameBorder = 'no';
                        dEditor.marginWidth = 0;
                        dEditor.marginHeight = 0;
                        dEditor.border = '0';
                        dEditor.scrolling = 'auto';
                        //(oConfig.editorUrl==null)?dEditor.src = 'about:blank':dEditor.src=oConfig.editorUrl;
                        dEditor.src = 'about:blank';
                        dBorder.appendChild(dEditor);
                        

                        dEditorWindow = dEditor.contentWindow;
                        //settimeout for debug
                        setTimeout(function(){

                            //for ie and ff
                            dEditorWindow.document.designMode = 'on';
                            // only for ie
                            dEditorWindow.document.contentEditable = true;
                            setEditor(dTextarea.value);
                            oComponent.wordTotal = getWordTotal();                        
                            displayWordCount(oComponent.wordTotal);
                           
                        },0);
                    }());
                    // create view source
                    (function(){

                        dCloneTextarea = dTextarea.cloneNode(true);
                        YUD.setStyle(dCloneTextarea,'font',oComponent.fontStyle);
                        dBorder.appendChild(dCloneTextarea);
                        YUD.setStyle(dCloneTextarea,'display','none');
                        YUD.setStyle(dTextarea,'display','none');

                        if (oComponent.promptMessage != null) {
                            dRequirement.innerHTML = '( ' + oComponent.promptMessage + ' )<br>';
                        };

                        dRequirement.innerHTML += '<input type="checkbox" value="1"/><label>'+IL.editSource+'</label> ';
                        dCheckbox = dRequirement.getElementsByTagName('input')[0];
                        dLabel =  dRequirement.getElementsByTagName('label')[0];
                        dCheckbox.style.display="none";
                        dLabel.style.display="none";
                        YUD.generateId(dCheckbox);
                        dLabel.setAttribute('for',dCheckbox.id);
                    }());
                    //create tool bar
                    (function(){
                        var aHtml  = function(){return ['<ul>'
                            ,'<li><img alt="'+IL.bold+'" src="' + oComponent.imageBaseUrl + 'ico_bold.gif" class="bold"></li>'
                            ,'<li><img alt="'+IL.underline+'" src="' + oComponent.imageBaseUrl + 'ico_underline.gif" class="underline"></li>'
                            ,'<li><img alt="'+IL.superscript+'" src="' + oComponent.imageBaseUrl + 'ico_superscript.gif" class="superscript"></li>'
                            ,'<li><img alt="'+IL.subscript+'" src="' + oComponent.imageBaseUrl + 'ico_subscript.gif" class="subscript"></li>'

                            //,'<li class="sep"></li>'
														//,'<li><img alt="'+IL.undo+'" src="' + oComponent.imageBaseUrl + 'icon_undo.gif" class="undo"></li>'
                            //,'<li><img alt="'+IL.redo+'" src="' + oComponent.imageBaseUrl + 'icon_redo.gif" class="redo"></li>'

                            ,'<li class="sep"></li>'
                            ,'<li><img alt="'+IL.align+'" src="' + oComponent.imageBaseUrl + 'ico_align.gif" class="align"></li>'
                            ,'<li><img alt="'+IL.list+'" src="' + oComponent.imageBaseUrl + 'ico_list.gif" class="list"></li>'
                            ,'<li class="sep"></li>'
                            ,'<li><img alt="'+IL.outdent+'" src="' + oComponent.imageBaseUrl + 'ico_tableft.gif" class="outdent"></li>'
                            ,'<li><img alt="'+IL.indent+'" src="' + oComponent.imageBaseUrl + 'ico_tabright.gif" class="indent"></li>'
                            ,'<li class="sep"></li>'
                           ,'<li><img alt="'+IL.insertSpecialCode+'" src="' + oComponent.imageBaseUrl + 'icon_sepcial_codes.gif" class="specialCodes"></li>'
                           ,'<li class="sep"></li>'
                           

                        ];}();
                        
                        
                        if(isIE){
                        aHtml.splice(8,0,'<li><img alt="'+IL.cut+'" src="' + oComponent.imageBaseUrl + 'icon_cut.gif" class="cut"></li>');
                        aHtml.splice(9,0,'<li><img alt="'+IL.copy+'" src="' + oComponent.imageBaseUrl + 'icon_copy.gif" class="copy"></li>');
                        aHtml.splice(10,0,'<li><img alt="'+IL.paste+'" src="' + oComponent.imageBaseUrl + 'icon_paste.gif" class="paste"></li>');
                         }
                        if(oConfig.uploadImageUrl!=null){
                        aHtml.push('<li class="toolBarItemUploadImage"><img alt="'+IL.insertImage+'" src="' + oComponent.imageBaseUrl + 'ico_insertimage.gif" class="uploadImage"></li>');
                        }
												aHtml.push('<li style="float:right"><img style="width:44px;" alt="'+IL.resetEditor+'" src="' + oComponent.imageBaseUrl + 'icon_reset_editor.gif" class="resetEditor"></li>');
                        dToolbar.innerHTML = aHtml.join('');
                        dToolbarItems = dToolbar.getElementsByTagName('li');
												


                    })();
                    
                    
                    
                    //tool bar special code
                    (function(){
                        var aHtml = [];
                        aHtml.push('<table>');
                        aHtml.push('<tbody>');
                        var tmpMax = Math.ceil(oComponent.specialCodes.length/8);
                        for(i=0;i<tmpMax;i++) {
                            aHtml.push('<tr>');
                            for(var x=0;x<8;x++){
                            var codeIndex = parseInt(i*8)+parseInt(x);
                            if(oComponent.specialCodes[codeIndex]){
                              aHtml.push('<td><a href="javascript:void(0);" codeIndex="' + codeIndex + '">' + oComponent.specialCodes[codeIndex] + '</a></td>');
                              }else{
                              aHtml.push('<td>&nbsp;</td>');
                              }
                                
                            };
                            aHtml.push('</tr>');
                        };
                        aHtml.push('</tbody>');
                        aHtml.push('</table><!--[if lte IE 6.5]><iframe></iframe><![endif]-->');
                        
                        var dDiv = addNode('div','special_codes_picker', aHtml.join(''),dToolbar);
                        dSpecialCodesAs = dDiv.getElementsByTagName('a');
                        YUD.setStyle(dSpecialCodesAs,'display','block');
                        YUD.setStyle(dDiv,'display','none');
                    })();
                    

                    
                    
                    //tool bar align
                    (function(){
                        var aHtml = [
                            '<table>',
                                ,'<tr><td><a href="javascript:void(0);" class="justifyleft"><img src="' + oComponent.imageBaseUrl + 'ico_alignleft.gif" onmouseout="this.className=\'out\'" onmouseover="this.className=\'over\'" onclick="vd()"></a></td><td>'+IL.alignLeft+'</td></tr>'
                                ,'<tr><td><a href="javascript:void(0);" class="justifycenter"><img src="' + oComponent.imageBaseUrl + 'ico_aligncenter.gif" onmouseout="this.className=\'out\'" onmouseover="this.className=\'over\'" onclick="vd()"></a></td><td>'+IL.alignCenter+'</td></tr>'
                                ,'<tr><td><a href="javascript:void(0);" class="justifyright"><img src="' + oComponent.imageBaseUrl + 'ico_alignright.gif" onmouseout="this.className=\'out\'" onmouseover="this.className=\'over\'" onclick="vd()"></a></td><td>'+IL.alignRight+'</td></tr>'
                            ,'</table>'
                        ];
                        var dDiv = addNode('div','align_picker', aHtml.join(''),dToolbar);
                        dAlignLinks = dDiv.getElementsByTagName('a');
                        YUD.setStyle(dDiv,'display','none');
                    })();
                    //tool bar list
                    (function(){
                        var aHtml = ['<table>'
                                        ,'<tr><td><a href="javascript:void(0);" class="insertorderedlist"><img src="' + oComponent.imageBaseUrl + 'ico_numberlist.gif" onmouseout="this.className=\'out\'" onmouseover="this.className=\'over\'" onclick="return false"></a></td><td>'+IL.orderList+'</td></tr>'
                                        ,'<tr><td><a href="javascript:void(0);" class="insertunorderedlist"><img src="' + oComponent.imageBaseUrl + 'ico_itemlist.gif" onmouseout="this.className=\'out\'" onmouseover="this.className=\'over\'" onclick="return false"></a></td><td>'+IL.unorderList+'</td></tr>'
                                    ,'</table>'];
                        var dDiv = addNode('div','list_picker',aHtml.join(''),dToolbar);
                        dListLinks = dDiv.getElementsByTagName('a');
                        YUD.setStyle(dDiv,'display','none');
                    })();
                    //tie event
                    (function(){
                        // tool bar event
                        YUE.on(dToolbarItems,'mouseover',onToolbarItemOver);
                        YUE.on(dToolbarItems,'mousedown',onToolbarItemDown);
                        YUE.on(dToolbarItems,'mouseout',onToolbarItemOut);
                        YUE.on(dToolbarItems,'mouseup',onToolbarItemUp);
                        
                        
                      	for(i=0;i<dToolbarItems.length;i++){
                      	if(dToolbarItems[i].className!="toolBarItemUploadImage"){
                      	YUE.on(dToolbarItems[i],'click',onToolbarItemClick);
                      	}else{
                     
											
                      	var fileButton = fileForm.getElementsByTagName('input')[0];
                      	YUE.on(fileButton,'change',oComponent.uploadImage);
                      	var xy=YUD.getXY(dToolbarItems[i]);
                      	YUD.setXY(fileForm,xy);


                      	
                      	}
                      	}
                        
                        
                        
                        YUE.on(dSpecialCodesAs,'click',function(oEvent){
                        		YUE.stopEvent(oEvent);
                            dEditorWindow.focus();
                            insertEditorHtml(oComponent.specialCodes[this.getAttribute('codeIndex')]);
                            oComponent.syncData();
                            hideTool();
                            oComponent.onContentChange.fire();
                            YUE.stopEvent(oEvent);
                            return false;
                        });
                        
                        YUE.on(dSpecialCodesAs,'mouseover',function(oEvent){
                        		YUE.stopEvent(oEvent);
                            YUD.setStyle(this,'background','#ccc');
                        });
                        YUE.on(dSpecialCodesAs,'mouseout',function(oEvent){
                        		YUE.stopEvent(oEvent);
                            YUD.setStyle(this,'background','#fff');
                        });
                        YUE.on(dUploadImageButton,'click',function(oEvent){
                            dEditorWindow.focus();

                           oComponent.uploadImage();

                            hideTool();
                            oComponent.onContentChange.fire();
                            YUE.stopEvent(oEvent);
                            return false;
                        });

                        
                        
                        
                        // align event
                        YUE.on(dAlignLinks,'click',onCommandClick);
                        // list event
                        YUE.on(dListLinks,'click',onCommandClick);
                        // hide all selector when click other place
                        YUE.on(document,'click',hideTool);
                        // hide all selector when key press other place
                        YUE.on(document,'keypress',hideTool);
                        // hide all selector when key up other place
                        YUE.on(dCloneTextarea,'afterpaste',onTextareaKeyup);
                        YUE.on(dCloneTextarea,'keyup',onTextareaKeyup);
                        YUE.on(dCloneTextarea,'click',onTextareaKeyup);
                        YUE.on(dCloneTextarea,'keypress',onTextareaKeyup);

                        YUE.on(dCheckbox,'click',onViewSwitchClick);
                    }());
                    // firefox not setTimeout will faild
                    setTimeout(function(){
                        setView()
                        oComponent.onRenderComplete.fire();
                    },0);
                };
                break;
            };
            default: {
                var dNumber,dCloneTextarea,dForm,dBorder,dPrompt,dCalculator,dRequirement;
				/**
				* 初始化：自訂事件
				* @method init
				* @return void
				*/
                var init = function() {
                    oComponent.onContentChange = new YAHOO.util.CustomEvent('contentChange',this);
                    oComponent.onRenderComplete = new YAHOO.util.CustomEvent('renderComplete',this);
                };
                init();
				/**
				* 當編輯器發生 keyup 事件時...
				* @event onTextareaKeyup
				* @private
				*/
                var onTextareaKeyup = function(e) {
                    oComponent.wordTotal = dCloneTextarea.value.replace(/\r/g, '').replace(/\n/g, '').length;
                     displayWordCount(oComponent.wordTotal);                   
                    dTextarea.value = dCloneTextarea.value;
                    oComponent.onContentChange.fire();
                };
				/**
				* 更改顯示訊息，
				* @method setPromptMessage
				* @param {string} sMessage 欲更改的訊息字串
				* @public
				* @return boolean
				*/
                oComponent.setPromptMessage = function(sMessage){
                    switch (true) {
                        case (typeof(sMessage) == 'undefined') : {
                            return false;
                        };
                        case (sMessage == null || trim(sMessage) == '') : {
                            dRequirement.innerHTML = '';
                            return true;
                        };
                        default : {
                            oComponent.promptMessage = sMessage;
                            dRequirement.innerHTML = '( ' + oComponent.promptMessage + ' )';
                            return true;
                        };
                    };
                };
			
            };
        };
    }
}
var IL={
	comma:", ",
	fullStop:". ",
	colon:": ",
	
	//base begin
	ok:"Ok",
	cancel:"Cancel",
	//base end
	
	//rich text editor begin
	editSource:" Edit HTML source ",
	noColor:" No color please ",
	plsInputUrl:" Please input URL of the link: ",
	plsInputUrlContent:" Please input content of the link ",
	wordNum:" Characters: ",
	reverseWordNum:"Remaining: ",
	character:" character ",
	characters:" characters",
	most:" max ",
	letter:" character ",
	hintLetter:" character(s)",
	charNumLimited:" The information you filled exceeds the limit. ",
	plsModify:" Please modify the information ",
	bold:" Bold ",
	italic:" Italic ",
	underline:" Underline ",
	superscript:" Superscript ",
	subscript:" Subscript ",
	insertLink:" Insert link ",
	insertImage:" Insert image ",
	undo:" Undo ",
	redo:" Redo ",
	align:" Justify ",
	list:" Numbered list/bulleted list ",
	outdent:" Outdent ",
	indent:" Indent ",
	font:" Font ",
	plsSelect:" Please select ",
	fontSize:" Size ",
	cut:" Cut ",
	copy:" Copy ",
	paste:" Paste ",
	noColor:" No color ",
	alignLeft:"Align Left", 
	alignCenter:"Center", 
	alignRight:"Align Right", 
	orderList:"Numbered list", 
	unorderList:"Bulleted list",
	plsTryAgain:" Please try again ",
	processing:" Processing now ",
	uploading:" uploading now ",
	plsWait:" Please wait ",
	uploadFaild:" Upload failed ",
	clearCode:" Clear spam code ",
	ifCodeTooLong:" Please reset editor if it is too long",
	insertSpecialCode:" Insert special character ",
	resetEditor:" Reset detailed description",
	doNotPutHTML:'Do not enter HTML code or contact details',
	//rte end
	
	
	//reorder begin
	pageNumOut:" Page exceeds the limit ",
	plsInput:" Please input ",
	to:"to",
	innerNumber:" numbers from ",
	doTooFast:" You operate too fast ",
	savingDate:" Saving data now ",
	wantLeave:"Data is not saved, do you want leave and save data?",
	//reorder end
	
	//upload_dynamic_images.js begin
	cantPreview:" Can't preview "
	//upload_dynamic_images.js end
	};



