/** * @author herong * 字符组件 */ var CFWStr = _FW.fCreateClass(); /** * 字符组件API */ CFWStr.prototype = { /** * 初始化 * */ fInitialize : function(options) { }, /** * 将数值类型转化为String * 主要是将传入的数值类型入参变量转换为字符串 * @param Integer iInputs (必需)数据类型入参 * @return String 转换后的字符串 *
       * 使用举例:
       *     CFW.oStr.fnNub2Str(iInputs);
       * 
*/ fnNub2Str : function (iInputs) { //由于入参可能不是数字型也调用此方法,暂时不判断是否为数值型 return("" + iInputs + ""); }, /** * 全角转半角,返回转换后的字符串 * 主要是将传入的字符串入参中的全角输入法下输入的字母、数字等全部转换为半角字符 * @param String sInputs (必需)字符类型入参 * @return String 转换后的字符串 *
       * 使用举例:
       *     var _iInputs = "0123ABC";
       *     CFW.oStr.fnQj2Bj(_iInputs);
       * 
*/ fnQj2Bj : function (sInputs) { //全角字符 var qj = new Array('0','1','2','3','4','5','6','7','8','9','`','~', '=','+','-','_','(',')','×','&','……','%','¥','#','@','!', '<','>','?',':','"',',','.','、',';','【','】','{','}','|', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', 'Q','R','S','T','U','V','W','X','Y','Z' ,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p', 'q','r','s','t','u','v','w','x','y','z'); //半角字符 var bj = new Array('0','1','2','3','4','5','6','7','8','9','`','~', '=','+','-','_','(',')','*','&','^','%','$','#','@','!', '<','>','?',':','"',',','.','/',';','[',']','{','}','|', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' ); var newStr = ""; //循环获取入参的每个字符 for(var i = 0 ; i < sInputs.length ; i++){ var ch = sInputs.charAt(i); var isQj = false; //循环比较,是否为全角字符 for(var j = 0 ; j < qj.length ; j++){ //若为全角字符,则替换 if(qj[j] == ch){ newStr += bj[j]; isQj = true; break; } } //若不为全角字符,还使用原字符 if(!isQj){ newStr += ch; } } //如果没有输入全角字符,也应该输出 return newStr; }, /** * 替代字符 * 主要是将字符串中需要替代的子字符串替换为指定的子字符串,并可传入大小写敏感标志以及整字代替标志 * @param String sSrc (必需) 目标String * @param String sOldSub (必需) 欲替代的子字符串 * @param String sNewSub (必需) 替代成为的子字符串 * @param boolean bCaseSens 大小写是否敏感 * @param boolean bwordOnly 是否整字代替 * @return String 替代字符后的字符串 *
       * 使用举例:
       *     var _sSrc = "替代字符ABC";
       *     var _sOldSub = "ABC";
       *     var _sNewSub = "abc";
       *     CFW.oStr.fnReplace(_sSrc,sOldSub,sNewSub,bCaseSens,bwordOnly);
       * 
*/ fnReplace : function (sSrc,sOldSub,sNewSub,bCaseSens,bwordOnly) { var wk ; var ind = 0; var next = 0; wk = sSrc+""; if(CFW.oValid.fnIsNull(sSrc,"CFW.oStr.fnReplace 目标字符串")){ return ''; } if(CFW.oValid.fnIsNull(sOldSub,"CFW.oStr.fnReplace 欲替代的子字符串")){ return ''; } //若大小写不敏感,替换字符串和被替换字符串,小写处理 if (!bCaseSens) { sOldSub = sOldSub.toLowerCase(); wk = sSrc.toLowerCase(); } //循环获取替换字符串中,下一个被替换子字符串的位置,进行替换 while ((ind = wk.indexOf(sOldSub,next)) >= 0) { //如果整字替换 if (bwordOnly) { var before = ind - 1; var after = ind + sOldSub.length; //charAt() 方法可返回指定位置的字符 //如果找到的字符串前后都为空格(此处为空不为非法),才能替换 if (!(CFW.oValid.fnIsNull(wk.charAt(before)) && CFW.oValid.fnIsNull(wk.charAt(after)))) { next = ind + sOldSub.length; continue; } } //其前段+替换字符串+其后段 sSrc = sSrc.substring(0,ind) + sNewSub + sSrc.substring(ind+sOldSub.length,sSrc.length); wk = wk.substring(0,ind) + sNewSub + wk.substring(ind+sOldSub.length,wk.length); //下次开始位置:本次位置+替换字符串长度 next = ind + sNewSub.length; //如果已完成循环,则退出 if (next >= wk.length) { break; } } return sSrc; }, /** * 返回字符串的比特长度 * 主要是计算字符串的字节长度并返回 * @param String sInputs (非必需)目标String * @return int 字符串的比特长度 *
       * 使用举例:
       *     var _sInputs = "字符串ABC";
       *     CFW.oStr.fnLengthB(_sInputs);
       * 
*/ fnLengthB : function (sInputs) { if(sInputs == null || sInputs == "") return 0; var len = 0; for(var i = 0; i < sInputs.length; i++){ var t = sInputs.substring(i,i+1); var c=t.charCodeAt(0) ; //单字节加1 if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { len++; }else { len+=2; } } return len; }, /** * 获取中文字符串的拼音首字母 * 主要是获取传入的字符串中的中文字符串,如果传入的字符串中有中文之外的字符则返回字符本身 * @param String sInputs (必需)目标String * @return String 获取到的拼音首字母字符串 *
       * 使用举例:
       *     var _sInputs = "字符串1";
       *     CFW.oStr.fnGetChFirstLetter(_sInputs);
       * 
*/ fnGetChFirstLetter : function (sInputs) { if(!sInputs || sInputs.length==0) return ""; var CH2EN = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY"; var py = ""; for(var i = 0 ; i < sInputs.length ; i++){ var utfcode = sInputs.charCodeAt(i); var ind = utfcode - 19968; if(ind<0 || ind>=CH2EN.length){//不是汉字,返回字符本身 py += sInputs.charAt(i); }else{ py += CH2EN.charAt(ind); } } return py; }, /** * 函数用于将list对象中sColNames字段的值包含sOldSub替换为sNewSub * @param List lParam (必需):所要处理的list对象 * @param String sColNames (必需):字段拼串字符串对象,如"AAE005,AAE006" * @param String sOldSub (必需):指定字段值包含的字符串,需要替换的字符串 * @param String sNewSub (必需):替换的字符串,将sOldSub替换成sNewSub *
       * 使用举例:
       *  rows = CFW.oStr.fnReplaceListValue(rows,"AAE005,AAE006","XX","YY");//如将rows中的AAE005与AAE006字段中XX
       *    替换成YY
       * 
*/ fnReplaceListValue : function (lParam,sColNames,sOldSub,sNewSub) { //若lParam为空,则不处理 if(CFW.oValid.fnIsNull(lParam,"CFW.oStr.fnReplaceListValue 所要处理的list对象")){ return lParam; } //若sColNames为空,则不处理 if(CFW.oValid.fnIsNull(sColNames,"CFW.oStr.fnReplaceListValue 字段拼串字符串对象")){ return lParam; } var a = sColNames.split(','); //将字符串str转换为数组对象 var aLen = a.length; //获取数组a的长度 var rLen = lParam.length; //获取lParam对象的长度 //循环需替换字段 for(var j = 0 ; j < aLen ; j++){ for(var i = 0 ; i < rLen ; i++){ var str =lParam[i][a[j]]; //运算新对象值 if(!CFW.oValid.fnIsNull(str)&&!CFW.oValid.fnIsNull(sOldSub)){ str = eval("'"+str+"'.replace(/" + sOldSub + "/g,'"+ sNewSub+"')") ; //eval(tmp); }else if(CFW.oValid.fnIsNull(sOldSub)){ str=sNewSub; } //设置新对象值 try{ lParam[i][a[j]] = str; //将替换后的值重新保存到lParam中 }catch(e){ continue; } } } return lParam; }, /** * 函数用于将list对象中sColName字段的值设置为sParam * 主要是将传入的list对象中的指定的某个字段的值统一设置为指定的值,并返回此list对象 * @param List lParam(必需):所要处理的list对象 * @param String sColNames(必需):字段拼串字符串对象,如"AAE005" * @param String sParam(必需):要设定的值 * @return list 完成值设定后的list对象 *
       * 使用举例:
       *     rows = CFW.oStr.fnSetListValue(rows,"AAE005","X");//如将rows中的AAE005字段值替换成X
       * 
*/ fnSetListValue : function (lParam,sColNames,sParam) { //若lParam为空,则不处理 if(CFW.oValid.fnIsNull(lParam,"CFW.oStr.fnSetListValue 所要处理的list对象")){ return lParam; } //若sColNames为空,则不处理 if(CFW.oValid.fnIsNull(sColNames,"CFW.oStr.fnSetListValue 字段拼串字符串对象")){ return lParam; } var a = sColNames.split(','); //将字符串str转换为数组对象 var aLen = a.length; //获取数组a的长度 var rLen = lParam.length; //获取lParam对象的长度 //循环需替换字段 for(var j = 0 ; j < aLen ; j++){ for(var i = 0 ; i < rLen ; i++){ try{ //替换 lParam[i][a[j]] = sParam; //给第i行的str1字段赋值sParam }catch(e){//可能不存在该对象名 continue; } } } return lParam; }, /** * 获取单记录表单的所有字段并自动按指定的分隔符拼成串 * 主要是将传入的单记录表单中所有字段名、字段值按指定的分隔符拼成值串,以便传给后台使用。还可以指定不需要拼接的字段。 * @param String sFormId (必需)单记录表单的ID * @param String sSeparator 分隔符,默认逗号 * @param Array aNoParam 不需要拼接的字段数组 * @param Array aNoParam 是否需要过滤为空的字符串 * @returns String 返还拼接后的串 *
       * 使用举例:
       *  var _aNoParam = new Array('XB','BZ');//不需要拼接的字段串
       *  var _aStr = CFW.oStr.fnSpliceStr('gentbl_test','\x03',_aNoParam); //例子中使用的分隔符为chr(3) 
       * 
*/ fnSpliceStr : function (sFormId,sSeparator,aNoParam,bFlag) { var k,i,j = 0,tmp = ''; var bMark = false; var tags = new Array(); var gtObj = $('#' + sFormId).get(0);//获取单记录表对象 $(':input',gtObj).each(function(){ //在此处停止,执行下一个循环 if(this.name == null || this.name == ''){return true;} bMark = false; //循环排除对象名 for(k = 0 ; k < aNoParam.length ; k++){ if(aNoParam[k] == this.name){ bMark = true; break; } } //若不是排除对象,则获取键值对 if(!bMark){ if(bFlag){ if(!CFW.oValid.fnIsNull(this.value)){ tags[j] = this.name + "=" + this.value; j++; } }else{ tags[j] = this.name + "=" + this.value; j++; } } }); tmp = tags.join(sSeparator);//指定分隔符拼字符串 return tmp; }, /** * 组装查询条件函数 * 主要将传入的单记录表中的字段拼接成SQL语句查询条件串,如果字段需要进行特殊设置,则在sColRow中进行相应的特殊配置。 * @param String sFormId (必需)单记录表单的配置ID名称 * @param JSON数组 aColRow (必需)特殊字段的设置的JSON数组, * 定义空的数组格式默认为 var row=[]; 若无特殊要求,也可以不必设置,默认为用等号拼接 * 其中colname,type为必录,若为空或不设置则不执行,还可设置begin、end、exp * exp设置为like时,begin和end只能设置为空或% * exp不为like时,可用逗号隔开两个符号,如果begin和end有值,则默认exp设置为'<=,>=' * type目前可支持:NUMBER,STRING,DATE,DATETIME,DATETONUM6,DATETONUM8,DATETONUM14 * DATE格式为'yyyy-mm-dd',DATETIME格式为'yyyy-mm-dd hh24:mi:ss',DATETONUM+6/8/14,分别为6、8、14位时间格式 * @returns String 返回组装后的查询条件串 *
       * 使用举例:
       * 例1:
       * 没有任何特殊的设置
       * var _sWhere = spliceWhere('ybdy_spdjcx_sqxd_cxtj','');
       * 例2:
       * var _aRow =  [{'colname':'CXRQ','type':'DATE','begin':'KSCXRQ','end':'ZZCXRQ'},
       *             {'colname':'SHNY','type':'STRING','begin':'KSSHNY','end':'ZZSHNY','exp':'<,>'},
       *             {'colname':'CSRQ','type':'DATE','exp':'>='},
       *             {'colname':'JBRQ','type':'DATETIME'},
       *             {'colname':'JE','type':'NUMBER'},
       *             {'colname':'ZJBH','type':'STRING','begin':'','end':'%','exp':'like'},
       *             {'colname':'YWLSH','type':''}
       *            ];   
       *  var _aWhere = CFW.oStr.fnSpliceWhere('ybdy_spdjcx_sqxd_cxtj',_aRow); 
       * 
*/ fnSpliceWhere : function (sFormId,aColRow) { var row = []; var b = false; var arrCol=[]; var strWhere='',j=0; var myobj = $('#'+sFormId).get(0);//获取单记录表对象 if(typeof aColRow =='object' && typeof aColRow.sort == 'function' && typeof aColRow.length == 'number'){ row = aColRow; } //找出有特别设置的字段 for(var i=0;i var colname ='',colvalue=''; var begin='', end='', tmp='', type='STRING'; var date1='', date2='', iLen=0, iPos=0; if(row[i]['colname']==null){ continue; } colname = row[i]['colname']; //判断是否存在值 有时需要查询的字段不在界面上 开始日期、终止日期对应的字段XXX日期等 if(typeof $('[NAME="'+colname+'"]',myobj).get(0)=='object'){ //取相应字段的值 colvalue =$('[NAME="'+colname+'"]',myobj).get(0).value; if(colvalue==''||colvalue==null){ continue; } } if(colvalue!=null&&colvalue!=''&& typeof(colvalue)=='string'){ colvalue=colvalue.replace(/'/g, "''"); } if(row[i]['begin']!=null){begin=row[i]['begin'];} if(row[i]['end']!=null){end=row[i]['end'];} type=row[i]['type']; arrCol[j]=colname;//放入数组的目的是为了下面过滤掉,不要重复组合 j++; //处理需要过滤不组合到WHERE内的字段 if(type==null||type==''){ continue; } //是否配置了表达式 if(row[i]['exp']!=null){ exp = row[i]['exp']; exp = exp.toLowerCase(); iPos = exp.indexOf(','); //检查是否配置了 <,> 等表达式 if(iPos>0){ var arrExp = exp.split(','); exp='='; exp1 = arrExp[0]; exp2 = arrExp[1]; } } if(strWhere==''){ strWhere =' ' + colname; }else{ strWhere = strWhere + ' and ' + colname; } //拼接上表达式 strWhere += ' ' + exp +' '; if(exp!='like'){ //调用内部函数组合查询条件 strWhere = dt(myobj,strWhere,type,colname,colvalue,begin,end,exp1,exp2); if(begin!=''){ arrCol[j]=begin; j++;} if(end!=''){arrCol[j]=end;j++;} } //若传入的like,则更加begin和end的%值,拼串 if(exp=='like'){ if((begin==''&&end=='')||(begin=='%'&&end=='%')){ strWhere += "'%" + colvalue + "%'"; } if(begin=='%'&&end==''){ strWhere += "'%" + colvalue + "'"; } if(begin==''&&end=='%'){ strWhere += "'" + colvalue + "%'"; } } }//for end here //下面开始处理没有特别设置的字段 jQuery(':input',myobj).each(function(){ b=false; if(this.name==null|| this.name==''||this.name=='_multiple'){ return true; //循环下一个相当于FOR循环continue } //过滤掉已经特殊处理过的字段 for(var k=0; k=';} //若没有配则设置默认值 if(e2==''){e2='<=';} if(bg==''&&en==''){ if(ty=='NUMBER'){sW += clv;} if(ty=='STRING'){sW += "'" + clv + "'";} if(ty=='DATE'){sW += "to_date('" + clv + "','yyyy-mm-dd')"; } if(ty=='DATETIME'){sW += "to_date('" + clv + "','yyyy-mm-dd hh24:mi:ss')"; } if(ty=='DATETONUM6'){ clv = clv.replace(/-/gi, ""); if(clv.length>6){ clv = clv.substr(0,6); } sW += clv; } if(ty=='DATETONUM8'){ clv = clv.replace(/-/gi, ""); sW += clv; } if(ty=='DATETONUM14'){ clv = clv.replace(/-/gi, ""); clv = clv.replace(/:/gi, ""); clv = clv.replace(/ /gi, ""); iL = clv.length; while(iL<14){ clv+='0'; iL = clv.length; } sW += clv; } return sW; } //说明是有开始字段跟终止字段 if(bg!=''&&en!=''){ if(typeof $('[NAME="'+bg+'"]',obj).get(0)!='object'){ CFW.oWin.fnAlert('字段='+bg+' 不存在!'); return ''; } if(typeof $('[NAME="'+en+'"]',obj).get(0)!='object'){ CFW.oWin.fnAlert('字段='+en+' 不存在!'); return ''; } d1=$('[NAME="'+bg+'"]',obj).get(0).value; d2=$('[NAME="'+en+'"]',obj).get(0).value; iL = sW.length-2; sW = sW.substr(0,iL); //去掉=号 //开始字段录入值 if(d1!=''){ if(ty=='NUMBER'){sW += " "+e1+d1;} if(ty=='STRING'){sW += " "+e1+"'"+d1+"'";} if(ty=='DATE'){ sW += " "+e1+" to_date('" + d1 + "','yyyy-mm-dd')";}; if(ty=='DATETIME'){sW += " "+e1+" to_date('" + d1 + "','yyyy-mm-dd hh24:mi:ss')";}; if(ty=='DATETONUM6'){ d1 = d1.replace(/-/gi, ""); if(d1.length>6){ d1 = d1.substr(0,6); } sW += " "+e1 + " " + d1; } if(ty=='DATETONUM8'){ d1 = d1.replace(/-/gi, ""); sW += " "+e1 + " " + d1; } if(ty=='DATETONUM14'){ d1 = d1.replace(/-/gi, ""); d1 = d1.replace(/:/gi, ""); d1 = d1.replace(/ /gi, ""); iL = d1.length; while(iL<14){ d1+='0'; iL = d1.length; } sW += " "+e1 + " " + d1; } if(d2!=''){ sW += " and " + cln; } } //终止字段录入值 if(d2!=''){ if(ty=='NUMBER'){ sW += " "+e2+" " + d2;}; if(ty=='STRING'){ sW += " "+e2+" '" + d2 + "'";}; if(ty=='DATE'){ sW += " "+e2+" to_date('" + d2 + "','yyyy-mm-dd')";}; if(ty=='DATETIME'){sW += " "+e2+" to_date('" + d2 + "','yyyy-mm-dd hh24:mi:ss')";}; if(ty=='DATETONUM6'){ d2 = d2.replace(/-/gi, ""); if(d2.length>6){ d2 = d2.substr(0,6); } sW += " "+e2 + " " + d2; } if(ty=='DATETONUM8'){ d2 = d2.replace(/-/gi, ""); sW += " "+e2 + " " + d2; } if(ty=='DATETONUM14'){ d2 = d2.replace(/-/gi, ""); d2 = d2.replace(/:/gi, ""); d2 = d2.replace(/ /gi, ""); iL = d2.length; if(iL==8){ d2+='235959';//23:59:59 }else{ while(iL<14){ d2+='0'; iL = d2.length; } } sW += " "+e2 + " " + d2; } } //若开始字段和终止字段都没有录入值 if(d1==''&&d2==''){ tp = 'and ' + cln; iP = sW.indexOf(tp); sW = sW.substr(0,iP); //去掉and 和列名 } } return sW; }//dt }, fnJsonWhere : function (sFormId,aColRow) { var row = []; var b = false; var arrCol=[]; var strWhere='',j=0; var whereArr=[]; var myobj = $('#'+sFormId).get(0);//获取单记录表对象 if(typeof aColRow =='object' && typeof aColRow.sort == 'function' && typeof aColRow.length == 'number'){ row = aColRow; } //找出有特别设置的字段 for(var i=0;i var colname ='',colvalue=''; var begin='', end='', tmp='', type='STRING'; var date1='', date2='', iLen=0, iPos=0; if(row[i]['colname']==null){ continue; } colname = row[i]['colname']; //判断是否存在值 有时需要查询的字段不在界面上 开始日期、终止日期对应的字段XXX日期等 if(typeof $('[NAME="'+colname+'"]',myobj).get(0)=='object'){ //取相应字段的值 colvalue =$('[NAME="'+colname+'"]',myobj).get(0).value; if(colvalue==''||colvalue==null){ continue; } } if(colvalue!=null&&colvalue!=''&& typeof(colvalue)=='string'){ colvalue=colvalue.replace(/'/g, "''"); } if(row[i]['begin']!=null){begin=row[i]['begin'];} if(row[i]['end']!=null){end=row[i]['end'];} type=row[i]['type']; arrCol[j]=colname;//放入数组的目的是为了下面过滤掉,不要重复组合 j++; //处理需要过滤不组合到WHERE内的字段 if(type==null||type==''){ continue; } //是否配置了表达式 if(row[i]['exp']!=null){ exp = row[i]['exp']; exp = exp.toLowerCase(); iPos = exp.indexOf(','); //检查是否配置了 <,> 等表达式 if(iPos>0){ var arrExp = exp.split(','); exp='='; exp1 = arrExp[0]; exp2 = arrExp[1]; } } if(exp!='like'){ //调用内部函数组合查询条件 var d1=$('[NAME="'+begin+'"]',myobj).get(0).value; var d2=$('[NAME="'+end+'"]',myobj).get(0).value; if(d1!=''||d2!=''){ var whereCOl=new Object(); whereCOl.colname=colname; whereCOl.colvalue=colvalue; whereCOl.exp=exp; whereCOl.exp1=exp1; whereCOl.exp2=exp2; whereCOl.begin=begin; whereCOl.end=end; whereCOl.d1=d1; whereCOl.d2=d2; whereCOl.type=type; whereCOl.special="true"; whereArr[whereArr.length]=whereCOl; } if(begin!=''){ arrCol[j]=begin; j++;} if(end!=''){arrCol[j]=end;j++;} }else{ //若传入的like,则更加begin和end的%值,拼串 var whereCOl=new Object(); whereCOl.colname=colname; whereCOl.colvalue=colvalue; whereCOl.exp=exp; whereCOl.exp1=exp1; whereCOl.exp2=exp2; whereCOl.begin=begin; whereCOl.end=end; whereCOl.special="true"; whereArr[whereArr.length]=whereCOl; } }//for end here //下面开始处理没有特别设置的字段 jQuery(':input',myobj).each(function(){ b=false; if(this.name==null|| this.name==''||this.name=='_multiple'){ return true; //循环下一个相当于FOR循环continue } //过滤掉已经特殊处理过的字段 for(var k=0; k