/* BFAPI: The FirstClass BlueField API Object to be used with BlueField version 1.0, API Revision 5 See the associated "ReadMe" file (/Plugins/BFAPI/ReadMe) for instructions on how to use this object */ function BFAPI(url){ /*^BFPAI/URLEscape.imp*/ function uesc(){function ruc(c){var r=0;if(c<0x30&&c!=0x2E){r=1;}else if(c>0x39&&c<0x41){r=1;}else if(c>0x5A&&c<61){r=1;}else if(c>0x7A){r=1;}return r;}var HD=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function hv(c){return "%"+HD[Math.floor(c/16)]+HD[c%16];}return function(u){var s="";for(var i=0;i>6))+hv(0x80|(c&0x3F));}else if(c<0x10000){s+=hv(0xE0|(c>>12))+hv(0x80|((c>>6)&0x3F))+hv(0x80|(c&0x3F));}else{s+=hv(0xF0|(c>>16))+hv(0x80|((c>>12)&0x3F))+hv(0x80|((c>>6)&0x3F))+hv(0x80|(c&0x3F));}}return s;};}var uesc=uesc(); /**URLEscape*/ /*^BFPAI/SHA1.imp*/ function SHA1(){var HD=new String("0123456789abcdef");function AND(a,b){var hb=((a>=0x80000000)&&(b>=0x80000000));var r=0;if(a>=0x80000000){a-=0x80000000;}if(b>=0x80000000){b-=0x80000000;}r=a&b;if(hb){r+=0x80000000;}return r;}function OR(a,b){var hb=((a>=0x80000000)||(b>=0x80000000));var r=0;if(a>=0x80000000){a-=0x80000000;}if(b>=0x80000000){b-=0x80000000;}r=a|b;if(hb){r+=0x80000000;}return r;}function XOR(a,b){var hb=((a>=0x80000000)&&(b<0x80000000))||((a<0x80000000)&&(b>=0x80000000));var r=0;if(a>=0x80000000){a-=0x80000000;}if(b>=0x80000000){b-=0x80000000;}r=a^b;if(hb){r+=0x80000000;}return r;}function NOT(a){var b=0x80000000;var n=0;while(b>=1){if(a>=b){a-=b;}else{n+=b;}b=b/2;}return n;}function ADD(a,b){var n=0;if(a>=0x80000000){++n;a-=0x80000000;}if(b>=0x80000000){++n;b-=0x80000000;}a+=b;if(n==1){if(a>=0x80000000){a-=0x80000000;}else{a+=0x80000000;}}return a;}function LS(a,s){for(var i=0;i=0x80000000){a-=0x80000000;}a=a*2;}return a;}function RS(a,s){for(var i=0;i>4)&0x0F,1);}function HEX2(c){return HD.substr(c&0x0F,1);}var PD=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var H=[],B=[];var KV=[0x5A827999,0x6ED9EBA1,0x8F1BBCDC,0xCA62C1D6];var TL=0,BL=0;function K(n){return KV[Math.floor(n / 20)];}function S(v,n){return OR(LS(v,n),RS(v,32-n));}function f(n,B,C,D){switch(Math.floor(n/20)){case 0:return OR(AND(B,C),AND(NOT(B),D));case 2:return OR(OR(AND(B,C),AND(B,D)),AND(C,D));default:return XOR(XOR(B,C),D);}}function EC(I,L,O){var i,j;for(i=0,j=0;jL){i=L;}else{i=64-BL;}CA(B,BL,I,0,i);BL+=i;if(BL<64){return;}TF(B);BL=0;}while(L-i>=64){CA(B,0,I,i,64);i+=64;TF(B); }CA(B,0,I,i,L-i);BL=L-i;},Final:function(){var D=[];var R="";B[BL++]=0x80;if(BL<56){CA(B,BL,PD,0,59-BL);}else{if(BL<64){CA(B,BL,PD,0,64-BL);}TF(B);CA(B,0,PD,0,58);}B[59]=AND(RS(AND(TL,0xE0000000),29),0xFF);TL=LS(TL,3);B[60]=AND(RS(TL,24),0xFF);B[61]=AND(RS(TL,16),0xFF);B[62]=AND(RS(TL,8),0xFF);B[63]=AND(TL,0xFF);TF(B);EC(H,20,D);for(i=0;i<20;i++){R+=String(HEX1(D[i]));R+=String(HEX2(D[i]));}return R;},doSHA1:function(C,P){var c=[],p=[];var u;var s,d;for(s=0,d=0;s<\/div>");}function formatHTMLBody(bodyText){var fs="";var btu=bodyText.toUpperCase();var btul=btu.length;var nei=btu.indexOf("0&&btu.charAt(ei)==qcs[qcs.length-1]){--qcs.length;}else{qcs[qcs.length]=btu.charAt(ei);}++ei;}else if(qcs.length>0&&ei'){fe=3;ei+=2;}else if(fe==0&&qcs.length==0&&btu.charAt(ei)=='>'){fe=1;++ei;}else if(fe==1&&ei'){fe=3;++ei;}else{++ei;}}if(ei==btul&&fe<3){embeds=[];ci=btul;}else{newbody=newbody+bodyText.substr(li,ci-li)+getEmbedHTML(ndx++,width,height);embeds[embeds.length]=bodyText.substr(ci,ei-ci);li=ci=ei;if(nei0){path="__Open-Conf/CID"+cid+"/";}return path;}function processGenericCB(ERR,RO){if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{eval("var RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){if(RO.BFCB!=null){RO.BFCB(RO.id(),{errCode:0,errText:null});}}else{HandleError(ERR,RO);}}function processLoginCB(ERR,RO){var RD=null;if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{if(RO.response().charAt(0)=='{'){eval("RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){var NRO=RM.gARO(RO);if(NRO!=null){var Digestor=new SHA1();var ls="Charset=UTF-8&Challenge="+RO.response()+"&UserID="+uesc(RO.userid);if(RO.savedpw){ls+="&SavedPW=1&SHA1="+Digestor.doSHA1(RO.response(),RO.savedpassword);}else{ls+="&SHA1="+Digestor.doSHA1(RO.response(),RO.password);}NRO.doLogin=false;NRO.BFCB=RO.BFCB;if(NRO.POST(root+"/Login","Plugin=BFAPI&Templates=Session&FormID=-1",ls,RO.OBJ(),completeLoginCB)!=-1){return;}}if(RO.BFCB!=null){RO.BFCB(RO.id(),{errCode:"BROWSER",errText:"Unable to complete operation due to browser error"});}}else{HandleError(ERR,RO);}}function completeLoginCB(ERR,RO){var RD=null;if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{eval("RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){var zeros="00000000";clientID=RD.clientid;loginroot=RD.loginroot;siteID=RD.siteID;if(siteID.length<8){siteID=zeros.substr(0,8-siteID.length)+siteID;}isLoggedIn=true;if(RO.BFCB!=null){RO.BFCB(RO.id(),{errCode:0,errText:null});}}else if(RO.doLogin){var NRO=RM.gARO(RO);clientID=0;loginroot="/Login/";siteID="00000000";isLoggedIn=false;if(NRO!=null){NRO.savedpw=RO.savedpw;NRO.userid=RO.userid;NRO.password=RO.password;NRO.BFCB=RO.BFCB;if(NRO.GET(root+"/__GetChallenge","Plugin=BFAPI",this,processLoginCB)!=-1){return;}}if(RO.BFCB!=null){RO.BFCB(RO.id(),{errCode:"BROWSER",errText:"Unable to complete operation due to browser error"});}}else{HandleError(ERR,RO);}}function processGetTicketCB(ERR,RO){if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{if(RO.response().charAt(0)=='{'){eval("var RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){var NRO=RM.gARO(RO);if(NRO!=null){NRO.BFCB=RO.BFCB;if(NRO.GET(root+loginroot+"__GetTicket","Plugin=BFAPI&VKey="+RO.response(),RO.OBJ(),completeGetTicketCB)!=-1){return;}}if(RO.BFCB!=null){RO.BFCB(RO.id(),{errCode:"BROWSER",errText:"Unable to complete operation due to browser error"});}}else{HandleError(ERR,RO);}}function completeGetTicketCB(ERR,RO){if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{if(RO.response().charAt(0)=='{'){eval("var RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){if(RO.BFCB!=null){RO.BFCB(RO.id(),{errCode:0,errText:null},"fcticket="+RO.response());}}else{HandleError(ERR,RO);}}function processSetStatusCB(ERR,RO){if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{if(RO.response().charAt(0)=='{'){eval("var RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){var NRO=RM.gARO(RO);if(NRO!=null){NRO.BFCB=RO.BFCB;NRO.POST(root+loginroot+"__FormSave","Plugin=BFAPI","VKey="+RO.response()+"&SFieldID_7020_STRING="+uesc(RO.newstatus),RO.OBJ(),processGenericCB);}}else{HandleError(ERR,RO);}}function processListPeopleCB(ERR,RO){var RD=null;if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{eval("RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){if(RO.BFCB!=null){RO.BFCB(RO.id(),{errCode:0,errText:null},RD.people);}}else{HandleError(ERR,RO);}}function processRemovePersonCB(ERR,RO){var RD=null;if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){try{if(RO.response().charAt(0)=='{'){eval("var RD="+RO.response());ERR={errCode:RD.errCode,errText:RD.errText.length?RD.errText:null};}}catch(e){ERR={errCode:"JSON",errText:"Unable to parse server response"};}}if(ERR.errCode==0&&Math.floor(RO.status()/100)==2){var targetURL=null;for(var p=0;targetURL==null&&p