//>>built
define("dojox/string/BidiComplex",["dojo/_base/kernel","dojo/_base/lang","dojo/_base/array","dojo/_base/connect","dojo/_base/sniff","dojo/keys"],function(_1,_2,_3,_4,_5,_6){
_1.experimental("dojox.string.BidiComplex");
var _7=_2.getObject("string.BidiComplex",true,dojox);
var _8=[];
_7.attachInput=function(_9,_a){
_9.alt=_a;
_4.connect(_9,"onkeydown",this,"_ceKeyDown");
_4.connect(_9,"onkeyup",this,"_ceKeyUp");
_4.connect(_9,"oncut",this,"_ceCutText");
_4.connect(_9,"oncopy",this,"_ceCopyText");
_9.value=_7.createDisplayString(_9.value,_9.alt);
};
_7.createDisplayString=function(_b,_c){
_b=_7.stripSpecialCharacters(_b);
var _d=_7._parse(_b,_c);
var _e="‪"+_b;
var _f=1;
_3.forEach(_d,function(n){
if(n!=null){
var _10=_e.substring(0,n+_f);
var _11=_e.substring(n+_f,_e.length);
_e=_10+"‎"+_11;
_f++;
}
});
return _e;
};
_7.stripSpecialCharacters=function(str){
return str.replace(/[\u200E\u200F\u202A-\u202E]/g,"");
};
_7._ceKeyDown=function(_12){
var _13=_5("ie")?_12.srcElement:_12.target;
_8=_13.value;
};
_7._ceKeyUp=function(_14){
var LRM="‎";
var _15=_5("ie")?_14.srcElement:_14.target;
var _16=_15.value;
var _17=_14.keyCode;
if((_17==_6.HOME)||(_17==_6.END)||(_17==_6.SHIFT)){
return;
}
var _18,_19;
var _1a=_7._getCaretPos(_14,_15);
if(_1a){
_18=_1a[0];
_19=_1a[1];
}
if(_5("ie")){
var _1b=_18,_1c=_19;
if(_17==_6.LEFT_ARROW){
if((_16.charAt(_19-1)==LRM)&&(_18==_19)){
_7._setSelectedRange(_15,_18-1,_19-1);
}
return;
}
if(_17==_6.RIGHT_ARROW){
if(_16.charAt(_19-1)==LRM){
_1c=_19+1;
if(_18==_19){
_1b=_18+1;
}
}
_7._setSelectedRange(_15,_1b,_1c);
return;
}
}else{
if(_17==_6.LEFT_ARROW){
if(_16.charAt(_19-1)==LRM){
_7._setSelectedRange(_15,_18-1,_19-1);
}
return;
}
if(_17==_6.RIGHT_ARROW){
if(_16.charAt(_19-1)==LRM){
_7._setSelectedRange(_15,_18+1,_19+1);
}
return;
}
}
var _1d=_7.createDisplayString(_16,_15.alt);
if(_16!=_1d){
window.status=_16+" c="+_19;
_15.value=_1d;
if((_17==_6.DELETE)&&(_1d.charAt(_19)==LRM)){
_15.value=_1d.substring(0,_19)+_1d.substring(_19+2,_1d.length);
}
if(_17==_6.DELETE){
_7._setSelectedRange(_15,_18,_19);
}else{
if(_17==_6.BACKSPACE){
if((_8.length>=_19)&&(_8.charAt(_19-1)==LRM)){
_7._setSelectedRange(_15,_18-1,_19-1);
}else{
_7._setSelectedRange(_15,_18,_19);
}
}else{
if(_15.value.charAt(_19)!=LRM){
_7._setSelectedRange(_15,_18+1,_19+1);
}
}
}
}
};
_7._processCopy=function(_1e,_1f,_20){
if(_1f==null){
if(_5("ie")){
var _21=document.selection.createRange();
_1f=_21.text;
}else{
_1f=_1e.value.substring(_1e.selectionStart,_1e.selectionEnd);
}
}
var _22=_7.stripSpecialCharacters(_1f);
if(_5("ie")){
window.clipboardData.setData("Text",_22);
}
return true;
};
_7._ceCopyText=function(_23){
if(_5("ie")){
_23.returnValue=false;
}
return _7._processCopy(_23,null,false);
};
_7._ceCutText=function(_24){
var ret=_7._processCopy(_24,null,false);
if(!ret){
return false;
}
if(_5("ie")){
document.selection.clear();
}else{
var _25=_24.selectionStart;
_24.value=_24.value.substring(0,_25)+_24.value.substring(_24.selectionEnd);
_24.setSelectionRange(_25,_25);
}
return true;
};
_7._getCaretPos=function(_26,_27){
if(_5("ie")){
var _28=0,_29=document.selection.createRange().duplicate(),_2a=_29.duplicate(),_2b=_29.text.length;
if(_27.type=="textarea"){
_2a.moveToElementText(_27);
}else{
_2a.expand("textedit");
}
while(_29.compareEndPoints("StartToStart",_2a)>0){
_29.moveStart("character",-1);
++_28;
}
return [_28,_28+_2b];
}
return [_26.target.selectionStart,_26.target.selectionEnd];
};
_7._setSelectedRange=function(_2c,_2d,_2e){
if(_5("ie")){
var _2f=_2c.createTextRange();
if(_2f){
if(_2c.type=="textarea"){
_2f.moveToElementText(_2c);
}else{
_2f.expand("textedit");
}
_2f.collapse();
_2f.moveEnd("character",_2e);
_2f.moveStart("character",_2d);
_2f.select();
}
}else{
_2c.selectionStart=_2d;
_2c.selectionEnd=_2e;
}
};
var _30=function(c){
return (c>="0"&&c<="9")||(c>"ÿ");
};
var _31=function(c){
return (c>="A"&&c<="Z")||(c>="a"&&c<="z");
};
var _32=function(_33,i,_34){
while(i>0){
if(i==_34){
return false;
}
i--;
if(_30(_33.charAt(i))){
return true;
}
if(_31(_33.charAt(i))){
return false;
}
}
return false;
};
_7._parse=function(str,_35){
var _36=-1,_37=[];
var _38={FILE_PATH:"/\\:.",URL:"/:.?=&#",XPATH:"/\\:.<>=[]",EMAIL:"<>@.,;"}[_35];
switch(_35){
case "FILE_PATH":
case "URL":
case "XPATH":
_3.forEach(str,function(ch,i){
if(_38.indexOf(ch)>=0&&_32(str,i,_36)){
_36=i;
_37.push(i);
}
});
break;
case "EMAIL":
var _39=false;
_3.forEach(str,function(ch,i){
if(ch=="\""){
if(_32(str,i,_36)){
_36=i;
_37.push(i);
}
i++;
var i1=str.indexOf("\"",i);
if(i1>=i){
i=i1;
}
if(_32(str,i,_36)){
_36=i;
_37.push(i);
}
}
if(_38.indexOf(ch)>=0&&_32(str,i,_36)){
_36=i;
_37.push(i);
}
});
}
return _37;
};
return dojox.string.BidiComplex;
});
