
var hexcase=0;var b64pad="";var chrsz=8;function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}
function md5_vm_test()
{return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x,len)
{x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return Array(a,b,c,d);}
function md5_cmn(q,a,b,x,s,t)
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t)
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t)
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t)
{return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t)
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_hmac_md5(key,data)
{var bkey=str2binl(key);if(bkey.length>16)bkey=core_md5(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;}
function binl2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);return str;}
function binl2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
function binl2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
var hexcase=0;var b64pad="";var chrsz=8;function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}
function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}
function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}
function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}
function sha1_vm_test()
{return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}
function core_sha1(x,len)
{x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++)
{if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}
a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}
return Array(a,b,c,d,e);}
function sha1_ft(t,b,c,d)
{if(t<20)return(b&c)|((~b)&d);if(t<40)return b^c^d;if(t<60)return(b&c)|(b&d)|(c&d);return b^c^d;}
function sha1_kt(t)
{return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}
function core_hmac_sha1(key,data)
{var bkey=str2binb(key);if(bkey.length>16)bkey=core_sha1(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binb(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32);return bin;}
function binb2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(32-chrsz-i%32))&mask);return str;}
function binb2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}
return str;}
function binb2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(3-i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*(3-(i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*(3-(i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
var hexcase=0;var b64pad="";var chrsz=8;function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}
function md5_vm_test()
{return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x,len)
{x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return Array(a,b,c,d);}
function md5_cmn(q,a,b,x,s,t)
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t)
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t)
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t)
{return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t)
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_hmac_md5(key,data)
{var bkey=str2binl(key);if(bkey.length>16)bkey=core_md5(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;}
function binl2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);return str;}
function binl2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
function binl2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
var hexcase=0;var b64pad="";var chrsz=8;function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}
function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}
function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}
function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}
function sha1_vm_test()
{return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}
function core_sha1(x,len)
{x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++)
{if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}
a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}
return Array(a,b,c,d,e);}
function sha1_ft(t,b,c,d)
{if(t<20)return(b&c)|((~b)&d);if(t<40)return b^c^d;if(t<60)return(b&c)|(b&d)|(c&d);return b^c^d;}
function sha1_kt(t)
{return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}
function core_hmac_sha1(key,data)
{var bkey=str2binb(key);if(bkey.length>16)bkey=core_sha1(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binb(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32);return bin;}
function binb2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(32-chrsz-i%32))&mask);return str;}
function binb2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}
return str;}
function binb2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(3-i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*(3-(i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*(3-(i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
function AccountManagerAssetType(assetid)
{this.assetid=assetid;var username=document.getElementById('form'+assetid+'-qdusername');if(username){username.disabled='disabled';}}
AccountManagerAssetType.prototype={attachValidation:function(options)
{for(var qid in options){if(options[qid].hasOwnProperty('rules')===true){for(var type in options[qid].rules){if(type==='email'){this.attachTextValidation(qid,options[qid].rules);}else if(type==='password'){var qnType=options[qid].type;this.attachPasswordValidation(qid,type,qnType,options[qid].rules[type]);}}}}},attachPasswordValidation:function(qid,type,qnType,options)
{var self=this;var id='form'+this.assetid+'-q'+qid;var input=null;var confirm=null;if(qnType==='passwordchange'){input=document.getElementById(id);if(typeof input==='undefined'||input===null){return;}
input.onkeyup=function(evt){self.passwordValidation(id,this.value);};confirm=document.getElementById(id+'-confirm');if(typeof confirm==='undefined'||confirm===null){return;}
confirm.onkeyup=function(evt){self.passwordMatch(id,this.value);};}},getOption:function(options,key)
{if(options.hasOwnProperty(key)===true){return options[key];}else{return null;}},attachTextValidation:function(qid,options)
{var self=this;var id='form'+this.assetid+'-q'+qid;var input=document.getElementById(id);if(typeof input==='undefined'||input===null){return;}
if(options.hasOwnProperty('email')===true){input.onblur=function(evt){self.emailValidation(id,this.value,options.email);};}},emailValidation:function(id,value,options)
{var error=document.getElementById(id+'-error');error.innerHTML='';var ret=false;error.style.display='none';if(value===''){return true;}
var emailV=new RuleTypeEmailWidgetType(id,value);ret=emailV.validate();if(ret===false){var emailMsg=this.getOption(options,'msg');error.innerHTML=emailMsg;error.style.display='block';}
return ret;},passwordValidation:function(id,value)
{var passwordV=new RuleTypePasswordWidgetType(id,value);passwordV.update();},passwordMatch:function(id,value)
{var password=document.getElementById(id).value;var confirm=document.getElementById(id+'-confirm').value;var msg=document.getElementById(id+'-matched');if(password!==confirm){msg.innerHTML='Not Matched';}else{msg.innerHTML='Matched';}}};function CustomFormAssetType(assetid)
{this.assetid=assetid;}
CustomFormAssetType.prototype={attachValidation:function(options)
{for(var qid in options){var tmp={};if(options[qid].hasOwnProperty('rules')===true){for(var type in options[qid].rules){if(type==='len'||type==='email'){if(options[qid].type==='text'){tmp[type]=options[qid].rules[type];}}else{var qnType=options[qid].type;this.attach(qid,type,qnType,options[qid].rules[type]);}}}
if(tmp!=={}){this.attachTextValidation(qid,tmp);}}},attachTextValidation:function(qid,options)
{var self=this;var id='form'+this.assetid+'-q'+qid;var input=document.getElementById(id);if(typeof input==='undefined'||input===null){return;}
if(options.hasOwnProperty('len')===true&&options.hasOwnProperty('email')===true){input.onblur=function(evt){var ret=self.lenValidation(id,this.value,options.len);if(ret===true){self.emailValidation(id,this.value,options.email);}};}else if(options.hasOwnProperty('len')===true){input.onblur=function(evt){self.lenValidation(id,this.value,options.len);};}else if(options.hasOwnProperty('email')===true){input.onblur=function(evt){self.emailValidation(id,this.value,options.email);};}},attach:function(qid,type,qnType,options)
{var self=this;var id='form'+this.assetid+'-q'+qid;var input=null;if(type==='number'){if(qnType!=='number'){return;}
input=document.getElementById(id);if(typeof input==='undefined'||input===null){return;}
input.onblur=function(evt){self.numberValidation(id,this.value,options);};}else if(type==='selcount'){if(qnType==='dropdown'){input=document.getElementById(id);if(typeof input==='undefined'||input===null){return;}
input.onblur=function(evt){var len=this.length;var count=0;for(var i=0;i<len;i++){if(this.options[i].selected===true){count++;}}
self.dropdownCountValidation(id,count,options);};}else if(qnType==='options'){var index=0;var count=0;var checkbox=document.getElementById(id+'-'+index);while(typeof checkbox!=='undefined'&&checkbox!==null){checkbox.onblur=function(evt){self.optionsCountValidation(id,options);};index++;checkbox=document.getElementById(id+'-'+index);}}}else if(qnType==='passwordchange'){input=document.getElementById(id);if(typeof input==='undefined'||input===null){return;}
input.onkeyup=function(evt){self.passwordValidation(id,this.value);};confirm=document.getElementById(id+'-confirm');if(typeof confirm==='undefined'||confirm===null){return;}
confirm.onkeyup=function(evt){self.passwordMatch(id,this.value);};}},getOption:function(options,key)
{if(options.hasOwnProperty(key)===true){return options[key];}else{return null;}},lenValidation:function(id,value,options)
{var error=document.getElementById(id+'-error');error.innerHTML='';var ret=false;error.style.display='none';if(value===''){return true;}
var len=this.getOption(options,'len');var lenOp=this.getOption(options,'lenOp');if(len!==null&&len!==''&&lenOp!==null){var lenV=new RuleTypeLengthWidgetType(id,value,lenOp,len);ret=lenV.validate();if(ret===false){var lenMsg=this.getOption(options,'msg');error.innerHTML=lenMsg;error.style.display='block';}
return ret;}},emailValidation:function(id,value,options)
{var error=document.getElementById(id+'-error');error.innerHTML='';var ret=false;error.style.display='none';if(value===''){return true;}
var emailV=new RuleTypeEmailWidgetType(id,value);ret=emailV.validate();if(ret===false){var emailMsg=this.getOption(options,'msg');error.innerHTML=emailMsg;error.style.display='block';}
return ret;},numberValidation:function(id,value,options)
{var msg=this.getOption(options,'msg');var error=document.getElementById(id+'-error');error.innerHTML='';var ret=false;error.style.display='none';if(value===''){return true;}
var isNum=new RuleTypeNumberWidgetType(id,value);ret=isNum.validate();if(ret===false){error.innerHTML=msg;error.style.display='block';return false;}
var min=this.getOption(options,'min');var max=this.getOption(options,'max');var magnitude=new RuleTypeMagnitudeWidgetType(id,value,min,max);ret=magnitude.validate();if(ret===false){error.innerHTML=msg;error.style.display='block';return false;}
var intOnly=this.getOption(options,'intOnly');if(intOnly===true){var rule=new RuleTypeIntegerWidgetType(id,value,options.intOnly);ret=rule.validate();if(ret===false){error.innerHTML=msg;error.style.display='block';return false;}}
return true;},dropdownCountValidation:function(id,value,options)
{var error=document.getElementById(id+'-error');error.innerHTML='';var ret=false;error.style.display='none';if(value===''){return;}
var count=this.getOption(options,'countVal');var countOp=this.getOption(options,'countOp');if(count!==null&&count!==''&&countOp!==null){var countV=new RuleTypeLengthWidgetType(id,value,countOp,count);countV.setPlain(true);ret=countV.validate();if(ret===false){var msg=this.getOption(options,'msg');error.innerHTML=msg;error.style.display='block';return;}}},optionsCountValidation:function(id,options)
{var error=document.getElementById(id+'-error');error.innerHTML='';var ret=false;error.style.display='none';var index=0;var x=0;var checkbox=document.getElementById(id+'-'+index);while(typeof checkbox!=='undefined'&&checkbox!==null){if(checkbox.checked===true){x++;}
index++;checkbox=document.getElementById(id+'-'+index);}
var count=this.getOption(options,'countVal');var countOp=this.getOption(options,'countOp');if(count!==null&&count!==''&&countOp!==null){var countV=new RuleTypeLengthWidgetType(id,x,countOp,count);countV.setPlain(true);ret=countV.validate();if(ret===false){var countMsg=this.getOption(options,'msg');error.innerHTML=countMsg;error.style.display='block';return;}}},passwordValidation:function(id,value)
{var passwordV=new RuleTypePasswordWidgetType(id,value);passwordV.update();},passwordMatch:function(id,value)
{var password=document.getElementById(id).value;var confirm=document.getElementById(id+'-confirm').value;var msg=document.getElementById(id+'-matched');if(password!==confirm){msg.innerHTML='Not Matched';}else{msg.innerHTML='Matched';}}};(function(){var
window=this,undefined,_jQuery=window.jQuery,_$=window.$,jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);},quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,isSimple=/^.[^:#\[\.,]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;this.context=selector;return this;}
if(typeof selector==="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])
selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem&&elem.id!=match[3])
return jQuery().find(selector);var ret=jQuery(elem||[]);ret.context=document;ret.selector=selector;return ret;}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))
return jQuery(document).ready(selector);if(selector.selector&&selector.context){this.selector=selector.selector;this.context=selector.context;}
return this.setArray(jQuery.isArray(selector)?selector:jQuery.makeArray(selector));},selector:"",jquery:"1.3.2",size:function(){return this.length;},get:function(num){return num===undefined?Array.prototype.slice.call(this):this[num];},pushStack:function(elems,name,selector){var ret=jQuery(elems);ret.prevObject=this;ret.context=this.context;if(name==="find")
ret.selector=this.selector+(this.selector?" ":"")+selector;else if(name)
ret.selector=this.selector+"."+name+"("+selector+")";return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(typeof name==="string")
if(value===undefined)
return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}
return this.each(function(i){for(name in options)
jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)
value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!=="object"&&text!=null)
return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)
ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).clone();if(this[0].parentNode)
wrap.insertBefore(this[0]);wrap.map(function(){var elem=this;while(elem.firstChild)
elem=elem.firstChild;return elem;}).append(this);}
return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType==1)
this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType==1)
this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},push:[].push,sort:[].sort,splice:[].splice,find:function(selector){if(this.length===1){var ret=this.pushStack([],"find",selector);ret.length=0;jQuery.find(selector,this[0],ret);return ret;}else{return this.pushStack(jQuery.unique(jQuery.map(this,function(elem){return jQuery.find(selector,elem);})),"find",selector);}},clone:function(events){var ret=this.map(function(){if(!jQuery.support.noCloneEvent&&!jQuery.isXMLDoc(this)){var html=this.outerHTML;if(!html){var div=this.ownerDocument.createElement("div");div.appendChild(this.cloneNode(true));html=div.innerHTML;}
return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0];}else
return this.cloneNode(true);});if(events===true){var orig=this.find("*").andSelf(),i=0;ret.find("*").andSelf().each(function(){if(this.nodeName!==orig[i].nodeName)
return;var events=jQuery.data(orig[i],"events");for(var type in events){for(var handler in events[type]){jQuery.event.add(this,type,events[type][handler],events[type][handler].data);}}
i++;});}
return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,jQuery.grep(this,function(elem){return elem.nodeType===1;})),"filter",selector);},closest:function(selector){var pos=jQuery.expr.match.POS.test(selector)?jQuery(selector):null,closer=0;return this.map(function(){var cur=this;while(cur&&cur.ownerDocument){if(pos?pos.index(cur)>-1:jQuery(cur).is(selector)){jQuery.data(cur,"closest",closer);return cur;}
cur=cur.parentNode;closer++;}});},not:function(selector){if(typeof selector==="string")
if(isSimple.test(selector))
return this.pushStack(jQuery.multiFilter(selector,this,true),"not",selector);else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector==="string"?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return!!selector&&this.is("."+selector);},val:function(value){if(value===undefined){var elem=this[0];if(elem){if(jQuery.nodeName(elem,'option'))
return(elem.attributes.value||{}).specified?elem.value:elem.text;if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)
return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery(option).val();if(one)
return value;values.push(value);}}
return values;}
return(elem.value||"").replace(/\r/g,"");}
return undefined;}
if(typeof value==="number")
value+='';return this.each(function(){if(this.nodeType!=1)
return;if(jQuery.isArray(value)&&/radio|checkbox/.test(this.type))
this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)
this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value===undefined?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,+i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},domManip:function(args,table,callback){if(this[0]){var fragment=(this[0].ownerDocument||this[0]).createDocumentFragment(),scripts=jQuery.clean(args,(this[0].ownerDocument||this[0]),fragment),first=fragment.firstChild;if(first)
for(var i=0,l=this.length;i<l;i++)
callback.call(root(this[i],first),this.length>1||i>0?fragment.cloneNode(true):fragment);if(scripts)
jQuery.each(scripts,evalScript);}
return this;function root(elem,cur){return table&&jQuery.nodeName(elem,"table")&&jQuery.nodeName(cur,"tr")?(elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody"))):elem;}}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)
jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)
elem.parentNode.removeChild(elem);}
function now(){return+new Date;}
jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(typeof target==="boolean"){deep=target;target=arguments[1]||{};i=2;}
if(typeof target!=="object"&&!jQuery.isFunction(target))
target={};if(length==i){target=this;--i;}
for(;i<length;i++)
if((options=arguments[i])!=null)
for(var name in options){var src=target[name],copy=options[name];if(target===copy)
continue;if(deep&&copy&&typeof copy==="object"&&!copy.nodeType)
target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)
target[name]=copy;}
return target;};var exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{},toString=Object.prototype.toString;jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)
window.jQuery=_jQuery;return jQuery;},isFunction:function(obj){return toString.call(obj)==="[object Function]";},isArray:function(obj){return toString.call(obj)==="[object Array]";},isXMLDoc:function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&jQuery.isXMLDoc(elem.ownerDocument);},globalEval:function(data){if(data&&/\S/.test(data)){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.support.scriptEval)
script.appendChild(document.createTextNode(data));else
script.text=data;head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length===undefined){for(name in object)
if(callback.apply(object[name],args)===false)
break;}else
for(;i<length;)
if(callback.apply(object[i++],args)===false)
break;}else{if(length===undefined){for(name in object)
if(callback.call(object[name],name,object[name])===false)
break;}else
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}
return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))
value=value.call(elem,i);return typeof value==="number"&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))
elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)
elem.className=classNames!==undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return elem&&jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}
callback.call(elem);for(var name in options)
elem.style[name]=old[name];},css:function(elem,name,force,extra){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;if(extra==="border")
return;jQuery.each(which,function(){if(!extra)
val-=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;if(extra==="margin")
val+=parseFloat(jQuery.curCSS(elem,"margin"+this,true))||0;else
val-=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});}
if(elem.offsetWidth!==0)
getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,Math.round(val));}
return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;if(name=="opacity"&&!jQuery.support.opacity){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}
if(name.match(/float/i))
name=styleFloat;if(!force&&style&&style[name])
ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))
name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle)
ret=computedStyle.getPropertyValue(name);if(name=="opacity"&&ret=="")
ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}
return ret;},clean:function(elems,context,fragment){context=context||document;if(typeof context.createElement==="undefined")
context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;if(!fragment&&elems.length===1&&typeof elems[0]==="string"){var match=/^<(\w+)\s*\/?>$/.exec(elems[0]);if(match)
return[context.createElement(match[1])];}
var ret=[],scripts=[],div=context.createElement("div");jQuery.each(elems,function(i,elem){if(typeof elem==="number")
elem+='';if(!elem)
return;if(typeof elem==="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=elem.replace(/^\s+/,"").substring(0,10).toLowerCase();var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!jQuery.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)
div=div.lastChild;if(!jQuery.support.tbody){var hasBody=/<tbody/i.test(elem),tbody=!tags.indexOf("<table")&&!hasBody?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&!hasBody?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)
if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)
tbody[j].parentNode.removeChild(tbody[j]);}
if(!jQuery.support.leadingWhitespace&&/^\s/.test(elem))
div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);elem=jQuery.makeArray(div.childNodes);}
if(elem.nodeType)
ret.push(elem);else
ret=jQuery.merge(ret,elem);});if(fragment){for(var i=0;ret[i];i++){if(jQuery.nodeName(ret[i],"script")&&(!ret[i].type||ret[i].type.toLowerCase()==="text/javascript")){scripts.push(ret[i].parentNode?ret[i].parentNode.removeChild(ret[i]):ret[i]);}else{if(ret[i].nodeType===1)
ret.splice.apply(ret,[i+1,0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))));fragment.appendChild(ret[i]);}}
return scripts;}
return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)
return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&elem.parentNode)
elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)
throw"type property can't be changed";elem[name]=value;}
if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))
return elem.getAttributeNode(name).nodeValue;if(name=="tabIndex"){var attributeNode=elem.getAttributeNode("tabIndex");return attributeNode&&attributeNode.specified?attributeNode.value:elem.nodeName.match(/(button|input|object|select|textarea)/i)?0:elem.nodeName.match(/^(a|area)$/i)&&elem.href?0:undefined;}
return elem[name];}
if(!jQuery.support.style&&notxml&&name=="style")
return jQuery.attr(elem.style,"cssText",value);if(set)
elem.setAttribute(name,""+value);var attr=!jQuery.support.hrefNormalized&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}
if(!jQuery.support.opacity&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+
(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}
return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}
name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)
elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||typeof array==="string"||jQuery.isFunction(array)||array.setInterval)
ret[0]=array;else
while(i)
ret[--i]=array[i];}
return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)
if(array[i]===elem)
return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(!jQuery.support.getAll){while((elem=second[i++])!=null)
if(elem.nodeType!=8)
first[pos++]=elem;}else
while((elem=second[i++])!=null)
first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}
return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)
if(!inv!=!callback(elems[i],i))
ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)
ret[ret.length]=value;}
return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,'0'])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")
ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret),name,selector);};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var ret=[],insert=jQuery(selector);for(var i=0,l=insert.length;i<l;i++){var elems=(i>0?this.clone(true):this).get();jQuery.fn[original].apply(jQuery(insert[i]),elems);ret=ret.concat(elems);}
return this.pushStack(ret,name,selector);};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)
this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames,state){if(typeof state!=="boolean")
state=!jQuery.className.has(this,classNames);jQuery.className[state?"add":"remove"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).length){jQuery("*",this).add([this]).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)
this.parentNode.removeChild(this);}},empty:function(){jQuery(this).children().remove();while(this.firstChild)
this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}
var expando="jQuery"+now(),uuid=0,windowData={};jQuery.extend({cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)
id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])
jQuery.cache[id]={};if(data!==undefined)
jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])
break;if(!name)
jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)
elem.removeAttribute(expando);}
delete jQuery.cache[id];}},queue:function(elem,type,data){if(elem){type=(type||"fx")+"queue";var q=jQuery.data(elem,type);if(!q||jQuery.isArray(data))
q=jQuery.data(elem,type,jQuery.makeArray(data));else if(data)
q.push(data);}
return q;},dequeue:function(elem,type){var queue=jQuery.queue(elem,type),fn=queue.shift();if(!type||type==="fx")
fn=queue[0];if(fn!==undefined)
fn.call(elem);}});jQuery.fn.extend({data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)
data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},queue:function(type,data){if(typeof type!=="string"){data=type;type="fx";}
if(data===undefined)
return jQuery.queue(this[0],type);return this.each(function(){var queue=jQuery.queue(this,type,data);if(type=="fx"&&queue.length==1)
queue[0].call(this);});},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type);});}});(function(){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,done=0,toString=Object.prototype.toString;var Sizzle=function(selector,context,results,seed){results=results||[];context=context||document;if(context.nodeType!==1&&context.nodeType!==9)
return[];if(!selector||typeof selector!=="string"){return results;}
var parts=[],m,set,checkSet,check,mode,extra,prune=true;chunker.lastIndex=0;while((m=chunker.exec(selector))!==null){parts.push(m[1]);if(m[2]){extra=RegExp.rightContext;break;}}
if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context);}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);while(parts.length){selector=parts.shift();if(Expr.relative[selector])
selector+=parts.shift();set=posProcess(selector,set);}}}else{var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&context.parentNode?context.parentNode:context,isXML(context));set=Sizzle.filter(ret.expr,ret.set);if(parts.length>0){checkSet=makeArray(set);}else{prune=false;}
while(parts.length){var cur=parts.pop(),pop=cur;if(!Expr.relative[cur]){cur="";}else{pop=parts.pop();}
if(pop==null){pop=context;}
Expr.relative[cur](checkSet,pop,isXML(context));}}
if(!checkSet){checkSet=set;}
if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector);}
if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet);}else if(context.nodeType===1){for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i]);}}}else{for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i]);}}}}else{makeArray(checkSet,results);}
if(extra){Sizzle(extra,context,results,seed);if(sortOrder){hasDuplicate=false;results.sort(sortOrder);if(hasDuplicate){for(var i=1;i<results.length;i++){if(results[i]===results[i-1]){results.splice(i--,1);}}}}}
return results;};Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set);};Sizzle.find=function(expr,context,isXML){var set,match;if(!expr){return[];}
for(var i=0,l=Expr.order.length;i<l;i++){var type=Expr.order[i],match;if((match=Expr.match[type].exec(expr))){var left=RegExp.leftContext;if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");set=Expr.find[type](match,context,isXML);if(set!=null){expr=expr.replace(Expr.match[type],"");break;}}}}
if(!set){set=context.getElementsByTagName("*");}
return{set:set,expr:expr};};Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;anyFound=false;if(curLoop==result){result=[];}
if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);if(!match){anyFound=found=true;}else if(match===true){continue;}}
if(match){for(var i=0;(item=curLoop[i])!=null;i++){if(item){found=filter(item,match,i,curLoop);var pass=not^!!found;if(inplace&&found!=null){if(pass){anyFound=true;}else{curLoop[i]=false;}}else if(pass){result.push(item);anyFound=true;}}}}
if(found!==undefined){if(!inplace){curLoop=result;}
expr=expr.replace(Expr.match[type],"");if(!anyFound){return[];}
break;}}}
if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr;}else{break;}}
old=expr;}
return curLoop;};var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href");}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;if(isTag&&!isXML){part=part.toUpperCase();}
for(var i=0,l=checkSet.length,elem;i<l;i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}
checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part;}}
if(isPartStrNotTag){Sizzle.filter(part,checkSet,true);}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){var parent=elem.parentNode;checkSet[i]=parent.nodeName===part?parent:false;}}}else{for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part;}}
if(isPartStr){Sizzle.filter(part,checkSet,true);}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();checkFn=dirNodeCheck;}
checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML);},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(typeof part==="string"&&!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();checkFn=dirNodeCheck;}
checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML);}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?[m]:[];}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);for(var i=0,l=results.length;i<l;i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i]);}}
return ret.length===0?null:ret;}},TAG:function(match,context){return context.getElementsByTagName(match[1]);}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";if(isXML){return match;}
for(var i=0,elem;(elem=curLoop[i])!=null;i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace)
result.push(elem);}else if(inplace){curLoop[i]=false;}}}
return false;},ID:function(match){return match[1].replace(/\\/g,"");},TAG:function(match,curLoop){for(var i=0;curLoop[i]===false;i++){}
return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase();},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);match[2]=(test[1]+(test[2]||1))-0;match[3]=test[3]-0;}
match[0]=done++;return match;},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name];}
if(match[2]==="~="){match[4]=" "+match[4]+" ";}
return match;},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if(match[3].match(chunker).length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop);}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);if(!inplace){result.push.apply(result,ret);}
return false;}}else if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true;}
return match;},POS:function(match){match.unshift(true);return match;}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden";},disabled:function(elem){return elem.disabled===true;},checked:function(elem){return elem.checked===true;},selected:function(elem){elem.parentNode.selectedIndex;return elem.selected===true;},parent:function(elem){return!!elem.firstChild;},empty:function(elem){return!elem.firstChild;},has:function(elem,i,match){return!!Sizzle(match[3],elem).length;},header:function(elem){return/h\d/i.test(elem.nodeName);},text:function(elem){return"text"===elem.type;},radio:function(elem){return"radio"===elem.type;},checkbox:function(elem){return"checkbox"===elem.type;},file:function(elem){return"file"===elem.type;},password:function(elem){return"password"===elem.type;},submit:function(elem){return"submit"===elem.type;},image:function(elem){return"image"===elem.type;},reset:function(elem){return"reset"===elem.type;},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON";},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName);}},setFilters:{first:function(elem,i){return i===0;},last:function(elem,i,match,array){return i===array.length-1;},even:function(elem,i){return i%2===0;},odd:function(elem,i){return i%2===1;},lt:function(elem,i,match){return i<match[3]-0;},gt:function(elem,i,match){return i>match[3]-0;},nth:function(elem,i,match){return match[3]-0==i;},eq:function(elem,i,match){return match[3]-0==i;}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];if(filter){return filter(elem,i,match,array);}else if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0;}else if(name==="not"){var not=match[3];for(var i=0,l=not.length;i<l;i++){if(not[i]===elem){return false;}}
return true;}},CHILD:function(elem,match){var type=match[1],node=elem;switch(type){case'only':case'first':while(node=node.previousSibling){if(node.nodeType===1)return false;}
if(type=='first')return true;node=elem;case'last':while(node=node.nextSibling){if(node.nodeType===1)return false;}
return true;case'nth':var first=match[2],last=match[3];if(first==1&&last==0){return true;}
var doneName=match[0],parent=elem.parentNode;if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;for(node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count;}}
parent.sizcache=doneName;}
var diff=elem.nodeIndex-last;if(first==0){return diff==0;}else{return(diff%first==0&&diff/first>=0);}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match;},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match;},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1;},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false;},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];if(filter){return filter(elem,i,match,array);}}}};var origPOS=Expr.match.POS;for(var type in Expr.match){Expr.match[type]=RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);}
var makeArray=function(array,results){array=Array.prototype.slice.call(array);if(results){results.push.apply(results,array);return results;}
return array;};try{Array.prototype.slice.call(document.documentElement.childNodes);}catch(e){makeArray=function(array,results){var ret=results||[];if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array);}else{if(typeof array.length==="number"){for(var i=0,l=array.length;i<l;i++){ret.push(array[i]);}}else{for(var i=0;array[i];i++){ret.push(array[i]);}}}
return ret;};}
var sortOrder;if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;if(ret===0){hasDuplicate=true;}
return ret;};}else if("sourceIndex"in document.documentElement){sortOrder=function(a,b){var ret=a.sourceIndex-b.sourceIndex;if(ret===0){hasDuplicate=true;}
return ret;};}else if(document.createRange){sortOrder=function(a,b){var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();aRange.selectNode(a);aRange.collapse(true);bRange.selectNode(b);bRange.collapse(true);var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);if(ret===0){hasDuplicate=true;}
return ret;};}
(function(){var form=document.createElement("form"),id="script"+(new Date).getTime();form.innerHTML="<input name='"+id+"'/>";var root=document.documentElement;root.insertBefore(form,root.firstChild);if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[];}};Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return elem.nodeType===1&&node&&node.nodeValue===match;};}
root.removeChild(form);})();(function(){var div=document.createElement("div");div.appendChild(document.createComment(""));if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);if(match[1]==="*"){var tmp=[];for(var i=0;results[i];i++){if(results[i].nodeType===1){tmp.push(results[i]);}}
results=tmp;}
return results;};}
div.innerHTML="<a href='#'></a>";if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2);};}})();if(document.querySelectorAll)(function(){var oldSizzle=Sizzle,div=document.createElement("div");div.innerHTML="<p class='TEST'></p>";if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return;}
Sizzle=function(query,context,extra,seed){context=context||document;if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra);}catch(e){}}
return oldSizzle(query,context,extra,seed);};Sizzle.find=oldSizzle.find;Sizzle.filter=oldSizzle.filter;Sizzle.selectors=oldSizzle.selectors;Sizzle.matches=oldSizzle.matches;})();if(document.getElementsByClassName&&document.documentElement.getElementsByClassName)(function(){var div=document.createElement("div");div.innerHTML="<div class='test e'></div><div class='test'></div>";if(div.getElementsByClassName("e").length===0)
return;div.lastChild.className="e";if(div.getElementsByClassName("e").length===1)
return;Expr.order.splice(1,0,"CLASS");Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1]);}};})();function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;elem.sizset=i;}
elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;elem.sizset=i;}
if(elem.nodeName===cur){match=elem;break;}
elem=elem[dir];}
checkSet[i]=match;}}}
function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;elem.sizset=i;}
elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;elem.sizset=i;}
if(typeof cur!=="string"){if(elem===cur){match=true;break;}}else if(Sizzle.filter(cur,[elem]).length>0){match=elem;break;}}
elem=elem[dir];}
checkSet[i]=match;}}}
var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16;}:function(a,b){return a!==b&&(a.contains?a.contains(b):true);};var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&isXML(elem.ownerDocument);};var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];selector=selector.replace(Expr.match.PSEUDO,"");}
selector=Expr.relative[selector]?selector+"*":selector;for(var i=0,l=root.length;i<l;i++){Sizzle(selector,root[i],tmpSet);}
return Sizzle.filter(later,tmpSet);};jQuery.find=Sizzle;jQuery.filter=Sizzle.filter;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.filters;Sizzle.selectors.filters.hidden=function(elem){return elem.offsetWidth===0||elem.offsetHeight===0;};Sizzle.selectors.filters.visible=function(elem){return elem.offsetWidth>0||elem.offsetHeight>0;};Sizzle.selectors.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};jQuery.multiFilter=function(expr,elems,not){if(not){expr=":not("+expr+")";}
return Sizzle.matches(expr,elems);};jQuery.dir=function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)
matched.push(cur);cur=cur[dir];}
return matched;};jQuery.nth=function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])
if(cur.nodeType==1&&++num==result)
break;return cur;};jQuery.sibling=function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)
r.push(n);}
return r;};return;window.Sizzle=Sizzle;})();jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)
return;if(elem.setInterval&&elem!=window)
elem=window;if(!handler.guid)
handler.guid=this.guid++;if(data!==undefined){var fn=handler;handler=this.proxy(fn);handler.data=data;}
var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){return typeof jQuery!=="undefined"&&!jQuery.event.triggered?jQuery.event.handle.apply(arguments.callee.elem,arguments):undefined;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var namespaces=type.split(".");type=namespaces.shift();handler.type=namespaces.slice().sort().join(".");var handlers=events[type];if(jQuery.event.specialAll[type])
jQuery.event.specialAll[type].setup.call(elem,data,namespaces);if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem,data,namespaces)===false){if(elem.addEventListener)
elem.addEventListener(type,handle,false);else if(elem.attachEvent)
elem.attachEvent("on"+type,handle);}}
handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)
return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types===undefined||(typeof types==="string"&&types.charAt(0)=="."))
for(var type in events)
this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}
jQuery.each(types.split(/\s+/),function(index,type){var namespaces=type.split(".");type=namespaces.shift();var namespace=RegExp("(^|\\.)"+namespaces.slice().sort().join(".*\\.")+"(\\.|$)");if(events[type]){if(handler)
delete events[type][handler.guid];else
for(var handle in events[type])
if(namespace.test(events[type][handle].type))
delete events[type][handle];if(jQuery.event.specialAll[type])
jQuery.event.specialAll[type].teardown.call(elem,namespaces);for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem,namespaces)===false){if(elem.removeEventListener)
elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)
elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}
ret=null;delete events[type];}}});}
for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(event,data,elem,bubbling){var type=event.type||event;if(!bubbling){event=typeof event==="object"?event[expando]?event:jQuery.extend(jQuery.Event(type),event):jQuery.Event(type);if(type.indexOf("!")>=0){event.type=type=type.slice(0,-1);event.exclusive=true;}
if(!elem){event.stopPropagation();if(this.global[type])
jQuery.each(jQuery.cache,function(){if(this.events&&this.events[type])
jQuery.event.trigger(event,data,this.handle.elem);});}
if(!elem||elem.nodeType==3||elem.nodeType==8)
return undefined;event.result=undefined;event.target=elem;data=jQuery.makeArray(data);data.unshift(event);}
event.currentTarget=elem;var handle=jQuery.data(elem,"handle");if(handle)
handle.apply(elem,data);if((!elem[type]||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)
event.result=false;if(!bubbling&&elem[type]&&!event.isDefaultPrevented()&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}
this.triggered=false;if(!event.isPropagationStopped()){var parent=elem.parentNode||elem.ownerDocument;if(parent)
jQuery.event.trigger(event,data,parent,true);}},handle:function(event){var all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);event.currentTarget=this;var namespaces=event.type.split(".");event.type=namespaces.shift();all=!namespaces.length&&!event.exclusive;var namespace=RegExp("(^|\\.)"+namespaces.slice().sort().join(".*\\.")+"(\\.|$)");handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||namespace.test(handler.type)){event.handler=handler;event.data=handler.data;var ret=handler.apply(this,arguments);if(ret!==undefined){event.result=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}
if(event.isImmediatePropagationStopped())
break;}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(event){if(event[expando])
return event;var originalEvent=event;event=jQuery.Event(originalEvent);for(var i=this.props.length,prop;i;){prop=this.props[--i];event[prop]=originalEvent[prop];}
if(!event.target)
event.target=event.srcElement||document;if(event.target.nodeType==3)
event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)
event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}
if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))
event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)
event.metaKey=event.ctrlKey;if(!event.which&&event.button)
event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy=proxy||function(){return fn.apply(this,arguments);};proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:bindReady,teardown:function(){}}},specialAll:{live:{setup:function(selector,namespaces){jQuery.event.add(this,namespaces[0],liveHandler);},teardown:function(namespaces){if(namespaces.length){var remove=0,name=RegExp("(^|\\.)"+namespaces[0]+"(\\.|$)");jQuery.each((jQuery.data(this,"events").live||{}),function(){if(name.test(this.type))
remove++;});if(remove<1)
jQuery.event.remove(this,namespaces[0],liveHandler);}}}}};jQuery.Event=function(src){if(!this.preventDefault)
return new jQuery.Event(src);if(src&&src.type){this.originalEvent=src;this.type=src.type;}else
this.type=src;this.timeStamp=now();this[expando]=true;};function returnFalse(){return false;}
function returnTrue(){return true;}
jQuery.Event.prototype={preventDefault:function(){this.isDefaultPrevented=returnTrue;var e=this.originalEvent;if(!e)
return;if(e.preventDefault)
e.preventDefault();e.returnValue=false;},stopPropagation:function(){this.isPropagationStopped=returnTrue;var e=this.originalEvent;if(!e)
return;if(e.stopPropagation)
e.stopPropagation();e.cancelBubble=true;},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=returnTrue;this.stopPropagation();},isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse};var withinElement=function(event){var parent=event.relatedTarget;while(parent&&parent!=this)
try{parent=parent.parentNode;}
catch(e){parent=this;}
if(parent!=this){event.type=event.data;jQuery.event.handle.apply(this,arguments);}};jQuery.each({mouseover:'mouseenter',mouseout:'mouseleave'},function(orig,fix){jQuery.event.special[fix]={setup:function(){jQuery.event.add(this,orig,withinElement,fix);},teardown:function(){jQuery.event.remove(this,orig,withinElement);}};});jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function(type,data){if(this[0]){var event=jQuery.Event(type);event.preventDefault();event.stopPropagation();jQuery.event.trigger(event,data,this[0]);return event.result;}},toggle:function(fn){var args=arguments,i=1;while(i<args.length)
jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)
fn.call(document,jQuery);else
jQuery.readyList.push(fn);return this;},live:function(type,fn){var proxy=jQuery.event.proxy(fn);proxy.guid+=this.selector+type;jQuery(document).bind(liveConvert(type,this.selector),this.selector,proxy);return this;},die:function(type,fn){jQuery(document).unbind(liveConvert(type,this.selector),fn?{guid:fn.guid+this.selector+type}:null);return this;}});function liveHandler(event){var check=RegExp("(^|\\.)"+event.type+"(\\.|$)"),stop=true,elems=[];jQuery.each(jQuery.data(this,"events").live||[],function(i,fn){if(check.test(fn.type)){var elem=jQuery(event.target).closest(fn.data)[0];if(elem)
elems.push({elem:elem,fn:fn});}});elems.sort(function(a,b){return jQuery.data(a.elem,"closest")-jQuery.data(b.elem,"closest");});jQuery.each(elems,function(){if(this.fn.call(this.elem,event,this.fn.data)===false)
return(stop=false);});return stop;}
function liveConvert(type,selector){return["live",type,selector.replace(/\./g,"`").replace(/ /g,"|")].join(".");}
jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document,jQuery);});jQuery.readyList=null;}
jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);jQuery.ready();},false);}else if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);jQuery.ready();}});if(document.documentElement.doScroll&&window==window.top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}
jQuery.ready();})();}
jQuery.event.add(window,"load",jQuery.ready);}
jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,"+"change,select,submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});jQuery(window).bind('unload',function(){for(var id in jQuery.cache)
if(id!=1&&jQuery.cache[id].handle)
jQuery.event.remove(jQuery.cache[id].handle.elem);});(function(){jQuery.support={};var root=document.documentElement,script=document.createElement("script"),div=document.createElement("div"),id="script"+(new Date).getTime();div.style.display="none";div.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var all=div.getElementsByTagName("*"),a=div.getElementsByTagName("a")[0];if(!all||!all.length||!a){return;}
jQuery.support={leadingWhitespace:div.firstChild.nodeType==3,tbody:!div.getElementsByTagName("tbody").length,objectAll:!!div.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!div.getElementsByTagName("link").length,style:/red/.test(a.getAttribute("style")),hrefNormalized:a.getAttribute("href")==="/a",opacity:a.style.opacity==="0.5",cssFloat:!!a.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};script.type="text/javascript";try{script.appendChild(document.createTextNode("window."+id+"=1;"));}catch(e){}
root.insertBefore(script,root.firstChild);if(window[id]){jQuery.support.scriptEval=true;delete window[id];}
root.removeChild(script);if(div.attachEvent&&div.fireEvent){div.attachEvent("onclick",function(){jQuery.support.noCloneEvent=false;div.detachEvent("onclick",arguments.callee);});div.cloneNode(true).fireEvent("onclick");}
jQuery(function(){var div=document.createElement("div");div.style.width=div.style.paddingLeft="1px";document.body.appendChild(div);jQuery.boxModel=jQuery.support.boxModel=div.offsetWidth===2;document.body.removeChild(div).style.display='none';});})();var styleFloat=jQuery.support.cssFloat?"cssFloat":"styleFloat";jQuery.props={"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!=="string")
return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}
var type="GET";if(params)
if(jQuery.isFunction(params)){callback=params;params=null;}else if(typeof params==="object"){params=jQuery.param(params);type="POST";}
var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")
self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);if(callback)
self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return this.elements?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}
return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}
return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!=="string")
s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))
s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))
s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}
if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)
s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}
if(head)
head.removeChild(script);};}
if(s.dataType=="script"&&s.cache==null)
s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}
if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}
if(s.global&&!jQuery.active++)
jQuery.event.trigger("ajaxStart");var parts=/^(\w+:)?\/\/([^\/?#]+)/.exec(s.url);if(s.dataType=="script"&&type=="GET"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)
script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();script.onload=script.onreadystatechange=null;head.removeChild(script);}};}
head.appendChild(script);return undefined;}
var requestDone=false;var xhr=s.xhr();if(s.username)
xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)
xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)
xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}
if(s.beforeSend&&s.beforeSend(xhr,s)===false){if(s.global&&!--jQuery.active)
jQuery.event.trigger("ajaxStop");xhr.abort();return false;}
if(s.global)
jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(xhr.readyState==0){if(ival){clearInterval(ival);ival=null;if(s.global&&!--jQuery.active)
jQuery.event.trigger("ajaxStop");}}else if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}
status=isTimeout=="timeout"?"timeout":!jQuery.httpSuccess(xhr)?"error":s.ifModified&&jQuery.httpNotModified(xhr,s.url)?"notmodified":"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s);}catch(e){status="parsererror";}}
if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}
if(s.ifModified&&modRes)
jQuery.lastModified[s.url]=modRes;if(!jsonp)
success();}else
jQuery.handleError(s,xhr,status);complete();if(isTimeout)
xhr.abort();if(s.async)
xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)
setTimeout(function(){if(xhr&&!requestDone)
onreadystatechange("timeout");},s.timeout);}
try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}
if(!s.async)
onreadystatechange();function success(){if(s.success)
s.success(data,status);if(s.global)
jQuery.event.trigger("ajaxSuccess",[xhr,s]);}
function complete(){if(s.complete)
s.complete(xhr,status);if(s.global)
jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)
jQuery.event.trigger("ajaxStop");}
return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)
jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223;}catch(e){}
return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url];}catch(e){}
return false;},httpData:function(xhr,type,s){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")
throw"parsererror";if(s&&s.dataFilter)
data=s.dataFilter(data,type);if(typeof data==="string"){if(type=="script")
jQuery.globalEval(data);if(type=="json")
data=window["eval"]("("+data+")");}
return data;},param:function(a){var s=[];function add(key,value){s[s.length]=encodeURIComponent(key)+'='+encodeURIComponent(value);};if(jQuery.isArray(a)||a.jquery)
jQuery.each(a,function(){add(this.name,this.value);});else
for(var j in a)
if(jQuery.isArray(a[j]))
jQuery.each(a[j],function(){add(j,this);});else
add(j,jQuery.isFunction(a[j])?a[j]():a[j]);return s.join("&").replace(/%20/g,"+");}});var elemdisplay={},timerId,fxAttrs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function genFx(type,num){var obj={};jQuery.each(fxAttrs.concat.apply([],fxAttrs.slice(0,num)),function(){obj[this]=type;});return obj;}
jQuery.fn.extend({show:function(speed,callback){if(speed){return this.animate(genFx("show",3),speed,callback);}else{for(var i=0,l=this.length;i<l;i++){var old=jQuery.data(this[i],"olddisplay");this[i].style.display=old||"";if(jQuery.css(this[i],"display")==="none"){var tagName=this[i].tagName,display;if(elemdisplay[tagName]){display=elemdisplay[tagName];}else{var elem=jQuery("<"+tagName+" />").appendTo("body");display=elem.css("display");if(display==="none")
display="block";elem.remove();elemdisplay[tagName]=display;}
jQuery.data(this[i],"olddisplay",display);}}
for(var i=0,l=this.length;i<l;i++){this[i].style.display=jQuery.data(this[i],"olddisplay")||"";}
return this;}},hide:function(speed,callback){if(speed){return this.animate(genFx("hide",3),speed,callback);}else{for(var i=0,l=this.length;i<l;i++){var old=jQuery.data(this[i],"olddisplay");if(!old&&old!=="none")
jQuery.data(this[i],"olddisplay",jQuery.css(this[i],"display"));}
for(var i=0,l=this.length;i<l;i++){this[i].style.display="none";}
return this;}},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){var bool=typeof fn==="boolean";return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn==null||bool?this.each(function(){var state=bool?fn:jQuery(this).is(":hidden");jQuery(this)[state?"show":"hide"]();}):this.animate(genFx("toggle",3),fn,fn2);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){var opt=jQuery.extend({},optall),p,hidden=this.nodeType==1&&jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)
return opt.complete.call(this);if((p=="height"||p=="width")&&this.style){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}
if(opt.overflow!=null)
this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))
e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}
if(parts[1])
end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)
this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)
if(timers[i].elem==this){if(gotoEnd)
timers[i](true);timers.splice(i,1);}});if(!gotoEnd)
this.dequeue();return this;}});jQuery.each({slideDown:genFx("show",1),slideUp:genFx("hide",1),slideToggle:genFx("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(name,props){jQuery.fn[name]=function(speed,callback){return this.animate(props,speed,callback);};});jQuery.extend({speed:function(speed,easing,fn){var opt=typeof speed==="object"?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};opt.duration=jQuery.fx.off?0:typeof opt.duration==="number"?opt.duration:jQuery.fx.speeds[opt.duration]||jQuery.fx.speeds._default;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)
jQuery(this).dequeue();if(jQuery.isFunction(opt.old))
opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)
options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)
this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style)
this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))
return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;var self=this;function t(gotoEnd){return self.step(gotoEnd);}
t.elem=this.elem;if(t()&&jQuery.timers.push(t)&&!timerId){timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)
if(!timers[i]())
timers.splice(i--,1);if(!timers.length){clearInterval(timerId);timerId=undefined;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)
if(this.options.curAnim[i]!==true)
done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")
this.elem.style.display="block";}
if(this.options.hide)
jQuery(this.elem).hide();if(this.options.hide||this.options.show)
for(var p in this.options.curAnim)
jQuery.attr(this.elem.style,p,this.options.orig[p]);this.options.complete.call(this.elem);}
return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}
return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){if(fx.elem.style&&fx.elem.style[fx.prop]!=null)
fx.elem.style[fx.prop]=fx.now+fx.unit;else
fx.elem[fx.prop]=fx.now;}}});if(document.documentElement["getBoundingClientRect"])
jQuery.fn.offset=function(){if(!this[0])return{top:0,left:0};if(this[0]===this[0].ownerDocument.body)return jQuery.offset.bodyOffset(this[0]);var box=this[0].getBoundingClientRect(),doc=this[0].ownerDocument,body=doc.body,docElem=doc.documentElement,clientTop=docElem.clientTop||body.clientTop||0,clientLeft=docElem.clientLeft||body.clientLeft||0,top=box.top+(self.pageYOffset||jQuery.boxModel&&docElem.scrollTop||body.scrollTop)-clientTop,left=box.left+(self.pageXOffset||jQuery.boxModel&&docElem.scrollLeft||body.scrollLeft)-clientLeft;return{top:top,left:left};};else
jQuery.fn.offset=function(){if(!this[0])return{top:0,left:0};if(this[0]===this[0].ownerDocument.body)return jQuery.offset.bodyOffset(this[0]);jQuery.offset.initialized||jQuery.offset.initialize();var elem=this[0],offsetParent=elem.offsetParent,prevOffsetParent=elem,doc=elem.ownerDocument,computedStyle,docElem=doc.documentElement,body=doc.body,defaultView=doc.defaultView,prevComputedStyle=defaultView.getComputedStyle(elem,null),top=elem.offsetTop,left=elem.offsetLeft;while((elem=elem.parentNode)&&elem!==body&&elem!==docElem){computedStyle=defaultView.getComputedStyle(elem,null);top-=elem.scrollTop,left-=elem.scrollLeft;if(elem===offsetParent){top+=elem.offsetTop,left+=elem.offsetLeft;if(jQuery.offset.doesNotAddBorder&&!(jQuery.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(elem.tagName)))
top+=parseInt(computedStyle.borderTopWidth,10)||0,left+=parseInt(computedStyle.borderLeftWidth,10)||0;prevOffsetParent=offsetParent,offsetParent=elem.offsetParent;}
if(jQuery.offset.subtractsBorderForOverflowNotVisible&&computedStyle.overflow!=="visible")
top+=parseInt(computedStyle.borderTopWidth,10)||0,left+=parseInt(computedStyle.borderLeftWidth,10)||0;prevComputedStyle=computedStyle;}
if(prevComputedStyle.position==="relative"||prevComputedStyle.position==="static")
top+=body.offsetTop,left+=body.offsetLeft;if(prevComputedStyle.position==="fixed")
top+=Math.max(docElem.scrollTop,body.scrollTop),left+=Math.max(docElem.scrollLeft,body.scrollLeft);return{top:top,left:left};};jQuery.offset={initialize:function(){if(this.initialized)return;var body=document.body,container=document.createElement('div'),innerDiv,checkDiv,table,td,rules,prop,bodyMarginTop=body.style.marginTop,html='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';rules={position:'absolute',top:0,left:0,margin:0,border:0,width:'1px',height:'1px',visibility:'hidden'};for(prop in rules)container.style[prop]=rules[prop];container.innerHTML=html;body.insertBefore(container,body.firstChild);innerDiv=container.firstChild,checkDiv=innerDiv.firstChild,td=innerDiv.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(checkDiv.offsetTop!==5);this.doesAddBorderForTableAndCells=(td.offsetTop===5);innerDiv.style.overflow='hidden',innerDiv.style.position='relative';this.subtractsBorderForOverflowNotVisible=(checkDiv.offsetTop===-5);body.style.marginTop='1px';this.doesNotIncludeMarginInBodyOffset=(body.offsetTop===0);body.style.marginTop=bodyMarginTop;body.removeChild(container);this.initialized=true;},bodyOffset:function(body){jQuery.offset.initialized||jQuery.offset.initialize();var top=body.offsetTop,left=body.offsetLeft;if(jQuery.offset.doesNotIncludeMarginInBodyOffset)
top+=parseInt(jQuery.curCSS(body,'marginTop',true),10)||0,left+=parseInt(jQuery.curCSS(body,'marginLeft',true),10)||0;return{top:top,left:left};}};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}
return results;},offsetParent:function(){var offsetParent=this[0].offsetParent||document.body;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))
offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return null;return val!==undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom",lower=name.toLowerCase();jQuery.fn["inner"+name]=function(){return this[0]?jQuery.css(this[0],lower,false,"padding"):null;};jQuery.fn["outer"+name]=function(margin){return this[0]?jQuery.css(this[0],lower,false,margin?"margin":"border"):null;};var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(document.documentElement["client"+name],document.body["scroll"+name],document.documentElement["scroll"+name],document.body["offset"+name],document.documentElement["offset"+name]):size===undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,typeof size==="string"?size:size+"px");};});})();jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.1",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return!!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return!(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return!this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));a.extend(a.ui.draggable,{version:"1.7.1",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var e=a(this).data("draggable").options;var d=a.makeArray(a(e.stack.group)).sort(function(g,f){return(parseInt(a(g).css("zIndex"),10)||e.stack.min)-(parseInt(a(f).css("zIndex"),10)||e.stack.min)});a(d).each(function(f){this.style.zIndex=e.stack.min+f});this[0].style.zIndex=e.stack.min+d.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;(function(a){a.widget("ui.droppable",{_init:function(){var c=this.options,b=c.accept;this.isover=0;this.isout=1;this.options.accept=this.options.accept&&a.isFunction(this.options.accept)?this.options.accept:function(e){return e.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};a.ui.ddmanager.droppables[this.options.scope]=a.ui.ddmanager.droppables[this.options.scope]||[];a.ui.ddmanager.droppables[this.options.scope].push(this);(this.options.addClasses&&this.element.addClass("ui-droppable"))},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++){if(b[c]==this){b.splice(c,1)}}this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable")},_setData:function(b,c){if(b=="accept"){this.options.accept=c&&a.isFunction(c)?c:function(e){return e.is(c)}}else{a.widget.prototype._setData.apply(this,arguments)}},_activate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.addClass(this.options.activeClass)}(b&&this._trigger("activate",c,this.ui(b)))},_deactivate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}(b&&this._trigger("deactivate",c,this.ui(b)))},_over:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.addClass(this.options.hoverClass)}this._trigger("over",c,this.ui(b))}},_out:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("out",c,this.ui(b))}},_drop:function(c,d){var b=d||a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return false}var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var f=a.data(this,"droppable");if(f.options.greedy&&a.ui.intersect(b,a.extend(f,{offset:f.element.offset()}),f.options.tolerance)){e=true;return false}});if(e){return false}if(this.options.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("drop",c,this.ui(b));return this.element}return false},ui:function(b){return{draggable:(b.currentItem||b.element),helper:b.helper,position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs}}});a.extend(a.ui.droppable,{version:"1.7.1",eventPrefix:"drop",defaults:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"}});a.ui.intersect=function(q,j,o){if(!j.offset){return false}var e=(q.positionAbs||q.position.absolute).left,d=e+q.helperProportions.width,n=(q.positionAbs||q.position.absolute).top,m=n+q.helperProportions.height;var g=j.offset.left,c=g+j.proportions.width,p=j.offset.top,k=p+j.proportions.height;switch(o){case"fit":return(g<e&&d<c&&p<n&&m<k);break;case"intersect":return(g<e+(q.helperProportions.width/2)&&d-(q.helperProportions.width/2)<c&&p<n+(q.helperProportions.height/2)&&m-(q.helperProportions.height/2)<k);break;case"pointer":var h=((q.positionAbs||q.position.absolute).left+(q.clickOffset||q.offset.click).left),i=((q.positionAbs||q.position.absolute).top+(q.clickOffset||q.offset.click).top),f=a.ui.isOver(i,h,p,g,j.proportions.height,j.proportions.width);return f;break;case"touch":return((n>=p&&n<=k)||(m>=p&&m<=k)||(n<p&&m>k))&&((e>=g&&e<=c)||(d>=g&&d<=c)||(e<g&&d>c));break;default:return false;break}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,g){var b=a.ui.ddmanager.droppables[e.options.scope];var f=g?g.type:null;var h=(e.currentItem||e.element).find(":data(droppable)").andSelf();droppablesLoop:for(var d=0;d<b.length;d++){if(b[d].options.disabled||(e&&!b[d].options.accept.call(b[d].element[0],(e.currentItem||e.element)))){continue}for(var c=0;c<h.length;c++){if(h[c]==b[d].element[0]){b[d].proportions.height=0;continue droppablesLoop}}b[d].visible=b[d].element.css("display")!="none";if(!b[d].visible){continue}b[d].offset=b[d].element.offset();b[d].proportions={width:b[d].element[0].offsetWidth,height:b[d].element[0].offsetHeight};if(f=="mousedown"){b[d]._activate.call(b[d],g)}}},drop:function(b,c){var d=false;a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(!this.options){return}if(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)){d=this._drop.call(this,c)}if(!this.options.disabled&&this.visible&&this.options.accept.call(this.element[0],(b.currentItem||b.element))){this.isout=1;this.isover=0;this._deactivate.call(this,c)}});return d},drag:function(b,c){if(b.options.refreshPositions){a.ui.ddmanager.prepareOffsets(b,c)}a.each(a.ui.ddmanager.droppables[b.options.scope],function(){if(this.options.disabled||this.greedyChild||!this.visible){return}var e=a.ui.intersect(b,this,this.options.tolerance);var g=!e&&this.isover==1?"isout":(e&&this.isover==0?"isover":null);if(!g){return}var f;if(this.options.greedy){var d=this.element.parents(":data(droppable):eq(0)");if(d.length){f=a.data(d[0],"droppable");f.greedyChild=(g=="isover"?1:0)}}if(f&&g=="isover"){f.isover=0;f.isout=1;f._out.call(f,c)}this[g]=1;this[g=="isout"?"isover":"isout"]=0;this[g=="isover"?"_over":"_out"].call(this,c);if(f&&g=="isout"){f.isout=0;f.isover=1;f._over.call(f,c)}})}}})(jQuery);;(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f<k.length;f++){var h=c.trim(k[f]),d="ui-resizable-"+h;var g=c('<div class="ui-resizable-handle '+d+'"></div>');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidth<k.width),l=a(k.height)&&h.maxHeight&&(h.maxHeight<k.height),g=a(k.width)&&h.minWidth&&(h.minWidth>k.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e<this._proportionallyResizeElements.length;e++){var g=this._proportionallyResizeElements[e];if(!this.borderDif){var d=[g.css("borderTopWidth"),g.css("borderRightWidth"),g.css("borderBottomWidth"),g.css("borderLeftWidth")],h=[g.css("paddingTop"),g.css("paddingRight"),g.css("paddingBottom"),g.css("paddingLeft")];this.borderDif=c.map(d,function(k,m){var l=parseInt(k,10)||0,n=parseInt(h[m],10)||0;return l+n})}if(c.browser.msie&&!(!(c(f).is(":hidden")||c(f).parents(":hidden").length))){continue}g.css({height:(f.height()-this.borderDif[0]-this.borderDif[2])||0,width:(f.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var e=this.element,h=this.options;this.elementOffset=e.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.1",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)){s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return!isNaN(parseInt(d,10))}})(jQuery);;(function(a){a.widget("ui.selectable",a.extend({},a.ui.mouse,{_init:function(){var b=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]);c.each(function(){var d=a(this);var e=d.offset();a.data(this,"selectable-item",{element:this,$element:d,left:e.left,top:e.top,right:e.left+d.outerWidth(),bottom:e.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a(document.createElement("div")).css({border:"1px dotted black"}).addClass("ui-selectable-helper")},destroy:function(){this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy()},_mouseStart:function(d){var b=this;this.opos=[d.pageX,d.pageY];if(this.options.disabled){return}var c=this.options;this.selectees=a(c.filter,this.element[0]);this._trigger("start",d);a(c.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:d.clientX,top:d.clientY,width:0,height:0});if(c.autoRefresh){this.refresh()}this.selectees.filter(".ui-selected").each(function(){var e=a.data(this,"selectable-item");e.startselected=true;if(!d.metaKey){e.$element.removeClass("ui-selected");e.selected=false;e.$element.addClass("ui-unselecting");e.unselecting=true;b._trigger("unselecting",d,{unselecting:e.element})}});a(d.target).parents().andSelf().each(function(){var e=a.data(this,"selectable-item");if(e){e.$element.removeClass("ui-unselecting").addClass("ui-selecting");e.unselecting=false;e.selecting=true;e.selected=true;b._trigger("selecting",d,{selecting:e.element});return false}})},_mouseDrag:function(i){var c=this;this.dragged=true;if(this.options.disabled){return}var e=this.options;var d=this.opos[0],h=this.opos[1],b=i.pageX,g=i.pageY;if(d>b){var f=b;b=d;d=f}if(h>g){var f=g;g=h;h=f}this.helper.css({left:d,top:h,width:b-d,height:g-h});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!j||j.element==c.element[0]){return}var k=false;if(e.tolerance=="touch"){k=(!(j.left>b||j.right<d||j.top>g||j.bottom<h))}else{if(e.tolerance=="fit"){k=(j.left>d&&j.right<b&&j.top>h&&j.bottom<g)}}if(k){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;c._trigger("selecting",i,{selecting:j.element})}}else{if(j.selecting){if(i.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}c._trigger("unselecting",i,{unselecting:j.element})}}if(j.selected){if(!i.metaKey&&!j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;c._trigger("unselecting",i,{unselecting:j.element})}}}});return false},_mouseStop:function(d){var b=this;this.dragged=false;var c=this.options;a(".ui-unselecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-unselecting");e.unselecting=false;e.startselected=false;b._trigger("unselected",d,{unselected:e.element})});a(".ui-selecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;b._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}}));a.extend(a.ui.selectable,{version:"1.7.1",defaults:{appendTo:"body",autoRefresh:true,cancel:":input,option",delay:0,distance:0,filter:"*",tolerance:"touch"}})})(jQuery);;(function(a){a.widget("ui.sortable",a.extend({},a.ui.mouse,{_init:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();this.floating=this.items.length?(/left|right/).test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--){this.items[b].item.removeData("sortable-item")}},_mouseCapture:function(e,f){if(this.reverting){return false}if(this.options.disabled||this.options.type=="static"){return false}this._refreshItems(e);var d=null,c=this,b=a(e.target).parents().each(function(){if(a.data(this,"sortable-item")==c){d=a(this);return false}});if(a.data(e.target,"sortable-item")==c){d=a(e.target)}if(!d){return false}if(this.options.handle&&!f){var g=false;a(this.options.handle,d).find("*").andSelf().each(function(){if(this==e.target){g=true}});if(!g){return false}}this.currentItem=d;this._removeCurrentsFromItems();return true},_mouseStart:function(e,f,b){var g=this.options,c=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(e);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(e);this.originalPageX=e.pageX;this.originalPageY=e.pageY;if(g.cursorAt){this._adjustOffsetFromHelper(g.cursorAt)}this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};if(this.helper[0]!=this.currentItem[0]){this.currentItem.hide()}this._createPlaceholder();if(g.containment){this._setContainment()}if(g.cursor){if(a("body").css("cursor")){this._storedCursor=a("body").css("cursor")}a("body").css("cursor",g.cursor)}if(g.opacity){if(this.helper.css("opacity")){this._storedOpacity=this.helper.css("opacity")}this.helper.css("opacity",g.opacity)}if(g.zIndex){if(this.helper.css("zIndex")){this._storedZIndex=this.helper.css("zIndex")}this.helper.css("zIndex",g.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){this.overflowOffset=this.scrollParent.offset()}this._trigger("start",e,this._uiHash());if(!this._preserveHelperProportions){this._cacheHelperProportions()}if(!b){for(var d=this.containers.length-1;d>=0;d--){this.containers[d]._trigger("activate",e,c._uiHash(this))}}if(a.ui.ddmanager){a.ui.ddmanager.current=this}if(a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,e)}this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(e);return true},_mouseDrag:function(f){this.position=this._generatePosition(f);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs){this.lastPositionAbs=this.positionAbs}if(this.options.scroll){var g=this.options,b=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if((this.overflowOffset.top+this.scrollParent[0].offsetHeight)-f.pageY<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop+g.scrollSpeed}else{if(f.pageY-this.overflowOffset.top<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop-g.scrollSpeed}}if((this.overflowOffset.left+this.scrollParent[0].offsetWidth)-f.pageX<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft+g.scrollSpeed}else{if(f.pageX-this.overflowOffset.left<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft-g.scrollSpeed}}}else{if(f.pageY-a(document).scrollTop()<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-g.scrollSpeed)}else{if(a(window).height()-(f.pageY-a(document).scrollTop())<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+g.scrollSpeed)}}if(f.pageX-a(document).scrollLeft()<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-g.scrollSpeed)}else{if(a(window).width()-(f.pageX-a(document).scrollLeft())<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+g.scrollSpeed)}}}if(b!==false&&a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,f)}}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d],c=e.item[0],h=this._intersectsWithPointer(e);if(!h){continue}if(c!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=c&&!a.ui.contains(this.placeholder[0],c)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],c):true)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e)){this._rearrange(f,e)}else{break}this._trigger("change",f,this._uiHash());break}}this._contactContainers(f);if(a.ui.ddmanager){a.ui.ddmanager.drag(this,f)}this._trigger("sort",f,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,d){if(!c){return}if(a.ui.ddmanager&&!this.options.dropBehaviour){a.ui.ddmanager.drop(this,c)}if(this.options.revert){var b=this;var e=b.placeholder.offset();b.reverting=true;a(this.helper).animate({left:e.left-this.offset.parent.left-b.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-b.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){b._clear(c)})}else{this._clear(c,d)}return false},cancel:function(){var b=this;if(this.dragging){this._mouseUp();if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,b._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,b._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder[0].parentNode){this.placeholder[0].parentNode.removeChild(this.placeholder[0])}if(this.options.helper!="original"&&this.helper&&this.helper[0].parentNode){this.helper.remove()}a.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});if(this.domPosition.prev){a(this.domPosition.prev).after(this.currentItem)}else{a(this.domPosition.parent).prepend(this.currentItem)}return true},serialize:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};a(b).each(function(){var e=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||(/(.+)[-=_](.+)/));if(e){c.push((d.key||e[1]+"[]")+"="+(d.key&&d.expression?e[1]:e[2]))}});return c.join("&")},toArray:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};b.each(function(){c.push(a(d.item||this).attr(d.attribute||"id")||"")});return c},_intersectsWith:function(m){var e=this.positionAbs.left,d=e+this.helperProportions.width,k=this.positionAbs.top,j=k+this.helperProportions.height;var f=m.left,c=f+m.width,n=m.top,i=n+m.height;var o=this.offset.click.top,h=this.offset.click.left;var g=(k+o)>n&&(k+o)<i&&(e+h)>f&&(e+h)<c;if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>m[this.floating?"width":"height"])){return g}else{return(f<e+(this.helperProportions.width/2)&&d-(this.helperProportions.width/2)<c&&n<k+(this.helperProportions.height/2)&&j-(this.helperProportions.height/2)<i)}},_intersectsWithPointer:function(d){var e=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top,d.height),c=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left,d.width),g=e&&c,b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(!g){return false}return this.floating?(((f&&f=="right")||b=="down")?2:1):(b&&(b=="down"?2:1))},_intersectsWithSides:function(e){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+(e.height/2),e.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+(e.width/2),e.width),b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(this.floating&&f){return((f=="right"&&d)||(f=="left"&&!d))}else{return b&&((b=="down"&&c)||(b=="up"&&!c))}},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return b!=0&&(b>0?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-this.lastPositionAbs.left;return b!=0&&(b>0?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions()},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(b){var l=this;var g=[];var e=[];var h=this._connectWith();if(h&&b){for(var d=h.length-1;d>=0;d--){var k=a(h[d]);for(var c=k.length-1;c>=0;c--){var f=a.data(k[c],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper"),f])}}}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper"),this]);for(var d=e.length-1;d>=0;d--){e[d][0].each(function(){g.push(this)})}return a(g)},_removeCurrentsFromItems:function(){var d=this.currentItem.find(":data(sortable-item)");for(var c=0;c<this.items.length;c++){for(var b=0;b<d.length;b++){if(d[b]==this.items[c].item[0]){this.items.splice(c,1)}}}},_refreshItems:function(b){this.items=[];this.containers=[this];var h=this.items;var p=this;var f=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]];var l=this._connectWith();if(l){for(var e=l.length-1;e>=0;e--){var m=a(l[e]);for(var d=m.length-1;d>=0;d--){var g=a.data(m[d],"sortable");if(g&&g!=this&&!g.options.disabled){f.push([a.isFunction(g.options.items)?g.options.items.call(g.element[0],b,{item:this.currentItem}):a(g.options.items,g.element),g]);this.containers.push(g)}}}}for(var e=f.length-1;e>=0;e--){var k=f[e][1];var c=f[e][0];for(var d=0,n=c.length;d<n;d++){var o=a(c[d]);o.data("sortable-item",k);h.push({item:o,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){if(this.offsetParent&&this.helper){this.offset.parent=this._getParentOffset()}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d];if(e.instance!=this.currentContainer&&this.currentContainer&&e.item[0]!=this.currentItem[0]){continue}var c=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!b){e.width=c.outerWidth();e.height=c.outerHeight()}var f=c.offset();e.left=f.left;e.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var d=this.containers.length-1;d>=0;d--){var f=this.containers[d].element.offset();this.containers[d].containerCache.left=f.left;this.containers[d].containerCache.top=f.top;this.containers[d].containerCache.width=this.containers[d].element.outerWidth();this.containers[d].containerCache.height=this.containers[d].element.outerHeight()}}},_createPlaceholder:function(d){var b=d||this,e=b.options;if(!e.placeholder||e.placeholder.constructor==String){var c=e.placeholder;e.placeholder={element:function(){var f=a(document.createElement(b.currentItem[0].nodeName)).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!c){f.style.visibility="hidden"}return f},update:function(f,g){if(c&&!e.forcePlaceholderSize){return}if(!g.height()){g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10))}if(!g.width()){g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=a(e.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);e.placeholder.update(b,b.placeholder)},_contactContainers:function(d){for(var c=this.containers.length-1;c>=0;c--){if(this._intersectsWith(this.containers[c].containerCache)){if(!this.containers[c].containerCache.over){if(this.currentContainer!=this.containers[c]){var h=10000;var g=null;var e=this.positionAbs[this.containers[c].floating?"left":"top"];for(var b=this.items.length-1;b>=0;b--){if(!a.ui.contains(this.containers[c].element[0],this.items[b].item[0])){continue}var f=this.items[b][this.containers[c].floating?"left":"top"];if(Math.abs(f-e)<h){h=Math.abs(f-e);g=this.items[b]}}if(!g&&!this.options.dropOnEmpty){continue}this.currentContainer=this.containers[c];g?this._rearrange(d,g,null,true):this._rearrange(d,null,this.containers[c].element,true);this._trigger("change",d,this._uiHash());this.containers[c]._trigger("change",d,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder)}this.containers[c]._trigger("over",d,this._uiHash(this));this.containers[c].containerCache.over=1}}else{if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",d,this._uiHash(this));this.containers[c].containerCache.over=0}}}},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c,this.currentItem])):(d.helper=="clone"?this.currentItem.clone():this.currentItem);if(!b.parents("body").length){a(d.appendTo!="parent"?d.appendTo:this.currentItem[0].parentNode)[0].appendChild(b[0])}if(b[0]==this.currentItem[0]){this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}}if(b[0].style.width==""||d.forceHelperSize){b.width(this.currentItem.width())}if(b[0].style.height==""||d.forceHelperSize){b.height(this.currentItem.height())}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)){var c=a(e.containment)[0];var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_rearrange:function(g,f,c,e){c?c[0].appendChild(this.placeholder[0]):f.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction=="down"?f.item[0]:f.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var d=this,b=this.counter;window.setTimeout(function(){if(b==d.counter){d.refreshPositions(!e)}},0)},_clear:function(d,e){this.reverting=false;var f=[],b=this;if(!this._noFinalSort&&this.currentItem[0].parentNode){this.placeholder.before(this.currentItem)}this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var c in this._storedCSS){if(this._storedCSS[c]=="auto"||this._storedCSS[c]=="static"){this._storedCSS[c]=""}}this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}if(this.fromOutside&&!e){f.push(function(g){this._trigger("receive",g,this._uiHash(this.fromOutside))})}if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!e){f.push(function(g){this._trigger("update",g,this._uiHash())})}if(!a.ui.contains(this.element[0],this.currentItem[0])){if(!e){f.push(function(g){this._trigger("remove",g,this._uiHash())})}for(var c=this.containers.length-1;c>=0;c--){if(a.ui.contains(this.containers[c].element[0],this.currentItem[0])&&!e){f.push((function(g){return function(h){g._trigger("receive",h,this._uiHash(this))}}).call(this,this.containers[c]));f.push((function(g){return function(h){g._trigger("update",h,this._uiHash(this))}}).call(this,this.containers[c]))}}}for(var c=this.containers.length-1;c>=0;c--){if(!e){f.push((function(g){return function(h){g._trigger("deactivate",h,this._uiHash(this))}}).call(this,this.containers[c]))}if(this.containers[c].containerCache.over){f.push((function(g){return function(h){g._trigger("out",h,this._uiHash(this))}}).call(this,this.containers[c]));this.containers[c].containerCache.over=0}}if(this._storedCursor){a("body").css("cursor",this._storedCursor)}if(this._storedOpacity){this.helper.css("opacity",this._storedOpacity)}if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex)}this.dragging=false;if(this.cancelHelperRemoval){if(!e){this._trigger("beforeStop",d,this._uiHash());for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}return false}if(!e){this._trigger("beforeStop",d,this._uiHash())}this.placeholder[0].parentNode.removeChild(this.placeholder[0]);if(this.helper[0]!=this.currentItem[0]){this.helper.remove()}this.helper=null;if(!e){for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){if(a.widget.prototype._trigger.apply(this,arguments)===false){this.cancel()}},_uiHash:function(c){var b=c||this;return{helper:b.helper,placeholder:b.placeholder||a([]),position:b.position,absolutePosition:b.positionAbs,offset:b.positionAbs,item:b.currentItem,sender:c?c.element:null}}}));a.extend(a.ui.sortable,{getter:"serialize toArray",version:"1.7.1",eventPrefix:"sort",defaults:{appendTo:"parent",axis:false,cancel:":input,option",connectWith:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1000}})})(jQuery);;jQuery.effects||(function(d){d.effects={version:"1.7.1",save:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.data("ec.storage."+h[f],g[0].style[h[f]])}}},restore:function(g,h){for(var f=0;f<h.length;f++){if(h[f]!==null){g.css(h[f],g.data("ec.storage."+h[f]))}}},setMode:function(f,g){if(g=="toggle"){g=f.is(":hidden")?"show":"hide"}return g},getBaseline:function(g,h){var i,f;switch(g[0]){case"top":i=0;break;case"middle":i=0.5;break;case"bottom":i=1;break;default:i=g[0]/h.height}switch(g[1]){case"left":f=0;break;case"center":f=0.5;break;case"right":f=1;break;default:f=g[1]/h.width}return{x:f,y:i}},createWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent()}var g={width:f.outerWidth(true),height:f.outerHeight(true),"float":f.css("float")};f.wrap('<div class="ui-effects-wrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');var j=f.parent();if(f.css("position")=="static"){j.css({position:"relative"});f.css({position:"relative"})}else{var i=f.css("top");if(isNaN(parseInt(i,10))){i="auto"}var h=f.css("left");if(isNaN(parseInt(h,10))){h="auto"}j.css({position:f.css("position"),top:i,left:h,zIndex:f.css("z-index")}).show();f.css({position:"relative",top:0,left:0})}j.css(g);return j},removeWrapper:function(f){if(f.parent().is(".ui-effects-wrapper")){return f.parent().replaceWith(f)}return f},setTransition:function(g,i,f,h){h=h||{};d.each(i,function(k,j){unit=g.cssUnit(j);if(unit[0]>0){h[j]=unit[0]*f+unit[1]}});return h},animateClass:function(h,i,k,j){var f=(typeof k=="function"?k:(j?j:null));var g=(typeof k=="string"?k:null);return this.each(function(){var q={};var o=d(this);var p=o.attr("style")||"";if(typeof p=="object"){p=p.cssText}if(h.toggle){o.hasClass(h.toggle)?h.remove=h.toggle:h.add=h.toggle}var l=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.addClass(h.add)}if(h.remove){o.removeClass(h.remove)}var m=d.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(h.add){o.removeClass(h.add)}if(h.remove){o.addClass(h.remove)}for(var r in m){if(typeof m[r]!="function"&&m[r]&&r.indexOf("Moz")==-1&&r.indexOf("length")==-1&&m[r]!=l[r]&&(r.match(/color/i)||(!r.match(/color/i)&&!isNaN(parseInt(m[r],10))))&&(l.position!="static"||(l.position=="static"&&!r.match(/left|top|bottom|right/)))){q[r]=m[r]}}o.animate(q,i,g,function(){if(typeof d(this).attr("style")=="object"){d(this).attr("style")["cssText"]="";d(this).attr("style")["cssText"]=p}else{d(this).attr("style",p)}if(h.add){d(this).addClass(h.add)}if(h.remove){d(this).removeClass(h.remove)}if(f){f.apply(this,arguments)}})})}};function c(g,f){var i=g[1]&&g[1].constructor==Object?g[1]:{};if(f){i.mode=f}var h=g[1]&&g[1].constructor!=Object?g[1]:(i.duration?i.duration:g[2]);h=d.fx.off?0:typeof h==="number"?h:d.fx.speeds[h]||d.fx.speeds._default;var j=i.callback||(d.isFunction(g[1])&&g[1])||(d.isFunction(g[2])&&g[2])||(d.isFunction(g[3])&&g[3]);return[g[0],i,h,j]}d.fn.extend({_show:d.fn.show,_hide:d.fn.hide,__toggle:d.fn.toggle,_addClass:d.fn.addClass,_removeClass:d.fn.removeClass,_toggleClass:d.fn.toggleClass,effect:function(g,f,h,i){return d.effects[g]?d.effects[g].call(this,{method:g,options:f||{},duration:h,callback:i}):null},show:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._show.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"show"))}},hide:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))){return this._hide.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"hide"))}},toggle:function(){if(!arguments[0]||(arguments[0].constructor==Number||(/(slow|normal|fast)/).test(arguments[0]))||(arguments[0].constructor==Function)){return this.__toggle.apply(this,arguments)}else{return this.effect.apply(this,c(arguments,"toggle"))}},addClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{add:g},f,i,h]):this._addClass(g)},removeClass:function(g,f,i,h){return f?d.effects.animateClass.apply(this,[{remove:g},f,i,h]):this._removeClass(g)},toggleClass:function(g,f,i,h){return((typeof f!=="boolean")&&f)?d.effects.animateClass.apply(this,[{toggle:g},f,i,h]):this._toggleClass(g,f)},morph:function(f,h,g,j,i){return d.effects.animateClass.apply(this,[{add:h,remove:f},g,j,i])},switchClass:function(){return this.morph.apply(this,arguments)},cssUnit:function(f){var g=this.css(f),h=[];d.each(["em","px","%","pt"],function(j,k){if(g.indexOf(k)>0){h=[parseFloat(g),k]}});return h}});d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(g,f){d.fx.step[f]=function(h){if(h.state==0){h.start=e(h.elem,f);h.end=b(h.end)}h.elem.style[f]="rgb("+[Math.max(Math.min(parseInt((h.pos*(h.end[0]-h.start[0]))+h.start[0],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[1]-h.start[1]))+h.start[1],10),255),0),Math.max(Math.min(parseInt((h.pos*(h.end[2]-h.start[2]))+h.start[2],10),255),0)].join(",")+")"}});function b(g){var f;if(g&&g.constructor==Array&&g.length==3){return g}if(f=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(g)){return[parseInt(f[1],10),parseInt(f[2],10),parseInt(f[3],10)]}if(f=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(g)){return[parseFloat(f[1])*2.55,parseFloat(f[2])*2.55,parseFloat(f[3])*2.55]}if(f=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(g)){return[parseInt(f[1],16),parseInt(f[2],16),parseInt(f[3],16)]}if(f=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(g)){return[parseInt(f[1]+f[1],16),parseInt(f[2]+f[2],16),parseInt(f[3]+f[3],16)]}if(f=/rgba\(0, 0, 0, 0\)/.exec(g)){return a.transparent}return a[d.trim(g).toLowerCase()]}function e(h,f){var g;do{g=d.curCSS(h,f);if(g!=""&&g!="transparent"||d.nodeName(h,"body")){break}f="backgroundColor"}while(h=h.parentNode);return b(g)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};d.easing.jswing=d.easing.swing;d.extend(d.easing,{def:"easeOutQuad",swing:function(g,h,f,j,i){return d.easing[d.easing.def](g,h,f,j,i)},easeInQuad:function(g,h,f,j,i){return j*(h/=i)*h+f},easeOutQuad:function(g,h,f,j,i){return-j*(h/=i)*(h-2)+f},easeInOutQuad:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h+f}return-j/2*((--h)*(h-2)-1)+f},easeInCubic:function(g,h,f,j,i){return j*(h/=i)*h*h+f},easeOutCubic:function(g,h,f,j,i){return j*((h=h/i-1)*h*h+1)+f},easeInOutCubic:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h+f}return j/2*((h-=2)*h*h+2)+f},easeInQuart:function(g,h,f,j,i){return j*(h/=i)*h*h*h+f},easeOutQuart:function(g,h,f,j,i){return-j*((h=h/i-1)*h*h*h-1)+f},easeInOutQuart:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h+f}return-j/2*((h-=2)*h*h*h-2)+f},easeInQuint:function(g,h,f,j,i){return j*(h/=i)*h*h*h*h+f},easeOutQuint:function(g,h,f,j,i){return j*((h=h/i-1)*h*h*h*h+1)+f},easeInOutQuint:function(g,h,f,j,i){if((h/=i/2)<1){return j/2*h*h*h*h*h+f}return j/2*((h-=2)*h*h*h*h+2)+f},easeInSine:function(g,h,f,j,i){return-j*Math.cos(h/i*(Math.PI/2))+j+f},easeOutSine:function(g,h,f,j,i){return j*Math.sin(h/i*(Math.PI/2))+f},easeInOutSine:function(g,h,f,j,i){return-j/2*(Math.cos(Math.PI*h/i)-1)+f},easeInExpo:function(g,h,f,j,i){return(h==0)?f:j*Math.pow(2,10*(h/i-1))+f},easeOutExpo:function(g,h,f,j,i){return(h==i)?f+j:j*(-Math.pow(2,-10*h/i)+1)+f},easeInOutExpo:function(g,h,f,j,i){if(h==0){return f}if(h==i){return f+j}if((h/=i/2)<1){return j/2*Math.pow(2,10*(h-1))+f}return j/2*(-Math.pow(2,-10*--h)+2)+f},easeInCirc:function(g,h,f,j,i){return-j*(Math.sqrt(1-(h/=i)*h)-1)+f},easeOutCirc:function(g,h,f,j,i){return j*Math.sqrt(1-(h=h/i-1)*h)+f},easeInOutCirc:function(g,h,f,j,i){if((h/=i/2)<1){return-j/2*(Math.sqrt(1-h*h)-1)+f}return j/2*(Math.sqrt(1-(h-=2)*h)+1)+f},easeInElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return-(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f},easeOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l)==1){return f+m}if(!k){k=l*0.3}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}return h*Math.pow(2,-10*i)*Math.sin((i*l-j)*(2*Math.PI)/k)+m+f},easeInOutElastic:function(g,i,f,m,l){var j=1.70158;var k=0;var h=m;if(i==0){return f}if((i/=l/2)==2){return f+m}if(!k){k=l*(0.3*1.5)}if(h<Math.abs(m)){h=m;var j=k/4}else{var j=k/(2*Math.PI)*Math.asin(m/h)}if(i<1){return-0.5*(h*Math.pow(2,10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k))+f}return h*Math.pow(2,-10*(i-=1))*Math.sin((i*l-j)*(2*Math.PI)/k)*0.5+m+f},easeInBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*(h/=j)*h*((i+1)*h-i)+f},easeOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}return k*((h=h/j-1)*h*((i+1)*h+i)+1)+f},easeInOutBack:function(g,h,f,k,j,i){if(i==undefined){i=1.70158}if((h/=j/2)<1){return k/2*(h*h*(((i*=(1.525))+1)*h-i))+f}return k/2*((h-=2)*h*(((i*=(1.525))+1)*h+i)+2)+f},easeInBounce:function(g,h,f,j,i){return j-d.easing.easeOutBounce(g,i-h,0,j,i)+f},easeOutBounce:function(g,h,f,j,i){if((h/=i)<(1/2.75)){return j*(7.5625*h*h)+f}else{if(h<(2/2.75)){return j*(7.5625*(h-=(1.5/2.75))*h+0.75)+f}else{if(h<(2.5/2.75)){return j*(7.5625*(h-=(2.25/2.75))*h+0.9375)+f}else{return j*(7.5625*(h-=(2.625/2.75))*h+0.984375)+f}}}},easeInOutBounce:function(g,h,f,j,i){if(h<i/2){return d.easing.easeInBounce(g,h*2,0,j,i)*0.5+f}return d.easing.easeOutBounce(g,h*2-i,0,j,i)*0.5+j*0.5+f}})})(jQuery);;(function(a){a.effects.blind=function(b){return this.queue(function(){var d=a(this),c=["position","top","left"];var h=a.effects.setMode(d,b.options.mode||"hide");var g=b.options.direction||"vertical";a.effects.save(d,c);d.show();var j=a.effects.createWrapper(d).css({overflow:"hidden"});var e=(g=="vertical")?"height":"width";var i=(g=="vertical")?j.height():j.width();if(h=="show"){j.css(e,0)}var f={};f[e]=h=="show"?i:0;j.animate(f,b.duration,b.options.easing,function(){if(h=="hide"){d.hide()}a.effects.restore(d,c);a.effects.removeWrapper(d);if(b.callback){b.callback.apply(d[0],arguments)}d.dequeue()})})}})(jQuery);;(function(a){a.effects.bounce=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"up";var c=b.options.distance||20;var d=b.options.times||5;var g=b.duration||250;if(/show|hide/.test(k)){l.push("opacity")}a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var c=b.options.distance||(f=="top"?e.outerHeight({margin:true})/3:e.outerWidth({margin:true})/3);if(k=="show"){e.css("opacity",0).css(f,p=="pos"?-c:c)}if(k=="hide"){c=c/(d*2)}if(k!="hide"){d--}if(k=="show"){var h={opacity:1};h[f]=(p=="pos"?"+=":"-=")+c;e.animate(h,g/2,b.options.easing);c=c/2;d--}for(var j=0;j<d;j++){var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing);c=(k=="hide")?c*2:c/2}if(k=="hide"){var h={opacity:0};h[f]=(p=="pos"?"-=":"+=")+c;e.animate(h,g/2,b.options.easing,function(){e.hide();a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}else{var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);;(function(a){a.effects.shake=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"left";var c=b.options.distance||20;var d=b.options.times||3;var g=b.duration||b.options.duration||140;a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var h={},o={},m={};h[f]=(p=="pos"?"-=":"+=")+c;o[f]=(p=="pos"?"+=":"-=")+c*2;m[f]=(p=="pos"?"-=":"+=")+c*2;e.animate(h,g,b.options.easing);for(var j=1;j<d;j++){e.animate(o,g,b.options.easing).animate(m,g,b.options.easing)}e.animate(o,g,b.options.easing).animate(h,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}});e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);;(function(a){a.effects.slide=function(b){return this.queue(function(){var e=a(this),d=["position","top","left"];var i=a.effects.setMode(e,b.options.mode||"show");var h=b.options.direction||"left";a.effects.save(e,d);e.show();a.effects.createWrapper(e).css({overflow:"hidden"});var f=(h=="up"||h=="down")?"top":"left";var c=(h=="up"||h=="left")?"pos":"neg";var j=b.options.distance||(f=="top"?e.outerHeight({margin:true}):e.outerWidth({margin:true}));if(i=="show"){e.css(f,c=="pos"?-j:j)}var g={};g[f]=(i=="show"?(c=="pos"?"+=":"-="):(c=="pos"?"-=":"+="))+j;e.animate(g,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){e.hide()}a.effects.restore(e,d);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);;eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(5($){$.V.x({t:5(f){2(!f.d)f.d=$.7.d++;2(!$.7.l)$.7.l=[];j 1.A(5(){2(1.4)j 1.4.n(f);8 1.4=[];1.4.n(f);c s=1;1.6=5(e){e=$.7.R(e||o.7);$.x(e,1.p||{});c a=0,m=P;2(e.u)a=e.u/M;2(e.H)a=-e.H/3;2(o.I)a=-e.u;r(c i=0;i<s.4.q;i++)2(s.4[i])2(s.4[i].U(s,e,a)===9){m=9;e.T();e.S()}j m};2($.k.h&&!1.b){1.b=5(e){1.p={F:e.F,E:e.E,D:e.D,C:e.C}};$(1).Q(\'B\',1.b)}2(1.g)2($.k.h)1.g(\'z\',1.6,9);8 1.g(\'t\',1.6,9);8 1.y=1.6;$.7.l.n($(1))})},v:5(f){j 1.A(5(){2(f&&1.4){r(c i=0;i<1.4.q;i++)2(1.4[i]&&1.4[i].d==f.d)O 1.4[i]}8{2($.k.h&&!1.b)$(1).N(\'B\',1.b);2(1.g)2($.k.h)1.w(\'z\',1.6,9);8 1.w(\'t\',1.6,9);8 1.y=G;1.4=1.6=1.b=1.p=G}})}});$(o).L(\'K\',5(){c a=$.7.l||[];r(c i=0;i<a.q;i++)a[i].v()})})(J);',58,58,'|this|if||_mwHandlers|function|_mwHandler|event|else|false||_mwFixCursorPos|var|guid|||addEventListener|mozilla||return|browser|_mwCache|returnValue|push|window|_mwCursorPos|length|for||mousewheel|wheelDelta|unmousewheel|removeEventListener|extend|onmousewheel|DOMMouseScroll|each|mousemove|clientY|clientX|pageY|pageX|null|detail|opera|jQuery|unload|one|120|unbind|delete|true|bind|fix|stopPropagation|preventDefault|call|fn'.split('|'),0,{}));(function(h){var m=h.scrollTo=function(b,c,g){h(window).scrollTo(b,c,g)};m.defaults={axis:'y',duration:1};m.window=function(b){return h(window).scrollable()};h.fn.scrollable=function(){return this.map(function(){var b=this.parentWindow||this.defaultView,c=this.nodeName=='#document'?b.frameElement||b:this,g=c.contentDocument||(c.contentWindow||c).document,i=c.setInterval;return c.nodeName=='IFRAME'||i&&h.browser.safari?g.body:i?g.documentElement:this})};h.fn.scrollTo=function(r,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};a=h.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=h(k),d=r,l,e={},p=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(d)){d=n(d);break}d=h(d,this);case'object':if(d.is||d.style)l=(d=h(d)).offset()}h.each(a.axis.split(''),function(b,c){var g=c=='x'?'Left':'Top',i=g.toLowerCase(),f='scroll'+g,s=k[f],t=c=='x'?'Width':'Height',v=t.toLowerCase();if(l){e[f]=l[i]+(p?0:s-o.offset()[i]);if(a.margin){e[f]-=parseInt(d.css('margin'+g))||0;e[f]-=parseInt(d.css('border'+g+'Width'))||0}e[f]+=a.offset[i]||0;if(a.over[i])e[f]+=d[v]()*a.over[i]}else e[f]=d[i];if(/^\d+$/.test(e[f]))e[f]=e[f]<=0?0:Math.min(e[f],u(t));if(!b&&a.queue){if(s!=e[f])q(a.onAfterFirst);delete e[f]}});q(a.onAfter);function q(b){o.animate(e,j,a.easing,b&&function(){b.call(this,r,a)})};function u(b){var c='scroll'+b,g=k.ownerDocument;return p?Math.max(g.documentElement[c],g.body[c]):k[c]}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);;(function($){var g=location.href.replace(/#.*/,''),h=$.localScroll=function(a){$('body').localScroll(a)};h.defaults={duration:1e3,axis:'y',event:'click',stop:1};h.hash=function(a){a=$.extend({},h.defaults,a);a.hash=0;if(location.hash)setTimeout(function(){i(0,location,a)},0)};$.fn.localScroll=function(b){b=$.extend({},h.defaults,b);return(b.persistent||b.lazy)?this.bind(b.event,function(e){var a=$([e.target,e.target.parentNode]).filter(c)[0];a&&i(e,a,b)}):this.find('a,area').filter(c).bind(b.event,function(e){i(e,this,b)}).end().end();function c(){var a=this;return!!a.href&&!!a.hash&&a.href.replace(a.hash,'')==g&&(!b.filter||$(a).is(b.filter))}};function i(e,a,b){var c=a.hash.slice(1),d=document.getElementById(c)||document.getElementsByName(c)[0],f;if(d){e&&e.preventDefault();f=$(b.target||$.scrollTo.window());if(b.lock&&f.is(':animated')||b.onBefore&&b.onBefore.call(a,e,d,f)===!1)return;if(b.stop)f.queue('fx',[]).stop();f.scrollTo(d,b).trigger('notify.serialScroll',[d]);if(b.hash)f.queue(function(){location=a.hash;$(this).dequeue()})}}})(jQuery);function dfx(){}
dfx.get=function(url,data,callBack)
{jQuery.get(url,data,callBack);};dfx.post=function(url,data,successCallback,errorCallback,timeout)
{timeout=timeout||20;jQuery.ajax({url:url,type:'POST',data:data,success:successCallback,error:errorCallback,timeout:(timeout*1000)});};dfx.getJSON=function(url,data,callBack)
{jQuery.getJSON(url,data,callBack);};dfx.toQueryStr=function(params)
{return jQuery.param(params);};dfx.addToQueryStr=function(url,params)
{if(typeof params!=="string"){params=dfx.toQueryStr(params);}
var m=url.match(/\?/);if(dfx.isset(m)===true&&m.length>0){url+='&';}else{url+='?';}
url+=params;return url;};dfx.setStyle=function(element,property,value)
{if(element){jQuery(element).css(property,value);}};dfx.setStyles=function(elements,property,value)
{jQuery(elements).css(property,value);};dfx.getStyle=function(element,property)
{return jQuery(element).css(property);};dfx.hasClass=function(element,className)
{return jQuery(element).hasClass(className);};dfx.addClass=function(element,classNames)
{jQuery(element).addClass(classNames);};dfx.removeClass=function(element,classNames)
{jQuery(element).removeClass(classNames);};dfx.swapClass=function(element,oldClassName,newClassName)
{if(dfx.hasClass(element,oldClassName)===true){dfx.removeClass(element,oldClassName);}
dfx.addClass(element,newClassName);};dfx.camelCase=function(property)
{var hyphenTest=/-([a-z])/;while(hyphenTest.test(property)==true){property=property.replace(hyphenTest,RegExp.$1.toUpperCase());}
return property;};dfx.getHexColourCode=function(colour)
{if(colour.substring(0,1)==='#'){if(colour.length===4){colour=colour.replace(/#(\d|[a-fA-F])(\d|[a-fA-F])(\d|[a-fA-F])/,'#$1$1$2$2$3$3');}
return colour;}
if(colour.substring(0,3)==='rgb'){var rgb=colour.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);var r=parseInt(rgb[1]).toString(16);var g=parseInt(rgb[2]).toString(16);var b=parseInt(rgb[3]).toString(16);var hexColour='#'+r+g+b;return hexColour;}
return dfx.getColourNameValue(colour);};dfx.getRGBColourCode=function(colour)
{if(colour.substring(0,1)==='#'){var components=dfx.getColourComponents(colour);var colourString='rgb('+components.r+','+components.g+','+components.b+')';return colourString;}
if(colour.substring(0,3)==='rgb'){return colour;}
return dfx.getRGBColourCode(dfx.getColourNameValue(colour));};dfx.getColourComponents=function(colour)
{var components={};if(colour.substring(0,1)==='#'){colour=dfx.getHexColourCode(colour);var rgb=colour.match(/#([a-fA-F\d]{2})([a-fA-F\d]{2})([a-fA-F\d]{2})/);components.r=parseInt(rgb[1],16);components.g=parseInt(rgb[2],16);components.b=parseInt(rgb[3],16);}else if(colour.substring(0,3)==='rgb'){var rgb=colour.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);components.r=rgb[1];components.g=rgb[2];components.b=rgb[3];}else{components=dfx.getColourComponents(dfx.getColourNameValue(colour));}
return components;};dfx.toggle=function(element)
{jQuery(element).toggle();};dfx.setOpacity=function(element,value)
{dfx.setStyle(element,'opacity',value);};dfx.getOpacity=function(element)
{return dfx.getStyle(element,'opacity');};dfx.colourNameString='/aliceblue#f0f8ff/antiquewhite#faebd7/aqua#00ffff/aquamarine#7fffd4/azure#f0ffff/beige#f5f5dc/bisque#ffe4c4/black#000000/blanchedalmond#ffebcd/blue#0000ff/blueviolet#8a2be2/brown#a52a2a/burlywood#deb887/cadetblue#5f9ea0/chartreuse#7fff00/chocolate#d2691e/coral#ff7f50/cornflowerblue#6495ed/cornsilk#fff8dc/crimson#dc143c/cyan#00ffff/darkblue#00008b/darkcyan#008b8b/darkgoldenrod#b8860b/darkgray#a9a9a9/darkgrey#a9a9a9/darkgreen#006400/darkkhaki#bdb76b/darkmagenta#8b008b/darkolivegreen#556b2f/darkorange#ff8c00/darkorchid#9932cc/darkred#8b0000/darksalmon#e9967a/darkseagreen#8fbc8f/darkslateblue#483d8b/darkslategray#2f4f4f/darkslategrey#2f4f4f/darkturquoise#00ced1/darkviolet#9400d3/deeppink#ff1493/deepskyblue#00bfff/dimgray#696969/dimgrey#696969/dodgerblue#1e90ff/firebrick#b22222/floralwhite#fffaf0/forestgreen#228b22/fuchsia#ff00ff/gainsboro#dcdcdc/ghostwhite#f8f8ff/gold#ffd700/goldenrod#daa520/gray#808080/grey#808080/green#008000/greenyellow#adff2f/honeydew#f0fff0/hotpink#ff69b4/indianred #cd5c5c/indigo #4b0082/ivory#fffff0/khaki#f0e68c/lavender#e6e6fa/lavenderblush#fff0f5/lawngreen#7cfc00/lemonchiffon#fffacd/lightblue#add8e6/lightcoral#f08080/lightcyan#e0ffff/lightgoldenrodyellow#fafad2/lightgray#d3d3d3/lightgrey#d3d3d3/lightgreen#90ee90/lightpink#ffb6c1/lightsalmon#ffa07a/lightseagreen#20b2aa/lightskyblue#87cefa/lightslategray#778899/lightslategrey#778899/lightsteelblue#b0c4de/lightyellow#ffffe0/lime#00ff00/limegreen#32cd32/linen#faf0e6/magenta#ff00ff/maroon#800000/mediumaquamarine#66cdaa/mediumblue#0000cd/mediumorchid#ba55d3/mediumpurple#9370d8/mediumseagreen#3cb371/mediumslateblue#7b68ee/mediumspringgreen#00fa9a/mediumturquoise#48d1cc/mediumvioletred#c71585/midnightblue#191970/mintcream#f5fffa/mistyrose#ffe4e1/moccasin#ffe4b5/navajowhite#ffdead/navy#000080/oldlace#fdf5e6/olive#808000/olivedrab#6b8e23/orange#ffa500/orangered#ff4500/orchid#da70d6/palegoldenrod#eee8aa/palegreen#98fb98/paleturquoise#afeeee/palevioletred#d87093/papayawhip#ffefd5/peachpuff#ffdab9/peru#cd853f/pink#ffc0cb/plum#dda0dd/powderblue#b0e0e6/purple#800080/red#ff0000/rosybrown#bc8f8f/royalblue#4169e1/saddlebrown#8b4513/salmon#fa8072/sandybrown#f4a460/seagreen#2e8b57/seashell#fff5ee/sienna#a0522d/silver#c0c0c0/skyblue#87ceeb/slateblue#6a5acd/slategray#708090/slategrey#708090/snow#fffafa/springgreen#00ff7f/steelblue#4682b4/tan#d2b48c/teal#008080/thistle#d8bfd8/tomato#ff6347/turquoise#40e0d0/violet#ee82ee/wheat#f5deb3/white#ffffff/whitesmoke#f5f5f5/yellow#ffff00/yellowgreen#9acd32/';dfx.getColourNameValue=function(colourName)
{colourName=colourName.toLowerCase();var reg=new RegExp('\/'+colourName+'(#[a-f0-9]{6})\/');var matches=reg.exec(dfx.colourNameString);if(matches){return matches[1];}
return'#000000';};dfx.showElement=function(element,visibilityOnly)
{dfx.setStyle(element,'visibility','visible');if(dfx.isset(visibilityOnly)===false||visibilityOnly===false){dfx.setStyle(element,'display','block');}};dfx.hideElement=function(element,visibilityOnly)
{dfx.setStyle(element,'visibility','hidden');if(dfx.isset(visibilityOnly)===false||visibilityOnly===false){dfx.setStyle(element,'display','none');}};dfx.isShowing=function(element)
{var display=dfx.getStyle(element,'display');if(display==='none'||!display){return false;}
var visibility=dfx.getStyle(element,'visibility');if(visibility==='hidden'||!visibility){return false;}
return true;};dfx.toggleClass=function(elems,className)
{jQuery(elems).toggleClass(className);};dfx.getComputedStyle=function(el,styleName)
{if(styleName){styleName=dfx.camelCase(styleName);}
if(document.defaultView&&document.defaultView.getComputedStyle){var styles=document.defaultView.getComputedStyle(el,null);if(styleName){return styles[styleName];}
return styles;}else if(el.currentStyle){if(styleName){return el.currentStyle[styleName];}
return el.currentStyle;}};dfx.date=function(format,timestamp,tsIso8601)
{if(timestamp===null&&tsIso8601){timestamp=dfx.tsIso8601ToTimestamp(tsIso8601);if(!timestamp){return;}}
var date=new Date(timestamp);var formats=format.split('');var fc=formats.length;var dateStr='';for(var i=0;i<fc;i++){var r='';var f=formats[i];switch(f){case'D':case'l':var names=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];r=names[date.getDay()];if(f==='D'){r=r.substring(0,3);}
break;case'F':case'M':months=['January','February','March','April','May','June','July','August','September','October','November','December'];r=months[date.getMonth()];if(f==='M'){r=r.substring(0,3);}
break;case'd':r=date.getDate();break;case'S':r=dfx.getOrdinalSuffix(date.getDate());break;case'Y':case'y':r=date.getFullYear();if(f==='y'){r=r.toString().substring(2);}
break;case'H':r=date.getHours();break;case'h':r=date.getHours();if(r===0){r=12;}else if(r>12){r-=12;}
break;case'i':r=dfx.addNumberPadding(date.getMinutes());break;case'a':r='am';if(date.getHours()>=12){r='pm';}
break;default:r=f;break;}
dateStr+=r;}
return dateStr;};dfx.getOrdinalSuffix=function(number)
{var suffix='';var tmp=(number%100);if(tmp>=4&&tmp<=20){suffix='th';}else{switch(number%10){case 1:suffix='st';break;case 2:suffix='nd';break;case 3:suffix='rd';break;default:suffix='th';break;}}
return suffix;};dfx.addNumberPadding=function(number)
{if(number<10){number='0'+number;}
return number;};dfx.tsIso8601ToTimestamp=function(tsIso8601)
{var regexp=/(\d\d\d\d)(?:-?(\d\d)(?:-?(\d\d)(?:[T ](\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(?:Z|(?:([-+])(\d\d)(?::?(\d\d))?)?)?)?)?)?/;var d=tsIso8601.match(new RegExp(regexp));if(d){var date=new Date();date.setDate(d[3]);date.setFullYear(d[1]);date.setMonth(d[2]-1);date.setHours(d[4]);date.setMinutes(d[5]);date.setSeconds(d[6]);var offset=(d[9]*60);if(d[8]==='+'){offset*=-1;}
offset-=date.getTimezoneOffset();var timestamp=(date.getTime()+(offset*60*1000));return timestamp;}
return null;};function dom()
{this.scrollBarWidth=null;}
dfx.scriptsIncluded=[];dfx.cssIncluded=[];dfx.ELEMENT_NODE=1;dfx.ATTRIBUTE_NODE=2;dfx.TEXT_NODE=3;dfx.CDATA_SECTION_NODE=4;dfx.ENTITY_REFERENCE_NODE=5;dfx.ENTITY_NODE=6;dfx.PROCESSING_INSTRUCTION_NODE=7;dfx.COMMENT_NODE=8;dfx.DOCUMENT_NODE=9;dfx.DOCUMENT_TYPE_NODE=10;dfx.DOCUMENT_FRAGMENT_NODE=11;dfx.NOTATION_NODE=12;dfx.getClass=function(className,startElement,tagName)
{if(!startElement){startElement=document.body;}
className='.'+className;if(tagName){className=tagName+className;}
return jQuery.makeArray(jQuery(startElement).find(className));};dfx.getId=dom.getId=function(id,startElement)
{if(!startElement){startElement=document;}
element=startElement.getElementById(id);return element;};dfx.getTag=function(tagName,startElement)
{if(!startElement){startElement=document;}
return jQuery.makeArray(jQuery(startElement).find(tagName));};dfx.getElements=function(searchString,startElement)
{if(!startElement){startElement=document;}
var searchElems=searchString.split(' ');var matches=[];var searchResults=[];var schLen=searchElems.length;for(var i=0;i<schLen;i++){searchResults=[];if(searchElems[i].match(/.+\./)){var classPieces=searchElems[i].split('.');if(classPieces.length===2){searchResults=dfx.getClass(classPieces[1],startElement,classPieces[0]);}else{searchResults=dfx.getClass(classPieces[0],startElement);}}else if(searchElems[i].match(/^#/)){var idString=searchElems[i].substring(1);searchResults.push(dfx.getId(idString,startElement));}else{searchResults=dfx.getTag(searchElems[i],startElement);}
matches.mergeCollection(searchResults);}
return matches;};dfx.getElementCoords=function(element,relative)
{var offset=jQuery(element).offset();return{x:offset.left,y:offset.top};};dfx.setCoords=function(element,x,y)
{dfx.setStyle(element,'top',y+'px');dfx.setStyle(element,'left',x+'px');};dfx.getScrollCoords=function()
{var scrollX=0;var scrollY=0;if(window.pageYOffset){scrollX=window.pageXOffset;scrollY=window.pageYOffset;}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){scrollX=document.body.scrollLeft;scrollY=document.body.scrollTop;}else{scrollX=document.documentElement.scrollLeft;scrollY=document.documentElement.scrollTop;}
var coords={x:scrollX,y:scrollY};return coords;};dfx.getElementWidth=function(element)
{return element.offsetWidth;};dfx.getElementHeight=function(element)
{return element.offsetHeight;};dfx.getElementDimensions=function(element)
{var result={'width':dfx.getElementWidth(element),'height':dfx.getElementHeight(element)};return result;};dfx.getBoundingRectangle=function(element)
{var coords=dfx.getElementCoords(element);var dimensions=dfx.getElementDimensions(element);var result={'x1':coords.x,'y1':coords.y,'x2':coords.x+dimensions.width,'y2':coords.y+dimensions.height};return result;};dfx.getWindowDimensions=function()
{var windowWidth=0;var windowHeight=0;if(window.innerWidth){windowWidth=window.innerWidth;windowHeight=window.innerHeight;var scrollWidth=dfx.getScrollbarWidth();if(document.documentElement.scrollHeight>windowHeight){if(typeof scrollWidth==='number'){windowWidth-=scrollWidth;}}
if(document.body.scrollWidth>windowWidth){if(typeof scrollWidth==='number'){windowHeight-=scrollWidth;}}}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
var result={'width':windowWidth,'height':windowHeight};return result;};dfx.getScrollbarWidth=function()
{if(dom.scrollBarWidth){return dom.scrollBarWidth;}
var wrapDiv=null;var childDiv=null;var widthNoScrollBar=0;var widthWithScrollBar=0;wrapDiv=document.createElement('div');wrapDiv.style.position='absolute';wrapDiv.style.top='-1000px';wrapDiv.style.left='-1000px';wrapDiv.style.width='100px';wrapDiv.style.height='50px';wrapDiv.style.overflow='hidden';childDiv=document.createElement('div');childDiv.style.width='100%';childDiv.style.height='200px';wrapDiv.appendChild(childDiv);document.body.appendChild(wrapDiv);widthNoScrollBar=childDiv.offsetWidth;wrapDiv.style.overflow='auto';widthWithScrollBar=childDiv.offsetWidth;document.body.removeChild(document.body.lastChild);var scrollBarWidth=(widthNoScrollBar-widthWithScrollBar);dom.scrollBarWidth=scrollBarWidth;return scrollBarWidth;};dfx.empty=function(element)
{if(element){return jQuery(element).empty();}};dfx.remove=function(element)
{if(element){return jQuery(element).remove();}};dfx.prepend=function(parent,elem)
{jQuery(parent).prepend(elem);};dfx.append=function(parent,elem)
{jQuery(parent).append(elem);};dfx.insertBefore=function(before,elem)
{jQuery(before).before(elem);};dfx.insertAfter=function(after,elem)
{jQuery(after).after(elem);};dfx.getHtml=function(element)
{return jQuery(element).html();};dfx.setHtml=function(element,content)
{if(element){jQuery(element).html(content);}};dfx.appendHtml=function(element,content)
{jQuery(element).html(dfx.getHtml()+content);};dfx.prependHtml=function(element,content)
{jQuery(element).html(content+dfx.getHtml());};dfx.getParents=function(elements,filter,stopEl)
{var res=jQuery(elements).parents(filter);var ln=res.length;var ar=[];for(var i=0;i<ln;i++){if(res[i]===stopEl){break;}
ar.push(res[i]);}
return ar;};dfx.getSiblings=function(element,dir,elementNodesOnly,stopElem)
{if(elementNodesOnly===true){if(dir==='prev'){return jQuery(element).prevAll();}else{return jQuery(element).nextAll();}}else{var elems=[];if(dir==='prev'){while(element.previousSibling){element=element.previousSibling;if(element===stopElem){break;}
elems.push(element);}}else{while(element.nextSibling){element=element.nextSibling;if(element===stopElem){break;}
elems.push(element);}}
return elems;}};dfx.normalize=function(element)
{if(dfx.isBlockElement(element)===true){return false;}
while(element.nextSibling){var next=element.nextSibling;if(element.nodeType===dfx.TEXT_NODE){if(next.nodeType===dfx.TEXT_NODE){dfx.remove(next);element.nodeValue+=next.nodeValue;}else{break;}}else if(element.tagName===next.tagName){dfx.remove(next);var childLen=next.childNodes.length;while(childLen>0){element.appendChild(next.firstChild);childLen=next.childNodes.length;}}else{break;}}
while(element.previousSibling){var prev=element.previousSibling;if(element.nodeType===dfx.TEXT_NODE){if(prev.nodeType===dfx.TEXT_NODE){dfx.remove(element);prev.nodeValue+=element.nodeValue;element=prev;}else{break;}}else if(element.tagName===prev.tagName){dfx.remove(element);var childLen=element.childNodes.length;while(childLen>0){prev.appendChild(element.firstChild);childLen=element.childNodes.length;}
element=prev;}else{break;}}};dfx.normalizeChildren=function(parent)
{if(parent.nodeType!==dfx.ELEMENT_NODE){return false;}
var nodeLen=parent.childNodes.length;for(var i=0;i<nodeLen;i++){var child=parent.childNodes[i];if(child){if(child.nodeType!==dfx.TEXT_NODE){dfx.normalizeChildren(child);}
dfx.normalize(child);}}};dfx.includeScript=function(url,callback)
{if(url.indexOf('http://')===-1&&url.indexOf('https://')===-1){return;}
jQuery.getScript(url,callback);};dfx.includeScripts=function(urls,callback)
{if(!urls||urls.length===0){callback.call(this);}else{var url=urls.shift();dfx.includeScript(url,function(){dfx.includeScripts(urls,callback);});}};dfx._includeCss=function(url)
{var head=document.getElementsByTagName('head').item(0);var links=head.getElementsByTagName('link');var lnkLen=links.length;for(var i=0;i<lnkLen;i++){if(links[i].href===url){return;}}
var link=document.createElement('link');jQuery(link).attr({href:url,media:'screen',type:'text/css',rel:'stylesheet'}).appendTo('head');};dfx.includeCss=function(url,callback)
{var self=this;if(Widget.CSS_MINIFIED===true){if(callback){callback.call(self);}}else{if(dfx.cssIncluded[url]!==true){var loadCss=function(cb){var loadData={css:true,action:'loadCss',url:url};dfx.post(window.location.href,loadData,function(cssContent){dfx.addCssToStyle(cssContent);dfx.cssIncluded[url]=true;if(cb){cb.call(self);}});};loadCss(callback);}else{if(callback){callback.call(self);}}}};dfx.addCssToStyle=function(cssContent,id)
{var styleid='backendStyle';if(id){styleid=id;}
var head=document.getElementsByTagName("head").item(0);var styleTag=document.getElementById(styleid);if(styleTag){if(styleTag.styleSheet){styleTag.styleSheet.cssText=styleTag.styleSheet.cssText+cssContent;}else{dfx.setNodeTextContent(styleTag,dfx.getNodeTextContent(styleTag)+cssContent);}}else{styleTag=document.createElement('style');styleTag.setAttribute('type','text/css');styleTag.setAttribute('id',styleid);if(styleTag.styleSheet){styleTag.styleSheet.cssText=cssContent;}else{dfx.setNodeTextContent(styleTag,cssContent);}
head.appendChild(styleTag);}};dfx.getNodeTextContent=function(node)
{return jQuery(node).text();};dfx.setNodeTextContent=function(node,txt)
{return jQuery(node).text(txt);};dfx.getIframeDocument=function(iframe)
{var doc=null;if(iframe.contentDocument){doc=iframe.contentDocument;}else if(iframe.contentWindow){doc=iframe.contentWindow.document;}else if(iframe.document){doc=iframe.document;}
return doc;};dfx.isBlockElement=function(element)
{switch(element.nodeName.toLowerCase()){case'p':case'div':case'pre':case'ul':case'ol':case'li':case'table':case'tbody':case'td':case'th':case'fieldset':case'form':case'blockquote':case'dl':case'dir':case'center':case'address':case'h1':case'h2':case'h3':case'h4':case'h5':case'h6':case'img':return true;break;default:return false;break;}
return false;};dfx.isStubElement=function(element)
{if(element){switch(element.nodeName.toLowerCase()){case'img':case'br':case'hr':return true;break;default:return false;break;}}
return false;};dfx.isChildOf=function(el,parent)
{try{while(el&&el.parentNode){if(el.parentNode===parent){return true;}
el=el.parentNode;}}catch(e){}
return false;};dfx.getFormData=function(element)
{var data={},parent=null;if(element){parent=element;}else{parent=document;}
$(':input',parent).each(function(){var type=this.type;var tag=this.tagName.toLowerCase();if(type==='text'||type==='password'||tag==='textarea'){data[this.name]=this.value;}
if(type==='checkbox'||type==='radio'){data[this.name]=this.checked;}
if(tag==='select'){data[this.name]=this.selectedIndex;}});return data;};dfx.clearFormData=function(element)
{var parent=null;if(element){parent=element;}else{parent=document;}
$(':input',parent).each(function(){var type=this.type;var tag=this.tagName.toLowerCase();if(type==='text'||type==='password'||tag==='textarea'){this.value="";}
if(type==='checkbox'||type==='radio'){this.checked=false;}
if(tag==='select'){this.selectedIndex=-1;}});};dfx.cloneNode=function(elems)
{return jQuery(elems).clone(true);};dfx.attr=function(elements,key,val)
{return jQuery(elements).attr(key,val);};dfx.removeAttr=function(elements,name)
{jQuery(elements).removeAttr(name);};dfx.getElementsBetween=function(fromElem,toElem)
{var elements=[];if(fromElem===toElem){return elements;}
if(dfx.isChildOf(toElem,fromElem)===true){var fElemLen=fromElem.childNodes.length;for(var i=0;i<fElemLen;i++){if(fromElem.childNodes[i]===toElem){break;}else if(dfx.isChildOf(toElem,fromElem.childNodes[i])===true){return dfx.arrayMerge(elements,dfx.getElementsBetween(fromElem.childNodes[i],toElem));}else{elements.push(fromElem.childNodes[i]);}}
return elements;}
var startEl=fromElem.nextSibling;while(startEl){if(dfx.isChildOf(toElem,startEl)===true){elements=dfx.arrayMerge(elements,dfx.getElementsBetween(startEl,toElem));return elements;}else if(startEl===toElem){return elements;}else{elements.push(startEl);startEl=startEl.nextSibling;}}
var fromParents=dfx.getParents(fromElem);var toParents=dfx.getParents(toElem);var parentElems=dfx.arrayDiff(fromParents,toParents,true);var pElemLen=parentElems.length;for(var j=0;j<(pElemLen-1);j++){elements=dfx.arrayMerge(elements,dfx.getSiblings(parentElems[j],'next'));}
var lastParent=parentElems[(parentElems.length-1)];elements=dfx.arrayMerge(elements,dfx.getElementsBetween(lastParent,toElem));return elements;};dfx.getCommonAncestor=function(a,b)
{var node=a;while(node){if(dfx.isChildOf(b,node)===true){return node;}
node=node.parentNode;}
return null;};dfx.getNextNode=function(node)
{if(node.nextSibling){return node.nextSibling;}else if(node.parentNode){return dfx.getFirstChild(node.parentNode);}
return null;};dfx.getPrevNode=function(node)
{if(node.previousSibling){return node.previousSibling;}else if(node.parentNode){return dfx.getLastChild(node.parentNode);}
return null;};dfx.getFirstChild=function(node)
{if(node.firstChild){if(node.firstChild.nodeType===dfx.ELEMENT_NODE){return dfx.getFirstChild(node.firstChild);}else{return node.firstChild;}}
return node;};dfx.getLastChild=function(node)
{if(node.lastChild){if(node.lastChild.nodeType===dfx.ELEMENT_NODE){return dfx.getLastChild(node.lastChild);}else{return node.lastChild;}}
return node;};dfx.removeEmptyNodes=function(parent,callback)
{var elems=jQuery(parent).find(':empty');var i=elems.length;while(i>0){i--;if(dfx.isStubElement(elems[i])===false){if(!callback||callback.call(this,elems[i])!==false){dfx.remove(elems[i]);}}}};dfx.find=function(parent,exp)
{return jQuery(parent).find(exp);};dfx.getTextNodes=function(parent,removeEmpty)
{var nodes=[];if(parent&&parent.childNodes){var ln=parent.childNodes.length;for(var i=0;i<ln;i++){var child=parent.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){if(removeEmpty===true&&/^\s*$/.test(child.data)===true){dfx.remove(child);}else{nodes.push(child);}}else if(child.childNodes&&child.childNodes.length>0){nodes=nodes.concat(dfx.getTextNodes(child));}}}
return nodes;};dfx.isTag=function(node,tag)
{if(node&&node.tagName&&node.tagName.toLowerCase()===tag.toLowerCase()){return true;}
return false;};dfx.getTagName=function(node)
{if(node&&node.tagName){return node.tagName.toLowerCase();}
return null;};dfx.getFirstBlockParent=function(elem,stopEl)
{while(elem.parentNode){elem=elem.parentNode;if(stopEl&&elem===stopEl){return null;}
if(dfx.isBlockElement(elem)===true){return elem;}}
return null;};dfx.walk=function(elem,callback,lvl)
{if(!elem){return;}
if(!lvl){lvl=0;}
var retVal=callback.call(this,elem,lvl);if(retVal===false){return;}
if(elem.childNodes&&elem.childNodes.length>0){dfx.walk(elem.firstChild,callback,(lvl+1));}else if(elem.nextSibling){dfx.walk(elem.nextSibling,callback,lvl);}else if(elem.parentNode&&elem.parentNode.nextSibling){dfx.walk(elem.parentNode.nextSibling,callback,(lvl-1));}};dfx.revWalk=function(elem,callback)
{if(!elem){return;}
var retVal=callback.call(this,elem);if(retVal===false){return;}
if(elem.childNodes&&elem.childNodes.length>0){dfx.walk(elem.lastChild,callback);}else if(elem.previousSibling){dfx.walk(elem.previousSibling,callback);}else if(elem.parentNode&&elem.parentNode.previousSibling){dfx.walk(elem.parentNode.previousSibling,callback);}};dfx.setUnselectable=function(elem,selectable)
{if(elem){if(selectable===true){elem.unselectable='on';dfx.setStyle(elem,'-moz-user-select','none');dfx.setStyle(elem,'cursor','default');}else{elem.unselectable='off';dfx.setStyle(elem,'-moz-user-select','normal');dfx.setStyle(elem,'cursor','auto');}}};dfx.noDocWriteAllowed=function(){};dfx.move=function(elements,left,top,duration,callback,easing)
{var opts={};if(left!==null){opts.left=left;}
if(top!==null){opts.top=top;}
jQuery(elements).animate(opts,duration,easing,callback);};dfx.animate=function(elements,params,duration,callback,easing)
{jQuery(elements).animate(params,duration,easing,callback);};dfx.fadeIn=function(elements,speed,callback)
{jQuery(elements).fadeIn(speed,callback);};dfx.fadeOut=function(elements,speed,callback)
{jQuery(elements).fadeOut(speed,callback);};dfx.blindDown=function(elements,speed,callback)
{jQuery(elements).slideDown(speed,callback);};dfx.blindUp=function(elements,speed,callback)
{jQuery(elements).slideUp(speed,callback);};dfx.blindToggle=function(elements,speed,callback)
{jQuery(elements).slideToggle(speed,callback);};dfx.bounce=function(element,times,height,callback)
{if(times>0){var coords=dfx.getElementCoords(element);dfx.move(element,null,(coords.y-height),400,function(){dfx.move(element,null,coords.y,400,function(){if(times>0){dfx.bounce(element,(times-1),height,callback);}else if(callback){callback.call(this);}});});}else if(callback){callback.call(this);}};dfx.stop=function(elements)
{jQuery(elements).stop();};dfx.DOM_VK_DELETE=8;dfx.DOM_VK_LEFT=37;dfx.DOM_VK_UP=38;dfx.DOM_VK_RIGHT=39;dfx.DOM_VK_DOWN=40;dfx.DOM_VK_ENTER=13;dfx.registeredEvents=null;dfx.startMousePositionTrack=function(callback)
{$().bind('mousemove',callback);};dfx.stopMousePositionTrack=function(callback)
{$().unbind('mousemove',callback);};dfx.addEvent=function(elements,type,callback,data)
{if(elements){if(type==='safedblclick'){dfx.safedblclick(elements,callback,data);}else if(type==='mousewheel'){jQuery(elements).mousewheel(callback);}else{jQuery(elements).bind(type,data,callback);}}};dfx.safedblclick=function(elements,clickCallback,dblClickCallback,data)
{var t=null;jQuery(elements).bind('click',data,function(e){clearTimeout(t);t=setTimeout(function(){clickCallback.call(this,e,data);},250);});jQuery(elements).bind('dblclick',data,function(e){clearTimeout(t);dblClickCallback.call(this,e,data);});};dfx.trigger=function(elements,type,data)
{if(elements){jQuery(elements).trigger(type,data);}};dfx.removeEvent=function(elements,type,func)
{if(elements){jQuery(elements).unbind(type,func);}};dfx.hover=function(elements,over,out)
{if(elements){jQuery(elements).hover(over,out);}};dfx.toggle=function(elements,fn,fn)
{if(elements){jQuery(elements).toggle(fn,fn);}};dfx.addLoadEvent=function(func)
{jQuery(document).ready(func);};dfx.changeEvent=function(element,eventType,oldFunc,newFunc)
{event.removeEvent(element,eventType,oldFunc);event.addEvent(element,eventType,newFunc);};dfx.getMouseEventPosition=function(evt)
{return{x:evt.pageX,y:evt.pageY};};dfx.getMouseEventTarget=function(evt)
{var ret=null;if(evt.target){ret=evt.target;}else if(evt.srcElement){ret=evt.srcElement;}
return ret;};dfx.preventDefault=function(e)
{e.preventDefault();dfx.stopPropagation(e);};dfx.stopPropagation=function(e)
{e.stopPropagation();};dfx.getEventType=function(e)
{return e.type;};dfx.which=function(e)
{return e.which;};dfx.getKeyChar=function(e)
{return String.fromCharCode(dfx.which(e));};dfx.resizeHeight=function(element,handle,startFn,endFn,moveFn,min,max)
{var elH=dfx.getElementHeight(element);var mPosY=0;min=min||null;max=max||null;if(dfx.isFn(moveFn)===false){moveFn=function(){};}
var move=function(e){var pos=dfx.getMouseEventPosition(e);if(pos.y<mPosY){elH=(elH+(mPosY-pos.y));}else if(pos.y>mPosY){elH=(elH-(pos.y-mPosY));}
if(elH>=0&&(min===null||elH>=min)&&(max===null||elH<=max)){element.style.height=elH+'px';var info={prevPosY:mPosY,newPosY:pos.y,height:elH};moveFn.call(this,info);}
mPosY=pos.y;};dfx.addEvent(handle,'mousedown.drag',function(e){elH=dfx.getElementHeight(element);mPosY=0;if(dfx.isFn(startFn)===true){startFn.call(this);}
mPosY=dfx.getMouseEventPosition(e).y;dfx.addEvent(document,'mousemove.drag',function(e){move(e);});dfx.addEvent(document,'mouseup.drag',function(){dfx.removeEvent(document,'mousemove.drag');dfx.removeEvent(document,'mouseup.drag');if(dfx.isFn(endFn)===true){endFn.call(this);}});});};dfx.drag=function(element,options,startFn,endFn,dragFn)
{var offset=0;var maxRight=0;var maxLeft=0;var elemWidth=dfx.getElementWidth(element);if(options){if(options.maxLeft){maxLeft=options.maxLeft;}}
var drag=function(e){var pos=(dfx.getMouseEventPosition(e).x+offset);if(pos<maxLeft){pos=maxLeft;}
if(maxRight!==0&&pos>maxRight){pos=maxRight;}
if(pos>=0){var finalPos=pos;if(options){if(options.offset){finalPos=(pos-options.offset);}}
dfx.setStyle(element,'left',finalPos+'px');if(dragFn){dragFn.call(this,finalPos,maxRight);}}};dfx.addEvent(element,'mousedown.drag',function(e){if(dfx.isFn(startFn)===true){startFn.call(this);}
var elemX=dfx.getElementCoords(element).x;var mPosX=dfx.getMouseEventPosition(e).x;offset=(elemX-mPosX);maxRight=(dfx.getWindowDimensions().width-elemWidth);if(options){if(options.maxRight){maxRight=options.maxRight;}}
dfx.addEvent(document,'mousemove.drag',function(e){drag(e);});dfx.addEvent(document,'mouseup.drag',function(){dfx.removeEvent(document,'mousemove.drag');dfx.removeEvent(document,'mouseup.drag');if(dfx.isFn(endFn)===true){endFn.call(this,maxRight);}});});};dfx.inherits=function(child,parent,noWidgetType)
{if(parent==='Widget'){parent='AbstractWidget';}
var parentObj=null;if(noWidgetType){parentObj=window[parent];}else{parentObj=window[parent+'WidgetType'];}
if(parentObj){dfx.noInclusionInherits(child,parent,noWidgetType);}else{Widget.prototype.includeWidget(parent,function(){dfx.noInclusionInherits(child,parent,noWidgetType);});}};dfx.noInclusionInherits=function(child,parent,noWidgetType)
{if(parent instanceof String||typeof parent==='string'){if(noWidgetType){parent=window[parent];}else{parent=window[parent+'WidgetType'];}}
if(child instanceof String||typeof child==='string'){if(noWidgetType){child=window[child];}else{child=window[child+'WidgetType'];}}
var above=function(){};if(dfx.isset(parent)===true){for(value in parent.prototype){if(child.prototype[value]){above.prototype[value]=parent.prototype[value];continue;}
child.prototype[value]=parent.prototype[value];}}
if(child.prototype){above.prototype.constructor=parent;child.prototype['super']=new above();}};Array.prototype.inArray=function(value)
{if(typeof(value)==='string'&&this.length>1){var flatArray=this.toString();var pattern=new RegExp('('+value+',|,'+value+')','g');return pattern.test(flatArray);}
var len=this.length;for(var i=0;i<len;i++){if(this[i]===value){return true;}}
return false;};Array.prototype.find=function(item)
{var length=this.length;for(var i=0;i<length;i++){if(this[i]===item){return i;}}
return-1;};Array.prototype.mergeCollection=function(collection)
{if(!collection){return;}
var len=collection.length;for(var i=0;i<len;i++){this.push(collection[i]);}};Array.prototype.unique=function()
{var a=[];var l=this.length;for(var i=0;i<l;i++){if(a.find(this[i])<0){a.push(this[i]);}}
return a;};function shiftArrayElements(array,index)
{var len=array.length;for(var i=parseInt(index);i<(len-1);i++){var n=i+1;array[i]=array[n];}
array.pop();return array;};dfx.foreach=function(value,cb)
{if(value instanceof Array){var len=value.length;for(var i=0;i<len;i++){var res=cb.call(this,i);if(res===false){break;}}}else{for(var id in value){if(value.hasOwnProperty(id)===true){var res=cb.call(this,id);if(res===false){break;}}}}};dfx.isEmpty=function(value)
{if(value){if(value instanceof Array){if(value.length>0){return false;}}else{for(var id in value){if(value.hasOwnProperty(id)===true){return false;}}}}
return true;};if(!this.JSON){JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z';};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(typeof value.length==='number'&&!value.propertyIsEnumerable('length')){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}})();dfx.jsonDecode=function(variable,filter)
{return JSON.parse(variable,filter);};dfx.jsonEncode=function(variable)
{return JSON.stringify(variable);};dfx.jsonDecode=function(variable,filter)
{return JSON.parse(variable,filter);};dfx.jsonEncode=function(variable)
{return JSON.stringify(variable);};var Util={};Util.ObjectHash=function()
{this.objects=[];this.values=[];};Util.ObjectHash.prototype.getObjectIndex=function(object)
{var oln=this.objects.length;for(var i=0;i<oln;i++){if(this.objects[i]===object){return i;}}
return-1;};Util.ObjectHash.prototype.put=function(object,value)
{var index=this.getObjectIndex(object);if(index!==-1){this.values[index]=value;}else{this.objects.push(object);this.values.push(value);}};Util.ObjectHash.prototype.get=function(object)
{var index=this.getObjectIndex(object);if(index!==-1){return this.values[index];}
return null;};Util.ObjectHash.prototype.containsKey=function(object)
{return(this.getObjectIndex(object)!=-1);};Util.ObjectHash.prototype.replace=function(object,value)
{var index=this.getObjectIndex(object);if(index!==-1){this.values[index]=value;}};Util.Xml=function(xml)
{this.xml=xml;};Util.Xml.prototype.parse=function()
{var xml=this.xml;var doc=null;if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(xml);}else{var parser=new DOMParser();doc=parser.parseFromString(xml,"text/xml");}
return doc;};Util.Xml.getElementById=function(id,parent)
{if(parent){if(parent.getElementById){return parent.getElementById(id);}
var pcln=parent.childNodes.length;for(var i=0;i<pcln;i++){if(parent.childNodes[i].getAttribute('id')===id){return parent.childNodes[i];}else{if(parent.childNodes[i].childNodes.length>0){var el=this.getElementById(id,parent.childNodes[i]);if(el&&el.getAttribute('id')===id){return el;}}}}}
return null;};dfx.ltrim=function(value)
{var re=/\s*((\S+\s*)*)/;return value.replace(re,"$1");};dfx.rtrim=function(value)
{var re=/((\s*\S+)*)\s*/;return value.replace(re,"$1");};dfx.trim=function(value)
{return dfx.ltrim(dfx.rtrim(value));};dfx.isBlank=function(value)
{if(!value||/^\s*$/.test(value)){return true;}
return false;};dfx.ellipsize=function(value,length)
{if(typeof value!=='string'||typeof length!=='number'){return'';}
if(length<0){return'';}
if(value.length<length){return value;}
value=value.substr(0,length);value=value.replace(/\s$/,'');var end=value.substr((length-3),3);var endNoDots=end.replace(/\.$/,'');var numDots=(end.length-endNoDots.length);value=value+dfx.strRepeat('.',(3-numDots));return value;};dfx.ellipsizeDom=function(elem,length)
{var browserInfo=dfx.browser();if(browserInfo.type==='msie'){dfx.setStyle(elem,'text-overflow','ellipsis');;dfx.setStyle(elem,'white-space','nowrap');dfx.setStyle(elem,'width',length+'px');}else{dfx.setStyle(elem,'visibility','hidden');var currWidth=dfx.getStyle(elem,'width');currWidth=parseInt(currWidth.substr(0,(currWidth.length-2)),10);if(currWidth>length){var oriName=dfx.getHtml(elem);var tmpName=oriName;while(currWidth>length){tmpName=tmpName.substring(0,(tmpName.length-1));dfx.setHtml(elem,tmpName);currWidth=dfx.getStyle(elem,'width');currWidth=parseInt(currWidth.substr(0,(currWidth.length-2)),10);}
var ellipsisLen=tmpName.length+1;oriName=dfx.ellipsize(oriName,(ellipsisLen-4));dfx.setHtml(elem,oriName);}
dfx.setStyle(elem,'visibility','visible');}};dfx.strRepeat=function(input,multiplier)
{var result='';for(var i=0;i<multiplier;i++){result+=input;}
return result;};dfx.ucFirst=function(str)
{return str.substr(0,1).toUpperCase()+str.substr(1,str.length);};dfx.ucWords=function(str)
{return str.toLowerCase().replace(/\w+/g,function(s){return s.charAt(0).toUpperCase()+s.substr(1);});};dfx.isFn=function(f)
{if(typeof f==='function'){return true;}
return false;};dfx.isObj=function(v)
{if(v!==null&&typeof v==='object'){return true;}
return false;};dfx.isset=function(v)
{if(typeof v!=='undefined'&&v!==null){return true;}
return false;};dfx.isArray=function(v)
{return jQuery.isArray(v);};dfx.isNumeric=function(str)
{var result=str.match(/^\d+$/);if(result!==null){return true;}
return false;};dfx.clone=function(value,shallow)
{if(typeof value!=='object'){return value;}
if(value===null){var valueClone=null;}else{var valueClone=new value.constructor();for(var property in value){if(shallow){valueClone[property]=value[property];}
if(value[property]===null){valueClone[property]=null;}else if(typeof value[property]==='object'){valueClone[property]=dfx.clone(value[property],shallow);}else{valueClone[property]=value[property];}}}
return valueClone;};dfx.objDiff=function(obj1,obj2)
{var count1=0;var count2=0;for(var p in obj1){count1++;}
for(var q in obj2){count2++;}
if(count1!==count2){return true;}
for(var p in obj1){if(obj2.hasOwnProperty(p)===false){return true;}
if(typeof obj1[p]==='object'){if(dfx.objDiff(obj1[p],obj2[p])){return true;}}else{if(obj1[p]!==obj2[p]){return true;}}}
return false;};dfx.baseUrl=function(fullUrl)
{var qStartIdx=fullUrl.search(/\?/);if(qStartIdx===-1){return fullUrl;}else{var baseUrl=fullUrl.substr(0,qStartIdx);return baseUrl;}}
dfx.queryString=function(url)
{var result={};var qStartIdx=url.search(/\?/);if(qStartIdx===-1){return result;}else{var queryStr=url.substr(qStartIdx+1,(url.length-qStartIdx));if(queryStr.length>0){var pairs=queryStr.split('&');var len=pairs.length;var pair=[];for(var i=0;i<len;i++){if(pairs[i].search('=')!==-1){pair=pairs[i].split('=');result[pair[0]]=pair[1];}}
return result;}else{return result;}}};dfx.addToQueryString=function(url,addQueries)
{var mergedUrl='';var baseUrl=dfx.baseUrl(url);var queryStringArray=dfx.queryString(url);mergedQry=dfx.objectMerge(queryStringArray,addQueries);var queryStr='?';dfx.foreach(mergedQry,function(key){queryStr=queryStr+key+'='+mergedQry[key]+'&';});if(queryStr.length>1){mergedUrl=baseUrl+queryStr.substr(0,(queryStr.length-1));}else{mergedUrl=url;}
return mergedUrl;};dfx.getFileInputName=function(fileFieldValue)
{var filename='';if(fileFieldValue.indexOf('\\')>-1){filename=fileFieldValue.substring(fileFieldValue.lastIndexOf('\\')+1,fileFieldValue.length);}
if(fileFieldValue.indexOf('/')>-1){filename=fileFieldValue.substring(fileFieldValue.lastIndexOf('/')+1,fileFieldValue.length);}
if(filename===''){return fileFieldValue;}
return filename;};dfx.getUniqueId=function()
{var timestamp=(new Date()).getTime();var random=Math.ceil(Math.random()*1000000);var id=timestamp+''+random;return id.substr(5,18).replace(/,/,'');};dfx.inArray=function(needle,haystack)
{var hln=haystack.length;for(var i=0;i<hln;i++){if(needle===haystack[i]){return true;}}
return false;};dfx.arrayDiff=function(array1,array2,firstOnly)
{var al=array1.length;var res=[];for(var i=0;i<al;i++){if(dfx.inArray(array1[i],array2)===false){res.push(array1[i]);}}
if(firstOnly!==true){al=array2.length;for(var i=0;i<al;i++){if(dfx.inArray(array2[i],array1)===false){res.push(array2[i]);}}}
return res;};dfx.objectMerge=function(ob1,ob2)
{dfx.foreach(ob2,function(key){ob1[key]=ob2[key];return true;});return ob1;};dfx.arrayMerge=function(array1,array2)
{var c=array2.length;for(var i=0;i<c;i++){array1.push(array2[i]);}
return array1;};dfx.removeArrayIndex=function(array,index)
{if(!array||dfx.isset(array[index])===false){return null;}
return array.splice(index,1);};dfx.convertSpaces=function(elem,options)
{options=options||{};if(dfx.isset(options.newLines)===false){options.newLines=true;}
if(dfx.isset(options.tabs)===false){options.tabs=true;}
var count=elem.childNodes.length;var c=String.fromCharCode(160);var content=null;for(var i=0;i<count;i++){var child=elem.childNodes[i];content=null;if(child.nodeType===dfx.TEXT_NODE){content=child.data;}
if(content!==null){var rep='';content=content.replace(/\r/g,rep);if(options.newLines===false){rep='';}else{rep='<br />';}
content=content.replace(/\n/g,rep);if(options.tabs===false){rep='';}else{rep=c+c+c+c;}
content=content.replace(/\t/g,rep);if(child.data){child.data=content;}}
if(child.childNodes&&child.childNodes.length>0){dfx.convertSpaces(child,options);}}};dfx.stripTags=function(content,allowedTags)
{var match;var re=new RegExp(/<\/?(\w+)((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);var resCont=content;while((match=re.exec(content))!=null){if(dfx.inArray(match[1],allowedTags)!==true){resCont=resCont.replace(match[0],'');}}
return resCont;};dfx.getImage=function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;};dfx.resizeImage=function(img,size,sizesOnly)
{var h=dfx.attr(img,'height');var w=dfx.attr(img,'width');var max=null;if((size instanceof Object)===true){max=dfx.clone(size);}else{max={height:size,width:size};}
if(h===w){var min=Math.min(max.width,max.height);h=min;w=min;}else{if(w>=max.width||h>=max.height){if(w>=max.width){h=(h*(max.width/w));w=max.width;}
if(h>=max.height){w=(w*(max.height/h));h=max.height;}}else{if(w>h){h=(h*(max.width/w));w=max.width;}else if(h>w){w=(w*(max.height/h));h=max.height;}}}
h=Math.round(h);w=Math.round(w);if(sizesOnly===true){var result={height:h,width:w};return result;}else{dfx.attr(img,'height',h);dfx.attr(img,'width',w);return img;}};dfx.strRepeat=function(str,multiplier)
{var rstr='';for(var i=0;i<multiplier;i++){rstr+=str;}
return rstr;};dfx.browser=function()
{var result={};result.version=jQuery.browser.version;if(jQuery.browser.mozilla===true){result.type='mozilla';}else if(jQuery.browser.msie===true){result.type='msie';}else if(jQuery.browser.opera===true){result.type='opera';}else if(jQuery.browser.safari===true){result.type='safari';}
return result;};dfx.getElemPositionStyles=function(elem,orientation)
{var h=dfx.getElementHeight(elem);var w=dfx.getElementWidth(elem);var res={};orientation=orientation||Widget.CENTER;switch(orientation){case Widget.CENTER:res={'margin-top':((h/2)*(-1))+'px','top':'50%','margin-left':((w/2)*(-1))+'px','left':'50%'};break;case Widget.TOP:res={'margin-top':(h*(-1))+'px','top':'0px','margin-left':((w/2)*(-1))+'px','left':'50%'};break;case Widget.BOTTOM:res={'margin-top':(h*(-1))+'px','top':'100%','margin-left':((w/2)*(-1))+'px','left':'50%'};break;case Widget.LEFT:res={'margin-top':((h/2)*(-1))+'px','top':'50%','left':'0px'};break;case Widget.RIGHT:res={'margin-top':((h/2)*(-1))+'px','top':'50%','margin-left':(w*(-1))+'px','left':'100%'};break;default:break;}
return res;};dfx.htmlspecialchars=function(str)
{str=str.replace(/&/g,'&amp;');str=str.replace(/"/g,'&quot;');str=str.replace(/'/g,'&#039;');str=str.replace(/</g,'&lt;');str=str.replace(/>/g,'&gt;');return str;};dfx.readableSize=function(size,unit)
{var units=['B','kB','MB','GB'];var maxUnit=(units.length-1);if(unit){var index=units.find(unit);if(index<0){unit=null;}}
if(unit<0){unit=2;}
var factor=0;while(unit!==factor&&size>=1000&&factor<maxUnit){size=(size/1000);factor++;}
var readable=size.toFixed(2)+units[factor];return readable;};dfx.displayThumbViewer=function(thumb,evt,targetWidget)
{var intervalid=null;var thumbViewer=dfx.getId('SplashScreenThumbViewer');if(thumbViewer===null){thumbViewer=dfx.createThumbViewer(thumb,evt);dfx.hideElement(thumbViewer);document.body.appendChild(thumbViewer);}
var oriImage=dfx.getMouseEventTarget(evt);dfx.getId('SplashScreenThumbViewer-img').setAttribute('src',oriImage.getAttribute('src'));dfx.setThumbViewerText(thumb,evt,function(){var thumbWidth=54;var thumbHeight=79;var viewerWidth=236;var viewerHeight=193;var target=dfx.getMouseEventTarget(evt);var coords=dfx.getElementCoords(target);var left=(coords.x-(viewerWidth-thumbHeight));var top=(coords.y-(viewerHeight-thumbWidth));var scrollY=dfx.getScrollCoords().y;if(scrollY>0){top-=scrollY;}
dfx.setStyle(thumbViewer,'left',left);dfx.setStyle(thumbViewer,'top',top);dfx.showElement(thumbViewer);targetWidget.thumbDisplayed=true;var setMousePos=function(e){var scrY=dfx.getScrollCoords().y;var pageX=e.pageX;var pageY=(e.pageY-scrY);if((pageX<left||pageX>(left+viewerWidth))||(pageY<top||pageY>(top+viewerHeight))){dfx.hideElement(dfx.getId('SplashScreenThumbViewer'));clearInterval(intervalid);dfx.stopMousePositionTrack(setMousePos);}};dfx.startMousePositionTrack(setMousePos);});};dfx.createThumbViewer=function(thumb,evt)
{var thumbWrapper=document.createElement('div');thumbWrapper.id='SplashScreenThumbViewer';thumbWrapper.className='SplashScreenThumbViewerWrapper';var imageHolder=document.createElement('div');imageHolder.className='SplashScreenThumbViewerImageHolder';var description=document.createElement('div');description.id='SplashScreenThumbViewer-desc';description.className='SplashScreenThumbViewerDescription';var oriImage=dfx.getMouseEventTarget(evt);var image=document.createElement('img');image.id='SplashScreenThumbViewer-img';image.src=oriImage.getAttribute('src');imageHolder.appendChild(image);thumbWrapper.appendChild(imageHolder);thumbWrapper.appendChild(description);return thumbWrapper;};dfx.setThumbViewerText=function(thumb,evt,callback)
{var oriImage=dfx.getMouseEventTarget(evt);var assetid=oriImage.getAttribute('assetid');var version=oriImage.getAttribute('version');if(version==='0'){AssetManager.getAsset(assetid,function(asset){dfx.getId('SplashScreenThumbViewer-desc').innerHTML=asset.name;callback();},true,{attributes:['name'],type:false,typeIcon:false,linking:[],urls:false});}else{dfx.getId('SplashScreenThumbViewer-desc').innerHTML='Version '+version;callback();}};dfx.preloadStylesheetImages=function(prefix,defaultBaseUrl)
{prefix=prefix||[];defaultBaseUrl=defaultBaseUrl||'/';var styleSheets=document.styleSheets;var sln=styleSheets.length;for(var i=0;i<sln;i++){var baseUrl='';var contents='';if(styleSheets[i].href){baseUrl=styleSheets[i].href.substring(0,styleSheets[i].href.lastIndexOf('/'));}
if(baseUrl!==''){baseUrl+='/';}else{baseUrl=defaultBaseUrl;}
if(styleSheets[i].cssRules){var sheetRules=styleSheets[i].cssRules;var rln=sheetRules.length;for(var j=0;j<rln;j++){contents+=sheetRules[j].cssText;}}else{contents+=styleSheets[i].cssText;}
var re='('+prefix.join('|')+')[^\(]+\.(gif|jpg|png)';var regExp=new RegExp(re,'g');var imgUrls=contents.match(regExp);if(imgUrls!==null&&imgUrls.length>0){dfx.foreach(imgUrls,function(key){var img=new Image();img.src=baseUrl+imgUrls[key];});}}};dfx.getFileExtension=function(filename)
{var parts=filename.split('.');if(parts.length===1){return'';}
var ext=parts[(parts.length-1)].toLowerCase();return ext;};dfx.entitiesArray={160:'&nbsp;',161:'&iexcl;',162:'&cent;',163:'&pound;',164:'&curren;',165:'&yen;',166:'&brvbar;',167:'&sect;',168:'&uml;',169:'&copy;',170:'&ordf;',171:'&laquo;',172:'&not;',173:'&shy;',174:'&reg;',175:'&macr;',176:'&deg;',177:'&plusmn;',178:'&sup2;',179:'&sup3;',180:'&acute;',181:'&micro;',182:'&para;',183:'&middot;',184:'&cedil;',185:'&sup1;',186:'&ordm;',187:'&raquo;',188:'&frac14;',189:'&frac12;',190:'&frac34;',191:'&iquest;',192:'&Agrave;',193:'&Aacute;',194:'&Acirc;',195:'&Atilde;',196:'&Auml;',197:'&Aring;',198:'&AElig;',199:'&Ccedil;',200:'&Egrave;',201:'&Eacute;',202:'&Ecirc;',203:'&Euml;',204:'&Igrave;',205:'&Iacute;',206:'&Icirc;',207:'&Iuml;',208:'&ETH;',209:'&Ntilde;',210:'&Ograve;',211:'&Oacute;',212:'&Ocirc;',213:'&Otilde;',214:'&Ouml;',215:'&times;',216:'&Oslash;',217:'&Ugrave;',218:'&Uacute;',219:'&Ucirc;',220:'&Uuml;',221:'&Yacute;',222:'&THORN;',223:'&szlig;',224:'&agrave;',225:'&aacute;',226:'&acirc;',227:'&atilde;',228:'&auml;',229:'&aring;',230:'&aelig;',231:'&ccedil;',232:'&egrave;',233:'&eacute;',234:'&ecirc;',235:'&euml;',236:'&igrave;',237:'&iacute;',238:'&icirc;',239:'&iuml;',240:'&eth;',241:'&ntilde;',242:'&ograve;',243:'&oacute;',244:'&ocirc;',245:'&otilde;',246:'&ouml;',247:'&divide;',248:'&oslash;',249:'&ugrave;',250:'&uacute;',251:'&ucirc;',252:'&uuml;',253:'&yacute;',254:'&thorn;',255:'&yuml;',402:'&fnof;',913:'&Alpha;',914:'&Beta;',915:'&Gamma;',916:'&Delta;',917:'&Epsilon;',918:'&Zeta;',919:'&Eta;',920:'&Theta;',921:'&Iota;',922:'&Kappa;',923:'&Lambda;',924:'&Mu;',925:'&Nu;',926:'&Xi;',927:'&Omicron;',928:'&Pi;',929:'&Rho;',931:'&Sigma;',932:'&Tau;',933:'&Upsilon;',934:'&Phi;',935:'&Chi;',936:'&Psi;',937:'&Omega;',945:'&alpha;',946:'&beta;',947:'&gamma;',948:'&delta;',949:'&epsilon;',950:'&zeta;',951:'&eta;',952:'&theta;',953:'&iota;',954:'&kappa;',955:'&lambda;',956:'&mu;',957:'&nu;',958:'&xi;',959:'&omicron;',960:'&pi;',961:'&rho;',962:'&sigmaf;',963:'&sigma;',964:'&tau;',965:'&upsilon;',966:'&phi;',967:'&chi;',968:'&psi;',969:'&omega;',977:'&thetasym;',978:'&upsih;',982:'&piv;',8226:'&bull;',8230:'&hellip;',8242:'&prime;',8243:'&Prime;',8254:'&oline;',8260:'&frasl;',8472:'&weierp;',8465:'&image;',8476:'&real;',8482:'&trade;',8501:'&alefsym;',8592:'&larr;',8593:'&uarr;',8594:'&rarr;',8595:'&darr;',8596:'&harr;',8629:'&crarr;',8656:'&lArr;',8657:'&uArr;',8658:'&rArr;',8659:'&dArr;',8660:'&hArr;',8704:'&forall;',8706:'&part;',8707:'&exist;',8709:'&empty;',8711:'&nabla;',8712:'&isin;',8713:'&notin;',8715:'&ni;',8719:'&prod;',8721:'&sum;',8722:'&minus;',8727:'&lowast;',8730:'&radic;',8733:'&prop;',8734:'&infin;',8736:'&ang;',8743:'&and;',8744:'&or;',8745:'&cap;',8746:'&cup;',8747:'&int;',8756:'&there4;',8764:'&sim;',8773:'&cong;',8776:'&asymp;',8800:'&ne;',8801:'&equiv;',8804:'&le;',8805:'&ge;',8834:'&sub;',8835:'&sup;',8836:'&nsub;',8838:'&sube;',8839:'&supe;',8853:'&oplus;',8855:'&otimes;',8869:'&perp;',8901:'&sdot;',8968:'&lceil;',8969:'&rceil;',8970:'&lfloor;',8971:'&rfloor;',9001:'&lang;',9002:'&rang;',9674:'&loz;',9824:'&spades;',9827:'&clubs;',9829:'&hearts;',9830:'&diams;'};dfx.fixHtml=function(html)
{var newHtml='';var ln=html.length;for(i=0;i<ln;i++){code=html.charCodeAt(i);if(code>127){entity=dfx.entitiesArray[code];if(entity){newHtml+=entity;}else{newHtml+='&#'+code+';';}}else{newHtml+=html.charAt(i);}}
return newHtml;};if(!window.console){window.console={};window.console.log=function(){};window.console.info=function(){};}
var swfobject=function(){var UNDEF="undefined",OBJECT="object",SHOCKWAVE_FLASH="Shockwave Flash",SHOCKWAVE_FLASH_AX="ShockwaveFlash.ShockwaveFlash",FLASH_MIME_TYPE="application/x-shockwave-flash",EXPRESS_INSTALL_ID="SWFObjectExprInst",win=window,doc=document,nav=navigator,domLoadFnArr=[],regObjArr=[],objIdArr=[],listenersArr=[],script,timer=null,storedAltContent=null,storedAltContentId=null,isDomLoaded=false,isExpressInstallActive=false;var ua=function(){var w3cdom=typeof doc.getElementById!=UNDEF&&typeof doc.getElementsByTagName!=UNDEF&&typeof doc.createElement!=UNDEF,playerVersion=[0,0,0],d=null;if(typeof nav.plugins!=UNDEF&&typeof nav.plugins[SHOCKWAVE_FLASH]==OBJECT){d=nav.plugins[SHOCKWAVE_FLASH].description;if(d&&!(typeof nav.mimeTypes!=UNDEF&&nav.mimeTypes[FLASH_MIME_TYPE]&&!nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)){d=d.replace(/^.*\s+(\S+\s+\S+$)/,"$1");playerVersion[0]=parseInt(d.replace(/^(.*)\..*$/,"$1"),10);playerVersion[1]=parseInt(d.replace(/^.*\.(.*)\s.*$/,"$1"),10);playerVersion[2]=/r/.test(d)?parseInt(d.replace(/^.*r(.*)$/,"$1"),10):0;}}
else if(typeof win.ActiveXObject!=UNDEF){var a=null,fp6Crash=false;try{a=new ActiveXObject(SHOCKWAVE_FLASH_AX+".7");}
catch(e){try{a=new ActiveXObject(SHOCKWAVE_FLASH_AX+".6");playerVersion=[6,0,21];a.AllowScriptAccess="always";}
catch(e){if(playerVersion[0]==6){fp6Crash=true;}}
if(!fp6Crash){try{a=new ActiveXObject(SHOCKWAVE_FLASH_AX);}
catch(e){}}}
if(!fp6Crash&&a){try{d=a.GetVariable("$version");if(d){d=d.split(" ")[1].split(",");playerVersion=[parseInt(d[0],10),parseInt(d[1],10),parseInt(d[2],10)];}}
catch(e){}}}
var u=nav.userAgent.toLowerCase(),p=nav.platform.toLowerCase(),webkit=/webkit/.test(u)?parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,ie=false,windows=p?/win/.test(p):/win/.test(u),mac=p?/mac/.test(p):/mac/.test(u);return{w3cdom:w3cdom,pv:playerVersion,webkit:webkit,ie:ie,win:windows,mac:mac};}();var onDomLoad=function(){if(!ua.w3cdom){return;}
addDomLoadEvent(main);if(ua.ie&&ua.win){try{doc.write("<scr"+"ipt id=__ie_ondomload defer=true src=//:></scr"+"ipt>");script=getElementById("__ie_ondomload");if(script){addListener(script,"onreadystatechange",checkReadyState);}}
catch(e){}}
if(ua.webkit&&typeof doc.readyState!=UNDEF){timer=setInterval(function(){if(/loaded|complete/.test(doc.readyState)){callDomLoadFunctions();}},10);}
if(typeof doc.addEventListener!=UNDEF){doc.addEventListener("DOMContentLoaded",callDomLoadFunctions,null);}
addLoadEvent(callDomLoadFunctions);}();function checkReadyState(){if(script.readyState=="complete"){script.parentNode.removeChild(script);callDomLoadFunctions();}}
function callDomLoadFunctions(){if(isDomLoaded){return;}
if(ua.ie&&ua.win){var s=createElement("span");try{var t=doc.getElementsByTagName("body")[0].appendChild(s);t.parentNode.removeChild(t);}
catch(e){return;}}
isDomLoaded=true;if(timer){clearInterval(timer);timer=null;}
var dl=domLoadFnArr.length;for(var i=0;i<dl;i++){domLoadFnArr[i]();}}
function addDomLoadEvent(fn){if(isDomLoaded){fn();}
else{domLoadFnArr[domLoadFnArr.length]=fn;}}
function addLoadEvent(fn){if(typeof win.addEventListener!=UNDEF){win.addEventListener("load",fn,false);}
else if(typeof doc.addEventListener!=UNDEF){doc.addEventListener("load",fn,false);}
else if(typeof win.attachEvent!=UNDEF){addListener(win,"onload",fn);}
else if(typeof win.onload=="function"){var fnOld=win.onload;win.onload=function(){fnOld();fn();};}
else{win.onload=fn;}}
function main(){var rl=regObjArr.length;for(var i=0;i<rl;i++){var id=regObjArr[i].id;if(ua.pv[0]>0){var obj=getElementById(id);if(obj){regObjArr[i].width=obj.getAttribute("width")?obj.getAttribute("width"):"0";regObjArr[i].height=obj.getAttribute("height")?obj.getAttribute("height"):"0";if(hasPlayerVersion(regObjArr[i].swfVersion)){if(ua.webkit&&ua.webkit<312){fixParams(obj);}
setVisibility(id,true);}
else if(regObjArr[i].expressInstall&&!isExpressInstallActive&&hasPlayerVersion("6.0.65")&&(ua.win||ua.mac)){showExpressInstall(regObjArr[i]);}
else{displayAltContent(obj);}}}
else{setVisibility(id,true);}}}
function fixParams(obj){var nestedObj=obj.getElementsByTagName(OBJECT)[0];if(nestedObj){var e=createElement("embed"),a=nestedObj.attributes;if(a){var al=a.length;for(var i=0;i<al;i++){if(a[i].nodeName=="DATA"){e.setAttribute("src",a[i].nodeValue);}
else{e.setAttribute(a[i].nodeName,a[i].nodeValue);}}}
var c=nestedObj.childNodes;if(c){var cl=c.length;for(var j=0;j<cl;j++){if(c[j].nodeType==1&&c[j].nodeName=="PARAM"){e.setAttribute(c[j].getAttribute("name"),c[j].getAttribute("value"));}}}
obj.parentNode.replaceChild(e,obj);}}
function showExpressInstall(regObj){isExpressInstallActive=true;var obj=getElementById(regObj.id);if(obj){if(regObj.altContentId){var ac=getElementById(regObj.altContentId);if(ac){storedAltContent=ac;storedAltContentId=regObj.altContentId;}}
else{storedAltContent=abstractAltContent(obj);}
if(!(/%$/.test(regObj.width))&&parseInt(regObj.width,10)<310){regObj.width="310";}
if(!(/%$/.test(regObj.height))&&parseInt(regObj.height,10)<137){regObj.height="137";}
doc.title=doc.title.slice(0,47)+" - Flash Player Installation";var pt=ua.ie&&ua.win?"ActiveX":"PlugIn",dt=doc.title,fv="MMredirectURL="+win.location+"&MMplayerType="+pt+"&MMdoctitle="+dt,replaceId=regObj.id;if(ua.ie&&ua.win&&obj.readyState!=4){var newObj=createElement("div");replaceId+="SWFObjectNew";newObj.setAttribute("id",replaceId);obj.parentNode.insertBefore(newObj,obj);obj.style.display="none";var fn=function(){obj.parentNode.removeChild(obj);};addListener(win,"onload",fn);}
createSWF({data:regObj.expressInstall,id:EXPRESS_INSTALL_ID,width:regObj.width,height:regObj.height},{flashvars:fv},replaceId);}}
function displayAltContent(obj){if(ua.ie&&ua.win&&obj.readyState!=4){var el=createElement("div");obj.parentNode.insertBefore(el,obj);el.parentNode.replaceChild(abstractAltContent(obj),el);obj.style.display="none";var fn=function(){obj.parentNode.removeChild(obj);};addListener(win,"onload",fn);}
else{obj.parentNode.replaceChild(abstractAltContent(obj),obj);}}
function abstractAltContent(obj){var ac=createElement("div");if(ua.win&&ua.ie){ac.innerHTML=obj.innerHTML;}
else{var nestedObj=obj.getElementsByTagName(OBJECT)[0];if(nestedObj){var c=nestedObj.childNodes;if(c){var cl=c.length;for(var i=0;i<cl;i++){if(!(c[i].nodeType==1&&c[i].nodeName=="PARAM")&&!(c[i].nodeType==8)){ac.appendChild(c[i].cloneNode(true));}}}}}
return ac;}
function createSWF(attObj,parObj,id){var r,el=getElementById(id);if(el){if(typeof attObj.id==UNDEF){attObj.id=id;}
if(ua.ie&&ua.win){var att="";for(var i in attObj){if(attObj[i]!=Object.prototype[i]){if(i.toLowerCase()=="data"){parObj.movie=attObj[i];}
else if(i.toLowerCase()=="styleclass"){att+=' class="'+attObj[i]+'"';}
else if(i.toLowerCase()!="classid"){att+=' '+i+'="'+attObj[i]+'"';}}}
var par="";for(var j in parObj){if(parObj[j]!=Object.prototype[j]){par+='<param name="'+j+'" value="'+parObj[j]+'" />';}}
el.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+att+'>'+par+'</object>';objIdArr[objIdArr.length]=attObj.id;r=getElementById(attObj.id);}
else if(ua.webkit&&ua.webkit<312){var e=createElement("embed");e.setAttribute("type",FLASH_MIME_TYPE);for(var k in attObj){if(attObj[k]!=Object.prototype[k]){if(k.toLowerCase()=="data"){e.setAttribute("src",attObj[k]);}
else if(k.toLowerCase()=="styleclass"){e.setAttribute("class",attObj[k]);}
else if(k.toLowerCase()!="classid"){e.setAttribute(k,attObj[k]);}}}
for(var l in parObj){if(parObj[l]!=Object.prototype[l]){if(l.toLowerCase()!="movie"){e.setAttribute(l,parObj[l]);}}}
el.parentNode.replaceChild(e,el);r=e;}
else{var o=createElement(OBJECT);o.setAttribute("type",FLASH_MIME_TYPE);for(var m in attObj){if(attObj[m]!=Object.prototype[m]){if(m.toLowerCase()=="styleclass"){o.setAttribute("class",attObj[m]);}
else if(m.toLowerCase()!="classid"){o.setAttribute(m,attObj[m]);}}}
for(var n in parObj){if(parObj[n]!=Object.prototype[n]&&n.toLowerCase()!="movie"){createObjParam(o,n,parObj[n]);}}
el.parentNode.replaceChild(o,el);r=o;}}
return r;}
function createObjParam(el,pName,pValue){var p=createElement("param");p.setAttribute("name",pName);p.setAttribute("value",pValue);el.appendChild(p);}
function removeSWF(id){var obj=getElementById(id);if(obj&&(obj.nodeName=="OBJECT"||obj.nodeName=="EMBED")){if(ua.ie&&ua.win){if(obj.readyState==4){removeObjectInIE(id);}
else{win.attachEvent("onload",function(){removeObjectInIE(id);});}}
else{obj.parentNode.removeChild(obj);}}}
function removeObjectInIE(id){var obj=getElementById(id);if(obj){for(var i in obj){if(typeof obj[i]=="function"){obj[i]=null;}}
obj.parentNode.removeChild(obj);}}
function getElementById(id){var el=null;try{el=doc.getElementById(id);}
catch(e){}
return el;}
function createElement(el){return doc.createElement(el);}
function addListener(target,eventType,fn){target.attachEvent(eventType,fn);listenersArr[listenersArr.length]=[target,eventType,fn];}
function hasPlayerVersion(rv){var pv=ua.pv,v=rv.split(".");v[0]=parseInt(v[0],10);v[1]=parseInt(v[1],10)||0;v[2]=parseInt(v[2],10)||0;return(pv[0]>v[0]||(pv[0]==v[0]&&pv[1]>v[1])||(pv[0]==v[0]&&pv[1]==v[1]&&pv[2]>=v[2]))?true:false;}
function createCSS(sel,decl){if(ua.ie&&ua.mac){return;}
var h=doc.getElementsByTagName("head")[0],s=createElement("style");s.setAttribute("type","text/css");s.setAttribute("media","screen");if(!(ua.ie&&ua.win)&&typeof doc.createTextNode!=UNDEF){s.appendChild(doc.createTextNode(sel+" {"+decl+"}"));}
h.appendChild(s);if(ua.ie&&ua.win&&typeof doc.styleSheets!=UNDEF&&doc.styleSheets.length>0){var ls=doc.styleSheets[doc.styleSheets.length-1];if(typeof ls.addRule==OBJECT){ls.addRule(sel,decl);}}}
function setVisibility(id,isVisible){var v=isVisible?"visible":"hidden";if(isDomLoaded&&getElementById(id)){getElementById(id).style.visibility=v;}
else{createCSS("#"+id,"visibility:"+v);}}
function urlEncodeIfNecessary(s){var regex=/[\\\"<>\.;]/;var hasBadChars=regex.exec(s)!=null;return hasBadChars?encodeURIComponent(s):s;}
var cleanup=function(){if(ua.ie&&ua.win){window.attachEvent("onunload",function(){var ll=listenersArr.length;for(var i=0;i<ll;i++){listenersArr[i][0].detachEvent(listenersArr[i][1],listenersArr[i][2]);}
var il=objIdArr.length;for(var j=0;j<il;j++){removeSWF(objIdArr[j]);}
for(var k in ua){ua[k]=null;}
ua=null;for(var l in swfobject){swfobject[l]=null;}
swfobject=null;});}}();return{registerObject:function(objectIdStr,swfVersionStr,xiSwfUrlStr){if(!ua.w3cdom||!objectIdStr||!swfVersionStr){return;}
var regObj={};regObj.id=objectIdStr;regObj.swfVersion=swfVersionStr;regObj.expressInstall=xiSwfUrlStr?xiSwfUrlStr:false;regObjArr[regObjArr.length]=regObj;setVisibility(objectIdStr,false);},getObjectById:function(objectIdStr){var r=null;if(ua.w3cdom){var o=getElementById(objectIdStr);if(o){var n=o.getElementsByTagName(OBJECT)[0];if(!n||(n&&typeof o.SetVariable!=UNDEF)){r=o;}
else if(typeof n.SetVariable!=UNDEF){r=n;}}}
return r;},embedSWF:function(swfUrlStr,replaceElemIdStr,widthStr,heightStr,swfVersionStr,xiSwfUrlStr,flashvarsObj,parObj,attObj,domLoaded){if(!ua.w3cdom||!swfUrlStr||!replaceElemIdStr||!widthStr||!heightStr||!swfVersionStr){return;}
widthStr+="";heightStr+="";if(hasPlayerVersion(swfVersionStr)){setVisibility(replaceElemIdStr,false);var att={};if(attObj&&typeof attObj===OBJECT){for(var i in attObj){if(attObj[i]!=Object.prototype[i]){att[i]=attObj[i];}}}
att.data=swfUrlStr;att.width=widthStr;att.height=heightStr;var par={};if(parObj&&typeof parObj===OBJECT){for(var j in parObj){if(parObj[j]!=Object.prototype[j]){par[j]=parObj[j];}}}
if(flashvarsObj&&typeof flashvarsObj===OBJECT){for(var k in flashvarsObj){if(flashvarsObj[k]!=Object.prototype[k]){if(typeof par.flashvars!=UNDEF){par.flashvars+="&"+k+"="+flashvarsObj[k];}
else{par.flashvars=k+"="+flashvarsObj[k];}}}}
addDomLoadEvent(function(){createSWF(att,par,replaceElemIdStr);if(att.id==replaceElemIdStr){setVisibility(replaceElemIdStr,true);}});if(domLoaded===true){callDomLoadFunctions();}}
else if(xiSwfUrlStr&&!isExpressInstallActive&&hasPlayerVersion("6.0.65")&&(ua.win||ua.mac)){isExpressInstallActive=true;setVisibility(replaceElemIdStr,false);addDomLoadEvent(function(){var regObj={};regObj.id=regObj.altContentId=replaceElemIdStr;regObj.width=widthStr;regObj.height=heightStr;regObj.expressInstall=xiSwfUrlStr;showExpressInstall(regObj);});}},getFlashPlayerVersion:function(){return{major:ua.pv[0],minor:ua.pv[1],release:ua.pv[2]};},hasFlashPlayerVersion:hasPlayerVersion,createSWF:function(attObj,parObj,replaceElemIdStr){if(ua.w3cdom){return createSWF(attObj,parObj,replaceElemIdStr);}
else{return undefined;}},removeSWF:function(objElemIdStr){if(ua.w3cdom){removeSWF(objElemIdStr);}},createCSS:function(sel,decl){if(ua.w3cdom){createCSS(sel,decl);}},addDomLoadEvent:addDomLoadEvent,addLoadEvent:addLoadEvent,getQueryParamValue:function(param){var q=doc.location.search||doc.location.hash;if(param==null){return urlEncodeIfNecessary(q);}
if(q){var pairs=q.substring(1).split("&");for(var i=0;i<pairs.length;i++){if(pairs[i].substring(0,pairs[i].indexOf("="))==param){return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=")+1)));}}}
return"";},expressInstallCallback:function(){if(isExpressInstallActive&&storedAltContent){var obj=getElementById(EXPRESS_INSTALL_ID);if(obj){obj.parentNode.replaceChild(storedAltContent,obj);if(storedAltContentId){setVisibility(storedAltContentId,true);if(ua.ie&&ua.win){storedAltContent.style.display="block";}}
storedAltContent=null;storedAltContentId=null;isExpressInstallActive=false;}}}};}();var WidgetStore=new function()
{var self=this;var objStore={};var activeWidgetId=null;var shortcutKeys=[];var activeWidgets={};var data={};var datacbs={};this.add=function(id,obj){if(dfx.isset(objStore[id])===true){delete objStore[id];}
objStore[id]=obj;};this.remove=function(id){if(dfx.isset(objStore[id])===true){delete objStore[id];}};this.get=function(id){return objStore[id];};this.exists=function(id){if(typeof objStore[id]==='undefined'){return false;}
return true;};this.fireClickedInside=function(child,e){var alerted=[];if(child.parentNode===null){return alerted;}
var chilLen=child.parentNode.childNodes.length;for(var i=0;i<chilLen;i++){var node=child.parentNode.childNodes.item(i);if(objStore[node.id]!==null){if(typeof objStore[node.id].clickedInside==='function'){alerted.push(node.id);objStore[node.id].clickedInside(e);}}}
return alerted.concat(this.fireClickedInside(child.parentNode));};this.getInnerWidgets=function(element){var innerWidgets=[];var chilLen=element.childNodes.length;for(var i=0;i<chilLen;i++){var node=element.childNodes.item(i);if(objStore[node.id]){innerWidgets.push(node.id);}
innerWidgets=innerWidgets.concat(this.getInnerWidgets(node));}
return innerWidgets;};this.disableOthers=function(child){disabledNodes=[];innerNodes=this.getInnerWidgets(child);innerNodes.push(child.id);for(var i in objStore){if(!innerNodes.inArray(i)){if(typeof objStore[i].disable==='function'){if(objStore[i].isEnabled()){objStore[i].disable();disabledNodes.push(i);}}}}
return disabledNodes;};this.activateWidgets=function(widgetids){var idsLen=widgetids.length;for(var i=0;i<idsLen;i++){this.activateWidget(widgetids[i]);}};this.activateWidget=function(widgetid){activeWidgets[widgetid]=true;};this.getActiveWidgets=function(){var widgets=[];for(var widget in activeWidgets){widgets.push(widget);}
return widgets;};this.disableWidgets=function(widgetids){var idsLen=widgetids.length;for(var i=0;i<idsLen;i++){this.disableWidget(widgetids[i]);}};this.disableWidget=function(widgetid){delete activeWidgets[widgetid];};this.fireClickedOutside=function(elems,e){for(i in objStore){if(!elems.inArray(i)){if(typeof objStore[i].clickedOutside==='function'){objStore[i].clickedOutside(e);}}}};this.fireSizeChanged=function(elem){var changedEl=elem;while(elem!==null){if(objStore[elem.id]!==null){if(typeof objStore[elem.id].sizeChanged==='function'){objStore[elem.id].sizeChanged(changedEl);}}
elem=elem.parentNode;}};this.fireParentSizeChanged=function(widgetid,elem,size){if(!elem&&elem.nodeType!==1){return;}
var childLen=elem.childNodes.length;for(var i=0;i<childLen;i++){var childid=elem.childNodes[i].id;if(dfx.isset(objStore[childid])===true){if(dfx.isFn(objStore[childid].parentSizeChanged)===true){objStore[childid].parentSizeChanged(widgetid,elem,size);}}
this.fireParentSizeChanged(widgetid,elem.childNodes[i],size);}};this.getShortcutList=function(){var str='';for(var property in shortcutKeys){if(shortcutKeys[property].name&&shortcutKeys[property].keys){str+=shortcutKeys[property].name+' ('+shortcutKeys[property].keys+')'+"\n";}}
return str;};this.registerShortcutKey=function(shortcut,widgetid,name,action,activeWidget){var keys=shortcut.toLowerCase().split('+');var keyObj={};keyObj.widgetid=widgetid;keyObj.name=name;keyObj.keys=shortcut.toUpperCase();keyObj.keysArray=keys;keyObj.activeWidget=activeWidget;shortcutKeys.push(keyObj);var otherKeys={'delete':46,'esc':27,'tab':9};dfx.addEvent(document,'keydown',function(e){if(activeWidget===true&&WidgetStore.get(widgetid)!==WidgetStore.getActiveWidget()){return true;}
var keysPressed=0;var len=keys.length;for(var i=0;i<len;i++){var key=keys[i];if(key==='ctrl'&&e.ctrlKey){keysPressed++;}else if(key==='shift'&&e.shiftKey){keysPressed++;}else if(key==='alt'&&e.altKey){keysPressed++;}else if(otherKeys[key]===e.keyCode){keysPressed++;}else if(key===String.fromCharCode(e.keyCode).toLowerCase()){keysPressed++;}}
if(keysPressed===len){action(e);dfx.preventDefault(e);return false;}});};this.setData=function(dataid,value){var oldVal=data[dataid];data[dataid]=value;if(dfx.isset(datacbs[dataid])===true){for(var id in datacbs[dataid]){if(datacbs[dataid].hasOwnProperty(id)===true){datacbs[dataid][id].call(this,value,oldVal);}}}};this.getData=function(dataid){return data[dataid];};this.addDataChangeListener=function(id,dataid,callback){if(dfx.isset(datacbs[dataid])===false){datacbs[dataid]={};}
datacbs[dataid][id]=callback;};this.removeDataChangeListener=function(id,dataid){if(!dataid||!id){return;}
if(dfx.isset(datacbs[dataid])===true&&dfx.isset(datacbs[dataid][id])){delete datacbs[dataid][id];}};this.getUnsavedChangesStr=function(){return"You have unsaved changes.\n\nPress OK to continue and lose these changes or Cancel to stay on the current screen.";};};var WidgetStore=new function()
{var self=this;var objStore={};var activeWidgetId=null;var shortcutKeys=[];var activeWidgets={};var data={};var datacbs={};this.add=function(id,obj){if(dfx.isset(objStore[id])===true){delete objStore[id];}
objStore[id]=obj;};this.remove=function(id){if(dfx.isset(objStore[id])===true){delete objStore[id];}};this.get=function(id){return objStore[id];};this.exists=function(id){if(typeof objStore[id]==='undefined'){return false;}
return true;};this.fireClickedInside=function(child,e){var alerted=[];if(child.parentNode===null){return alerted;}
var chilLen=child.parentNode.childNodes.length;for(var i=0;i<chilLen;i++){var node=child.parentNode.childNodes.item(i);if(objStore[node.id]!==null){if(typeof objStore[node.id].clickedInside==='function'){alerted.push(node.id);objStore[node.id].clickedInside(e);}}}
return alerted.concat(this.fireClickedInside(child.parentNode));};this.getInnerWidgets=function(element){var innerWidgets=[];var chilLen=element.childNodes.length;for(var i=0;i<chilLen;i++){var node=element.childNodes.item(i);if(objStore[node.id]){innerWidgets.push(node.id);}
innerWidgets=innerWidgets.concat(this.getInnerWidgets(node));}
return innerWidgets;};this.disableOthers=function(child){disabledNodes=[];innerNodes=this.getInnerWidgets(child);innerNodes.push(child.id);for(var i in objStore){if(!innerNodes.inArray(i)){if(typeof objStore[i].disable==='function'){if(objStore[i].isEnabled()){objStore[i].disable();disabledNodes.push(i);}}}}
return disabledNodes;};this.activateWidgets=function(widgetids){var idsLen=widgetids.length;for(var i=0;i<idsLen;i++){this.activateWidget(widgetids[i]);}};this.activateWidget=function(widgetid){activeWidgets[widgetid]=true;};this.getActiveWidgets=function(){var widgets=[];for(var widget in activeWidgets){widgets.push(widget);}
return widgets;};this.disableWidgets=function(widgetids){var idsLen=widgetids.length;for(var i=0;i<idsLen;i++){this.disableWidget(widgetids[i]);}};this.disableWidget=function(widgetid){delete activeWidgets[widgetid];};this.fireClickedOutside=function(elems,e){for(i in objStore){if(!elems.inArray(i)){if(typeof objStore[i].clickedOutside==='function'){objStore[i].clickedOutside(e);}}}};this.fireSizeChanged=function(elem){var changedEl=elem;while(elem!==null){if(objStore[elem.id]!==null){if(typeof objStore[elem.id].sizeChanged==='function'){objStore[elem.id].sizeChanged(changedEl);}}
elem=elem.parentNode;}};this.fireParentSizeChanged=function(widgetid,elem,size){if(!elem&&elem.nodeType!==1){return;}
var childLen=elem.childNodes.length;for(var i=0;i<childLen;i++){var childid=elem.childNodes[i].id;if(dfx.isset(objStore[childid])===true){if(dfx.isFn(objStore[childid].parentSizeChanged)===true){objStore[childid].parentSizeChanged(widgetid,elem,size);}}
this.fireParentSizeChanged(widgetid,elem.childNodes[i],size);}};this.getShortcutList=function(){var str='';for(var property in shortcutKeys){if(shortcutKeys[property].name&&shortcutKeys[property].keys){str+=shortcutKeys[property].name+' ('+shortcutKeys[property].keys+')'+"\n";}}
return str;};this.registerShortcutKey=function(shortcut,widgetid,name,action,activeWidget){var keys=shortcut.toLowerCase().split('+');var keyObj={};keyObj.widgetid=widgetid;keyObj.name=name;keyObj.keys=shortcut.toUpperCase();keyObj.keysArray=keys;keyObj.activeWidget=activeWidget;shortcutKeys.push(keyObj);var otherKeys={'delete':46,'esc':27,'tab':9};dfx.addEvent(document,'keydown',function(e){if(activeWidget===true&&WidgetStore.get(widgetid)!==WidgetStore.getActiveWidget()){return true;}
var keysPressed=0;var len=keys.length;for(var i=0;i<len;i++){var key=keys[i];if(key==='ctrl'&&e.ctrlKey){keysPressed++;}else if(key==='shift'&&e.shiftKey){keysPressed++;}else if(key==='alt'&&e.altKey){keysPressed++;}else if(otherKeys[key]===e.keyCode){keysPressed++;}else if(key===String.fromCharCode(e.keyCode).toLowerCase()){keysPressed++;}}
if(keysPressed===len){action(e);dfx.preventDefault(e);return false;}});};this.setData=function(dataid,value){var oldVal=data[dataid];data[dataid]=value;if(dfx.isset(datacbs[dataid])===true){for(var id in datacbs[dataid]){if(datacbs[dataid].hasOwnProperty(id)===true){datacbs[dataid][id].call(this,value,oldVal);}}}};this.getData=function(dataid){return data[dataid];};this.addDataChangeListener=function(id,dataid,callback){if(dfx.isset(datacbs[dataid])===false){datacbs[dataid]={};}
datacbs[dataid][id]=callback;};this.removeDataChangeListener=function(id,dataid){if(!dataid||!id){return;}
if(dfx.isset(datacbs[dataid])===true&&dfx.isset(datacbs[dataid][id])){delete datacbs[dataid][id];}};this.getUnsavedChangesStr=function(){return"You have unsaved changes.\n\nPress OK to continue and lose these changes or Cancel to stay on the current screen.";};};function smoothScroll()
{$.localScroll({offset:{top:-32}});}
function smoothScroll()
{$.localScroll({offset:{top:-32}});}
if(!mysource){var mysource={};}
mysource.MysourceImageGallery={};var mig=mysource.MysourceImageGallery;mig.imageLoaders={};mig.displayCount=0;mig.createMysourceImageGallery=function(ops)
{new mig.Gallery(ops);};mig.Gallery=function(ops)
{var self=this;this.galleryType='normal';if(ops.height==='small'||ops.height==='big'){this.galleryType='light';}
this.galleryid=ops.galleryid+'-'+mig.displayCount;this.galleryWidth=ops.width||580;mig.displayCount++;this.galleryTheme=ops.theme||'black';this.images=ops.images||{};this.imageids=[];dfx.foreach(this.images,function(iid){self.imageids.push(iid);return true;});this.currentIndex=0;this.currentImage=null;if(this.galleryType==='normal'){this.galleryHeight=ops.height||523;this.smallThumb=(this.galleryHeight<=400);this.imageDisplayWidth=(this.galleryWidth-20);this.imageDisplayHeight=(this.galleryHeight-135);if(this.smallThumb===true){this.imageDisplayHeight+=30;}
this.container=ops.container;this.galleryImage=dfx.getClass('galleryImage',this.container)[0];this.imageContainer=dfx.getClass('imageContainer',this.container)[0];this.prevNavButton=dfx.getClass('galleryImagePrev',this.container)[0];this.nextNavButton=dfx.getClass('galleryImageNext',this.container)[0];this.imageCaption=dfx.getClass('imgCaption',this.container)[0];dfx.setStyle(this.galleryImage,'height',this.imageDisplayHeight+'px');}else if(this.galleryType==='light'){var setDimensions=function(){var winSize=dfx.getWindowDimensions();self.maxContainerW=(winSize.width-180);self.maxContainerH=(winSize.height-80);self.captionHeight=29;self.imageDisplayWidth=self.maxContainerW;self.imageDisplayHeight=((self.maxContainerH-self.captionHeight)-2);};setDimensions();window.onresize=function(e){setDimensions();};this.popOverlay=document.createElement('div');var c='<div class="galleryPopContainer">';c+='   <div class="galleryPopBorder">';c+='       <div class="galleryPopImage">';c+='           <img class="imagePopContainer" src="" alt="img2" height="48" width="48" style="visibility: hidden;">';c+='           <a href="#" class="galleryPopImageNext"><span>Show next gallery image</span></a>';c+='           <a href="#" class="galleryPopImagePrev"><span>Show previous gallery image</span></a>';c+='       </div>';c+='       <div class="galleryPopFooter">';c+='           <p class="galleryPopCaption"> </p>';c+='       </div>';c+='   </div><!-- .galleryPopBorder -->';c+='   <a href="#" class="galleryPopClose"> </a>';c+='</div><!-- .galleryPopContainer -->';dfx.setHtml(this.popOverlay,c);dfx.addClass(this.popOverlay,'galleryPopOverlay');var editingAsset=dfx.getId('EditingAsset');if(editingAsset){editingAsset.appendChild(this.popOverlay);}else{document.body.appendChild(this.popOverlay);}
this.container=ops.container;this.galleryPopContainer=dfx.getClass('galleryPopContainer',this.popOverlay)[0];this.imageContainer=dfx.getClass('imagePopContainer',this.popOverlay)[0];this.prevNavButton=dfx.getClass('galleryPopImagePrev',this.popOverlay)[0];this.nextNavButton=dfx.getClass('galleryPopImageNext',this.popOverlay)[0];this.imageCaption=dfx.getClass('galleryPopCaption',this.popOverlay)[0];this.galleryPopFooter=dfx.getClass('galleryPopFooter',this.popOverlay)[0];this.galleryPopClose=dfx.getClass('galleryPopClose',this.popOverlay)[0];this.galleryHeight=ops.height;this.smallThumb=(this.galleryHeight==='small');dfx.hideElement(this.popOverlay);}
this.firstTimeLoading=true;this.imageLoader=new mig.ImageLoader(this.galleryid);mig.imageLoaders[this.galleryid]=this.imageLoader;this.imageLoader.addImage('gallery_loader',mig.Gallery.preLoaderPath);dfx.foreach(this.imageids,function(idx){var iid=self.imageids[idx];if(self.images[iid].url.search(/\?/)===-1){self.imageLoader.addImage(iid+'_tb',self.images[iid].url+'?tb=1');}else{self.imageLoader.addImage(iid+'_tb',self.images[iid].url+'&tb=1');}
return true;});this.isLoaderReady(function(){self.imageSlider=new mig.Gallery.Slider(self,self.galleryid,self.images,self.imageids,self.imageLoader,self.galleryWidth,self.galleryHeight,self.smallThumb,self.container);self.imageSlider.addOnSelectCallback(function(id){self.currentImage=id;dfx.foreach(self.imageids,function(idx){if(self.imageids[idx]===id){self.currentIndex=idx;return false;}
return true;});self.displayImage();});if(this.galleryType==='normal'){self.init(function(){if(self.imageids.length>1){dfx.showElement(this.nextNavButton);}
self.currentIndex=0;self.currentImage=self.imageids[self.currentIndex];self.displayImage();self.imageSlider.init(function(){});});}else if(this.galleryType==='light'){self.init(function(){self.imageSlider.init(function(){});});}});};mig.Gallery.preLoaderPath='__web/Systems/ImageGallery/images/pre-loader.gif';mig.Gallery.prototype={init:function(cb)
{dfx.removeEvent(this.prevNavButton,'click');dfx.removeEvent(this.nextNavButton,'click');var self=this;dfx.addEvent(this.prevNavButton,'click',function(e){self.previous();return false;});dfx.addEvent(this.nextNavButton,'click',function(e){self.next();return false;});if(this.galleryType==='light'){dfx.removeEvent(this.galleryPopClose,'click');dfx.addEvent(this.galleryPopClose,'click',function(e){dfx.hideElement(self.popOverlay);return false;});dfx.addEvent(this.popOverlay,'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'galleryPopOverlay')===true){dfx.hideElement(self.popOverlay);return false;}});}
if(cb){cb.call(this);}},isLoaderReady:function(cb)
{var self=this;if(this.imageLoader.ready('gallery_loader')===true){cb.call(self);}else{setTimeout(function(){self.isLoaderReady(cb);},100);}},previous:function()
{if(this.currentIndex>0){this.currentIndex=(this.currentIndex-1);this.currentImage=this.imageids[this.currentIndex];if(this.galleryType==='light'){dfx.hideElement(this.prevNavButton);dfx.hideElement(this.nextNavButton);dfx.setStyle(this.imageContainer,'visibility','hidden');}
this.imageSlider.locateImageToMiddle(this.currentImage,true);this.displayImage();}},next:function()
{var imgLen=this.imageids.length;if(this.currentIndex<(imgLen-1)){this.currentIndex=this.currentIndex+1;this.currentImage=this.imageids[this.currentIndex];if(this.galleryType==='light'){dfx.hideElement(this.prevNavButton);dfx.hideElement(this.nextNavButton);dfx.setStyle(this.imageContainer,'visibility','hidden');}
this.imageSlider.locateImageToMiddle(this.currentImage,true);this.displayImage();}},displayImage:function()
{var self=this;if(this.galleryType==='light'){dfx.setStyle(this.galleryPopFooter,'visibility','hidden');dfx.setStyle(this.imageContainer,'visibility','hidden');dfx.showElement(this.popOverlay);dfx.hideElement(this.galleryPopClose);}
this.imageLoader.addImage(this.currentImage,this.images[this.currentImage].url);this.imageSlider.selectImage(this.currentImage);var titleHtml=this.images[this.currentImage].title;titleHtml+='&nbsp;('+(this.currentIndex+1);titleHtml+=' of '+this.imageids.length+' images)';dfx.setHtml(this.imageCaption,titleHtml);var nW=this.images[this.currentImage].width;var nH=this.images[this.currentImage].height;if(this.images[this.currentImage].width>this.imageDisplayWidth||this.images[this.currentImage].height>this.imageDisplayHeight){var size=this._scaleDownImage(this.imageDisplayWidth,this.imageDisplayHeight,this.images[this.currentImage].width,this.images[this.currentImage].height);nW=size.nW;nH=size.nH;}
var setNavButtons=function(){if(self.currentIndex===0){dfx.hideElement(self.prevNavButton);dfx.showElement(self.nextNavButton);}else if(self.currentIndex===(self.imageids.length-1)){dfx.hideElement(self.nextNavButton);dfx.showElement(self.prevNavButton);}else{dfx.showElement(self.nextNavButton);dfx.showElement(self.prevNavButton);}
dfx.setStyle(self.imageContainer,'visibility','visible');};var _displayImage=function(){if(self.imageLoader.ready(self.currentImage)===true){var parent=self.imageContainer.parentNode;if(self.galleryType==='normal'){if(self.firstTimeLoading===false){dfx.remove(self.imageContainer);var img=document.createElement('img');dfx.setStyle(img,'visibility','hidden');dfx.addClass(img,'imageContainer');img.src=self.images[self.currentImage].url;img.alt=self.images[self.currentImage].alt;img.setAttribute('width',nW);img.setAttribute('height',nH);self.imageContainer=img;parent.appendChild(self.imageContainer);}else{dfx.setStyle(self.imageContainer,'visibility','hidden');self.imageContainer.setAttribute('width',nW);self.imageContainer.setAttribute('height',nH);self.firstTimeLoading=false;}
if(nH<self.imageDisplayHeight){dfx.setStyle(self.imageContainer,'margin-top',Math.ceil((self.imageDisplayHeight-nH)/2)+'px');}else{dfx.setStyle(self.imageContainer,'margin-top','0px');}
setNavButtons();}else if(self.galleryType==='light'){var targetContainerW=nW;var targetContainerH=nH+self.captionHeight+2;var params={width:targetContainerW,height:targetContainerH,marginTop:((targetContainerH/2)*(-1)),marginLeft:((targetContainerW/2)*(-1))};dfx.animate(self.galleryPopContainer,params,600,function(){var img=document.createElement('img');dfx.setStyle(img,'visibility','hidden');dfx.addClass(img,'imageContainer');img.src=self.images[self.currentImage].url;img.alt=self.images[self.currentImage].alt;img.setAttribute('width',(nW-4));img.setAttribute('height',nH);dfx.insertBefore(self.imageContainer,img);dfx.remove(self.imageContainer);self.imageContainer=img;setNavButtons();dfx.setStyle(self.galleryPopFooter,'visibility','visible');dfx.showElement(self.galleryPopClose);});}}else{setTimeout(function(){_displayImage();},300);}};if(self.firstTimeLoading===false){self.displayLoaderImage();}
_displayImage();},displayLoaderImage:function()
{if(this.galleryType==='normal'){this.imageContainer.setAttribute('width',48);this.imageContainer.setAttribute('height',48);dfx.setStyle(this.imageContainer,'margin-top',((this.imageDisplayHeight/2)-24)+'px');this.imageContainer.src=mig.Gallery.preLoaderPath;}},_scaleDownImage:function(gW,gH,iW,iH)
{var size={};if(iW>gW&&iH<=gH){nW=gW;nH=Math.ceil((iH*gW)/iW);}else if(iH>gH&&iW<=gW){nW=Math.ceil((iW*gH)/iH);nH=gH;}else if(iW>gW&&iH>gH){if(iW>=iH){nW=gW;nH=Math.ceil((iH*gW)/iW);if(nH>gH){iH=nH;iW=nW;nW=Math.ceil((iW*gH)/iH);nH=gH;}}else if(iW<iH){nW=Math.ceil((iW*gH)/iH);nH=gH;if(nW>gW){iH=nH;iW=nW;nW=gW;nH=Math.ceil((iH*gW)/iW);}}}else if(iW<gW&&iH<gH){nW=iW;nH=iH;}
size.nW=nW;size.nH=nH;return size;}};mig.Gallery.Slider=function(gallery,galleryid,images,imageids,imageLoader,galleryWidth,galleryHeight,smallThumb,container)
{this.gallery=gallery;this.galleryid=galleryid;this.id=this.galleryid+'_slider';this.images=images;this.imageids=imageids;this.imageLoader=imageLoader;this.smallThumb=smallThumb;this.thumbImageHeight=75;if(this.smallThumb===true){this.thumbImageHeight=45;}
this.currentImageid=this.imageids[0];this.onSelectCallbacks=[];this.ready=false;this.waitingQueue=[];this.sliderAnimationSpeed=600;this.galleryWidth=galleryWidth;this.leftMargin=10;this.rightMargin=10;this.visibleRegionWidth=((this.galleryWidth-this.leftMargin)-this.rightMargin);this.stripWidth=null;this.startAnimationLeft=this.leftMargin;this.endAnimationLeft=null;this.stripLeftOffset=this.leftMargin;this.currentSliderIndex=null;this.imageOffsets=[];this.imgClickedOffsets={};this.container=container;this.thumbListUl=dfx.getClass('thumbList',this.container)[0];this.thumbs=dfx.getClass('galleryThumbs',this.container)[0];this.thumbsInner=dfx.getClass('galleryThumbsInner',this.container)[0];this.thumbStripDiv=dfx.getClass('thumbStrip',this.container)[0];this.inAnimation=false;this.noSliderAnimation=false;dfx.setStyle(this.thumbStripDiv,'left',this.leftMargin+'px');var sliderClassName='';if(this.smallThumb===true){sliderClassName='Small';}
this.sliderLeftButtonDiv=dfx.getClass('thumbSlider'+sliderClassName+'Left',this.container)[0];this.sliderRightButtonDiv=dfx.getClass('thumbSlider'+sliderClassName+'Right',this.container)[0];this.sliderLeftButton=dfx.getClass('thumbSliderLeftAnchor',this.container)[0];this.sliderRightButton=dfx.getClass('thumbSliderRightAnchor',this.container)[0];dfx.showElement(this.thumbs);dfx.setStyle(this.thumbsInner,'width',this.galleryWidth+'px');};mig.Gallery.Slider.prototype={init:function(cb)
{var self=this;dfx.removeEvent(this.sliderLeftButton,'click');dfx.removeEvent(this.sliderRightButton,'click');dfx.addEvent(this.sliderLeftButton,'click',function(e){if(self.inAnimation===true||self.startAnimationLeft===self.stripLeftOffset||self.noSliderAnimation===true){return false;}
var target=self.stripLeftOffset+self.visibleRegionWidth;if(target>=self.startAnimationLeft){target=self.startAnimationLeft;}else{var found=false;var num=self.imageOffsets.length;for(var i=(num-1);i>0;i--){var lo=self.imageOffsets[i].leftOffset;var ro=self.imageOffsets[i].rightOffset;if(found===false&&lo>=target){target=lo;found=true;}}}
self.inAnimation=true;dfx.animate(self.thumbStripDiv,{left:target},self.sliderAnimationSpeed,function(){self.stripLeftOffset=target;self.inAnimation=false;self.updateNavButtons();});return false;});dfx.addEvent(this.sliderRightButton,'click',function(e){if(self.inAnimation===true||self.endAnimationLeft===self.stripLeftOffset||self.noSliderAnimation===true){return false;}
var target=(self.stripLeftOffset-self.visibleRegionWidth);if(target<=self.endAnimationLeft){target=self.endAnimationLeft;}else{var found=false;dfx.foreach(self.imageOffsets,function(idx){var lo=self.imageOffsets[idx].leftOffset;var ro=self.imageOffsets[idx].rightOffset;if(found===false&&ro<=target){target=lo;found=true;}
return true;});}
self.inAnimation=true;dfx.animate(self.thumbStripDiv,{left:target},self.sliderAnimationSpeed,function(){self.stripLeftOffset=target;self.inAnimation=false;self.updateNavButtons();});return false;});var content='';dfx.foreach(this.imageids,function(idx){var iid=self.imageids[idx];var thumbid=iid+'_tb';content+='<li style="padding: 0px 0px 0px 0px; ';content+='margin: 0px 5px 0px 0px;" id="'+self.id+'_';content+=iid+'_list" class="thumbItem';var thumbW=Math.ceil((self.images[iid].width*self.thumbImageHeight)/self.images[iid].height);self.images[iid].thumbW=thumbW;if(idx===0){content+=' thumbItemSelected';}
content+=' ">';if(self.imageLoader.ready(thumbid)===true){content+='<img id="'+self.id+'_'+iid+'" height="';content+=self.thumbImageHeight+'" ';content+='width="'+thumbW+'" src="';if(self.images[iid].url.search(/\?/)===-1){content+=self.images[iid].url+'?tb=1" alt="'+self.images[iid].alt+'" />';}else{content+=self.images[iid].url+'&tb=1" alt="'+self.images[iid].alt+'" />';}}else{self.waitingQueue.push(iid);content+='<img id="'+self.id+'_'+iid+'" height="';content+=self.thumbImageHeight+'" width="45" src="';content+=mig.Gallery.preLoaderPath+'" alt="'+self.images[iid].alt+'" />';}
content+='</li>';var imagePadding=4;var imageBorder=1;var imageMargin=5;var totalThumbW=(self.images[iid].thumbW+(imagePadding+imageBorder)*2);var minMiddleOffset=(self.leftMargin-Math.ceil(self.visibleRegionWidth/2));if(idx===0){var rightOffset=(self.leftMargin-totalThumbW);var imgMidOffset=(self.leftMargin-Math.ceil(totalThumbW/2));self.imageOffsets.push({leftOffset:self.leftMargin,width:self.images[iid].thumbW,rightOffset:rightOffset,midOffset:imgMidOffset,thumbDisplayWidth:totalThumbW});self.imgClickedOffsets[iid]=self.leftMargin;prevOffset=(self.leftMargin-(totalThumbW+imageMargin));}else{var rightOffset=(prevOffset-totalThumbW);var leftOffset=prevOffset;var imgMidOffset=(leftOffset-Math.ceil(totalThumbW/2));var imgClickedOffset=null;if(imgMidOffset<minMiddleOffset){imgClickedOffset=(self.leftMargin-Math.abs(minMiddleOffset-imgMidOffset));}else if(imgMidOffset>=minMiddleOffset){imgClickedOffset=self.leftMargin;}
self.imageOffsets.push({leftOffset:prevOffset,width:self.images[iid].thumbW,rightOffset:rightOffset,midOffset:imgMidOffset,thumbDisplayWidth:totalThumbW});self.imgClickedOffsets[iid]=imgClickedOffset;prevOffset=(prevOffset-totalThumbW-imageMargin);}
return true;});var stripW=0;var imgGap=5;dfx.foreach(this.imageOffsets,function(idx){stripW+=self.imageOffsets[idx].thumbDisplayWidth+imgGap;return true;});stripW=(stripW-imgGap);dfx.setStyle(this.thumbStripDiv,'width',stripW+'px');if(stripW<=self.visibleRegionWidth){this.noSliderAnimation=true;}
this.stripWidth=stripW;this.endAnimationLeft=((this.galleryWidth-this.stripWidth)-this.rightMargin);dfx.setStyle(this.thumbListUl,'padding-left','0px');dfx.foreach(this.imgClickedOffsets,function(iid){if(self.imgClickedOffsets[iid]<=self.endAnimationLeft){self.imgClickedOffsets[iid]=self.endAnimationLeft;}
return true;});dfx.setHtml(this.thumbListUl,content);dfx.foreach(this.imageids,function(idx){var iid=self.imageids[idx];var imgid=self.id+'_'+iid;dfx.addEvent(dfx.getId(imgid),'click',function(e){if(self.inAnimation===true){return false;}
self.gallery.displayLoaderImage();self.selectImage(iid);self.locateImageToMiddle(iid,false);});return true;});dfx.hideElement(this.sliderLeftButtonDiv);if(this.noSliderAnimation===true){dfx.hideElement(this.sliderRightButtonDiv);}else{dfx.showElement(this.sliderRightButtonDiv);}
this.onReadyCb=cb;if(this.waitingQueue.length>0){self._processQueueLoader();}},updateNavButtons:function()
{if(this.noSliderAnimation===true){dfx.hideElement(this.sliderLeftButtonDiv);dfx.hideElement(this.sliderRightButtonDiv);}else if(this.stripLeftOffset===this.startAnimationLeft){dfx.hideElement(this.sliderLeftButtonDiv);dfx.showElement(this.sliderRightButtonDiv);}else if(this.stripLeftOffset===this.endAnimationLeft){dfx.hideElement(this.sliderRightButtonDiv);dfx.showElement(this.sliderLeftButtonDiv);}else{dfx.showElement(this.sliderLeftButtonDiv);dfx.showElement(this.sliderRightButtonDiv);}},locateImageToMiddle:function(id,noCallback)
{var self=this;if(this.noSliderAnimation===true){if(noCallback===false){var cbLen=self.onSelectCallbacks.length;for(var i=0;i<cbLen;i++){self.onSelectCallbacks[i].call(self,id);}}
this.updateNavButtons();}else if(this.imgClickedOffsets[id]!==null){this.inAnimation=true;dfx.animate(this.thumbStripDiv,{left:this.imgClickedOffsets[id]},300,function(){if(noCallback===false){var cbLen=self.onSelectCallbacks.length;for(var i=0;i<cbLen;i++){self.onSelectCallbacks[i].call(self,id);}}
self.stripLeftOffset=self.imgClickedOffsets[id];self.inAnimation=false;self.updateNavButtons();});}else{if(noCallback===false){var cbLen=self.onSelectCallbacks.length;for(var i=0;i<cbLen;i++){self.onSelectCallbacks[i].call(self,id);}}}},selectImage:function(id)
{if(this.currentImageid===id){return;}
var oldList=dfx.getId(this.id+'_'+this.currentImageid+'_list');var newList=dfx.getId(this.id+'_'+id+'_list');dfx.removeClass(oldList,'thumbItemSelected');dfx.addClass(newList,'thumbItemSelected');this.currentImageid=id;},_processQueueLoader:function()
{var self=this;if(this.waitingQueue.length>0){var tmp=[];var stop=false;dfx.foreach(this.waitingQueue,function(idx){var iid=self.waitingQueue[idx];var thumbid=self.waitingQueue[idx]+'_tb';if(self.imageLoader.ready(thumbid)===true){var img=dfx.getId(self.id+'_'+iid);if(dfx.isset(img)===false){stop=true;return false;}else{var tW=Math.ceil((self.images[iid].width*self.thumbImageHeight)/self.images[iid].height);img.setAttribute('width',tW);if(self.images[iid].url.search(/\?/)===-1){img.setAttribute('src',self.images[iid].url+'?tb=1');}else{img.setAttribute('src',self.images[iid].url+'&tb=1');}}}else{tmp.push(iid);}
return true;});if(stop===false){this.waitingQueue=tmp;setTimeout(function(){self._processQueueLoader();},500);}}else{self.onReadyCb.call(self);}},addOnSelectCallback:function(cb)
{this.onSelectCallbacks.push(cb);}};mig.ImageLoader=function(galleryid)
{this.galleryid=galleryid;this.images={};this.total=0;this.downloading=0;this.maxDownload=5;this.waiting=[];this.downloadingIntervalId=null;};mig.ImageLoader.prototype={addImage:function(id,url)
{if(dfx.isset(this.images[id])===true){return;}
if(this.downloading>this.maxDownload){this.waiting.push({id:id,url:url});if(this.downloadingIntervalId===null){var self=this;this.downloadingIntervalId=setInterval(function(){self._process();},500);}}else{this._startLoading(id,url,this.galleryid);}
this.total=this.total+1;},ready:function(id)
{if(dfx.isset(this.images[id])===false){return false;}
return this.images[id].ready;},get:function(id)
{if(this.ready(id)===false){return null;}
return this.images[id];},_startLoading:function(id,url,gid)
{var image=new Image();dfx.addEvent(image,'load',function(){if(dfx.isset(mig.imageLoaders[gid])===true){mig.imageLoaders[gid].images[id].ready=true;mig.imageLoaders[gid].downloading=(mig.imageLoaders[gid].downloading-1);}});this.downloading=(this.downloading+1);this.images[id]={ready:false,imgElem:image,url:url};image.src=url;},_process:function()
{var queueLen=this.waiting.length;if(queueLen>0&&this.downloading<this.maxDownload){var nextImg=this.waiting[0];this._startLoading(nextImg.id,nextImg.url,this.galleryid);this.waiting=this.waiting.slice(1);}else if(queueLen===0){clearInterval(this.downloadingIntervalId);this.downloadingIntervalId=null;}}};function AbstractWidgetWidgetType(id)
{this.id=id;this.widgetType='Widget';this.action=null;this.domElem=dfx.getId(this.id);this.enabled=true;this.disabledDiv=null;this.attributes={};this.url=Widget.BASE_URL+'/'+Widget.EDIT_SUFFIX;this._events=[];this.widgetAttributes={};this.hasWizardOpts=false;this.onChangeCallbacks=[];this.confirmDialogActive=false;this.onModifiedCallbacks=[];this.onNotModifiedCallbacks=[];this.readOnly=false;this.lockInfo=null;this.saveDelay=500;}
Widget=AbstractWidgetWidgetType;Widget.LEFT=1;Widget.RIGHT=2;Widget.CENTER=4;Widget.TOP=8;Widget.BOTTOM=16;Widget.includes=null;Widget.includeCallbacks=null;Widget.scriptsIncluded=[];Widget.windowResizeCallbacks=[];Widget.registerWindowResize=function(callback)
{if(dfx.isFn(callback)===true){Widget.windowResizeCallbacks.push(callback);}};window.onresize=function(e)
{var len=Widget.windowResizeCallbacks.length;for(var i=0;i<len;i++){Widget.windowResizeCallbacks[i](e);}};Widget.prototype={dblclick:function(){},click:function(){},clickInside:function(){},clickOutside:function(){},focusGained:function(){},focusLost:function(){},getClass:function()
{return this.widgetType+'WidgetType';},getWidgetUrl:function(widgetType)
{var url=Widget.WEB_URL+'/Systems/'+widgetType+'/';return url;},getSkinURL:function(type)
{var url=Widget.WEB_URL+'/Skins/'+Widget.ACTIVE_SKIN+'/';if(type){url+=type+'Widget/';}
return url;},includeWidget:function(type,callback)
{this.includeWidgets([type],callback);},includeWidgets:function(types,callback)
{var f=false;if(Widget.includes===null){Widget.includes=[];f=true;}
if(Widget.includeCallbacks===null){Widget.includeCallbacks=[];}
Widget.includes=Widget.includes.concat(types);Widget.includeCallbacks.unshift(callback);if(f===true){this._includeWidgets();}},_includeWidgets:function()
{if(Widget.includes.length===0){Widget.includes=null;var cbs=Widget.includeCallbacks;Widget.includeCallbacks=null;if(cbs){var cbsLen=cbs.length;for(var i=0;i<cbsLen;i++){if(dfx.isFn(cbs[i])){cbs[i].call(this);}}}}else{var type=Widget.includes.shift();var self=this;this._includeWidget(type,function(){self._includeWidgets.call(self);});}},_includeWidget:function(type,callback)
{var jsUrl=Widget.WEB_URL+'Systems/'+type+'Widget/';jsUrl+=type+'WidgetType.js';var cssUrl=Widget.WEB_URL+'/Skins/'+Widget.ACTIVE_SKIN+'/';cssUrl+=type+'Widget/'+type+'WidgetType.css';if(typeof type!=='string'||typeof(window[type+'WidgetType'])!=='undefined'||dfx.scriptsIncluded.inArray(jsUrl)===true){dfx.includeCss(cssUrl,function(){callback.call(this);});}else if(typeof(window[type+'WidgetType'])==='undefined'){dfx.includeScript(jsUrl,function(){dfx.includeCss(cssUrl,function(){dfx.scriptsIncluded.push(jsUrl);callback.call(this);});});}},createWidget:function(id,type)
{if(id===null){id=type+'Widget_'+Math.floor(((Math.random()*99999)+1));}
var wObj=null;var args='';var end=arguments.length;for(var i=2;i<end;i++){args+=', arguments['+i+']';}
eval('wObj = new '+type+'WidgetType(id'+args+')');if(wObj.setReadOnly&&dfx.isFn(wObj.setReadOnly)){wObj.setReadOnly(this.readOnly);}
WidgetStore.add(id,wObj);if(this.add){this.add(id);}
return wObj;},ready:function()
{WidgetStore.setData('widgetReady',{widgetid:this.id});},setReadOnly:function(readOnly)
{this.readOnly=readOnly;},setAttribute:function(attr,val)
{this.attributes[attr]=val;},getAttribute:function(attr)
{return this.attributes[attr];},setWidgetAttribute:function(attr,val)
{this.widgetAttributes[attr]=val;},getWidgetAttribute:function(attr,val)
{return this.widgetAttributes[attr];},showOptions:function(){},exportWidget:function()
{var o={};o.widgetType=this.widgetType;if(this.children.length>0){o.children=[];var len=this.children.length;for(var i=0;i<len;i++){o.children.push(this.children[i].exportWidget());}}
return o;},getChildren:function()
{return this.children;},getAllChildren:function()
{var children=[];var len=this.children.length;for(var i=0;i<len;i++){children.push(this.children[i]);children=children.concat(this.children[i].getAllChildren());}
return children;},addEvents:function()
{this._addEvents();},_setEvent:function(el,type,action)
{var self=this;dfx.addEvent(el,type,function(e){action.call(this,e,self);});},_addEvents:function(){},setEvent:function(eventType,eventAction)
{this._events.push({type:eventType,action:eventAction});},enableEditing:function()
{var len=this.children.length;for(var i=0;i<len;i++){this.children[i].enableEditing();}},hasWizardOptions:function()
{return this.hasWizardOpts;},getWizardOptions:function(callback)
{if(dfx.isFn(callback)){callback.call(this,[]);}else{throw'callback must be a function';}},createChildren:function(parent,callback,index)
{if(typeof index==='undefined'){index=0;}
if(this.children[index]){var self=this;this.children[index++].create(function(el){parent.appendChild(el);self.createChildren(parent,callback,index);});}else{if(dfx.isFn(callback)){callback.call(this);}}},createWidgets:function(widgetList,callback,index,length,elements)
{if(dfx.isset(index)===false){index=0;length=widgetList.length;elements=[];}
var self=this;if(index<length){widgetList[index].create(function(el){elements.push(el);self.createWidgets(widgetList,callback,(index+1),length,elements);});}else{if(dfx.isFn(callback)){callback.call(this,elements);}}},disableEditing:function(){},isActive:function()
{if(this.id===WidgetStore.getActiveWidgetId()){return true;}
return false;},show:function(visibilityOnly,displayType)
{if(visibilityOnly===true){dfx.setStyle(this.domElem,'visibility','visible');}else{dfx.setStyle(this.domElem,'visibility','visible');var dt='block';if(dfx.isset(displayType)===true){dt=displayType;}
dfx.setStyle(this.domElem,'display',dt);}},hide:function(visibilityOnly)
{if(visibilityOnly===true){dfx.setStyle(this.domElem,'visibility','hidden');}else{dfx.setStyle(this.domElem,'visibility','hidden');dfx.setStyle(this.domElem,'display','none');}},disable:function()
{this.enabled=false;},enable:function()
{this.enabled=true;},isEnabled:function()
{return this.enabled;},displayUnderConstruction:function(targetid,callback,position)
{var d=document.createElement('div');var id=targetid+'-uc';var disabledDiv=dfx.getId(id);if(!disabledDiv){d.id=id;dfx.setStyle(d,'left','0px');dfx.setStyle(d,'top','0px');dfx.setStyle(d,'position','fixed');dfx.setStyle(d,'height','100%');dfx.setStyle(d,'width','100%');dfx.setStyle(d,'backgroundColor','#fff');dfx.setStyle(d,'zIndex','900');dfx.setStyle(d,'visibility','visible');var targetElem=dfx.getId(targetid);targetElem.setAttribute('old_position',dfx.getStyle(targetElem,'position'));dfx.setStyle(targetElem,'position','relative');if(position){dfx.setStyle(d,'position',position);}
var wrapper=document.createElement('div');wrapper.id=id+'-wrapper';wrapper.className='uc-wrapper';var icon=document.createElement('div');icon.id=id+'-icon';icon.className='uc-icon';var img=document.createElement('img');img.src=Widget.WEB_URL+'/Skins/defaultSkin/images/Icons/warning_large.png';icon.appendChild(img);var message=document.createElement('div');message.id=id+'-message';message.innerHTML='This interface is under construction.<br /><span id="'+id+'-uc-click" class="uc-click">Click here to view</span>';message.className='uc-message';wrapper.appendChild(icon);wrapper.appendChild(message);d.appendChild(wrapper);dfx.insertBefore(targetElem.firstChild,d);dfx.addEvent(dfx.getId(id+'-uc-click'),'click',function(){var dd=dfx.getId(id);dfx.setStyle(dd,'display','none');dfx.setStyle(dd,'visibility','hidden');if(dfx.isFn(callback)===true){callback.call(this);}});disabledDiv=d;}else{if(targetId!==null){var targetElem=dfx.getId(targetid);targetElem.setAttribute('old_position',dfx.getStyle(targetElem,'position'));dfx.setStyle(targetElem,'position','relative');}
dfx.setStyle(disabledDiv,'display','block');dfx.setStyle(disabledDiv,'z-index','998');}
return disabledDiv;},displayDisabledDiv:function(showLoader,target,colour,position,loadMsg)
{if(!target){var saveLayer=dfx.getId('__saveLayer');if(saveLayer){dfx.remove(saveLayer);}}
var targetId=target||null;var targetElem=null;if(dfx.isObj(target)===true){targetElem=target;}else if(targetId){targetElem=dfx.getId(targetId);}
var id='';if(targetElem&&targetElem.id){id=targetElem.id+'_disabledDiv';}else{id='_disabledDiv';}
if(dfx.isset(colour)===false){colour='black';}
var disabledDiv=dfx.getId(id);if(!disabledDiv){var d=document.createElement('div');d.id=id;dfx.addClass(d,'disabledDiv');dfx.addClass(d,'disabledDiv-'+colour);if(targetElem){var pos=dfx.getStyle(targetElem,'position');targetElem.setAttribute('old_position',pos);dfx.setStyle(targetElem,'position','relative');if(position){dfx.setStyle(d,'position',position);}
if(dfx.isset(targetElem.firstChild)===true){dfx.insertBefore(targetElem.firstChild,d);}else{dfx.insertBefore(targetElem,d);}}else{dfx.insertBefore(document.body.firstChild,d);}
disabledDiv=d;}else{if(targetElem){targetElem.setAttribute('old_position',dfx.getStyle(targetElem,'position'));dfx.setStyle(targetElem,'position','relative');}
dfx.setStyle(disabledDiv,'display','block');dfx.setStyle(disabledDiv,'z-index','998');var wrapper=disabledDiv;}
if(!target){var toolbar=dfx.getClass('ToolbarWidgetType',document.body)[0];var toolbarMask=dfx.getClass('ToolbarMask',toolbar)[0];if(toolbarMask){dfx.showElement(toolbarMask);}else{var toolbarMask=document.createElement('div');dfx.addClass(toolbarMask,'ToolbarMask');dfx.setHtml(toolbarMask,'&nbsp;');toolbar.appendChild(toolbarMask);}}
var loaderId=id+'_loaderImg';var loaderMsgid=id+'_loaderMsg';var loaderImg=dfx.getId(loaderId);var loaderMsg=dfx.getId(loaderMsgid);if(showLoader===true){if(dfx.isset(loaderImg)===false){loaderImg=document.createElement('div');loaderImg.id=loaderId;var gif=document.createElement('img');if(colour==='black'){gif.src=this.getSkinURL()+'HTMLCanvasWidget/black.gif';}else{gif.src=this.getSkinURL()+'HTMLCanvasWidget/'+colour+'.gif';}
loaderImg.appendChild(gif);dfx.setStyle(gif,'margin','42px 0 0 42px');disabledDiv.appendChild(loaderImg);dfx.addClass(loaderImg,'ajax-loader');if(colour==='white'){dfx.addClass(loaderImg,'ajax-loader-white');}}
if(loaderMsg){dfx.remove(loaderMsg);}
loadMsg=loadMsg||'';loaderMsg=document.createElement('div');loaderMsg.id=loaderMsgid;dfx.addClass(loaderMsg,'msg');dfx.setHtml(loaderMsg,loadMsg);dfx.insertAfter(loaderImg,loaderMsg);}else{dfx.remove(loaderImg);dfx.remove(loaderMsg);}
return disabledDiv;},removeDisabledDiv:function(target,delayed)
{if(delayed===true){var self=this;setTimeout(function(){self.removeDisabledDiv(target);},this.saveDelay);return;}
var targetId=target||null;var targetElem=null;if(dfx.isObj(target)===true){targetElem=target;if(!targetElem.id){return;}}else if(targetId){targetElem=dfx.getId(targetId);}
var id='';if(targetElem&&targetElem.id){id=targetElem.id+'_disabledDiv';}else{id='_disabledDiv';}
var disEl=dfx.getId(id);if(targetElem){dfx.setStyle(targetElem,'position',targetElem.getAttribute('old_position'));}
dfx.setStyle(disEl,'display','none');dfx.setStyle(disEl,'z-index','1000');if(!target){var saveLayer=dfx.getId('__saveLayer');if(saveLayer){dfx.remove(saveLayer);}}
var toolbarMask=dfx.getClass('ToolbarMask',document.body)[0];if(toolbarMask){dfx.hideElement(toolbarMask);}},getDisabledDivid:function(targetElem)
{var id='';if(targetElem&&targetElem.id){id=targetElem.id+'_disabledDiv';}else{id='_disabledDiv';}
return id;},removeLoaderIcon:function(targetElem)
{var id=this.getDisabledDivid(targetElem);var loaderId=id+'_loaderImg';var loaderImg=dfx.getId(loaderId);if(loaderImg){dfx.remove(loaderImg);}},createScreenWarningMessage:function(options,callback)
{var wrap=document.createElement('div');wrap.id=options.id;dfx.addClass(wrap,'scrnWrnWrap');var content='<div class="scrnWrnLeftTitle">'+options.leftTitle+'</div>';if(options.colour==='yellow'){content+='  <div class="scrnWrnRightBody scrnWrnMsgYellow">';}else{content+='  <div class="scrnWrnRightBody scrnWrnMsgRed">';}
content+='    <div class="scrnWrnMsg">'+options.mainMessage+'</div>';content+='    <div class="scrnWrnBtnWrap"> </div>';content+='  </div>';content+='</div>';wrap.innerHTML=content;if(options.buttonTitle!==null){var self=this;var btnWrap=dfx.getClass('scrnWrnBtnWrap',wrap)[0];this.includeWidget('Button',function(){var btnWdgt=self.createWidget(self.id+'-button','Button','ButtonWidgetType-black');btnWdgt.setName(options.buttonTitle);btnWdgt.create(function(btnEl){btnWrap.appendChild(btnEl);if(options.buttonCb){btnWdgt.addClickEvent(function(e){options.buttonCb.call(self,e);});}
btnWdgt.setReadOnly(false);if(callback){callback.call(self,wrap);}});});}else{if(callback){callback.call(this,wrap);}}},addToolbarButton:function(id,title,clickAction,enabled)
{var toolbar=WidgetStore.get('Toolbar');var clickFn=function(){if(!dfx.hasClass(button,'ToolbarWidget-button-disabled')){clickAction.call(this);}};var createNewButton=function(){var main=document.createElement('div');dfx.addClass(main,'ToolbarWidget-button-main');dfx.addClass(main,'ToolbarWidget-button-disabled-main');button=document.createElement('input');dfx.addClass(button,'ToolbarWidget-button');dfx.addClass(button,'ToolbarWidget-button-disabled');button.setAttribute('id',id);button.setAttribute('type','button');button.setAttribute('value',title);dfx.addEvent(button,'mouseover',function(){if(dfx.hasClass(button,'ToolbarWidget-button-enabled')){dfx.addClass(button,'ToolbarWidget-button-enabled-hover');dfx.addClass(button.parentNode,'ToolbarWidget-button-enabled-main-hover');}});dfx.addEvent(button,'mouseout',function(){dfx.removeClass(button,'ToolbarWidget-button-enabled-hover');dfx.removeClass(button.parentNode,'ToolbarWidget-button-enabled-main-hover');});main.appendChild(button);toolbar.addButton(main);return button;};var toolbarBtnData=WidgetStore.getData('toolbarButtons');var button=null;if(toolbarBtnData){var btnLen=toolbarBtnData.length;for(var i=0;i<btnLen;i++){if(toolbarBtnData[i].title===title){button=dfx.getId(toolbarBtnData[i].id);button.setAttribute('id',id);toolbarBtnData[i].id=id;break;}}
if(button===null){button=createNewButton();toolbarBtnData.push({id:id,title:title});}}else{toolbarBtnData=[];toolbarBtnData.push({id:id,title:title});button=createNewButton();}
WidgetStore.setData('toolbarButtons',toolbarBtnData);dfx.removeEvent(button,'click');dfx.addEvent(button,'click',clickFn);return button;},enableToolbarButton:function(id)
{var button=document.getElementById(id);if(button){dfx.removeClass(button,'ToolbarWidget-button-disabled');dfx.addClass(button,'ToolbarWidget-button-enabled');dfx.removeClass(button.parentNode,'ToolbarWidget-button-disabled-main');dfx.addClass(button.parentNode,'ToolbarWidget-button-enabled-main');}},disableToolbarButton:function(id)
{var button=document.getElementById(id);if(button){dfx.removeClass(button,'ToolbarWidget-button-enabled');dfx.addClass(button,'ToolbarWidget-button-disabled');dfx.addClass(button.parentNode,'ToolbarWidget-button-disabled-main');dfx.removeClass(button.parentNode,'ToolbarWidget-button-enabled-main');}},removeToolbarButton:function(id)
{var button=document.getElementById(id);if(button){dfx.remove(button.parentNode);}
var toolbarBtnData=WidgetStore.getData('toolbarButtons');if(toolbarBtnData){var newToolbarBtnData=[];var btnLen=toolbarBtnData.length;for(var i=0;i<btnLen;i++){if(toolbarBtnData[i].id!==id){newToolbarBtnData.push(dfx.clone(toolbarBtnData[i]));}}
WidgetStore.setData('toolbarButtons',newToolbarBtnData);}},removeAllToolbarButtons:function()
{var toolbarBtnData=WidgetStore.getData('toolbarButtons');if(toolbarBtnData){var btnLen=toolbarBtnData.length;for(var i=0;i<btnLen;i++){this.removeToolbarButton(toolbarBtnData[i].id);}
WidgetStore.setData('toolbarButtons',[]);}},getCurrentUrl:function(incSuffix)
{var url=window.location.href;url=url.replace('/'+Widget.EDIT_SUFFIX,'');if(incSuffix===true){if(url.indexOf('?')!==-1){var parts=url.split('?');url=parts.shift()+'/'+Widget.EDIT_SUFFIX+'?'+parts.join('?');}else{url+='/'+Widget.EDIT_SUFFIX;}}
return url;},getContextMenu:function()
{return WidgetStore.get('GlobalContextMenu');},setSaveButton:function(saveCallback,revertCallback,title)
{var saveBtn=WidgetStore.get('EditingSaveButton');saveBtn.setSaveButton(saveCallback,revertCallback,title);},disableSaveButton:function()
{var saveBtn=WidgetStore.get('EditingSaveButton');saveBtn.disableAll();},enableSaveButton:function()
{var saveBtn=WidgetStore.get('EditingSaveButton');saveBtn.enableAll();},save:function(callback,params)
{this.displayDisabledDiv(true);if(!params){params={action:'save',data:dfx.jsonEncode(this.getSaveData())}}
var self=this;this.request(params,function(result){if(!callback){callback=function(){};}
self.processSaveResponse(result,params,callback);});},processSaveResponse:function(data,params,callback)
{try{data=dfx.jsonDecode(data);}catch(e){this._showSaveError(params,callback);return;}
if(data.errors||data.error){this._showSaveFailed(data,callback,params);return;}else if(data.success){this.setModified(false);this._showSaveSuccess();callback.call(this,data.success,data);return;}else{this._showSaveError(params,callback);return;}},_showSaveSuccess:function()
{this.removeLoaderIcon();var id='__saveLayer';var main=dfx.getId(id);if(main){dfx.remove(main);}
main=document.createElement('div');main.id=id;dfx.setHtml(main,'<div class="saveCompleted-icon"></div><div class="saveCompleted-msg">Save Complete</div>');document.body.appendChild(main);},_showSaveFailed:function(data,callback,params)
{var errors=[];if(data.errors){errors=data.errors;}else{errors=[data.error];}
var canForce=null;var forceLockClass='';if(dfx.isset(data.canForceLock)===true){Locking.removeLockByResource(data.resourceid);canForce=false;if(data.canForceLock===true){canForce=true;forceLockClass=' forceLock';}}
this.removeLoaderIcon();var id='__saveLayer';var main=dfx.getId(id);if(main){dfx.remove(main);}
main=document.createElement('div');main.id=id;var content='<div class="saveFailed-icon"></div>';content+='<div class="saveFailed-msg">Unable to Save</div>';content+='<div class="saveFailed-errorList"><ul>';var eln=errors.length;for(var i=0;i<eln;i++){content+='<li>'+errors[i]+'</li>';}
content+='</ul><div class="saveFailed-button'+forceLockClass;content+='"></div></div>';dfx.setHtml(main,content);var self=this;var buttonCont=dfx.getClass('saveFailed-button',main)[0];this.includeWidget('Button',function(){if(canForce!==null){if(canForce===true){var forceButton=self.createWidget(null,'Button','ButtonWidgetType-black');forceButton.setName('Force Lock');forceButton.addClickEvent(function(){Locking.acquire(data.resourceid,function(status){if(status===true){params.lockInfo=dfx.jsonEncode({resource:data.resourceid,token:Locking.getToken(data.resourceid)});self.displayDisabledDiv(true);self.save(callback,params);}},true);},true);forceButton.create(function(buttonEl){buttonCont.appendChild(buttonEl);});}
var revertBtn=self.createWidget(null,'Button','ButtonWidgetType-black');revertBtn.setName('Revert Changes');revertBtn.addClickEvent(function(){self.displayDisabledDiv(true);self.updateScreen(function(){},true);},true);revertBtn.create(function(buttonEl){buttonCont.appendChild(buttonEl);});}else{var button=self.createWidget(null,'Button','ButtonWidgetType-black');button.setName('Return to Screen');button.addClickEvent(function(){self.removeDisabledDiv();callback.call(self,{errors:errors},data);},true);button.create(function(buttonEl){buttonCont.appendChild(buttonEl);});}});document.body.appendChild(main);},_showSaveError:function(params,callback,errorMsg)
{errorMsg=errorMsg||'Save Failed';this.removeLoaderIcon();var id='__saveLayer';var main=dfx.getId(id);if(main){dfx.remove(main);}
main=document.createElement('div');main.id=id;var content='<div class="saveError-icon"></div><div class="saveError-msg">'+errorMsg+'</div>';content+='<div class="saveError-errorList">';content+='<div class="saveError-button"></div></div>';dfx.setHtml(main,content);var self=this;var buttonCont=dfx.getClass('saveError-button',main)[0];this.includeWidget('Button',function(){var cancelButton=self.createWidget(null,'Button','ButtonWidgetType-black');cancelButton.setName('Cancel');cancelButton.addClickEvent(function(){self.removeDisabledDiv();callback.call(self);},true);var retry=self.createWidget(null,'Button','ButtonWidgetType-black');retry.setName('Retry Save');retry.addClickEvent(function(){self.displayDisabledDiv(true);self.save(callback,params);},true);retry.create(function(retryEl){cancelButton.create(function(cancelEl){buttonCont.appendChild(retryEl);buttonCont.appendChild(cancelEl);});});});document.body.appendChild(main);},showError:function(errors,callback)
{var data={errors:errors};callback=callback||function(){};this.displayDisabledDiv(true);this._showSaveFailed(data,callback);},getSaveData:function()
{var saveData={};var len=this.settings.length;for(var i=0;i<len;i++){if(this.settings[i]instanceof Object){for(var op in this.settings[i]){var values={};var opLen=this.settings[i][op].length;for(var j=0;j<opLen;j++){values[this.settings[i][op][j]]=this._getWidgetValue(this.settings[i][op][j]);}
saveData[op]=values;}}else{saveData[this.settings[i]]=this._getWidgetValue(this.settings[i]);}}
return saveData;},loadSettings:function(settings)
{var len=this.settings.length;for(var i=0;i<len;i++){if(this.settings[i]instanceof Object){for(var op in this.settings[i]){var oplen=this.settings[i][op].length;for(var j=0;j<oplen;j++){this._setWidgetValue(this.settings[i][op][j],settings[op][this.settings[i][op][j]]);}}}else{this._setWidgetValue(this.settings[i],settings[this.settings[i]]);}}},getSettingWidget:function(settingid)
{var id=this.id+'-settings:'+settingid;return WidgetStore.get(id);},getSettingValue:function(settingid)
{return this._getWidgetValue(settingid);},setSettingValue:function(settingid,value)
{return this._setWidgetValue(settingid,value);},getSettingElement:function(settingid)
{var id=this.id+'-settings:'+settingid;return dfx.getId(id);},_getWidgetValue:function(settingid)
{var value=null;var id=this.id+'-settings:'+settingid;if(WidgetStore.get(id)){if(!WidgetStore.get(id).getValue){}else{value=WidgetStore.get(id).getValue();}}else{var fn='get'+dfx.ucFirst(settingid)+'SettingValue';if(dfx.isFn(this[fn])===true){value=this[fn].call(this);}}
return value;},_setWidgetValue:function(settingid,value)
{var id=this.id+'-settings:'+settingid;var widget=WidgetStore.get(id);if(dfx.isset(widget)===true){if(dfx.isFn(widget.setValue)===false){}else{widget.setValue(value);}}else{var fn='set'+dfx.ucFirst(settingid)+'SettingValue';if(dfx.isFn(this[fn])===true){this[fn].call(this,value);}}},request:function(params,callback)
{if(dfx.isFn(this.getRequestParams)===true){var thisParams=this.getRequestParams();var keyLen=thisParams.keys.length;for(var i=0;i<keyLen;i++){params[thisParams.keys[i]]=thisParams.vals[i];}}
dfx.post(this.url,params,function(data){if(dfx.isFn(callback)){callback.call(this,data);}});},getRequestParams:function()
{var params={keys:[],vals:[]};return params;},confirmDialog:function(msg,title,okFn,msgOnly,cancelFn)
{var self=this;if(this.confirmDialogActive===true){return;}
this.includeWidget('ModalDialog',function(){var confirmDialog=self.createWidget(self.id+'-confirmDialog','ModalDialog');confirmDialog.setTitle(title);var msgDiv=document.createElement('div');dfx.setStyle(msgDiv,'padding','10px');dfx.setStyle(msgDiv,'background-color','#ffffff');if((msg instanceof Object)===true){if(dfx.isset(msg.nodeType)===true&&msg.nodeType===1){msgDiv.appendChild(msg);}}else{dfx.setHtml(msgDiv,msg);}
confirmDialog.setContent(msgDiv);confirmDialog.create(function(div){self.confirmDialogActive=true;confirmDialog.addButton('Cancel',function(cancelBtn){confirmDialog.addButton('OK',function(okBtn){okBtn.addClickEvent(function(){self.confirmDialogActive=false;confirmDialog.close();if(msgOnly!==true&&dfx.isFn(okFn)===true){okFn.call(self);}});cancelBtn.addClickEvent(function(){self.confirmDialogActive=false;confirmDialog.close();if(msgOnly!==true&&dfx.isFn(cancelFn)===true){cancelFn.call(self);}});});confirmDialog.addOnCloseCallback(function(){self.confirmDialogActive=false;if(dfx.isFn(cancelFn)===true){cancelFn.call(self);}});});confirmDialog.open();});});},errorDialog:function(msg,title,callback)
{var self=this;if(this.confirmDialogActive===true){return;}
this.includeWidget('ErrorDialog',function(){var errorDialog=self.createWidget(self.id+'-errorDialog','ErrorDialog');errorDialog.setTitle(title);var msgDiv=document.createElement('div');if((msg instanceof Object)===true){if(dfx.isset(msg.nodeType)===true&&msg.nodeType===1){msgDiv.appendChild(msg);}}else{dfx.setHtml(msgDiv,msg);}
errorDialog.setContent(msgDiv);errorDialog.create(function(div){self.errorDialogActive=true;errorDialog.addButton('Close',function(closeBtn){closeBtn.addClickEvent(function(){if(callback){callback.call(self);}
errorDialog.close();});});errorDialog.open();});});},addOnChangeEvent:function(fn)
{this.onChangeCallbacks.push(fn);},removeOnChangeEvents:function()
{delete this.onChangeCallbacks;this.onChangeCallbacks=[];},setModified:function(modified,force)
{if(force!==true&&this.readOnly===true){this.disableSaveButton();return;}
if(modified===true){this.enableSaveButton();var mLen=this.onModifiedCallbacks.length;for(var i=0;i<mLen;i++){this.onModifiedCallbacks.call(this);}}else if(modified===false){this.disableSaveButton();var mLen=this.onNotModifiedCallbacks.length;for(var i=0;i<mLen;i++){this.onNotModifiedCallbacks.call(this);}}},addOnModifiedCallback:function(fn,removeOthers)
{if(removeOthers===true){this.onModifiedCallbacks=[];}
this.onModifiedCallbacks.push(fn);},addOnNotModifiedCallback:function(fn,removeOthers)
{if(removeOthers===true){this.onNotModifiedCallbacks=[];}
this.onNotModifiedCallbacks.push(fn);}};function WidgetArrayParser(){}
WidgetArrayParser.parseStyle=function(widget,tag){};Widget.prototype.getWidgetArgs=function()
{return[];};var AssetManagerWidgetType=new function()
{var self=this;this.url='';this.assets={};this.assetTypes={};this.assetPicker=null;this.assetPickerElem=null;this.getAsset=function(assetid,callback,forceUpdate,options){var options=options||null;var params={widget:'AssetManagerWidget',action:'getAsset',assetid:assetid,options:dfx.jsonEncode(options)};this.retrieveData(params,function(assetInfo){var asset=self.createAsset(assetInfo);callback.call(self,asset);});};this.getShadowidFromRemoteid=function(remoteid,callback){var params={widget:'AssetManagerWidget',action:'getShadowAssetidFromRemoteid',remoteid:remoteid};this.retrieveData(params,function(shadowid){callback.call(self,shadowid);});};this.getRemoteidFromShadowid=function(shadowid,callback){var params={widget:'AssetManagerWidget',action:'getRemoteidFromShadowid',remoteid:shadowid};this.retrieveData(params,function(remoteid){callback.call(self,remoteid);});};this.getAssetLineageFromUrl=function(url,callback,forceUpdate){var params={widget:'AssetManagerWidget',action:'getAssetLineageFromUrl',url:url};this.retrieveData(params,function(result){var length=result.length;var lineage=[];for(var i=0;i<(length-1);i++){lineage.push(result[i].assetid);}
callback.call(self,lineage);});};this.getAssetFromUrl=function(url,callback,options){var options=options||null;var params={widget:'AssetManagerWidget',action:'getAssetFromUrl',url:url,options:dfx.jsonEncode(options)};this.retrieveData(params,function(assetInfo){var asset=null;if(assetInfo.length!==0){asset=self.createAsset(assetInfo);}
callback.call(self,asset);});};this.assetLoaded=function(assetid){if(dfx.isset(this.assets[assetid])===true){return true;}
return false;};this.getAssets=function(assetids,callback,forceUpdate,options){if(dfx.isset(assetids)===false||assetids.length<=0){callback.call(self,[]);return;}
var assets=[];var ids=[];var assetidsLen=assetids.length;for(var i=0;i<assetidsLen;i++){if(isNaN(parseInt(assetids[i]))===false){this.assets[assetids[i]]=null;ids.push(assetids[i]);}}
if(ids.length>0){var params={widget:'AssetManagerWidget',action:'getAssets',assetids:dfx.jsonEncode(ids),options:dfx.jsonEncode(options)};this.retrieveData(params,function(assetInfos){var assetInfoLen=assetInfos.length;for(var i=0;i<assetInfoLen;i++){var asset=self.createAsset(assetInfos[i]);assets.push(asset);}
callback.call(self,assets);});}else{callback.call(this,assets);}};this.retrieveData=function(params,callback){dfx.getJSON(this.getUrl(),params,function(data){callback.call(self,data);});};this.getAssetLineages=function(assetid,rootid,callback,glue,limit){if(this.assetLoaded(assetid)){if(this.assets[assetid].getLineages().length!==0){callback.call(self,this.assets[assetid].lineages,this.assets[assetid]);return;}}
var params={widget:'AssetManagerWidget',action:'getAssetLineages',assetid:assetid,rootid:rootid};if(dfx.isset(glue)===true){params.glue=glue;if(dfx.isset(limit)===true){params.limit=limit;}}
this.retrieveData(params,function(assetInfo){var asset=self.createAsset(assetInfo);callback.call(self,asset.lineages,asset);});};this.createAsset=function(assetInfo){var asset=null;if(assetInfo!==null){asset=new Asset(assetInfo.id);this.assets[asset.id]=asset;asset.lineages=assetInfo.lineages;asset.name=assetInfo.name;asset.type=assetInfo.type;asset.parents=assetInfo.parents;asset.children=assetInfo.children;asset.iconUrl=assetInfo.typeIconURL;asset.attributes=assetInfo.attributes;asset.urls=assetInfo.urls;if(dfx.isset(assetInfo.linStr)===true){asset.linStr=assetInfo.linStr;}
if(dfx.isset(assetInfo.projectFolder)===true){asset.projectFolder=assetInfo.projectFolder;}
if(dfx.isset(assetInfo.encodedId)===true){asset.encodedId=assetInfo.encodedId;}}
return asset;};this.getUrl=function(){return window.location.href;};this.assetTypeLoaded=function(type){if(type in this.assetTypes){return true;}
return false;};this.getAssetTypeInfos=function(types,callback){var typesLen=types.length;if(typeof types==='undefined'||typesLen<=0){callback.call(this,[]);return;}
var assetTypes=[];var typesToGet=[];for(var i=0;i<typesLen;i++){if(this.assetTypeLoaded(types[i])){assetTypes.push(this.assetTypes[types[i]]);}else{typesToGet.push(types[i]);}}
if(typesToGet.length>0){var params={widget:'AssetManagerWidget',action:'getAssetTypeInfos',types:dfx.jsonEncode(typesToGet)};this.retrieveData(params,function(typeInfos){var typeInfosLen=typeInfos.length;for(var i=0;i<typeInfosLen;i++){var type=self.addAssetType(typeInfos[i]);assetTypes.push(type);}
callback.call(self,assetTypes);});}else{callback.call(this,assetTypes);}};this.isAssetType=function(assetid,type,callback){var params={widget:'AssetManagerWidget',action:'isAssetType',type:type,assetid:assetid};this.retrieveData(params,function(results){callback.call(this,results);});};this.addAssetType=function(typeInfo){this.assetTypes[typeInfo.typeid]=typeInfo;return typeInfo;};this.getAssetUrl=function(assetid,callback){this.getAsset(assetid,function(asset){callback.call(this,asset.getUrl());});};this.getAssetTypeIconUrl=function(assetType,size){var url=Widget.WEB_URL+'/Systems/AssetType/icons/'+assetType+'_'+size+'.png';return url;};this.searchAsset=function(value,callback,rootnodes){rootnodes=rootnodes||[];var params={widget:'AssetManagerWidget',action:'searchAssets',keyword:value,rootnodes:dfx.jsonEncode(rootnodes)};this.retrieveData(params,function(results){callback.call(this,results);});};this.getLineageAssets=function(lineage,callback){var assetids=lineage.split(':');if(assetids.length>0){this.getAssets(assetids,callback);}};this.createAssetPicker=function(callback,rootNode){var self=this;Widget.prototype.includeWidget('AssetPickerDialog',function(){var assetPicker=Widget.prototype.createWidget('__assetPicker','AssetPickerDialog');if(dfx.isset(rootNode)===true){assetPicker.setRootNode(rootNode);}
assetPicker.create(function(el){assetPicker.open();self.assetPicker=assetPicker;if(dfx.isFn(callback)===true){callback.call(this);}});});};this.showAssetPicker=function(rootNode,assetPickedCallback){if(this.assetPicker===null){var self=this;this.createAssetPicker(function(){self.showAssetPicker(rootNode,assetPickedCallback);},rootNode);}else{this.assetPicker.addAssetsSelectedAction(assetPickedCallback,true);this.assetPicker.open();}};this.getProjectFolders=function(callback,projectid){var params={widget:'AssetManagerWidget',action:'getProjectFolders'};if(projectid){params.projectid=projectid;}
this.retrieveData(params,function(results){callback.call(this,results);});};this.getCurrentSite=function(callback){var params={widget:'AssetManagerWidget',action:'getCurrentSite'};this.retrieveData(params,function(results){callback.call(this,results);});};this.getPermission=function(assetid,privilegeid,userid,callback){var uid=userid||null;var params={widget:'AssetManagerWidget',action:'getPermission',assetid:assetid,privilegeid:privilegeid,userid:uid};this.retrieveData(params,function(results){callback.call(this,results);});};this.getPermissions=function(assetid,privilegeids,userid,callback){var uid=userid||null;var params={widget:'AssetManagerWidget',action:'getPermissions',assetid:assetid,privilegeids:dfx.jsonEncode(privilegeids),userid:uid};this.retrieveData(params,function(results){callback.call(this,results);});};this.getProject=function(callback,projectid){var params={widget:'AssetManagerWidget',action:'getProject'};if(projectid){params.projectid=projectid;}
this.retrieveData(params,function(results){callback.call(this,results);});};this.getAssetAutoscrollPath=function(assetid,callback){var params={widget:'AssetManagerWidget',action:'getAssetAutoscrollPath',assetid:assetid};this.retrieveData(params,function(results){callback.call(this,results);});};};function Asset(id)
{this.id=id;this.name='';this.type='asset';this.parents=null;this.children=[];this.info={};this.lineages=[];this.iconUrl='';this.urls=[];}
Asset.prototype={add:function(assetid)
{this.children.push(assetid);},getName:function()
{return this.name;},getType:function()
{return this.type;},getParent:function()
{return this.parent;},setParent:function(assetid)
{this.parent=assetid;},getChildren:function()
{return this.children;},setAssetInfo:function(info)
{this.info=info;},getTypeIconUrl:function()
{return this.iconUrl;},getLineages:function()
{return this.lineages||[];},getAttribute:function(attr)
{if(attr==='name'){return this.name;}
return this.attributes[attr];},getUrl:function(lineage)
{var self=this;var url='';var isArray=dfx.isArray(this.urls);var baseUrl=Widget.BASE_URL;dfx.foreach(Widget.PROJECT_FOLDER_WEBPATHS,function(idx){var path=Widget.PROJECT_FOLDER_WEBPATHS[idx];if(Widget.BASE_URL.search('/'+path)!==-1){baseUrl=Widget.BASE_URL.replace('/'+path,'');return false;}
return true;});if(isArray===false){if(this.urls.hasOwnProperty(lineage)===true){var findBaseUrl=false;dfx.foreach(this.urls[lineage],function(idx){var u=self.urls[lineage][idx];if(u.search(baseUrl)===0){findBaseUrl=true;url=u;return false;}
return true;});if(findBaseUrl===false){var protocol='http://';if(Widget.USING_SSL===true){protocol='https://';}
dfx.foreach(this.urls[lineage],function(idx){var u=self.urls[lineage][idx];if(u.search(protocol)===0){url=u;return false;}
return true;});}}else{for(var lin in this.urls){if(this.urls.hasOwnProperty(lin)===true){var matched='';var first='';dfx.foreach(this.urls[lin],function(idx){var u=self.urls[lin][idx];if(first===''){first=u;}
if(u.search(baseUrl)===0){matched=u;}
return true;});if(matched!==''){url=matched;}else if(first!==''){url=first;}
break;}}}}else if(isArray===true){dfx.foreach(this.urls,function(idx){if(typeof self.urls[idx]==='string'){if(self.urls[idx].search(baseUrl)===0){url=self.urls[idx];return false;}}
return true;});if(url===''){var len=this.urls.length;if(len===0){return'';}else{url=this.urls[0];}}}else{}
return url;}};var AssetManager=AssetManagerWidgetType;var Locking=new function()
{var self=this;this.url=Widget.EDIT_URL;this.lockUpdateInterval=60;var autoUpdateInt=null;this.tokens={};this.errors={};this.updating=false;this.init=function(){WidgetStore.addDataChangeListener('LockManager','activeMode',function(newMode,prevMode){self._reset();});WidgetStore.addDataChangeListener('LockManager','activeScreen',function(newScreen,prevScreen){if(newScreen&&prevScreen&&newScreen.id===prevScreen.id){return;}
self._reset();});};this._reset=function(){self.release(self.tokens);self.tokens={};self.errors={};self.updating=false;clearInterval(autoUpdateInt);};this.getToken=function(resource){if(this.tokens[resource]){return this.tokens[resource];}
return null;};this.acquire=function(resource,callback,force,data){if(force!==true&&this.hasLock(resource)===true){this.update(resource,callback,data);return;}
force=force||false;var params={widget:'LockingWidget',action:'acquire',resource:resource,force:force};dfx.post(this.url,params,function(resp){resp=dfx.jsonDecode(resp);var result=false;if(resp.success){self.tokens[resource]=resp.success;result=true;if(this.updating===false){this.startLockUpdate();}}else{result=self._addError(resource,resp.error,data);}
callback.call(self,result);});};this.canForceLock=function(resource,callback){var params={widget:'LockingWidget',action:'canForceLock',resource:resource};dfx.post(this.url,params,function(resp){callback.call(this,dfx.jsonDecode(resp));});};this.release=function(tokens,callback){tokens=tokens||this.tokens;if(dfx.isEmpty(tokens)===true){if(callback){callback.call(this);}
return;}
var params={widget:'LockingWidget',action:'release',locktokens:dfx.jsonEncode(tokens)};dfx.post(this.url,params,function(resp){resp=dfx.jsonDecode(resp);if(callback){callback.call(this,resp);}});};this.update=function(resource,callback,data){var params={widget:'LockingWidget',action:'update',resource:resource,locktoken:this.tokens[resource]};dfx.post(this.url,params,function(resp){resp=dfx.jsonDecode(resp);var result=true;if(resp.error){result=self._addError(resource,resp.error,data);}
if(dfx.isFn(callback)===true){callback.call(self,result);}});};this.updateAll=function(){var params={widget:'LockingWidget',action:'updateLocks',locktokens:dfx.jsonEncode(this.tokens)};dfx.post(this.url,params,function(data){});};this.hasLock=function(resource){if(this.tokens[resource]){return true;}
return false;};this.removeLockByResource=function(resource){if(this.tokens[resource]){delete this.tokens[resource];}};this._addError=function(resource,error,data){var errid=dfx.getUniqueId();error.data=data;error.resource=resource;this.errors[errid]=error;return errid;};this.getError=function(id,noRemove){var err=false;if(this.errors[id]){err=this.errors[id];if(noRemove!==true){delete this.errors[id];}}
return err;};this.hasErrors=function(){for(var e in this.errors){if(this.errors.hasOwnProperty(e)===true){return true;}}
return false;};this.startLockUpdate=function(){this.updating=true;autoUpdateInt=setInterval(function(){self.updateAll();},(this.lockUpdateInterval*1000));};this.init();};var MessageDialog=new function()
{var modalDialog=null;this.msgid=null;this.prepare=function(id,content,type,callback,title){this.msgid=id;title=title||this.getTypeTitle(type);Widget.prototype.includeWidgets('ModalDialog',function(){var msg=document.createElement('div');dfx.addClass(msg,'MessageDialog');dfx.addClass(msg,'MessageDialog-'+type);modalDialog=Widget.prototype.createWidget('MessageDialog-'+id,'ModalDialog');if(typeof content==='string'){dfx.setHtml(msg,content);}else{msg.appendChild(content);}
modalDialog.addOnCloseCallback(function(){WidgetStore.setData('activeMessage','');});modalDialog.setContent(msg);modalDialog.setTitle(title);modalDialog.create(function(){callback.call(this);});});};this.show=function(){modalDialog.open();WidgetStore.setData('activeMessage',this.msgid);};this.addButton=function(title,callback){modalDialog.addButton(title,function(button){button.addClickEvent(callback);});};this.close=function(){modalDialog.close();};this.hideCloseButton=function(){modalDialog.hideCloseButton();};this.getTypeTitle=function(type){var title='';switch(type){case'error':title='Error';break;case'warning':title='Warning';break;case'notice':title='Notice';break;default:title='';break;}
return title;};};function RuleTypeEmailWidgetType(id,value,allowEmpty)
{this.widgetType='RuleTypeEmailWidgetType';this.value=value;this.widgetid='';this.allowEmpty=allowEmpty;}
RuleTypeEmailWidgetType.prototype={reset:function()
{this.simpleResult=false;this.widget=null;this.value=null;this.server=true;this.client=true;this.errors=[];},setValue:function(val)
{this.value=val;},setWidgetid:function(wid)
{this.widgetid=wid;},setAllowEmpty:function(op)
{if(typeof op==='string'){var opStr=op.toLowerCase();if(opStr==='true'){this.allowEmpty=true;}else if(opStr==='false'){this.allowEmpty=false;}}else{this.allowEmpty=op;}},validate:function()
{var local='\d0-9a-zA-Z-_+';var localMiddle=local+'\.\\w';var normalPtn='^(['+local+'](['+localMiddle+'\']*['+local+']){0,1}@(((?:[\da-zA-Z]|[\da-zA-Z][\'-.\\w]*[\da-zA-Z])\.)+[a-zA-Z]{2,7}))$';var disNamePtn='^[a-zA-Z]+(([ \'\,\.\-][ a-zA-Z])?[a-zA-Z]*)*\s+<(['+local+'](['+localMiddle+']*['+local+']){0,1}@(((?:[\da-zA-Z]|[\da-zA-Z][\'-\w]*[\da-zA-Z])\.)+[a-zA-Z]{2,7}))>$';var normalRe=new RegExp(normalPtn,"g");var disNameRe=new RegExp(disNamePtn,"g");if(this.allowEmpty===true&&this.value.length===0){return true;}else if(disNameRe.test(this.value)===true){return true;}else if(normalRe.test(this.value)===true){return true;}else{this.errors=[];this.errors.push('Email address is not valid.');return false;}},getErrors:function()
{return this.errors;}};function RuleTypeIntegerWidgetType(id,value,intOnly)
{this.value=null;this.intOnly=false;this.widgetid='';if(typeof intOnly!=='undefined'&&intOnly!==null){this.intOnly=intOnly;}
if(typeof value!=='undefined'&&value!==null){this.value=value;}}
RuleTypeIntegerWidgetType.prototype={reset:function()
{this.simpleResult=false;this.widget=null;this.value=null;this.server=true;this.client=true;this.errors=[];},setValue:function(val)
{this.value=val;},setWidgetid:function(wid)
{this.widgetid=wid;},validate:function()
{if(this.intOnly===true){var checkVal=this.value;var val=Number(this.value);var decimalCheck=(/\.0+$|\.$/.test(checkVal));checkVal=parseInt(val,10);if(val!==checkVal||decimalCheck===true){return false;}}
return true;}};function RuleTypeLengthWidgetType(id,value,operator,length)
{this.widgetType='RuleTypeLengthWidgetType';this.value=value;this.length=null;this.operator=null;this.plain=false;this.widgetid='';if(typeof length!=='undefined'&&length!==null){this.setLength(length);}
if(typeof operator!=='undefined'&&operator!==null){this.setOperator(operator);}}
RuleTypeLengthWidgetType.prototype={reset:function()
{this.simpleResult=false;this.widget=null;this.value=null;this.server=true;this.client=true;this.errors=[];},setValue:function(val)
{this.value=val;},setWidgetid:function(wid)
{this.widgetid=wid;},setLength:function(len)
{this.length=len;},setPlain:function(plain)
{this.plain=plain;},setOperator:function(op)
{this.operator=op;switch(op){case'==':this.opDesc='equal to';break;case'!=':this.opDesc='no equal to';break;case'>':this.opDesc='larger than';break;case'<':this.opDesc='smaller than';break;case'>=':this.opDesc='equal or larger than';break;case'<=':this.opDesc='equal or smaller than';break;default:this.opDesc='';break;}},validate:function()
{this.errors=[];var result=false;var length=this.value.length;if(this.plain===true){length=this.value;}
var evalStr='result = ('+length+' '+this.operator+' '+this.length+');';eval(evalStr);if(result===true){return true;}else{var msg='The length of "'+this.value+'" is not '+this.opDesc+' '+this.length+'.';this.errors.push(msg);return false;}},getErrors:function()
{return this.errors;}};function RuleTypeMagnitudeWidgetType(id,value,min,max)
{this.value=null;this.min=null;this.max=null;this.widgetid='';if(typeof value!=='undefined'&&value!==null){this.value=value;}
if(typeof min!=='undefined'&&min!==null&&min!==''){this.min=Number(min);}
if(typeof max!=='undefined'&&max!==null&&max!==''){this.max=Number(max);}}
RuleTypeMagnitudeWidgetType.prototype={reset:function()
{this.simpleResult=false;this.widget=null;this.value=null;this.server=true;this.client=true;this.errors=[];},setValue:function(val)
{this.value=val;},setWidgetid:function(wid)
{this.widgetid=wid;},validate:function()
{var val=Number(this.value);if(this.min===null&&this.max!==null){if(val>this.max){return false;}}
if(this.min!==null&&this.max===null){if(val<this.min){return false;}}
if(this.min!==null&&this.max!==null){if(this.min>=this.max){return true;}
if(val<this.min||val>this.max){return false;}}
return true;}};function RuleTypeNumberWidgetType(id,value)
{this.value=null;this.widgetid='';if(typeof value!=='undefined'&&value!==null){this.value=value;}}
RuleTypeNumberWidgetType.prototype={reset:function()
{this.simpleResult=false;this.widget=null;this.value=null;this.server=true;this.client=true;this.errors=[];},setWidgetid:function(wid)
{this.widgetid=wid;},setValue:function(val)
{this.value=val;},validate:function()
{var val=Number(this.value);if(isNaN(val)===true){return false;}
var checkVal=parseInt(this.value,10);if(val===checkVal){return true;}
checkVal=parseFloat(this.value);if(val===checkVal){return true;}
return false;},getErrors:function()
{return this.errors;}};function RuleTypePasswordWidgetType(id,value)
{this.widgetType='RuleTypePasswordWidgetType';this.value=value;this.desc=document.getElementById(id+'-desc');this.color=document.getElementById(id+'-color');this.matched=document.getElementById(id+'-matched');this.widgetid='';this.currentRating=0;this.width=140;this.stepWidth=Math.round(this.width/5);}
RuleTypePasswordWidgetType.prototype={setValue:function(val)
{this.value=val;},validate:function()
{return true;},setWidgetid:function(wid)
{this.widgetid=wid;},update:function()
{var result=this.getPasswdRating(this.value);if(result!==this.currentRating){this.updateRatingBar(result);this.currentRating=result;}},getPasswdRating:function(val)
{var score=1;if(val.length>=6){score++;}
if(val.match(/[a-z]+/)!==null&&val.match(/[A-Z]+/)!==null&&val.match(/[0-9]+/)!==null){score++;}
if(val.match(/[ ]+/)!==null){score++;}
if(val.match(/[!@#$%^&*\?_~\-\(\)]+/)!==null){score++;}
if(val.length>=12){score++;}
return score;},updateRatingBar:function(rating)
{var str='';var classN='';var width=this.width;var color='';switch(rating){case 1:str='Weak';color='#ff0000';width=this.stepWidth;break;case 2:str='Better';color='#ff5f5f';width=(this.stepWidth*2);break;case 3:str='Medium';color='#56e500';width=(this.stepWidth*3);break;case 4:str='Strong';color='#4dcd00';width=(this.stepWidth*4);break;case 5:str='Very strong';color='#399800';break;default:str='Very weak';color='#cccccc';break;}
this.desc.innerHTML=str;this.color.style.width=width+'px';this.color.style.backgroundColor=color;}};function RuleTypePositiveWidgetType(id,value,positiveOnly)
{this.value=null;this.positiveOnly=false;this.widgetid='';if(typeof positiveOnly!=='undefined'&&positiveOnly!==null){this.positiveOnly=positiveOnly;}
if(typeof value!=='undefined'&&value!==null){this.value=value;}}
RuleTypePositiveWidgetType.prototype={reset:function()
{this.simpleResult=false;this.widget=null;this.value=null;this.server=true;this.client=true;this.errors=[];},setWidgetid:function(wid)
{this.widgetid=wid;},setValue:function(val)
{this.value=val;},validate:function()
{if(this.positiveOnly===true){var val=Number(this.value);if(val<0){return false;}}
return true;}};function UnregisteredDomainWidgetType(type,firstLogin,urls,superUser,domain,pInfo)
{var self=this;this.type=type||null;if(this.type==='login'){this.initLogin();}else if(this.type==='domain'){this.firstLogin=firstLogin||false;this.urls=urls||[];this.superUser=superUser||false;this.domain=domain||'';this.pInfo=pInfo||{};this.initDomain();}else if(this.type==='network'){this.superUser=superUser||false;this.initNetworkConfiguration();}}
UnregisteredDomainWidgetType.prototype={initLogin:function()
{dfx.getId('LoginUsername').focus();dfx.setHtml(dfx.getId('LoginError'),'&nbsp;');},submit:function()
{var self=this;var url=(new String(document.location)).valueOf();this.clearError();var username=dfx.getId('LoginUsername').value;var authQryStr={auth_action:'login',step:'req_chal',username:username};dfx.get(dfx.addToQueryString(url,authQryStr),null,function(data){var challenge=data.getElementsByTagName('challenge').item(0).firstChild.nodeValue;if(challenge!=='0'){var password=dfx.getId('LoginPassword').value;var hashedPassword=hex_md5(hex_hmac_sha1(challenge,hex_sha1(password)));var browserInfo=dfx.browser();authQryStr.step='req_auth';authQryStr.password=hashedPassword;authQryStr.bt=browserInfo.type;authQryStr.bv=browserInfo.version;dfx.get(dfx.addToQueryString(url,authQryStr),null,function(data){var login=data.getElementsByTagName('login');var status=login.item(0).firstChild.nodeValue;if(status==='0'){var errorMsg=data.getElementsByTagName('error').item(0).firstChild.nodeValue;self.displayError(errorMsg);return false;}else{window.location=window.location;return true;}});}else{var errorMsg=data.getElementsByTagName('error').item(0).firstChild.nodeValue;self.displayError(errorMsg);return false;}});return false;},clearError:function()
{dfx.setHtml(dfx.getId('LoginError'),'&nbsp;');},displayError:function(msg)
{dfx.setHtml(dfx.getId('LoginError'),msg);},initDomain:function()
{var self=this;if(this.superUser===true){var selectbox=dfx.getId('registerDomainToProject');var button=dfx.getId('UnregisteredDomainWidgetType-register');if(selectbox){dfx.swapClass(button,'ButtonWidgetType-black','ButtonWidgetType-black-disabled');this.buttonDisabled=true;dfx.addEvent(selectbox,'change',function(){if(selectbox.value==='0'){dfx.swapClass(button,'ButtonWidgetType-black','ButtonWidgetType-black-disabled');self.buttonDisabled=true;}else{dfx.swapClass(button,'ButtonWidgetType-black-disabled','ButtonWidgetType-black');self.buttonDisabled=false;}});}
dfx.addEvent(dfx.getId('UnregisteredDomainWidgetType-register_content'),'click',function(e){if(self.buttonDisabled&&self.buttonDisabled===true){return;}
var text=dfx.getClass('UnregisteredDomainWidgetType-middle-text',document.body)[0];text.innerHTML=text.innerHTML+'<br /><br />'+self.domain+' will be added to the System. Please wait for a moment.';var first='false';if(self.firstLogin===true){first='true';}
var url=(new String(document.location)).valueOf();var regQryStr={action:'registerDomain',domain:escape(self.domain),firstLogin:first};if(selectbox){regQryStr.projectid=selectbox.value;}
dfx.get(dfx.addToQueryString(url,regQryStr),{},function(res){if(res==='success'){text.innerHTML=text.innerHTML+'<br /><br />Congratulations! The new domain has been successfully installed. The page will be automatically redirected.';dfx.hideElement(dfx.getId('UnregisteredDomainWidgetType-register'));setTimeout(function(){window.location=self.domain+'/_edit';},1000);}else if(res==='failure'){text.innerHTML='Error occurred during adding a new domain. Please contact Squiz for further instruction.';}});});}
dfx.setStyle(dfx.getClass('EditingAutoSave-middle',document.body)[0],'height','100%');dfx.foreach(this.pInfo,function(pid){dfx.foreach(self.pInfo[pid],function(idx){dfx.addEvent(dfx.getId('url-'+pid+'-'+idx+'_content'),'click',function(e){window.location=self.pInfo[pid][idx]+'/_edit';});});});},initNetworkConfiguration:function()
{var self=this;var middle=dfx.getClass('EditingAutoSave-middle',dfx.getId('EditingAutoSave'))[0]
dfx.setStyle(middle,'height','100%');if(this.superUser===true){dfx.addEvent(dfx.getId('UnregisteredDomainWidgetType-confirm_content'),'click',function(e){var re=/\d{1,3}/;var values={};values.hostname=dfx.getId('hostname').value;if(dfx.trim(values.hostname)===''){alert('Please type the hostname');return;}
values.mailname=dfx.getId('mailname').value;if(dfx.trim(values.mailname)===''){alert('Please type the mailname');return;}
var types=['ip','netmask','gateway','broadcast','nameserver1','nameserver2'];var typesLn=types.length;for(var i=0;i<typesLn;i++){values[types[i]]=[];for(var j=0;j<4;j++){var val=dfx.getId(types[i]+j).value;if(re.test(val)===false){alert('Please enter the valid value in '+types[i]);return;}
values[types[i]].push(val);}}
var params={action:'networkConfiguration',values:dfx.jsonEncode(values)};dfx.hideElement(dfx.getClass('UnregisteredDomainWidgetType-formTable',dfx.getId('EditingAutoSave'))[0]);dfx.post(window.location.href,params,function(res){if(res==='success'){dfx.hideElement(dfx.getId('UnregisteredDomainWidgetType-confirm'));var middle=dfx.getClass('UnregisteredDomainWidgetType-middle',dfx.getId('EditingAutoSave'))[0]
var msg=document.createElement('div');msg.id='savingMessage';dfx.setHtml(msg,'Please wait while the new network settings are applied');dfx.addClass(msg,'UnregisteredDomainWidgetType-middle-text');dfx.setStyle(msg,'margin-left','93px');var progress=document.createElement('div');progress.id='savingProgress';var content='<div id="networkStatus" class="ajax-loader" style="background-image: url('+window.location.href.replace('/_edit','')+'/__web/Skins/defaultSkin/HTMLCanvasWidget/black_bg.png)">';content+='<img class="networkImage" src="'+window.location.href.replace('/_edit','')+'/__web/Skins/defaultSkin/HTMLCanvasWidget/black.gif" style="margin: 42px 0pt 0pt 42px;"/>';content+='</div>';content+='<div id="_disabledDiv_loaderMsg" class="msg"/>';dfx.setHtml(progress,content);dfx.addClass(progress,'UnregisteredDomainWidgetType-middle-text');var netStatus=dfx.getClass('ajax-loader',progress)[0];var image=dfx.getClass('networkImage',progress)[0];dfx.setStyle(middle,'height','150px');dfx.setStyle(netStatus,'margin-top','-28px');dfx.setStyle(netStatus,'top','0px');var iid=setInterval(function(){var params={action:'networkConfigDone'};dfx.post(window.location.href,params,function(res){if(res==='true'){dfx.setHtml(dfx.getId('savingMessage'),'The new network settings were applied successfully');dfx.setStyle(dfx.getId('savingMessage'),'margin-left','116px');var content='<div id="_disabledDiv_loaderImg" class="ajax-loader" style="margin-top: -22px; top: 0px; padding-bottom: 0px; background-image: url('+window.location.href.replace('/_edit','')+'/__web/Skins/defaultSkin/HTMLCanvasWidget/save_success.png)">';content+='&nbsp;';content+='</div>';content+='<div id="_disabledDiv_loaderMsg" class="msg"/>';dfx.setHtml(progress,content);clearInterval(iid);}else if(res==='failed'){dfx.setHtml(dfx.getId('savingMessage'),'The new network configuration has been failed. The old configuration has been recovered.');dfx.setStyle(dfx.getId('savingMessage'),'width','335px');dfx.setStyle(dfx.getId('savingProgress'),'margin-top','0px');var content='<div id="_disabledDiv_loaderImg" class="ajax-loader" style="margin-top: -22px; top: 0px; padding-bottom: 0px; background-image: url('+window.location.href.replace('/_edit','')+'/__web/Skins/defaultSkin/HTMLCanvasWidget/connection_fail.png)">';content+='&nbsp;';content+='</div>';content+='<div id="_disabledDiv_loaderMsg" class="msg"/>';dfx.setHtml(progress,content);clearInterval(iid);}});},10000);middle.appendChild(msg);middle.appendChild(progress);}else if(res==='failed'){alert('The new network settings caused the system to stop responding. The previous settings have been restored.');}else{res=dfx.jsonDecode(res);if(dfx.isset(res.result)===true&&res.result==='invalid'){alert(res.field+' is not a valid IP address.');}}});});}}};function AbstractAssetPickerViewWidgetType(id,picker)
{Widget.call(this,id);this.picker=picker;this.rootAssetid=null;this.currentAssetid=null;this.assetSelectedActions=[];this.assetDblClickedActions=[];this.loaderActions=[];this.lineageUpdatedActions=[];this.selectedAssets=[];this.lineage=[];this.switchOffActions=[];this.active=false;}
AbstractAssetPickerViewWidgetType.prototype={setInitialRoots:function(roots){},setRoot:function(assetid,setCurrent,callback)
{this.lineage=[assetid];this.rootAssetid=assetid;callback.call(this);},setCurrentAsset:function(assetid,clear,callback){},setLineage:function(lineage,selectedAssets){},setSelectedAssets:function(assets)
{this.selectedAssets=assets;},fireAssetSelected:function(assetid)
{var aln=this.assetSelectedActions.length;for(var i=0;i<aln;i++){this.assetSelectedActions[i].call(this,assetid);}},fireAssetDoubleClicked:function(assetid)
{var aln=this.assetDblClickedActions.length;for(var i=0;i<aln;i++){this.assetDblClickedActions[i].call(this,assetid);}},addAssetSelectedAction:function(callback)
{this.assetSelectedActions.push(callback);},addAssetDoubleClickedAction:function(callback)
{this.assetDblClickedActions.push(callback);},startLoading:function()
{this.fireLoadingActions(true);},endLoading:function()
{this.fireLoadingActions(false);},fireLoadingActions:function(started)
{var ln=this.loaderActions.length;for(var i=0;i<ln;i++){this.loaderActions[i].call(this,started);}},addLoaderAction:function(fn)
{this.loaderActions.push(fn);},addLinageUpdatedAction:function(fn)
{this.lineageUpdatedActions.push(fn);},fireLineageUpdatedActions:function()
{var ln=this.lineageUpdatedActions.length;for(var i=0;i<ln;i++){this.lineageUpdatedActions[i].call(this,this.lineage.concat([]),this.selectedAssets);}},getSelectedAssets:function()
{return this.selectedAssets;},isActive:function()
{return this.active;},addSwitchOffAction:function(callback)
{this.switchOffActions.push(callback);},fireSwitchOffActions:function()
{var ln=this.switchOffActions.length;for(var i=0;i<ln;i++){this.switchOffActions[i].call(this);}}};dfx.inherits('AbstractAssetPickerView','Widget');function AbstractAttributeEditorWidgetType(id)
{this.id=id;this.attributes=[];this.active=false;this.attrType='';}
AbstractAttributeEditorWidgetType.prototype={load:function(callback)
{callback.call(this);},init:function()
{this.attributes=[];},addAttribute:function(attrid,assetid,elem)
{var attribute=this.getAttribute(attrid,assetid);if(attribute!==null){attribute.addNode(elem);}else{attribute=new Attribute(attrid,assetid,dfx.getHtml(elem),elem,this.attrType);this.attributes.push(attribute);}
return attribute;},getAttribute:function(attrid,assetid)
{var atrs=this.attributes;var l=atrs.length;for(var i=0;i<l;i++){if(parseInt(atrs[i].assetid)===parseInt(assetid)&&atrs[i].attrid===attrid){return atrs[i];}}
return null;},isActive:function()
{return this.active;},activate:function(data)
{this.active=true;},deactivate:function()
{this.active=false;},remove:function(){},isModified:function()
{var ln=this.attributes.length;for(var i=0;i<ln;i++){if(this.attributes[i].isModified()===true){return true;}}},getModifiedValues:function()
{var values=[];var ln=this.attributes.length;for(var i=0;i<ln;i++){var attr=this.attributes[i];if(attr.isModified()===true){values.push({attrid:attr.attrid,assetid:attr.assetid,value:this.getAttributeValue(attr)});}}
return values;},getModifiedAttributes:function()
{var attributes=[];var ln=this.attributes.length;for(var i=0;i<ln;i++){var attr=this.attributes[i];if(attr.isModified()===true){attributes.push(attr);}}
return attributes;},getAttributeValue:function(attr)
{return dfx.getHtml(attr.nodes[0]);},isAttributeModified:function(attrid,assetid)
{var attr=this.getAttribute(attrid,assetid);if(attr){return attr.isModified();}
return false;},revertAttributeValue:function(attrid,assetid)
{var attr=this.getAttribute(attrid,assetid);if(attr){var initVal=attr.getInitialValue();attr.setValue(initVal);var nl=attr.nodes.length;for(var i=0;i<nl;i++){dfx.setHtml(attr.nodes[i],initVal);}}},setAttributeValue:function(attrid,assetid,value)
{var attr=this.getAttribute(attrid,assetid);if(attr){dfx.foreach(attr.nodes,function(i){if(attr.nodes[i]){dfx.setHtml(attr.nodes[i],value);attr.setValue(value);}});}}};dfx.inherits('AbstractAttributeEditor','Widget');function Attribute(attrid,assetid,value,el,type)
{this.attrid=attrid;this.assetid=assetid;this.value=value;this.initialValue=value;this.prevValue=value;this.nodes=[el];this.type=type;}
Attribute.prototype={addNode:function(node)
{this.nodes.push(node);},setValue:function(val)
{this.value=val;},getPrevValue:function()
{return this.prevValue;},getValue:function()
{return this.value;},getInitialValue:function()
{return this.initialValue;},setInitialValue:function(val)
{this.initialValue=val;},isModified:function()
{if(this.initialValue!==this.value){return true;}
return false;},updatePrevValue:function()
{this.prevValue=this.value;}};function AbstractContainerWidgetType(id)
{Widget.call(this,id);this.children=[];}
AbstractContainerWidgetType.prototype={add:function(id)
{this.children.push(id);},setReadOnly:function(readOnly)
{Widget.prototype.setReadOnly.call(this,readOnly);var cln=this.children.length;for(var i=0;i<cln;i++){var childWidget=WidgetStore.get(this.children[i]);if(childWidget){childWidget.setReadOnly(readOnly);}}},addEvents:function()
{Widget.prototype.addEvents.call(this);var len=this.children.length;for(var i=0;i<len;i++){this.children[i].addEvents();}
var el=dfx.getId(this.id);var self=this;var evs=this._events;var evLen=evs.length;for(i=0;i<evLen;i++){this._setEvent(el,evs[i].type,evs[i].action);}}};dfx.inherits('AbstractContainer','Widget');function AbstractEditingToolbarIconWidgetType(id)
{Widget.call(this,id);this.addHoverEvent();this.state='inactive';}
AbstractEditingToolbarIconWidgetType.prototype={addHoverEvent:function()
{var self=this;var wrapper=dfx.getId(this.id);dfx.hover(dfx.getId(this.id),function(){dfx.addClass(wrapper,'ToolbarIcon-wrapper-hover');},function(){dfx.removeClass(wrapper,'ToolbarIcon-wrapper-hover');});},setTitle:function(title)
{var wrapper=dfx.getId(this.id);if(wrapper){dfx.attr(wrapper,'title',title);}},toggleState:function(state)
{if(this.state===state){return;}
var button=dfx.getId(this.id+'-icon');var len=button.childNodes.length;var img=null;for(var i=0;i<len;i++){if(button.childNodes[i].nodeName==='IMG'){img=button.childNodes[i];}}
if(img===null){return;}
var wrapper=dfx.getId(this.id);if(state==='active'){this.state='active';dfx.addClass(wrapper,'ToolbarIcon-wrapper-active');}else if(state==='inactive'){this.state='inactive';dfx.removeClass(wrapper,'ToolbarIcon-wrapper-active');}}};dfx.inherits('AbstractEditingToolbarIcon','Widget');function AbstractSplashScreenWidgetType(id,dates)
{Widget.call(this,id);this.dates=dates;this.addDateClickEvent();this.addImageThumbMouseEvent();this.thumbDisplayed=false;}
AbstractSplashScreenWidgetType.prototype={addDateClickEvent:function()
{var self=this;var len=this.dates.length;for(var i=0;i<len;i++){(function(index){var dateStr=self.dates[index];var dateid=dateStr.toLowerCase().replace(/ /,'_').replace(/ /,'_');var dateDiv=dfx.getId(self.id+'-dateDiv-'+dateid);var dateWpDiv=dfx.getId(self.id+'-dateLogsWrapper-'+dateid);dfx.addEvent(dateDiv,'click',function(){if(dfx.hasClass(dateWpDiv,'SplashScreenLogsShown')===true){dfx.swapClass(dateWpDiv,'SplashScreenLogsShown','SplashScreenLogsHidden');dfx.swapClass(dateDiv,'SplashScreenDateDivExpanded','SplashScreenDateDivCollapsed');}else{dfx.swapClass(dateWpDiv,'SplashScreenLogsHidden','SplashScreenLogsShown');dfx.swapClass(dateDiv,'SplashScreenDateDivCollapsed','SplashScreenDateDivExpanded');}});})(i);}},addImageThumbMouseEvent:function()
{var self=this;var thumbs=dfx.getClass('SplashScreenThumb');var len=thumbs.length;for(var i=0;i<len;i++){(function(index){dfx.addEvent(thumbs[index],'mouseover',function(evt){var viewer=dfx.getId('SplashScreenThumbViewer');if(viewer===null){dfx.displayThumbViewer(thumbs[index],evt,self);}else if(dfx.getStyle(dfx.getId('SplashScreenThumbViewer'),'display')==='none'){dfx.displayThumbViewer(thumbs[index],evt,self);}
dfx.addClass(dfx.getId('SplashScreenThumbViewer-eventMask'),'SplashScreenThumbViewerEventMask');});dfx.addEvent(thumbs[index],'mouseout',function(evt){});})(i);}}};dfx.inherits('AbstractSplashScreen','Widget');function AccountManagerWizardWidgetType(id,settings)
{Widget.call(this,id);this.widgetType='AccountManagerWizard';this.id=id;this.settings=settings;this.createState=WidgetStore.get(this.id+'-settings:createState');this.verifyEmail=WidgetStore.get(this.id+'-settings:verifyEmail');this.init();}
AccountManagerWizardWidgetType.prototype={init:function()
{var self=this;if(this.createState){var section=dfx.getId(this.id+'-section-am_controls-items');var items=dfx.getClass('SectionWidgetType-section-item',section);var verifyDiv=items[1];this.createState.addToggleOffEvent(function(){dfx.showElement(verifyDiv);if(self.createState.toggleDisabled===false){self.verifyEmail.enable();}});this.createState.addToggleOnEvent(function(){dfx.hideElement(verifyDiv);self.verifyEmail.setValue(false);self.verifyEmail.disable();});}
this.setValue(this.settings);},getValue:function()
{var result={createState:this.createState.getValue(),verifyEmail:this.verifyEmail.getValue()};return result;},setValue:function(settings)
{this.createState.setValue(settings.createState);this.verifyEmail.setValue(settings.verifyEmail);},disable:function()
{this.createState.disable();this.verifyEmail.disable();},enable:function()
{this.createState.enable();this.verifyEmail.enable();}};dfx.inherits('AccountManagerWizard','Widget');function AdminScreensAccessWidgetType(id,privileges,permissions)
{Widget.call(this,id);this.widgetType='AdminScreensAccess';this.privileges=privileges;this.permissions=permissions;this.unsavedPrv={};this.tmpDeleted={};this.initPrv={};this.expanded={};this.postWidget=null;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen('securityAdminScrnAccess');this.assetPicker.addProjectFolderWhiteList('securityAdminScrnAccess','Users');this.assetPicker.setHideSite('securityAdminScrnAccess');this.assetPicker.setUniqueSelect(false);this.init();}
AdminScreensAccessWidgetType.prototype={init:function()
{var self=this;this.addInfoboxEvent();this.addDeleteButtonEvent();this.addAddGroupEvent();this.setSaveButton(function(){self.saveSettings();},function(){self.revert();});},saveSettings:function()
{var self=this;var params={screen:'SecurityAdminScreenWidget',type:'save',newData:dfx.jsonEncode(this.unsavedPrv),oldData:dfx.jsonEncode(this.initPrv)};this.displayDisabledDiv(true);this.postWidget.processScreen(params,function(){self.setModified(false);self.reset();self.removeDisabledDiv(null,true);},true);},reset:function()
{for(var prvid in this.tmpDeleted){for(var gid in this.tmpDeleted[prvid]){this.deleteRow(prvid,gid);}}
this.initPrv=dfx.clone(this.unsavedPrv);this.tmpDeleted={};this._updateCount();},revert:function()
{var self=this;var sas=WidgetStore.get('SecurityAdminScreen');this.displayDisabledDiv(true);sas.loadAdminScreensAccess(function(){for(var prvid in self.expanded){self.expand(prvid);}
this.adminScreensAccessWdgt.expanded=dfx.clone(self.expanded);self.removeDisabledDiv();});},addInfoboxEvent:function()
{var self=this;var items=dfx.getClass('InfoBoxWidgetType-Grey-item');dfx.addEvent(items,'click',function(e){dfx.removeClass(items,'selected');var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'InfoBoxWidgetType-Grey-item')===false){var parent=dfx.getParents(target,'.InfoBoxWidgetType-Grey-item');target=parent[0];}
var item=dfx.getClass('PermName',target)[0];var prvid=item.id.replace('item-','');var wrap=dfx.getId(self.id+'-wrap-'+prvid);dfx.addClass(target,'selected');dfx.hideElement(dfx.getClass('ScreenContainer'));dfx.showElement(wrap);});var pLen=this.privileges.length;for(var i=0;i<pLen;i++){var item=dfx.getId('item-'+this.privileges[i]);if(item){dfx.trigger(item,'click');break;}}},addDeleteButtonEvent:function()
{var self=this;var permLen=this.permissions.length;for(var i=0;i<permLen;i++){var prvid=this.permissions[i].privilegeid;var groupid=this.permissions[i].userid;var id=this.id+'-delete-'+prvid+'-'+groupid;this.removeGroup(id);var nouserTd=dfx.getId(this.id+'-groupTable-'+prvid+'-row-nouser');dfx.hideElement(nouserTd);if(dfx.isset(this.unsavedPrv[prvid])===false){this.unsavedPrv[prvid]={};this.initPrv[prvid]={};}
this.unsavedPrv[prvid][groupid]=1;this.initPrv[prvid][groupid]=1;}},addAddGroupEvent:function()
{var self=this;var prvsLen=this.privileges.length;for(var j=0;j<prvsLen;j++){var addId=this.id+'-addGroup-'+this.privileges[j];var btnWdgt=WidgetStore.get(addId);this.addGroup(btnWdgt.id);}},addGroup:function(btnid)
{var self=this;var btnWdgt=WidgetStore.get(btnid);btnWdgt.addClickEvent(function(e){self._toggleAllAddNewButtons(false);var prvid=btnWdgt.id.replace(/AdminScreensAccess-addGroup-/,'');self.assetPicker.addAssetsSelectedAction(function(users){var len=users.length;for(var i=0;i<len;i++){self._addGroup(prvid,[users[i]]);}
self.setModified(true);},true);self.displayDisabledDiv(true);self.assetPicker.init('securityAdminScrnAccess',function(){self.assetPicker.dialog.open();});self.assetPicker.addCloseAction(function(){self._toggleAllAddNewButtons(true);self.removeDisabledDiv(null,true);});});},_toggleAllAddNewButtons:function(enable)
{var c='ButtonWidgetType';if(enable===true){c='ButtonWidgetType-disabled';}
var container=dfx.getId('AdminScreensAccess-wrap');var buttons=dfx.getClass(c,container);var len=buttons.length;for(var i=0;i<len;i++){this._toggleAddNewButton(buttons[i].id,enable);}},_toggleAddNewButton:function(buttonid,enable)
{var button=WidgetStore.get(buttonid);if(button){if(enable===true){button.enable();}else{button.disable();}}},_addGroup:function(prvid,userid)
{var self=this;if(dfx.isset(this.unsavedPrv[prvid])===true&&dfx.isset(this.unsavedPrv[prvid][userid])===true){return;}
var params={screen:'SecurityAdminScreenWidget',type:'getGroupInfo',groupid:dfx.jsonEncode(userid)};this.postWidget.getScreenData(params,function(data){if(data!==''){self.addRow(prvid,dfx.jsonDecode(data));}});},addRow:function(prvid,data)
{var btnId=this.id+'-delete-'+prvid+'-'+data.id;var html='<img src="'+data.url+'" />';html+='<span class="groupName">'+data.name+'</span>';html+='<div id="'+btnId+'" prvid="'+prvid+'" ';html+='gid="'+data.id+'" class="deleteIcon" ';html+='type="'+data.typeid+'">&nbsp;</div>';var tid=this.id+'-groupTable-'+prvid;var table=WidgetStore.get(tid);var row=table.createRowAsElement([html],['groupName'],data.id);table.addRow(row);this.removeGroup(btnId);if(dfx.isset(this.unsavedPrv[prvid])===false){this.unsavedPrv[prvid]={};}
this.unsavedPrv[prvid][data.id]=1;},deleteRow:function(prvid,gid)
{var tid=this.id+'-groupTable-'+prvid;var table=WidgetStore.get(tid);var row=dfx.getId(tid+'-row-'+gid);table.deleteRow(row);var summary=dfx.getId('summary-'+prvid);var total=parseInt(dfx.attr(summary,'total'),10);if(total===0){var nouserTd=dfx.getId(this.id+'-groupTable-'+prvid+'-row-nouser');dfx.showElement(nouserTd);dfx.setStyle(nouserTd,'display','table-row');}},removeGroup:function(gid)
{var self=this;var deleteBtn=dfx.getId(gid);dfx.addEvent(deleteBtn,'click',function(){var prvid=dfx.attr(this,'prvid');var group=dfx.attr(this,'gid');var type=dfx.attr(this,'type');var tid=self.id+'-groupTable-'+prvid;var row=dfx.getId(tid+'-row-'+group);var td=row.getElementsByTagName("td")[0];if(dfx.hasClass(this,'deleteIcon-recover')===true){if(dfx.isset(self.unsavedPrv[prvid])===false){self.unsavedPrv[prvid]={};}
self.unsavedPrv[prvid][group]=1;delete self.tmpDeleted[prvid][group];dfx.swapClass(this,'deleteIcon-recover','deleteIcon');dfx.swapClass(td,'TableWidgetType-cell-groupName-recover','TableWidgetType-cell-groupName');return;}
if(dfx.isset(self.unsavedPrv[prvid][group])===true){delete self.unsavedPrv[prvid][group];if(dfx.isset(self.tmpDeleted[prvid])===false){self.tmpDeleted[prvid]={};}
self.tmpDeleted[prvid][group]=1;}
dfx.swapClass(this,'deleteIcon','deleteIcon-recover');dfx.swapClass(td,'TableWidgetType-cell-groupName','TableWidgetType-cell-groupName-recover');self.setModified(true);});},_updateCount:function()
{for(var prvid in this.initPrv){var c=0;for(var gid in this.initPrv[prvid]){c++;}
dfx.setHtml(dfx.getId('item-'+prvid+'-count'),'('+c+')');}},setReadOnly:function(readOnly)
{var wrap=dfx.getId(this.id+'-wrap');if(readOnly===true){this.disableSaveButton();dfx.swapClass(wrap,'notReadOnly','readOnly');}else{this.setModified(false);dfx.swapClass(wrap,'readOnly','notReadOnly');}},forceEdit:function()
{var wrap=dfx.getId(this.id+'-wrap');this.setModified(false);dfx.swapClass(wrap,'readOnly','notReadOnly');var len=this.privileges.length;for(var i=0;i<len;i++){this.showButton(this.privileges[i]);}},showButton:function(prvid)
{var id=this.id+'-addGroup-'+prvid;var button=WidgetStore.get(id);button.setReadOnly(false);}};dfx.inherits('AdminScreensAccess','Widget');function AssetLineageWidgetType(id,picker)
{Widget.call(this,id);this.widgetType='AssetLineage';this.assets=[];this.list=null;this.picker=picker||null;this.hideProject=true;this.itemClickedEvents=[];}
AssetLineageWidgetType.prototype={create:function(callback)
{var id=this.id;var c=this.getClass();var main=document.createElement('div');main.id=id;dfx.addClass(main,c+'-lineageWrap');var ol=document.createElement('ol');ol.id=id+'-list';dfx.addClass(ol,c+'-list');main.appendChild(ol);this.list=ol;var total=this.getTotalAssets();var index=0;var aln=this.assets.length;for(var i=0;i<aln;i++){ol.appendChild(this._createItem(this.assets[i],i,total));}
callback.call(this,main);},setHideProject:function(hide)
{this.hideProject=hide;},_createItem:function(assetid,index,total)
{var c=this.getClass()+'-item';var li=document.createElement('li');dfx.addClass(li,c);li.id='asset_'+assetid;dfx.addClass(li,'asset_'+assetid);if(index===0){dfx.addClass(li,'first');if(this.hideProject===true){dfx.hideElement(li);}}
if((total-1)===index){dfx.addClass(li,'last');}
if(this.picker!==null){this.picker.getAsset(assetid,function(asset){var content='<div class="'+c+'-title">';content+='<div class="'+c+'-text">'+asset.name+'</div>';content+='<div class="'+c+'-arrow"></div>';dfx.setHtml(li,content);});}else{AssetManager.getAsset(assetid,function(asset){var content='<div class="'+c+'-title">';content+='<div class="'+c+'-text">'+asset.name+'</div>';content+='<div class="'+c+'-arrow"></div>';dfx.setHtml(li,content);});}
var self=this;dfx.addEvent(li,'click',function(){self.fireItemClickedEvents(assetid);var skipOne=false;if(parseInt(assetid,10)===parseInt(self.picker.projectid,10)){skipOne=true;}
while(li.nextSibling){if(skipOne===false){dfx.remove(li.nextSibling);self.assets.pop();}else{li=li.nextSibling;skipOne=false;}}
self.update();});return li;},setAssets:function(assets)
{if(this.list&&this.list.childNodes){if(parseInt(this.assets[0],10)!==parseInt(assets[0],10)){this.resetAssets(assets);return;}
this.assets=[];var cln=this.list.childNodes.length;for(var i=0;i<cln;i++){this.assets.push(parseInt(this.list.childNodes[i].id.replace('asset_','')));}
var ln=this.assets.length;var start=0;for(var i=0;i<ln;i++){if(parseInt(this.assets[i],10)!==parseInt(assets[i],10)){break;}
start++;}
for(var i=ln;i>=start;i--){if(this.assets[i]){delete this.assets[i];dfx.remove(this.list.childNodes[i]);}}
var aln=assets.length;for(var i=start;i<aln;i++){this.append(assets[i]);}
this.update();}
this.assets=assets;},resetAssets:function(assets)
{dfx.empty(this.list);var aln=assets.length;for(var i=0;i<aln;i++){this.list.appendChild(this._createItem(assets[i],i,aln));}
this.assets=assets;this.update();},append:function(assetid)
{var total=this.getTotalAssets();this.list.appendChild(this._createItem(assetid,total,(total+1)));this.update();},update:function()
{dfx.removeClass(this.list.childNodes,'selected');dfx.removeClass(this.list.childNodes,'aselected');dfx.removeClass(this.list.childNodes,'last');if(this.list.childNodes&&this.list.childNodes.length>0){dfx.addClass(this.list.childNodes[(this.list.childNodes.length-1)],'last');}},fireItemClickedEvents:function(assetid)
{var ln=this.itemClickedEvents.length;for(var i=0;i<ln;i++){this.itemClickedEvents[i].call(this,assetid);}},addItemClickedEvent:function(fn)
{this.itemClickedEvents.push(fn);},getTotalAssets:function()
{var total=0;for(var id in this.assets){if(this.assets.hasOwnProperty(id)===true){total++;}}
return total;}};dfx.inherits('AssetLineage','Widget');function AssetPickerWidgetType(id)
{Widget.call(this,id);this.assetid=null;this.lastid=null;this.widgetType='AssetPicker';this.pickerid=this.id+'-assetPicker';this.whiteList=[];this.blackList=[];this.hideSite=false;this.pickerTitle='Asset Finder';this.pickerSubTitle='';this.pickerOpenedCallbacks=[];this.setSelectedCallbacks=[];this.clearAssetidCallbacks=[];this.resetConfirmation='';}
AssetPickerWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractWidgetWidgetType.prototype.setReadOnly.call(this,readOnly);if(dfx.getId(this.id)){var readOnlyDiv=dfx.getId(this.id+'-readOnly');var widgetDiv=dfx.getId(this.id+'-wrap');if(readOnly){dfx.showElement(readOnlyDiv);dfx.hideElement(widgetDiv);}else if(!readOnly){dfx.showElement(widgetDiv);dfx.hideElement(readOnlyDiv);}}},create:function(callback)
{var self=this;var div=document.createElement('div');div.id=this.id;dfx.addClass(div,this.widgetType);var wrap=document.createElement('div');wrap.id=this.id+'-wrap';dfx.addClass(wrap,this.widgetType+'-wrap');var rod=document.createElement('div');rod.id=this.id+'-readOnly';dfx.addClass(rod,this.widgetType+'-readOnly');if(this.readOnly){dfx.hideElement(wrap);}else{dfx.hideElement(rod);}
var _attachClickEvent=function(wrap){var btnDiv=dfx.getClass(self.widgetType+'-btn',wrap)[0];dfx.addEvent(btnDiv,'click',function(e){if(dfx.hasClass(dfx.getId(self.id+'-assetPicker'),'disabled')===false){self.displayDisabledDiv(true);self.assetPicker=WidgetStore.get('EditingAssetPicker');self.assetPicker.setScreen(self.pickerid);self.assetPicker.setTitle(self.pickerTitle);if(self.pickerSubTitle!==''){self.assetPicker.setSubTitle(self.pickerSubTitle);}
self.assetPicker.setUniqueSelect(true);self.assetPicker.addAssetsSelectedAction(function(assets){var assetid=assets[0];self.assetid=assetid;self.setSelectedAsset(assetid,function(){self.hideRevertButton();});},true,self.id+'-assetPicker');var whiteLen=self.whiteList.length;for(var i=0;i<whiteLen;i++){self.assetPicker.addProjectFolderWhiteList(self.pickerid,self.whiteList[i]);}
var blackLen=self.blackList.length;for(var j=0;j<blackLen;j++){self.assetPicker.addProjectFolderBlackList(self.pickerid,self.blackList[j]);}
self.assetPicker.setHideSite(self.pickerid,self.hideSite);self.assetPicker.init(self.id+'-assetPicker',function(){self.assetPicker.dialog.open();var cbLen=self.pickerOpenedCallbacks.length;for(var i=0;i<cbLen;i++){self.pickerOpenedCallbacks[i].call(self);}});}});var resetDiv=dfx.getClass(self.widgetType+'-reset',wrap)[0];dfx.attr(resetDiv,'title','Click to reset the value');var revertDiv=dfx.getClass(self.widgetType+'-revert',wrap)[0];dfx.attr(revertDiv,'title','Click to revert the value');dfx.addEvent(resetDiv,'click',function(e){self.reset();});dfx.addEvent(revertDiv,'click',function(e){self.setValue(self.lastid);self.hideRevertButton();self.showClearButton();});if(self.assetid===null){dfx.hideElement(resetDiv,true);}
if(dfx.isFn(callback)===true){div.appendChild(wrap);div.appendChild(rod);callback.call(self,div);return;}};var content='<div class="'+this.widgetType+'-left">&nbsp;</div>';if(this.assetid===null){var nonSelAst=self._createNonSelectedAsset();content+=nonSelAst;content+='<div id="'+this.id+'-assetPicker" class="'+this.widgetType+'-btn">Choose</div>';dfx.setHtml(wrap,content);dfx.setHtml(rod,self._createNonSelectedAsset(true));_attachClickEvent(wrap);}else{var options={attributes:['name'],type:false,typeIcon:false,linking:[],urls:false};AssetManager.getAsset(this.assetid,function(asset){var selAst=self._createSelectedAsset(asset.id,asset.iconUrl,asset.name);content+='<div id="'+self.id+'-middle" class="'+self.widgetType+'-middle">';content+=selAst;content+='</div>';content+='<div id="'+self.id+'-resetWrap" class="'+self.widgetType+'-resetWrap">';if(self.readOnly===true){content+='  <div id="'+self.id+'-reset" style="visibility: hidden;" class="'+self.widgetType+'-reset">&nbsp;</div>';}else{content+='  <div id="'+self.id+'-reset" class="'+self.widgetType+'-reset">&nbsp;</div>';}
content+='</div>';content+='<div id="'+self.id+'-revertWrap" class="'+self.widgetType+'-revertWrap">';content+='  <div id="'+self.id+'-revert" class="'+self.widgetType+'-revert">&nbsp;</div>';content+='</div>';content+='<div id="'+self.id+'-assetPicker" class="'+self.widgetType+'-btn">Change</div>';dfx.setHtml(wrap,content);dfx.setHtml(rod,self._createNonSelectedAsset(true));_attachClickEvent(wrap);},false,options);}},_createNonSelectedAsset:function(readOnly)
{var content='';if(readOnly===true){content+='<div id="'+this.id+'-middle" class="'+this.widgetType+'-middle-readOnly">Nothing selected</div>';}else{content+='<div id="'+this.id+'-middle" class="'+this.widgetType+'-middle">Nothing selected</div>';}
if(readOnly!==true){content+='<div id="'+this.id+'-resetWrap" class="'+this.widgetType+'-resetWrap">';content+='  <div id="'+this.id+'-reset" class="'+this.widgetType+'-reset">&nbsp;</div>';content+='</div>';}
content+='<div id="'+this.id+'-revertWrap" class="'+this.widgetType+'-revertWrap">';content+='  <div id="'+this.id+'-revert" class="'+this.widgetType+'-revert">&nbsp;</div>';content+='</div>';return content;},_createSelectedAsset:function(assetid,iconUrl,name)
{var content='';content+='<div class="'+this.widgetType+'-selected-icon"><img src="'+iconUrl+'" /></div>';content+='<div class="'+this.widgetType+'-selected-name">'+dfx.ellipsize(name,20)+'</div>';content+='<div class="'+this.widgetType+'-selected-assetid">[#'+assetid+']</div>';return content;},setProjectFolderWhiteList:function(folderTypes)
{this.whiteList=folderTypes||[];},setPickerTitle:function(title)
{this.pickerTitle=title;},setPickerSubTitle:function(subTitle)
{this.pickerSubTitle=subTitle;},setProjectFolderBlackList:function(folderTypes)
{this.blackList=folderTypes||[];},setHideSite:function(hideSite)
{this.hideSite=hideSite;},disable:function()
{this.disabled=true;dfx.addClass(dfx.getId(this.id+'-assetPicker'),'disabled');this.hideClearButton();},enable:function()
{this.disabled=false;dfx.removeClass(dfx.getId(this.id+'-assetPicker'),'disabled');this.showClearButton();},setResetConfirmation:function(msg)
{this.resetConfirmation=msg;},reset:function()
{if(this.resetConfirmation!==''){var self=this;var target=dfx.getId(this.id+'-resetWrap');this._showIntervention('reset',target,this.resetConfirmation,'OK','Cancel','250px','70px',function(){self._hideIntervention('reset');self._reset();});}else{this._reset();}},_showIntervention:function(id,target,msg,ok,cancel,width,height,okCb,cancelCb)
{var self=this;this._hideIntervention(id);this.includeWidget('Intervention',function(){if(dfx.isset(okCb)===false){okCb=function(){};}
if(dfx.isset(cancelCb)===false){cancelCb=function(){};}
var pop=self.createWidget('Intervention-'+id,'Intervention',cancelCb,okCb);pop.confirmText=ok;pop.cancelText=cancel;pop.create(function(){pop.setSize(width,height);pop.setMessage(msg);pop.show(target);});});},_hideIntervention:function(id)
{var cancel=dfx.getId('Intervention-'+id+'-cancelButton');if(cancel){dfx.trigger(cancel,'click');}},_reset:function()
{if(this.assetid!==null){this.lastid=this.assetid;}
this.setValue(null);var cbLen=this.clearAssetidCallbacks.length;for(var i=0;i<cbLen;i++){this.clearAssetidCallbacks[i].call(this,this.lastid);}
this.assetid=null;var middle=dfx.getId(this.id+'-middle');var childLen=middle.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(middle.childNodes[i]);}
dfx.getId(this.id+'-middle').innerHTML='Nothing selected';dfx.getId(this.id+'-assetPicker').innerHTML='Choose';this.hideClearButton();this.showRevertButton();this.setModified(true);},setSelectedAsset:function(assetid,callback)
{var self=this;this.assetid=assetid;var options={attributes:['name'],type:false,typeIcon:true,linking:[],urls:false};var _update=function(asset){var middle=dfx.getId(self.id+'-middle');middle.innerHTML='';var astContent=self._createSelectedAsset(asset.id,asset.iconUrl,asset.name);middle.innerHTML=astContent;dfx.getId(self.id+'-assetPicker').innerHTML='Change';dfx.getId(self.id+'-readOnly').innerHTML='';dfx.getId(self.id+'-readOnly').innerHTML=astContent;var cbLen=self.setSelectedCallbacks.length;for(var i=0;i<cbLen;i++){self.setSelectedCallbacks[i].call(self,assetid);}
if(self.disabled!==true){self.showClearButton();}
if(callback){callback.call(self);}};AssetManager.getAsset(assetid,function(asset){var count=0;var _ready=function(){var middle=dfx.getId(self.id+'-middle');if(!middle){count++;setTimeout(function(){if(count<=3){_ready();}},300);}else{_update(asset);}};_ready();},false,options);},addPickerOpenedCallback:function(fn,rmOthers)
{if(rmOthers){this.pickerOpenedCallbacks=[];}
this.pickerOpenedCallbacks.push(fn);},addSelectedCallback:function(fn,rmOthers)
{if(rmOthers){this.setSelectedCallbacks=[];}
this.setSelectedCallbacks.push(fn);},addClearAssetidCallback:function(fn,rmOthers)
{if(rmOthers){this.clearAssetidCallbacks=[];}
this.clearAssetidCallbacks.push(fn);},getValue:function()
{return this.assetid;},hideClearButton:function()
{dfx.hideElement(dfx.getId(this.id+'-reset'),true);},showClearButton:function()
{dfx.showElement(dfx.getId(this.id+'-reset'),true);},hideRevertButton:function()
{dfx.hideElement(dfx.getId(this.id+'-revert'));dfx.hideElement(dfx.getId(this.id+'-revertWrap'));},showRevertButton:function()
{dfx.showElement(dfx.getId(this.id+'-revert'));dfx.showElement(dfx.getId(this.id+'-revertWrap'));},setValue:function(assetid,callback)
{var self=this;if(assetid===null||assetid===0){this.hideClearButton();}else{this.setSelectedAsset(assetid,function(){if(self.disabled===false){self.showClearButton();}
if(dfx.isFn(callback)===true){callback.call(self);}});}}};dfx.inherits('AssetPicker','Widget');function AssetTagLineWidgetType(id,width)
{Widget.call(this,id);this.widgetType='AssetTagLine';this.clickMode='assetFinder';this.goToClassName=this.widgetType+'-assetInfo-goTo';this.nonAstClassName=this.widgetType+'-assetInfo-noAsset';this.assetid=null;this.name=null;this.iconUrl=null;this.url=null;this.assetType=null;this.width=width||250;this.assetLoaded=false;this.elem=null;this.noUrl=false;}
AssetTagLineWidgetType.prototype={setReadOnly:function(readOnly){},setAssetid:function(assetid)
{this.assetid=assetid;},setCustomData:function(data)
{this.assetid=data.id;this.name=data.name;this.iconUrl=data.iconUrl;this.assetType=data.assetType;this.url=data.url||'';this.assetLoaded=true;this.error=data.error;if(this.url.search("/__designs/")!==-1||this.assetid===0||this.error===true){this.noUrl=true;}},keyDown:function(e)
{if(e.altKey){this.clickMode='goTo';dfx.addClass(this.elem,this.goToClassName);}else{this.clickMode='assetFinder';dfx.removeClass(this.elem,this.goToClassName);}},create:function(callback)
{var self=this;var buildDom=function(){var a=document.createElement('a');a.id=self.id;a.title=self.assetType;dfx.addClass(a,self.widgetType+'-assetInfo');a.href='#';if(self.noUrl===true){dfx.addClass(a,self.nonAstClassName);}
dfx.addEvent(a,'click',function(e){if(self.noUrl===false){if(self.clickMode==='assetFinder'){AssetManager.getAssetAutoscrollPath(self.assetid,function(lineage){self.assetPicker=WidgetStore.get('EditingAssetPicker');self.assetPicker.setScreen('Usage');self.assetPicker.setUniqueSelect(true);self.assetPicker.addProjectFolderWhiteList('Usage','Documents');self.assetPicker.addProjectFolderWhiteList('Usage','Images');self.assetPicker.addProjectFolderWhiteList('Usage','Movies');self.assetPicker.addProjectFolderWhiteList('Usage','Users');self.assetPicker.setSaveButtonCheck(true);self.assetPicker.setCurrentAsset(self.assetid);self.assetPicker.setAutoScrollLineage(lineage,'Usage');self.displayDisabledDiv(true);self.assetPicker.init('Usage',function(){self.assetPicker.dialog.open();});self.assetPicker.addAssetsSelectedAction(function(selectedAssets){var len=selectedAssets.length;if(len===0){return;}
var lin=this.getSelectLineage();lin.shift();var last=lin[(lin.length-1)];if(last!==selectedAssets[0]){lin.push(selectedAssets[0]);}
lin=lin.join(':');JumperEditingToolbarIconWidgetType.prototype.jumpToAsset.call(self,selectedAssets,lin);},true);});}else if(self.clickMode==='goTo'){self.displayDisabledDiv(true);window.location.href=self.url+'/_edit';dfx.preventDefault(e);return;}}
dfx.preventDefault(e);});if(self.noUrl===false){dfx.hover(a,function(e){dfx.addEvent(document,'keydown.assetTagLine',function(e){return self.keyDown(e);});dfx.addEvent(document,'keyup.assetTagLine',function(e){dfx.removeClass(self.elem,self.goToClassName);self.clickMode='assetFinder';});},function(e){dfx.removeEvent(document,'.assetTagLine');});}
var iconSpan=document.createElement('span');iconSpan.title='AssetType';dfx.addClass(iconSpan,self.widgetType+'-assetIcon');dfx.addClass(iconSpan,self.widgetType+'-alignLeft');if(self.error===true){dfx.addClass(iconSpan,'warning');}else{dfx.setStyle(iconSpan,'background-image','url(\''+self.iconUrl+'\')');}
var nameSpan=document.createElement('span');dfx.addClass(nameSpan,self.widgetType+'-assetName');dfx.addClass(nameSpan,self.widgetType+'-alignLeft');if(self.error===true){dfx.addClass(nameSpan,'warning');}
var browserInfo=dfx.browser();if(browserInfo.type==='msie'){if(self.width!==null){dfx.setStyle(nameSpan,'max-width',self.width+'px');}
dfx.setHtml(nameSpan,self.name);}else{dfx.setStyle(nameSpan,'visibility','hidden');dfx.setHtml(nameSpan,self.name);var titleWidth=dfx.getStyle(nameSpan,'width');titleWidth=parseInt(titleWidth.substr(0,(titleWidth.length-2)),10);if(titleWidth>self.width){var tmpName=self.name;while(titleWidth>self.width){tmpName=tmpName.substring(0,(tmpName.length-1));dfx.setHtml(nameSpan,tmpName);titleWidth=dfx.getStyle(nameSpan,'width');titleWidth=parseInt(titleWidth.substr(0,(titleWidth.length-2)),10);}
var ellipsisLen=tmpName.length+1;name=dfx.ellipsize(name,(ellipsisLen-4));dfx.setHtml(nameSpan,name);}
dfx.setStyle(nameSpan,'visibility','visible');}
var assetidSpan=document.createElement('span');dfx.addClass(assetidSpan,self.widgetType+'-assetId');if(self.noUrl===true){if(self.error===true){dfx.setHtml(assetidSpan,'#'+self.assetid);}else{dfx.setHtml(assetidSpan,'&nbsp;');}}else{dfx.setHtml(assetidSpan,'#'+self.assetid);}
a.appendChild(iconSpan);a.appendChild(nameSpan);a.appendChild(assetidSpan);return a;};var dom=null;if(this.assetLoaded===false){AssetManager.getAsset(this.assetid,function(asset){self.name=asset.name;self.iconUrl=asset.iconUrl;self.assetType=asset.type;self.url='';self.assetLoaded=true;if(self.url.search("/__designs/")!==-1||self.assetid===0){self.noUrl=true;}
self.elem=buildDom();if(callback){callback.call(self,self.elem);}},false,{attributes:['name'],type:true,typeIcon:true,linking:[],urls:true});}else{self.elem=buildDom();if(callback){callback.call(self,self.elem);}}},disable:function(){},enable:function(){},reset:function(){},getValue:function()
{return this.assetid;},setValue:function(assetid,callback){}};dfx.inherits('AssetTagLine','Widget');function AssetTypeFilterWidgetType(id)
{Widget.call(this,id);}
AssetTypeFilterWidgetType.prototype={getValue:function()
{var widget=WidgetStore.get(this.id+'-type');return widget.getValue();},setValue:function(value)
{var widget=WidgetStore.get(this.id+'-type');widget.setValue(value);}};dfx.inherits('AssetTypeFilter','Widget');function AssetTypeLevelSelectorWidgetType(id,type,leveled,rootid)
{Widget.call(this,id);this.widgetType='AssetTypeLevelSelector';this.parents=[];this.cache={};this.rootid=rootid;this.leveled=leveled;this._disabled=false;if(dfx.getId(id+'-assetTypeLevelSelectorWrapper')&&dfx.isset(dfx.getId(id))===false){var self=this;this.create();}}
AssetTypeLevelSelectorWidgetType.prototype={create:function(callback)
{var self=this;var text=self.createWidget(self.id+'-newFolder','TextField');text.setValue('Enter folder name');var items={};var select=self.createWidget(self.id+'-createLocation','Select');var _setItems=function(assets){dfx.foreach(assets,function(aid){var title='';if(assets[aid].lvl>0){var num=(assets[aid].lvl*2);for(var i=0;i<num;i++){title+=String.fromCharCode(160);}
title+='|_ '+assets[aid].name;}else{title=assets[aid].name;}
items[aid]=title;if(dfx.isset(assets[aid].children)===true&&dfx.isset(assets[aid].children.length)===false){_setItems(assets[aid].children);}
return true;});};items.none=String.fromCharCode(160);items[self.leveled.assetid]=self.leveled.name;_setItems(self.leveled.children);select.addItems(items);var newLocDiv=document.createElement('div');newLocDiv.id=self.id+'-newFolderBtn';dfx.addClass(newLocDiv,self.widgetType+'-newFolderBtn');dfx.setHtml(newLocDiv,'Create a new folder at this location');dfx.hideElement(newLocDiv);var wrap=dfx.getId(self.id+'-assetTypeLevelSelectorWrapper');text.create(function(textEl){select.addItemSelectedEvent(function(val){if(val===0){dfx.hideElement(newLocDiv);dfx.hideElement(textEl,true);}else{dfx.showElement(newLocDiv);if(dfx.hasClass(newLocDiv,'ticked')===true){dfx.showElement(textEl,true);}else{dfx.hideElement(textEl,true);}}});select.create(function(selEl){wrap.appendChild(selEl);wrap.appendChild(newLocDiv);wrap.appendChild(textEl);dfx.hideElement(textEl,true);dfx.addClass(dfx.getId(self.id+'-createLocation'),self.widgetType+'-select');dfx.addClass(dfx.getId(self.id+'-newFolder'),self.widgetType+'-text');var inputEl=dfx.getId(self.id+'-newFolder');dfx.setStyle(inputEl,'color','#aaa');dfx.addEvent(newLocDiv,'click',function(e){if(self._disabled!==true){if(dfx.hasClass(newLocDiv,'ticked')===true){dfx.removeClass(newLocDiv,'ticked');dfx.hideElement(textEl,true);}else{dfx.addClass(newLocDiv,'ticked');dfx.showElement(textEl,true);}}});dfx.addEvent(inputEl,'focus',function(e){if(dfx.trim(inputEl.value)==='Enter folder name'){inputEl.value='';dfx.setStyle(inputEl,'color','#000');}});dfx.addEvent(inputEl,'blur',function(e){if(dfx.trim(inputEl.value)===''){inputEl.value='Enter folder name';dfx.setStyle(inputEl,'color','#aaa');}});if(dfx.isFn(callback)===true){callback.call(self,null);return;}});});},getValue:function()
{var self=this;var select=WidgetStore.get(this.id+'-createLocation');var _getValue=function(){var returnIndexTrue=false;var returnTextFalse=false;var result={value:select.getValue(returnIndexTrue,returnTextFalse),alternateFolder:null};if(result.value==='none'){result.value='';}else{if(dfx.hasClass(dfx.getId(self.id+'-newFolderBtn'),'ticked')===true){var text=WidgetStore.get(self.id+'-newFolder');var val=text.getValue();if(val==='Enter folder name'){result.alternateFolder='';}else{result.alternateFolder=val;}}}
return result;};var _checkWidgetCreated=function(){select=WidgetStore.get(self.id+'-createLocation');var stid=null;if(!select){stid=setTimeout(function(){return _checkWidgetCreated();},300);}else{clearTimeout(stid);return _getValue();}};var value=_checkWidgetCreated();return value;},setValue:function(values)
{var select=WidgetStore.get(this.id+'-createLocation');var text=WidgetStore.get(this.id+'-newFolder');if(typeof values==='string'){var alternate=null;select.setValue(0);}else{var alternate=values.alternateFolder;select.setValue(values.value,true);}
if(alternate===null){dfx.removeClass(dfx.getId(this.id+'-newFolderBtn'),'ticked');text.setValue('Enter folder name');dfx.hideElement(dfx.getId(this.id+'-newFolder_container'),true);}else{dfx.addClass(dfx.getId(this.id+'-newFolderBtn'),'ticked');text.setValue(values.alternateFolder);dfx.showElement(dfx.getId(this.id+'-newFolder_container'),true);}},disable:function()
{this._disabled=true;var selectWdgt=WidgetStore.get(this.id+'-createLocation');selectWdgt.disable();var text=WidgetStore.get(this.id+'-newFolder');if(text){text.disable();}},enable:function()
{this._disabled=false;var selectWdgt=WidgetStore.get(this.id+'-createLocation');selectWdgt.enable();var text=WidgetStore.get(this.id+'-newFolder');if(text){text.enable();}},reset:function()
{var self=this;var params={action:'getWidgetInformation',widget:'WizardRunnerWidget',system:'AssetTypeLevelSelectorWidget',channel:'getWidgetData',rootid:this.rootid};dfx.post(window.location.href,params,function(data){self.leveled=dfx.jsonDecode(data);dfx.getId(self.id+'-assetTypeLevelSelectorWrapper').innerHTML='';self.create(function(){});});}};dfx.inherits('AssetTypeLevelSelector','Widget');function AssetVersioningWidgetType(id,assetid,version)
{Widget.call(this,id);this.widgetType='AssetVersioning';this.assetid=assetid;this.version=version;this.init();}
AssetVersioningWidgetType.prototype={init:function(){},getWidgetType:function()
{return'AssetVersioning';}};dfx.inherits('AssetVersioning','Widget');function AuthenticationCanvasWidgetType(id,hashEnabled)
{Widget.call(this,id);var self=this;this.clearError();this.hashEnabled=hashEnabled;dfx.getId('LoginUsername').focus();}
AuthenticationCanvasWidgetType.prototype={displayError:function(message)
{dfx.setHtml(dfx.getId('LoginError'),'Error: '+message);},clearError:function()
{dfx.setHtml(dfx.getId('LoginError'),'&nbsp;');},onEnterKey:function(evt)
{if(evt.keyCode===13){this.submit();}
return;},submit:function()
{var self=this;var url=(new String(document.location)).valueOf();this.clearError();var username=dfx.getId('LoginUsername').value;var password=dfx.getId('LoginPassword').value;var params={};params.auth_action='login';var _processLoginResponse=function(data){var login=data.getElementsByTagName('login');var status=login.item(0).firstChild.nodeValue;if(status==='0'){var errorMsg=data.getElementsByTagName('error').item(0).firstChild.nodeValue;self.displayError(errorMsg);return false;}else{window.location=window.location;return true;}};if(this.hashEnabled===true){params.step='req_chal';params.username=username;dfx.post(window.location.href,params,function(data){var challenge=data.getElementsByTagName('challenge').item(0).firstChild.nodeValue;if(challenge!=='0'){var hashedPassword=hex_md5(hex_hmac_sha1(challenge,hex_sha1(password)));var browserInfo=dfx.browser();if(challenge==='-1'){hashedPassword=password;}
params.step='req_auth';params.password=hashedPassword;params.bt=browserInfo.type;params.bv=browserInfo.version;dfx.get(dfx.addToQueryString(url,params),null,_processLoginResponse);}else{var errorMsg=data.getElementsByTagName('error').item(0).firstChild.nodeValue;self.displayError(errorMsg);return false;}});}else{var browserInfo=dfx.browser();params.step='req_auth';params.username=username;params.password=password;params.bt=browserInfo.type;params.bv=browserInfo.version;dfx.post(window.location.href,params,_processLoginResponse);}
return false;}};dfx.inherits('AuthenticationCanvas','Widget');function BalloonPopupWidgetType(id)
{Widget.call(this,id);this.widgetType='BalloonPopup';this.contentid=this.id+'-content';this.classPrefix=this.getClass();this.contents=[];this.popupActive=false;this.buttons=[];this.dialog=null;this.domElem=null;this.contentEl=null;this.wrapper=null;this.validPositions=['wn','en','nw','ne','sw','se'];this.dims={width:'250px',height:'100px'};}
BalloonPopupWidgetType.prototype={setClassPrefix:function(prefix)
{this.classPrefix=prefix;},getClassPrefix:function()
{return this.classPrefix;},create:function(callback)
{var main=document.createElement('div');var wrapper=document.createElement('div');dfx.addClass(wrapper,this.getClass()+'-wrapper');main.appendChild(wrapper);main.id=this.id;this.domElem=main;this.wrapper=wrapper;var self=this;dfx.addClass(main,this.getClass());this.contentEl=document.createElement('div');self.contentEl.id=this.id+'-content';this.includeWidget('ModalDialog',function(){self.dialog=self.createWidget(self.id+'-dialog','ModalDialog');self.dialog.setTitle('Content Cannot Be Edited');self.dialog.setContent(self.contentEl);self.dialog.setSize(self.dims.width,self.dims.height);self.dialog.allowResize=false;self.dialog.create(function(el){wrapper.appendChild(el);document.body.appendChild(main);callback.call(self,main);return;},true);});},remove:function(){},setTitle:function(title)
{this.title=title;if(this.dialog){this.dialog.setTitle(title,true);}},getTitle:function()
{return this.title;},getContentElement:function()
{return this.contentEl;},addContent:function(contentEl)
{this.contents.push(contentEl);var el=dfx.getId(this.contentid);if(el){el.appendChild(contentEl);}},replaceContent:function(newContent)
{this.contents=[];this.contents.push(newContent);if(this.dialog){this.dialog.setContent(newContent);}},isActive:function()
{return this.popupActive;},close:function(callback)
{this.popupActive=false;var el=dfx.getId(this.id);if(el){dfx.remove(el);}
ModalDialogWidgetType.removeOpenDialog(this.dialog);if(dfx.isFn(callback)){callback.call(this);}},show:function(element)
{var arrow=dfx.getId(this.id+'-arrow');if(arrow){dfx.remove(arrow);}
var el=this.domElem;dfx.setStyle(el,'visibility','hidden');dfx.setStyle(el,'display','block');this.popupActive=true;var self=this;setTimeout(function(){self.setPopupPosition(element);dfx.setStyle(el,'visibility','visible');self.dialog.show();},100);},getElement:function(cp)
{return dfx.getClass(this.getClass()+cp,dfx.getId(this.id))[0];},setPopupPosition:function(element)
{var popupEl=this.domElem;if(!element||!popupEl){return;}
var elementRect=dfx.getBoundingRectangle(element);var windowDims=dfx.getWindowDimensions();var popupDims=dfx.getElementDimensions(popupEl);var scrollCoords=dfx.getScrollCoords();var margin=50;var arrowDist=20;var posInfo={element:element,elementRect:elementRect,windowDims:windowDims,scrollCoords:scrollCoords,popupDims:popupDims,margin:margin,arrowDist:arrowDist};var validPositions=this.validPositions;var pos=this._setPos(validPositions,posInfo);if(pos){this._setArrow(pos);}},_setPos:function(positions,posInfo)
{var pos='';var len=positions.length;for(var i=0;i<len;i++){var fn=this['_setPos'+positions[i].toUpperCase()];if(fn){var ret=fn.call(this,posInfo);if(ret){pos=positions[i];break;}}}
return pos;},_setPosE:function(info)
{if(info.windowDims.width>(info.elementRect.x2+info.arrowDist+info.popupDims.width+info.margin)){dfx.setStyle(dfx.getId(this.id),'left',(info.elementRect.x2+info.arrowDist)+'px');return true;}},_setPosW:function(info)
{if((info.elementRect.x1-info.arrowDist-info.popupDims.width-info.margin)>0){dfx.setStyle(dfx.getId(this.id),'left',(info.elementRect.x1-info.arrowDist-info.popupDims.width)+'px');return true;}},_setPosWN:function(info)
{if(this._setPosE(info)){if(info.windowDims.height>(info.elementRect.y1-info.scrollCoords.y+info.popupDims.height+info.margin)){dfx.setStyle(dfx.getId(this.id),'top',(info.elementRect.y1-info.arrowDist+'px'));return true;}}},_setPosEN:function(info)
{if(this._setPosW(info)){if(info.windowDims.height>(info.elementRect.y1-info.scrollCoords.y+info.popupDims.height+info.margin)){dfx.setStyle(dfx.getId(this.id),'top',(info.elementRect.y1-info.arrowDist+'px'));return true;}}},_setPosN:function(info)
{if(info.windowDims.height>(info.elementRect.y2-info.scrollCoords.y+info.popupDims.height+info.arrowDist+info.margin)){dfx.setStyle(dfx.getId(this.id),'top',(info.elementRect.y2+info.arrowDist)+'px');return true;}},_setPosS:function(info)
{if((info.elementRect.y1-info.popupDims.height-info.arrowDist-info.margin-info.scrollCoords.y)>0){dfx.setStyle(dfx.getId(this.id),'top',(info.elementRect.y1-info.arrowDist-info.popupDims.height)+'px');return true;}},_setPosSW:function(info)
{if(this._setPosS(info)){if(info.windowDims.width>(info.elementRect.x1+((info.elementRect.x2-info.elementRect.x1)/2)+info.popupDims.width+info.margin)){dfx.setStyle(dfx.getId(this.id),'left',((info.elementRect.x1+((info.elementRect.x2-info.elementRect.x1)/2))-info.arrowDist+'px'));return true;}}},_setPosSE:function(info)
{if(this._setPosS(info)){if(0<(info.elementRect.x2-((info.elementRect.x2-info.elementRect.x1)/2)-info.popupDims.width-info.margin)){dfx.setStyle(dfx.getId(this.id),'left',(info.elementRect.x2-((info.elementRect.x2-info.elementRect.x1)/2)-info.popupDims.width)+'px');return true;}}},_setPosNE:function(info)
{if(this._setPosN(info)){if(0<(info.elementRect.x2-((info.elementRect.x2-info.elementRect.x1)/2)-info.popupDims.width-info.margin)){dfx.setStyle(dfx.getId(this.id),'left',(info.elementRect.x2-((info.elementRect.x2-info.elementRect.x1)/2)-info.popupDims.width)+'px');return true;}}},_setArrow:function(o)
{var arrow=document.createElement('div');dfx.addClass(arrow,this.getClassPrefix()+'-arrow-'+o);this.wrapper.appendChild(arrow);},addButton:function(title,action)
{this.dialog.addButton(title,function(buttonWidget){buttonWidget.addClickEvent(function(){action.call(this);});});},removeButtons:function()
{this.buttons=[];var el=dfx.getId(this.id+'-i-bot-mid');if(el){dfx.empty(el);}},setSize:function(width,height)
{this.dims={width:width,height:height};if(this.dialog){this.dialog.setSize(width,height);}}};dfx.inherits('BalloonPopup','Widget');function BarChartWidgetType(id)
{Widget.call(this,id);}
dfx.inherits('BarChart','Widget');function ButtonWidgetType(id,classPrefix,textOnly,value,simpleButton)
{Widget.call(this,id);var self=this;this.content=dfx.getId(id+'_content');this.classPrefix=classPrefix||'ButtonWidgetType';this.textOnly=textOnly||false;this.enabled=true;this.clickEvents=[];this.value=value;this.toggleMode=false;this.minWidth=null;this.buttonParts={};this.simpleButton=simpleButton||false;this.dispStyle=null;this.buttonIconClassName=null;var container=dfx.getId(this.id+'_content');var btnDiv=dfx.getId(this.id);if(btnDiv){this.domElem=btnDiv;}
this.overFn=function(e){if(self.enabled===true){dfx.addClass(self.domElem,self.getClassPrefix()+'-hover');}};this.outFn=function(e){dfx.removeClass(self.domElem,self.getClassPrefix()+'-hover');};dfx.hover(container,this.overFn,this.outFn);if(dfx.isset(dfx.getId(this.id))===true){this.init();}}
ButtonWidgetType.prototype={init:function()
{this.buttonParts.left=dfx.getId(this.id+'_left');this.buttonParts.right=dfx.getId(this.id+'_right');this.buttonParts.middle=dfx.getId(this.id+'_middle');this.buttonParts.content=dfx.getId(this.id+'_content');},setReadOnly:function(readOnly)
{AbstractWidgetWidgetType.prototype.setReadOnly.call(this,readOnly);if(this.domElem){if(readOnly){dfx.hideElement(this.domElem);}else{dfx.showElement(this.domElem);}}},setSimpleButton:function(simpleButton)
{this.simpleButton=simpleButton;},setTextOnly:function(textOnly)
{this.textOnly=textOnly;},setClassPrefix:function(classPrefix)
{this.classPrefix=classPrefix;},getClassPrefix:function()
{return this.classPrefix;},setButtonColour:function(colour)
{this.setClassPrefix('ButtonWidgetType-'+colour);},changeButtonColour:function(colour)
{dfx.swapClass(this.domElem,this.classPrefix,('ButtonWidgetType-'+colour));dfx.swapClass(this.buttonParts.left,(this.classPrefix+'-left'),('ButtonWidgetType-'+colour+'-left'));dfx.swapClass(this.buttonParts.right,(this.classPrefix+'-right'),('ButtonWidgetType-'+colour+'-right'));dfx.swapClass(this.buttonParts.middle,(this.classPrefix+'-middle'),('ButtonWidgetType-'+colour+'-middle'));dfx.swapClass(this.buttonParts.content,(this.classPrefix+'-content'),('ButtonWidgetType-'+colour+'-content'));this.setButtonColour(colour);},create:function(callback)
{var div=document.createElement('div');this.domElem=div;div.setAttribute('id',this.id);div.className=this.classPrefix;if(this.readOnly===true){dfx.hideElement(this.domElem);}
var input=document.createElement('input');input.setAttribute('id',(this.id+'_content'));input.setAttribute('type','button');input.className=(this.classPrefix+'-content');input.setAttribute('value',this.value);if(this.textOnly!==true){var divLeft=document.createElement('div');if(this.buttonIconClassName){dfx.addClass(input,this.buttonIconClassName);}
var divMiddle=document.createElement('div');var divRight=document.createElement('div');divLeft.setAttribute('id',(this.id+'_left'));divMiddle.setAttribute('id',(this.id+'_middle'));if(this.minWidth!==null){dfx.setStyle(divMiddle,'width',this.minWidth);}
divRight.setAttribute('id',(this.id+'_right'));divLeft.className=(this.classPrefix+'-left');divMiddle.className=(this.classPrefix+'-middle');divRight.className=(this.classPrefix+'-right');this.buttonParts.left=divLeft;this.buttonParts.middle=divMiddle;this.buttonParts.right=divRight;this.buttonParts.content=input;divMiddle.appendChild(input);div.appendChild(divLeft);div.appendChild(divMiddle);div.appendChild(divRight);}else{div.appendChild(input);div.className=(div.className+' '+this.classPrefix+'-simple');}
var self=this;var overClass=(self.classPrefix+'-hover');dfx.addEvent(div,'mouseover',function(e){dfx.addClass(input,overClass);});dfx.addEvent(div,'mouseout',function(){dfx.removeClass(input,overClass);});this.content=input;if(this.enabled===false){this.setEnabled(false,true);}
var cln=this.clickEvents.length;for(var i=0;i<cln;i++){this.addClickEvent(this.clickEvents[i]);}
if(dfx.isFn(callback)===true){callback.call(this,div);}},setName:function(name)
{this.value=name;if(dfx.isset(this.content)===true){this.content.value=name;}},getName:function()
{return this.content.value;},getValue:function()
{return this.getName();},setEnabled:function(enabled,force)
{if(force!==true&&this.enabled===enabled){return;}
this.enabled=enabled;var suffix='';if(this.toggleMode!==true&&enabled!==true){dfx.removeEvent(this.domElem,'mouseover',this.overFn);dfx.removeEvent(this.domElem,'mouseout',this.outFn);}else{dfx.addEvent(this.domElem,'mouseover',this.overFn);dfx.addEvent(this.domElem,'mouseout',this.outFn);}
if(enabled!==true){dfx.addClass(this.domElem,(this.classPrefix+'-disabled'));dfx.removeClass(this.domElem,this.classPrefix);}else{dfx.addClass(this.domElem,this.classPrefix);dfx.removeClass(this.domElem,(this.classPrefix+'-disabled'));}},disable:function()
{this.setEnabled(false);},enable:function()
{this.setEnabled(true);},setDisabled:function(disabled)
{this.enabled=!disabled;},enableToggleMode:function()
{this.toggleMode=true;},addClickEvent:function(fn,removeOthers)
{if(removeOthers===true){this.removeEvents();}
if(this.domElem){var self=this;dfx.addEvent(this.domElem,'click',function(e){if(self.toggleMode===true||self.enabled===true){fn(e);}});}else{if(removeOthers===true){this.clickEvents=[];}
this.clickEvents.push(fn);}},setClickEvent:function(fn)
{var self=this;this.setEvent('click',function(e){if(self.toggleMode===true||self.enabled===true){fn(e);}});},removeEvents:function()
{dfx.removeEvent(this.domElem,'click');},setMinWidth:function(width)
{this.minWidth=width;if(this.minWidth!==null){dfx.setStyle(this.buttonParts.middle,'width',this.minWidth);}},hide:function()
{if(this.domElem){if(this.dispStyle===null){this.dispStyle=dfx.getStyle(this.domElem,'display');}
dfx.setStyle(this.domElem,'display','none');dfx.setStyle(this.domElem,'visibility','hidden');}},show:function()
{if(this.domElem){try{dfx.setStyle(this.domElem,'display',this.dispStyle);dfx.setStyle(this.domElem,'visibility','visible');}catch(e){};}},setButtonIconClassName:function(className)
{this.buttonIconClassName=className;}};dfx.inherits('Button','Widget');function ContentFormatWidgetType(id,simpleEdit)
{Widget.call(this,id);this.widgetType='ContentFormat';this.formats={};this.parentElements=null;this.show=false;this.simpleEdit=simpleEdit||false;}
ContentFormatWidgetType.prototype={addFormat:function(formatid,formatElem)
{this.formats[formatid]=formatElem;if(this.show===true){this.showFormat(formatid);}},setSimpleEdit:function(useSimpleEdit)
{this.simpleEdit=useSimpleEdit;},setParentElements:function(parentEls)
{this.parentElements=parentEls;},activateFormat:function(formatid)
{return;},setFormatValue:function(formatid,value)
{this.formats[formatid]=value;},removeFormat:function(formatid)
{if((formatid in this.formats)===true){dfx.remove(this.formats[formatid]);delete this.formats[formatid];}},removeFormats:function()
{for(var formatid in this.formats){this.removeFormat(formatid);}},showFormats:function(noEdit)
{if(dfx.isset(this.parentElements)===true){for(var formatid in this.formats){this.showFormat(formatid,false,noEdit);}
this.show=true;}},showFormat:function(formatid,hideOthers,noEdit)
{if(hideOthers===true){this.hideFormats();}
var format=this.formats[formatid];var len=this.parentElements.length;for(var i=0;i<len;i++){this.parentElements[i].appendChild(format);}
if(noEdit!==true){if(this.simpleEdit===true){this.showSimpleEdit(format);}else{new Viper(format);}}},hideFormats:function()
{var len=this.parentElements.length;for(var i=0;i<len;i++){dfx.empty(this.parentElements[i]);}},hideFormat:function(formatid)
{dfx.remove(this.formats[formatid]);},getFormats:function()
{return this.formats;},showSimpleEdit:function(format)
{var self=this;this.includeWidget('ModalDialog',function(){var simpleEditorDialog=self.createWidget(self.id+'-simpleEditorDialog','ModalDialog');simpleEditorDialog.create(function(){simpleEditorDialog.setTitle('Advanced Editor');var textArea=document.createElement('textarea');dfx.setStyle(textArea,'border','none');textArea.setAttribute('rows','20');textArea.setAttribute('cols','70');textArea.value=dfx.getHtml(format);simpleEditorDialog.addButton('OK',function(){simpleEditorDialog.close();dfx.setHtml(format,textArea.value);});simpleEditorDialog.setContentElement(textArea);simpleEditorDialog.open();simpleEditorDialog.addEvents();simpleEditorDialog.disable();textArea.focus();});});}};dfx.inherits('ContentFormat','Widget');function ContextSwitcherButtonWidgetType(id,data)
{Widget.call(this,id);this.widgetType='ContextSwitcherButton';this._data=data;this.buttonEl=dfx.getId(this.id);this._statusClass=['safeEdit','liveEdit','unpublished','published'];this.init();}
ContextSwitcherButtonWidgetType.prototype={init:function()
{var self=this;WidgetStore.addDataChangeListener('ContextSwitcherBtnModeListener','activeMode',function(newMode,prevMode){if(prevMode){self.updateButtonStatus(newMode.id,null);}});},updateButtonStatus:function(modeid,assetid)
{var self=this;self.getStatus(modeid,assetid,function(status){self.switchButton(status.status,status.title,status.canSwitch);if(assetid&&status.url){self.displayDisabledDiv(true,null,null,null,'Currently re-directing...');self._changeToUrl(status.url);}});},getStatus:function(modeType,assetid,callback)
{var param={widget:this.widgetType,action:'getStatus',modeType:modeType};if(dfx.isset(assetid)===true){param.assetid=assetid;}
dfx.post(this.getCurrentUrl(true),param,function(data){data=dfx.jsonDecode(data);callback.call(this,data);});},toggleContext:function()
{var answer=true;var saveBtn=WidgetStore.get('EditingSaveButton');if(saveBtn.isEnabled()===true){answer=confirm(WidgetStore.getUnsavedChangesStr());}
if(answer===true){var mode=WidgetStore.getData('activeMode');if(mode&&mode.id){mode=mode.id;}
if(mode==='EditEditingMode'){window.onbeforeunload=function(){};}
var param={widget:this.widgetType,action:'toggleContext'};this.displayDisabledDiv(true,null,null,null,'Currently re-directing...');var self=this;dfx.post(this.getCurrentUrl(true),param,function(url){self._changeToUrl(url);});}},_changeToUrl:function(url)
{var mode=WidgetStore.getData('activeMode');if(mode&&mode.id){mode=mode.id;}
var screen=WidgetStore.getData('activeScreen');if(screen&&screen.system){screen=screen.system;}
var modeScreen='initialMode='+mode;if(screen!=='EditSplash'){modeScreen+='&initialScreen='+screen;}
if(url.indexOf('?')===-1){url+='?';}else{modeScreen='';}
window.location.href=url+modeScreen;},switchButton:function(type,title,canSwitch)
{var c=this.getClass();var titleEl=dfx.getClass(c+'-text',this.buttonEl)[0];var currentEl=dfx.getClass(c+'-current',this.buttonEl)[0];dfx.setHtml(titleEl,title);dfx.removeClass(currentEl,this._statusClass.join(' '));dfx.addClass(currentEl,type);var switcherEl=this.buttonEl;dfx.removeEvent(switcherEl,'click');if(canSwitch===true){dfx.addClass(switcherEl,'toggle');var self=this;dfx.addEvent(switcherEl,'click',function(){self.toggleContext();});}else{dfx.removeClass(switcherEl,'toggle');}},updateStatus:function(published,inSafeEdit)
{this._data.published=published||false;this._data.inSafeEdit=inSafeEdit||false;var mode=WidgetStore.getData('activeMode');}};dfx.inherits('ContextSwitcherButton','Widget');function CustomFormQuestionCreateWidgetType(id)
{Widget.call(this,id);this.widgetType='CustomFormQuestionCreate';this.id=id;this.qnNum=0;this.domElem=dfx.getId(id);if(dfx.isset(this.domElem)===true){this.addEvents();}}
CustomFormQuestionCreateWidgetType.prototype={addEvents:function()
{var self=this;jQuery(this.domElem).sortable({axis:'y',handle:'span.move'});var button=WidgetStore.get(this.id+'-addQn');button.addClickEvent(function(){self.createFields();});this.createFields(function(){self.createFields();});},createFields:function(callback)
{var self=this;var qid=this.qnNum;var div=document.createElement('div');div.qid=qid;div.id='question-'+qid+'-container';dfx.addClass(div,'questionDiv');this.domElem.appendChild(div);jQuery(div).sortable('refresh');var move=document.createElement('span');move.id='question_move-'+qid;dfx.addClass(move,'move');div.appendChild(move);var req=this.createReqField(qid);div.appendChild(req);this.includeWidgets(['TextField','Select'],function(){var text=self.createWidget('question_name-'+qid,'TextField');text.setShowLabel(false);text.setWidth(160);text.setDisplayAsBlock(false);text.create(function(textField){div.appendChild(textField);var select=self.createTypeSelectField(qid);div.appendChild(select);self.qnNum+=1;if(dfx.isFn(callback)===true){callback.call(self);}
var deleteButton=document.createElement('span');div.appendChild(deleteButton);dfx.addClass(deleteButton,'delete');dfx.addEvent(deleteButton,'click',function(){self.markQuestion(qid);});});});},createReqField:function(qid)
{var star=document.createElement('span');star.id='question_required-'+qid;star.enabled='true';dfx.addClass(star,'requiredFieldToggle');dfx.addClass(star,'required-false');var req=document.createElement('input');req.id='question_required-'+qid+'-val';req.type='hidden';req.value='false';star.appendChild(req);dfx.addEvent(star,'click',function(){if(dfx.hasClass(star,'required-recover')===true){return;}
if(star.enabled==='true'){var req=dfx.getId(star.id+'-val');if(req.value==='true'){req.value='false';dfx.swapClass(star,'required-true','required-false');}else{req.value='true';dfx.swapClass(star,'required-false','required-true');}}});return star;},createTypeSelectField:function(qid)
{var types={text:'Text Box',number:'Numeric',options:'Checkbox/Radio Button',dropdown:'Select'};var select=document.createElement('select');dfx.addClass(select,'questionTypeSelect');select.id='question_type-'+qid;for(var key in types){var option=document.createElement('option');option.text=types[key];option.value=key;select[select.length]=option;}
return select;},markQuestion:function(qid)
{var div=dfx.getId('question-'+qid+'-container');var move=dfx.getId('question_move-'+qid);var star=dfx.getId('question_required-'+qid);var name=WidgetStore.get('question_name-'+qid);var type=dfx.getId('question_type-'+qid);if(dfx.hasClass(div,'recover')===true){dfx.swapClass(move,'move-recover','move');dfx.removeClass(star,'required-recover');name.enable();type.disabled=false;dfx.removeClass(div,'recover');}else{dfx.swapClass(move,'move','move-recover');dfx.addClass(star,'required-recover');name.disable();type.disabled=true;dfx.addClass(div,'recover');}},getValue:function()
{var value=[];var qn=this.domElem.firstChild;while(qn){var qid=qn.qid;if(dfx.hasClass(dfx.getId('question-'+qid+'-container'),'recover')===false){var val={req:dfx.getId('question_required-'+qid+'-val').value,name:WidgetStore.get('question_name-'+qid).getValue(),type:dfx.getId('question_type-'+qid).value};value.push(val);}
qn=qn.nextSibling;}
return value;},setValue:function(value)
{var len=value.length;for(var i=0;i<len;i++){WidgetStore.get('question_name-'+i).setValue(value[i].name);dfx.getId('question_type-'+i).value=value[i].type;var star=dfx.getId('question_required-'+i);var req=dfx.getId('question_required-'+i+'-val');req.value=value[i].req;if(value[i].req==='true'){dfx.swapClass(star,'required-false','required-true');}else{dfx.swapClass(star,'required-true','required-false');}}},disable:function()
{var button=WidgetStore.get(this.id+'-addQn');button.disable();for(var i=0;i<this.qnNum;i++){var star=dfx.getId('question_required-'+i);var text=WidgetStore.get('question_name-'+i);var select=dfx.getId('question_type-'+i);star.enabled='false';text.disable();var len=select.options.length;for(var x=0;x<len;x++){select.options[x].disabled='disabled';}}},enable:function()
{var button=WidgetStore.get(this.id+'-addQn');button.enable();for(var i=0;i<this.qnNum;i++){var star=dfx.getId('question_required-'+i);var text=WidgetStore.get('question_name-'+i);var select=dfx.getId('question_type-'+i);star.enabled='true';text.enable();var len=select.options.length;for(var x=0;x<len;x++){select.options[x].disabled='';}}}};dfx.inherits('CustomFormQuestionCreate','Widget');function DivButtonWidgetType(id)
{Widget.call(this,id);var self=this;this.titleElem=dfx.getId(this.id+'_box_title');this.descriptionElem=dfx.getId(this.id+'_box_description');this.iconElem=dfx.getId(this.id+'_box_icon');this.clickMask=dfx.getId(this.id+'_box_click_mask');this.onClickCallbacks=[];dfx.addEvent(this.clickMask,'click',function(e){var len=self.onClickCallbacks.length;for(var i=0;i<len;i++){self.onClickCallbacks[i].call(self,id);}});}
DivButtonWidgetType.prototype={addClickEvent:function(callback)
{this.onClickCallbacks.push(callback);}};dfx.inherits('DivButton','Widget');function DivWidgetType(id)
{Widget.call(this,id);this.widgetType='Div';this.cssClass=null;this.contentElements=[];}
DivWidgetType.prototype={create:function(callback)
{var div=document.createElement('div');div.setAttribute('id',this.id);if(this.cssClass!==null){dfx.addClass(div,this.cssClass);}
var len=this.contentElements.length;for(var i=0;i<len;i++){div.appendChild(this.contentElements[i]);}
var self=this;this.createChildren(div,function(){callback.call(self,div);return;});},setClass:function(c)
{this.cssClass=c;},addContentElement:function(elem)
{this.contentElements.push(elem);}};dfx.inherits('Div','Widget');function EditEditingModeLockingWidgetType(id)
{Widget.call(this,id);this.widgetType='EditEditingModeLocking';this.popupQueue=[];this.popup=null;}
EditEditingModeLockingWidgetType.prototype={showMessage:function(errInfo)
{if(this.popup===null){var self=this;this.includeWidget('BalloonPopup',function(){self.popup=self.createWidget(null,'BalloonPopup');self.popup.setSize('300px','60px');self.popup.create(function(el){self.showMessage(errInfo);});jQuery(self.popup.dialog.domElem).draggable('disable');});return;}else if(this.popup.isActive()){this.popupQueue.push(errInfo);return;}else if(!errInfo){errInfo=this.popupQueue.shift();}
this._showFailedMessage(errInfo);this.popup.show(errInfo.element);},_showFailedMessage:function(error)
{var div=document.createElement('div');this.popup.setTitle('This content cannot be edited');var body=document.createElement('div');dfx.addClass(body,this.getClass()+'-error-body');var lockOwner=error.owner;var startTime=error.start;var canForceLock=error.force;var attrModified=error.modified;var message=lockOwner+' is currently editing this content.';message+=' You will need to wait until they are finished ';message+='before you can make your changes.';if(attrModified===true){message+='<br/><br/>';message+='The changes you have currently made will be lost.';}
dfx.setHtml(body,message);var options=document.createElement('div');dfx.addClass(options,this.getClass()+'-error-options');var stopEditing=document.createElement('a');dfx.setHtml(stopEditing,'OK');options.appendChild(stopEditing);div.appendChild(body);this.popup.replaceContent(div);var self=this;this.popup.removeButtons();this.popup.addButton('OK',function(){self.close();if(dfx.isFn(error.callback)===true){error.callback.call(self,'revert');}});if(canForceLock===true){this.popup.addButton('Force',function(){self.showProcessingAnimation();Locking.acquire(error.resource,function(result){if(result!==true){}else{if(dfx.isFn(error.callback)){error.callback.call(self,true);}
self.close();}},true);});}},isActive:function()
{if(this.popup){return this.popup.popupActive;}
return false;},close:function()
{this.popup.popupActive=false;if(this.popupQueue.length>0){var self=this;setTimeout(function(){self.showMessage();},100);}else{this.popup.close();this.popup=null;}},showProcessingAnimation:function()
{this.popup.popupActive=false;var div=document.createElement('div');var el=this.popup.getContentElement();dfx.addClass(div,this.getClass()+'-processingAnimation');this.popup.replaceContent(div);}};dfx.inherits('EditEditingModeLocking','Widget');function EditingAddButtonWidgetType(id)
{Widget.call(this,id);var self=this;this.opened=false;this.progress=false;dfx.hover(this.domElem,function(){dfx.addClass(self.domElem,'hover');},function(){dfx.removeClass(self.domElem,'hover');});dfx.addEvent(this.domElem,'click',function(){if(self.opened===true||self.progress===true){return;}
if(self.progress===false){self.progress=true;}
self.displayDisabledDiv(false);self.includeWidgets(['Select','TextField','ModalDialog'],function(){var modalDialog=self.createWidget('WizardModalDialog','ModalDialog');var contentParam={widgetType:'WizardSummary',widgetId:'WizardSummary',widgetArgs:dfx.jsonEncode([])};modalDialog.setDynamicParams(contentParam);modalDialog.setTitle('Wizards');modalDialog.setSize('710px','498px');modalDialog.setSubTitle('Click the wizard you would like to use');modalDialog.create(function(div){modalDialog.addOnOpenCallback(function(){WidgetStore.setData('wizardIsActive',true);self.disable();});modalDialog.addOnCloseCallback(function(windownCtrl){WidgetStore.setData('activeWizardAssetType',null);WidgetStore.setData('wizardIsActive',false);self.enable();});modalDialog.open();self.progress=false;});});});}
EditingAddButtonWidgetType.prototype={disable:function()
{dfx.addClass(dfx.getId('EditingAddButton'),'btnDisabled');this.opened=true;},enable:function()
{dfx.removeClass(dfx.getId('EditingAddButton'),'btnDisabled');this.opened=false;}};dfx.inherits('EditingAddButton','Widget');function EditingAutoSaveWidgetType(id,status,sessions,seconds,sessionid)
{Widget.call(this,id);var loc=window.location.href;Widget.CURRENT_SUFFIX='';if(loc.indexOf('/'+Widget.EDIT_SUFFIX)>0){Widget.CURRENT_SUFFIX=Widget.EDIT_SUFFIX;}
Widget.CURRENT_URL=loc.substring(0,loc.indexOf('/'+Widget.CURRENT_SUFFIX));this.url='';this.saving=false;this.seconds=seconds;this.sessionid=sessionid||null;this.intervalid=null;this.sessionPicker=null;this.loadedContents=null;this.counterInterval=null;this.registeredWidgets=[];this.sessionRadios=[];this.numFailedAttempts=0;this.maxAttempts=3;this._sessionPickerActive=false;this.isRecovering=false;this.loadedWidgets=[];var self=this;WidgetStore.addDataChangeListener('AutoSaveReadyListener','widgetReady',function(data){if(self._sessionPickerActive!==true&&self.isRecovering!==true){self.removeDisabledDiv(null,true);}
self.loadedWidgets.push(data.widgetid);self.setWidgetContents();});switch(status){case 0:setTimeout(function(){self.start(self.seconds);},self.seconds);break;case 1:var url=this.getCurrentUrl(true);this._createPickSessionBox(sessions,function(sessionid){self._sessionPickerActive=false;var postData={widget:'EditingAutoSaveWidget',action:'checkRedirect',sessionid:sessionid,url:url};dfx.post(url,postData,function(data){var result=dfx.jsonDecode(data);if(result.result==='redirect'){window.location=result.url;}else{var sel=dfx.getId(self.id);if(dfx.isset(sel)===true){dfx.remove(dfx.getId(self.id));self.disable(true);self.loadSessionContents(sessionid);}}});},function(){self._sessionPickerActive=false;var postData={widget:'EditingAutoSaveWidget',action:'removeSessions',url:url};dfx.post(url,postData,function(data){self.removeDisabledDiv();dfx.remove(dfx.getId(self.id));setTimeout(function(){self.start(self.seconds);},self.seconds);});});break;case 2:self.loadSessionContents(this.sessionid);setTimeout(function(){self.start(self.seconds);},self.seconds);break;default:break;}
this.includeWidgets(['Intervention','Button','ModalDialog'],function(){if(Widget.CSS_MINIFIED===false){dfx.preloadStylesheetImages(['BalloonPopupWidget','InterventionWidget','EditingSaveButtonWidget','EditingAutoSaveWidget','ModalDialogWidget','ButtonWidget','images/Icons'],self.getSkinURL());}
self.ipopup=self.createWidget(null,'Intervention',function(){WidgetStore.get('EditingSaveButton').removeWarning();self.numFailedAttempts=0;self.start(self.seconds);},function(){WidgetStore.get('EditingSaveButton').removeWarning();self._start();});self.ipopup.cancelText='Ignore';self.ipopup.confirmText='Retry';self.ipopup.create(function(){var msg='A backup of your unsaved changes could not be created. There may be a problem with your internet connection.';self.ipopup.setMessage(msg);self.ipopup.setSize('250px','90px');});});}
EditingAutoSaveWidgetType.prototype={start:function(interval)
{var self=this;this.intervalid=setInterval(function(){self._start();},(interval*1000));},stop:function()
{clearInterval(this.intervalid);},_start:function()
{if(this.saving===false){clearInterval(this.counterInterval);WidgetStore.get('EditingSaveButton').displayLoader();this.saving=true;var contents=this.saveWidgets();this.saveContents(dfx.jsonEncode(contents));}},saveWidgets:function()
{var contents={};var len=this.registeredWidgets.length;for(var i=0;i<len;i++){var widget=WidgetStore.get(this.registeredWidgets[i]);if(widget&&dfx.isFn(widget.getAutoSaveContents)===true){contents[widget.id]=widget.getAutoSaveContents();}}
return contents;},saveContents:function(contents)
{var activeScreen=WidgetStore.getData('activeScreen')||null;var activeMode=WidgetStore.getData('activeMode')||null;var url=this.getCurrentUrl(true);var postVars={widget:'EditingAutoSaveWidget',action:'saveContents',contents:contents,url:window.location.href,lastMode:null,lastScreen:null,lockInfo:dfx.jsonEncode(Locking.tokens)};if(activeMode){postVars.lastMode=activeMode.id;}
if(activeScreen){postVars.lastScreen=activeScreen.id;}
var self=this;dfx.post(url,postVars,function(data){self.saving=false;if(data!=='saved'){if(data.indexOf('lost-lock|')===0){var dataParts=data.split('|');if(dataParts[2]){Locking.removeLockByResource(dataParts[2]);}
var canForceLock=parseInt(dataParts[1]);if(canForceLock===1){canForceLock=true;}else{canForceLock=false;}
self._showLockFailed(canForceLock);clearInterval(self.intervalid);}else if(self.saveFailed()===true){return;}}else{self.numFailedAttempts=0;}
setTimeout(function(){WidgetStore.get('EditingSaveButton').removeLoader();},1100);},function(){if(self.saveFailed()!==true){WidgetStore.get('EditingSaveButton').removeLoader();}},7);},saveFailed:function()
{this.saving=false;this.numFailedAttempts++;if(this.maxAttempts<=this.numFailedAttempts){clearInterval(this.intervalid);WidgetStore.get('EditingSaveButton').displayWarning();if(this.ipopup){this.ipopup.show(dfx.getId('EditingSaveButton'),'fixed');return true;}
return true;}
return false;},_createPickSessionBox:function(sessions,okCb,cancelCb)
{this._sessionPickerActive=true;var self=this;var wrapper=document.createElement('div');var top=document.createElement('div');var middle=document.createElement('div');var bottom=document.createElement('div');wrapper.id=this.id;dfx.addClass(wrapper,this.id);dfx.addClass(top,this.id+'-top');dfx.addClass(middle,this.id+'-middle');dfx.addClass(bottom,this.id+'-bottom');var headerText=document.createElement('div');dfx.setHtml(headerText,'Session Detected');dfx.addClass(headerText,this.id+'-top-headerText');top.appendChild(headerText);var middleText=document.createElement('div');dfx.setHtml(middleText,'The following sessions have been detected. You should either restore or delete these sessions.');dfx.addClass(middleText,this.id+'-middle-text');middle.appendChild(middleText);wrapper.appendChild(top);wrapper.appendChild(middle);wrapper.appendChild(bottom);middle.appendChild(this._createSessionList(sessions));this.displayDisabledDiv();this.includeWidgets('Button',function(){var restoreBtn=self.createWidget(self.id+'-restore-button','Button','ButtonWidgetType-black',false,'Restore');var deleteBtn=self.createWidget(self.id+'-delete-button','Button','ButtonWidgetType-black',false,'Discard All');restoreBtn.create(function(rstBtn){deleteBtn.create(function(delBtn){bottom.appendChild(rstBtn);bottom.appendChild(delBtn);restoreBtn.addClickEvent(function(){var radioNum=self.sessionRadios.length;var selectedSessionid='';for(var i=0;i<radioNum;i++){if(self.sessionRadios[i].checked===true||self.sessionRadios[i].checked==='checked'){selectedSessionid=self.sessionRadios[i].value;}}
okCb.call(self,selectedSessionid);});deleteBtn.addClickEvent(cancelCb);dfx.setStyle(wrapper,'visibility','hidden');this.displayDisabledDiv();document.body.appendChild(wrapper);var posStyles=dfx.getElemPositionStyles(wrapper);for(var property in posStyles){dfx.setStyle(wrapper,property,posStyles[property]);}
dfx.setStyle(wrapper,'visibility','visible');});});});},_showLockFailed:function(canForce)
{var self=this;this.includeWidgets(['Intervention','Button','ModalDialog'],function(){var popup=self.createWidget(null,'Intervention',function(){WidgetStore.get('EditingSaveButton').removeWarning();var activeScreen=WidgetStore.getData('activeScreen');if(activeScreen&&activeScreen.obj&&activeScreen.obj.refreshScreen){self.displayDisabledDiv(true);self.setModified(false);activeScreen.obj.refreshScreen(activeScreen.id);self.start(self.seconds);}else{var activeMode=WidgetStore.getData('activeMode');var modeObj=WidgetStore.get(activeMode.id+'WidgetType');if(modeObj&&modeObj.reset){self.displayDisabledDiv(true);modeObj.reset(function(){modeObj.setReadOnly(true);self.start(self.seconds);});}else{self.start(self.seconds);}}},function(){WidgetStore.get('EditingSaveButton').removeWarning();var activeScreen=WidgetStore.getData('activeScreen');if(activeScreen){var screenWidget=WidgetStore.get(activeScreen.screenWdgtid);if(screenWidget){screenWidget.forceEdit(function(){self.removeDisabledDiv();self.start(self.seconds);});}else{self.errorDialog('Failed to forcibly acquire the lock on the screen.','Locking failed.',function(){self.removeDisabledDiv();self.start(self.seconds);});}}else{var widgetid='';var activeMode=WidgetStore.getData('activeMode');if(activeMode.id==='ProfileScreenMode'){widgetid='ProfileScreenWidgetType';}else if(activeMode.id==='TrashEditingMode'){widgetid='TrashEditingModeWidgetType';}
if(widgetid!==''){var modeWidget=WidgetStore.get(widgetid);modeWidget.forceEdit(function(){self.removeDisabledDiv();self.start(self.seconds);});}else{self.errorDialog('Failed to forcibly acquire the lock on the screen.','Locking failed.',function(){self.removeDisabledDiv();self.start(self.seconds);});}}});popup.cancelText='Revert Changes';if(canForce!==true){popup.confirmText=null;}else{popup.confirmText='Force Edit';}
popup.create(function(){popup.setCancelButtonSize(100);popup.setConfirmButtonSize(100);var msg='Someone has forcibly acquired locks for this screen';popup.setMessage(msg);popup.setSize('292px','62px');self.displayDisabledDiv();popup.show(dfx.getId('EditingSaveButton'),'fixed');});});},_createSessionList:function(sessions)
{var div=document.createElement('ul');var sessArr=[];for(var sessionid in sessions){sessArr.push({'sessionid':sessionid,'sessionDate':sessions[sessionid].date,'title':sessions[sessionid].title});}
var sessNum=sessArr.length;for(var i=0;i<sessNum;i++){var li=document.createElement('li');var wrap=document.createElement('div');var textWrap=document.createElement('div');var title=document.createElement('div');var time=document.createElement('div');var titleLabel=document.createElement('label');titleLabel.setAttribute('for','session_'+sessArr[i].sessionid);titleLabel.innerHTML=sessArr[i].title+'<br />'+sessArr[i].sessionDate;textWrap.appendChild(titleLabel);var radioWrap=document.createElement('div');if(jQuery.browser.msie===true&&jQuery.browser.version==='7.0'){radio=document.createElement('<input name="session" />');}else{radio=document.createElement('input');radio.name='session';}
radio.id='session_'+sessArr[i].sessionid;radio.type='radio';radio.value=sessArr[i].sessionid;radioWrap.appendChild(radio);if(i===0){radio.setAttribute('checked',true);}
this.sessionRadios.push(radio);wrap.appendChild(radioWrap);wrap.appendChild(textWrap);dfx.addClass(wrap,this.id+'-session-wrap');dfx.addClass(radioWrap,this.id+'-session-radio-wrap');dfx.addClass(textWrap,this.id+'-session-text-wrap');dfx.addClass(title,this.id+'-session-title');dfx.addClass(time,this.id+'-session-time');dfx.addClass(radio,this.id+'-session-radio');if(i===(sessNum-1)){dfx.addClass(li,this.id+'-last-session-li');}else{dfx.addClass(li,this.id+'-session-li');}
dfx.setStyle(wrap,'overflow','hidden');li.appendChild(wrap);div.appendChild(li);}
return div;},registerWidget:function(widget)
{if(this.registeredWidgets.inArray(widget.id)===false){this.registeredWidgets.push(widget.id);}},unregisterWidget:function(widget)
{var index=this.registeredWidgets.find(widget.id);if(index>=0){this.registeredWidgets.splice(index,1);}},loadSessionContents:function(sessid)
{var self=this;this.loadContents(sessid,function(){self.enable();self.isRecovering=true;self._sessionPickerActive=false;self.setWidgetContents();setTimeout(function(){self.start(self.seconds);},self.seconds);});},loadContents:function(sessid,callBack)
{var url=this.getCurrentUrl(true);var postVars='?widget=EditingAutoSaveWidget&action=loadContents&sessid='+sessid;var self=this;dfx.post(url+postVars,true,function(data){var asTag=data.firstChild;if(dfx.isset(asTag)===true&&asTag.childNodes.length>0){var assetid=dfx.getNodeTextContent(asTag.getElementsByTagName('assetid').item(0));var time=dfx.getNodeTextContent(asTag.getElementsByTagName('time').item(0));var str=dfx.getNodeTextContent(asTag.getElementsByTagName('contents').item(0));self.setAutoSaveTime(time);self.setLoadedStateAssetid(assetid);var contents=dfx.jsonDecode(str);self.loadedContents=contents;}
if(dfx.isFn(callBack)===true){callBack.call();}});},setWidgetContents:function()
{for(var widgetid in this.loadedContents){this._setWidgetContents(widgetid);break;}},_setWidgetContents:function(widgetid)
{if(this.loadedWidgets.inArray(widgetid)!==true){return;}
var widget=WidgetStore.get(widgetid);if(dfx.isset(widget)===true&&dfx.isFn(widget.loadAutoSaveContents)===true){var content=this.loadedContents[widgetid];delete this.loadedContents[widgetid];if(dfx.isEmpty(this.loadedContents)===true){this.removeDisabledDiv(null,true);this.isRecovering=false;}
widget.loadAutoSaveContents(content,function(){});}},continueLoadContents:function(widgetid)
{this.setWidgetContents();},setAutoSaveTime:function(time)
{this.loadedStateTime=parseInt(time);},getAutoSaveTime:function(formated)
{if(dfx.isset(formated)===true){var date=new Date();date.setTime((time*1000));return date.toLocaleString();}
return this.loadedStateTime;},setLoadedStateAssetid:function(assetid)
{this.loadedStateAssetid=assetid;},getLoadedStateAssetid:function()
{return this.loadedStateAssetid;},closeSelectionBox:function()
{this._sessionPickerActive=false;var self=this;dfx.remove(dfx.getId(this.id+'_pickSessionBox'));setTimeout(function(){self.start(self.seconds);},this.seconds);this.enable();},disable:function(showLoading)
{Widget.prototype.disable.call(this);this.displayDisabledDiv(showLoading);},enable:function()
{Widget.prototype.enable.call(this);this.removeDisabledDiv();},getSavedContents:function(widgetId)
{if(dfx.isset(this.loadedContents)===true){return this.loadedContents[widgetId];}
return null;},removeSavedContents:function(widgetId)
{if(dfx.isset(this.loadedContents)===true){delete this.loadedContents[widgetId];}}};dfx.inherits('EditingAutoSave','Widget');function EditingContentSharingWidgetType(id)
{Widget.call(this,id);this.keywordsList=null;}
EditingContentSharingWidgetType.prototype={validateKey:function(key)
{if(key!==null&&key!==''){return true;}
return false;},add:function(key,title,content,callback)
{var keyVal={title:title,content:content};var params={widget:'EditingContentSharingWidget',action:'addNewKeyword',keyword:dfx.jsonEncode(keyVal)};dfx.post(this.url,params,function(data){var data=dfx.jsonDecode(data);if(callback){callback.call(this,data);}});},remove:function(key){},edit:function(key,value){},get:function(key){},getKeywordsList:function(callback,force)
{var params={widget:'EditingContentSharingWidget',action:'getKeywordsList'};var self=this;dfx.post(this.url,params,function(data){self.keywordsList=dfx.jsonDecode(data);callback.call(this,self.keywordsList);});},getValueFromList:function(key)
{var len=this.keywordsList.length;for(var i=0;i<len;i++){if(this.keywordsList[i].getAttribute('id')===key){return dfx.getNodeTextContent(this.keywordsList[i]);}}
return null;}};dfx.inherits('EditingContentSharing','Widget');function EditingModeSwitcherWidgetType(id,modesInfo,contentDivId,initialMode)
{Widget.call(this,id);var modeSwitcher=dfx.getId('mode_switcher');dfx.remove(modeSwitcher);dfx.getId('ToolbarContent').appendChild(modeSwitcher);this.contentDivId=contentDivId;this.modeInfos=modesInfo;this.modes=[];this.modeSwitchActions={};this.addModes(modesInfo);if(dfx.isset(initialMode)===true&&initialMode!==''){this.initialMode=initialMode;}else{this.initialMode='PreviewEditingMode';}
this.currentMode=this.initialMode;WidgetStore.setData('activeMode',this.getModeInfo(this.initialMode));this.previousModeId=null;this.divs=dfx.getClass('mode-button',dfx.getId('mode_switcher-buttons'),'div');this.switcherInner=dfx.getClass('mode-switcher-inner')[0];this.slider=dfx.getId('EditingModeSwitcherSlider');this.expanderControler=dfx.getClass('expander-arrow')[0];this.modeSwictherElem=dfx.getId('EditingModeSwitcher');this.staticButtonsWidth=dfx.getElementWidth(this.modeSwictherElem);this.staticButtonsCount=dfx.getClass('mode-button',this.modeSwictherElem,'div').length;this.lastVisibleButton=this.divs[this.staticButtonsCount];this.setZindex();var self=this;var expander=dfx.getId('expander');this.expander=expander;dfx.setStyle(dfx.getClass('mode-switcher-inner'),'width',this.getMinWidth());dfx.attr(expander,'open',0);dfx.hover(this.divs,function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'button-spacer')===true){target=target.parentNode;}
dfx.removeClass(self.divs,'mode-button-hover');if(!dfx.hasClass(target,'mode-button-selected')){dfx.addClass(target,'mode-button-hover');}},function(e){var target=dfx.getMouseEventTarget(e);dfx.removeClass(target,'mode-button-hover');});if(this.divs.length<=3){dfx.setStyle(dfx.getId('expander'),'display','none');}
dfx.addEvent(expander,'click',function(e,callBack){if(dfx.attr(expander,'open')!=='1'){self.open();}else{self.animateModeSelection(self.lastVisibleButton);}});dfx.hover(expander,function(){dfx.addClass(expander,'hover');},function(){dfx.removeClass(expander,'hover');});this.maxWidth=this.getMaxWidth();dfx.setStyle(dfx.getId('EditingModeSwitcherSlider'),'width',(this.maxWidth+2)+'px');dfx.setStyle(dfx.getId('mode_switcher-buttons'),'width',(this.maxWidth+this.staticButtonsWidth+3)+'px');var self=this;dfx.addEvent(this.divs,'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'button-spacer')===true){target=target.parentNode;}
if(self.isStaticButton(target)===false){self.lastVisibleButton=target;}
self.switchMode(target);});this.mouseOut=true;var autoClose=function(){if(self.mouseOut===true&&dfx.attr(expander,'open')===1){self.animateModeSelection(self.lastVisibleButton);}};var i=null;dfx.hover(dfx.getClass('ToolbarWidgetType'),function(){if(i){clearTimeout(i);}
self.mouseOut=false;},function(){self.mouseOut=true;i=setTimeout(autoClose,2000);});if(dfx.isset(WidgetStore.get('EditingAutoSave'))===true){WidgetStore.get('EditingAutoSave').registerWidget(this);}
var preSelectedMode=dfx.getId(this.id+'-'+this.initialMode);this.switchMode(preSelectedMode,null,function(){self.ready();});}
EditingModeSwitcherWidgetType.prototype={switchMode:function(selectedMode,requestParams,callback,extraData,noConfirm)
{var selectedModeId='';if(selectedMode&&dfx.isset(selectedMode.id)===true){selectedModeId=selectedMode.id;}else{selectedModeId=selectedMode[0].id;}
if(noConfirm!==true&&this.previousModeId==='EditEditingMode'){var editWidget=WidgetStore.get('EditEditingModeWidgetType');if(dfx.isset(editWidget)===true){editWidget.modeSwitchedOff();}}
var screenModification=this._hasModified();if(screenModification===true){var answer=confirm(WidgetStore.getUnsavedChangesStr());if(!answer){return;}else{this.disableSaveButton();}}
this._removeSelectedModeClass(selectedModeId);if(this.isStaticButton(selectedMode)===false){this.lastVisibleButton=selectedMode;}
this.animateModeSelection(selectedMode);this.disable(true);var modeid=selectedModeId.substring((this.id+'-').length);this._switchMode(modeid,requestParams,callback,extraData);},_hasModified:function()
{var saveButton=WidgetStore.get('EditingSaveButton');if(saveButton.isEnabled()===true){return true;}
return false;},_removeSelectedModeClass:function(modeid)
{dfx.addClass(dfx.getId(modeid),'mode-button-selected');if(modeid!==(this.id+'-'+this.currentMode)){dfx.removeClass(dfx.getId(this.id+'-'+this.currentMode),'mode-button-selected');}},_switchMode:function(modeid,requestParams,callback,extraData)
{var prevMode=WidgetStore.get(this.previousModeId+'WidgetType');if(prevMode){if(prevMode.switchedOff){prevMode.switchedOff();}else{throw prevMode.id+' must implement switchedOff() method.';}}else{prevMode=WidgetStore.get('PreviewEditingModeWidgetType');if(prevMode){prevMode.switchedOff();}else{prevMode=WidgetStore.get('PreviewEditingMode');if(dfx.isset(prevMode)===true){prevMode.switchedOff();}}}
var self=this;var url=window.location.toString();var request='';var idx=url.search(/\?/);if(idx!==-1){var base=url.substr(0,idx);var queryStrVals=dfx.queryString(url);var key=null;var val=null;var first=true;var queryStrFound=false;for(key in queryStrVals){if(queryStrFound===false){queryStrFound=true;}
val=queryStrVals[key];if(key!=='initialMode'){if(first===true){base=base+'?'+key+'='+val;first=false;}else{base=base+'&'+key+'='+val;}}}
var querySymbol='&';if(queryStrFound===false){querySymbol='?';}
request=base+querySymbol+'modeType='+modeid;}else{request=url+'?modeType='+modeid;}
this.previousMode=this.previousModeId;this.previousModeId=modeid;dfx.get(request,requestParams,function(data){self.currentMode=modeid;WidgetStore.setData('activeMode',self.getModeInfo(modeid));var targetWidget=WidgetStore.get(self.contentDivId);if(self.currentMode==='PreviewEditingMode'||self.currentMode==='EditEditingMode'){var editingContents=dfx.getId('EditingScreenModes');dfx.setStyle(editingContents,'display','none');dfx.setStyle(editingContents,'visibility','hidden');editingContents=dfx.getId('EditingContents');dfx.setStyle(editingContents,'display','block');dfx.setStyle(editingContents,'visibility','visible');dfx.removeClass(editingContents,'scrollable');var conLen=editingContents.childNodes.length;for(var i=0;i<conLen;i++){dfx.remove(editingContents.childNodes[i]);}
targetWidget.setAlternateDiv('EditingContents');}else{var editingContents=dfx.getId('EditingContents');dfx.setStyle(editingContents,'display','none');dfx.setStyle(editingContents,'visibility','hidden');editingContents=dfx.getId('EditingScreenModes');dfx.setStyle(editingContents,'display','block');dfx.setStyle(editingContents,'visibility','visible');editingContents=dfx.getId('EditingScreenModes');if(editingContents){var conLen2=editingContents.childNodes.length;for(var i=0;i<conLen2;i++){dfx.remove(editingContents.childNodes[i]);}}else{var newDiv=document.createElement('div');newDiv.id='EditingScreenModes';dfx.addClass(newDiv,'EditingContentsWidgetType');document.body.appendChild(newDiv);}
targetWidget.setAlternateDiv('EditingScreenModes');}
targetWidget.updateContent(data,function(data){if(dfx.isFn(callback)===true){callback.call(self,data);}});});},getCurrentMode:function()
{return this.currentMode;},getPreviousMode:function()
{return this.previousMode;},getAutoSaveContents:function()
{return this.currentMode;},loadAutoSaveContents:function(content,callback)
{var self=this;if(dfx.isset(content)===true){if(this.currentMode!==content){this.switchMode(dfx.getId(this.id+'-'+content),null,function(){callback.call(self);});}}},disable:function()
{Widget.prototype.disable.call(this);this.displayDisabledDiv(true);},enable:function()
{Widget.prototype.enable.call(this);this.removeDisabledDiv();},animateModeSelection:function(selectedEl)
{if(selectedEl===null||this.isStaticButton(selectedEl)===true){selectedEl=this.lastVisibleButton;}
var staticButtonsRect=dfx.getBoundingRectangle(this.modeSwictherElem);var selectedElRect=dfx.getBoundingRectangle(selectedEl);var sliderMargin=parseInt(dfx.getStyle(this.slider,'margin-left'));var margin=((selectedElRect.x1-staticButtonsRect.x2-sliderMargin)*-1);dfx.animate(this.slider,{marginLeft:margin+'px'},200);this.close(null,null,true);},open:function(callback)
{var toShow=[];var ln=this.divs.length;for(var i=2;i<ln;i++){if(parseInt(dfx.getStyle(this.divs[i],'margin-left'))<0){this.toShow.push(this.divs[i]);}}
dfx.addClass(this.expanderControler,'expander-arrow-left');dfx.attr(this.expander,'open',1);if(dfx.isFn(callback)===false){callback=function(){};}
if(parseInt(dfx.getStyle(this.slider,'margin-left'))<0){dfx.animate(this.slider,{marginLeft:0},200,callback);callback=function(){};}
dfx.animate(this.switcherInner,{width:(this.staticButtonsWidth+this.getMaxWidth()-4)},200,callback);},close:function(width,resize,force)
{if(force!==true&&this.mouseOut!==true){return;}
dfx.removeClass(this.expanderControler,'expander-arrow-left');dfx.attr(this.expander,'open',0);dfx.animate(this.switcherInner,{width:this.getMinWidth()+'px'},300);},setZindex:function()
{var len=this.divs.length;for(var i=0;i<len;i++){var zIndex=(len-i);if(i<this.staticButtonsCount){zIndex=len;}
dfx.setStyle(this.divs[i],'z-index',zIndex);}
dfx.setStyle(this.modeSwictherElem,'z-index',len);},getMaxWidth:function()
{if(!this.maxWidth){this.maxWidth=0;var len=this.divs.length;for(var i=this.staticButtonsCount;i<len;i++){var width=dfx.getElementWidth(this.divs[i]);this.maxWidth+=width;}}
return this.maxWidth;},getMinWidth:function()
{var width=(this.staticButtonsWidth+dfx.getElementWidth(this.lastVisibleButton));return(width-2);},getModeInfo:function(modeid)
{return this.modeInfos[modeid];},isStaticButton:function(el)
{var count=this.staticButtonsCount;for(var i=0;i<count;i++){if(el===this.divs[i]){return true;}}
return false;},createModeButton:function(title,id,selected,buttonType,iconType)
{if(dfx.isset(buttonType)===true&&buttonType!=='mode'){var self=this;var toolbar=WidgetStore.get('Toolbar');switch(buttonType){case'icon':var iconDiv=dfx.getId(iconType+'EditingToolbarIcon');var previd=null;dfx.addEvent(iconDiv,'click',function(){var iconW=WidgetStore.get(iconType+'EditingToolbarIcon');if(previd!==id||iconW.state==='inactive'){var screenModification=self._hasModified();if(screenModification===true){var answer=confirm(WidgetStore.getUnsavedChangesStr());if(!answer){return;}}
var icon=WidgetStore.get(iconType+'EditingToolbarIcon');if(icon){icon.toggleState('active');}
self.setModified(false);self._removeSelectedModeClass(id);self._switchMode(id);previd=id;}else{self.switchMode(self.divs[0]);previd=null;}});break;default:break;}}else{var div=document.createElement('div');div.id=this.id+'-'+id;dfx.setUnselectable(div,true);dfx.setHtml(div,title+'<div class="button-spacer"></div>');dfx.addClass(div,'mode-button');dfx.setStyle(div,'z-index','8');dfx.setStyle(div,'cursor','pointer');if(selected===true){dfx.addClass(div,'mode-button-selected');this.currentMode=id;}
return div;}},addModes:function(modes)
{var parentElement=dfx.getId('EditingModeSwitcher');var i=0;for(var id in modes){var mode=modes[id];if(modes.hasOwnProperty(id)===false){continue;}
this.modes[i]={title:mode.title,widgetid:id,system:mode.system};var div=this.createModeButton(mode.title,id,false,mode.type,mode.iconType);if(dfx.isset(div)===true){parentElement.appendChild(div);if(i===1){parentElement=dfx.getId('EditingModeSwitcherSlider');}}
i++;}},makeButtonVisible:function(modeid,callback)
{if(this.buttonIsVisible(modeid)===true){callback.call(this);}else{this.open(callback);}},buttonIsVisible:function(modeid)
{var el=dfx.getId(modeid);if(this.isStaticButton(el)===true||this.lastVisibleButton===el){return true;}else if(parseInt(dfx.attr(this.expander,'open'))===1){return true;}
return false;},getModeButtonid:function(modeid)
{return'EditingModeSwitcher-'+modeid;},getModeIconid:function(modeid)
{return modeid.replace('EditingMode','').replace('ScreenMode','')+'EditingToolbarIcon';}};dfx.inherits('EditingModeSwitcher','Widget');function EditingSaveButtonWidgetType(id)
{Widget.call(this,id);this.widgetType='EditingSaveButton';this.saveCallback=null;this.revertCallback=null;this.domElem=dfx.getId(this.id);this.saveDiv=dfx.getId(this.id+'-save');this.revertDiv=dfx.getId(this.id+'-revert');this.loaderDiv=dfx.getId(this.id+'-loader');this.inactClassName='inact';this.hoverClassName='hover';this.loading=false;this.enabled=false;var self=this;dfx.addEvent(this.saveDiv,'click',function(){if(self.loading===true){return;}
if(dfx.hasClass(self.domElem,self.inactClassName)===false){self.disableAll();if(dfx.isFn(self.saveCallback)===true){self.saveCallback.call(self);}}});var iw=null;dfx.addEvent(this.revertDiv,'click',function(){if(dfx.hasClass(self.domElem,self.inactClassName)===false){self.disableAll();self.displayDisabledDiv();if(iw){iw.show(self.saveDiv,'fixed');return;}
self.includeWidget('Intervention',function(){iw=self.createWidget(null,'Intervention',function(){self.removeDisabledDiv();self.enableAll();},function(){if(dfx.isFn(self.revertCallback)===true){self.displayDisabledDiv(true);self.revertCallback.call(self);}});iw.create(function(){iw.setMessage('You will lose any changes that you have made. Do you still want to revert?');iw.setSize('260px','61px');iw.show(self.saveDiv,'fixed');});});}});dfx.hover(this.domElem,function(){dfx.addClass(self.domElem,self.hoverClassName);},function(){dfx.removeClass(self.domElem,self.hoverClassName);});dfx.hover(this.revertDiv,function(evt){dfx.addClass(self.revertDiv,'mover');},function(evt){dfx.removeClass(self.revertDiv,'mover');});WidgetStore.addDataChangeListener('EditingSaveButton','activeMode',function(newMode,oldMode){if(newMode.id==='PreviewEditingMode'||newMode.id==='VersioningEditingMode'){self.disableAll();}});WidgetStore.addDataChangeListener('EditingSaveButton','activeScreen',function(newScreen,oldScreen){if(dfx.isset(newScreen)===false){return;}});var input=dfx.getId(this.id+'-save-input');dfx.addEvent(input,'focus',function(e){dfx.trigger(input,'blur');});this.displayWarning();this.removeWarning();}
EditingSaveButtonWidgetType.prototype={setSaveButton:function(saveCallback,revertCallback)
{this.saveCallback=saveCallback;this.revertCallback=revertCallback;},setTitle:function(title)
{dfx.setHtml(this.saveDiv,title);},displayLoader:function()
{this.loading=true;dfx.addClass(this.domElem,'loader');},removeLoader:function()
{this.loading=false;dfx.removeClass(this.domElem,'loader');},displayWarning:function()
{this.displayLoader();dfx.addClass(this.domElem,'warning');this.loading=false;},removeWarning:function()
{this.removeLoader();dfx.removeClass(this.domElem,'warning');this.loading=false;},showSaveButton:function()
{dfx.setStyle(this.domElem,'visibility','visible');},hideSaveButton:function()
{dfx.setStyle(this.domElem,'visibility','hidden');},enableAll:function()
{this.enableSave();this.enableRevert();this.enabled=true;},disableAll:function()
{this.disableSave();this.disableRevert();this.enabled=false;},enableSave:function()
{dfx.removeClass(this.domElem,this.inactClassName);},disableSave:function()
{dfx.addClass(this.domElem,this.inactClassName);},enableRevert:function()
{dfx.removeClass(this.domElem,this.inactClassName);},disableRevert:function()
{dfx.addClass(this.domElem,this.inactClassName);}};dfx.inherits('EditingSaveButton','Widget');function EditingToolbarWidgetType(id)
{Widget.call(this,id);this.screenToolsEl=dfx.getId(id+'-screenTools');this.iconsWrapper=dfx.getId(id+'-iconsWrapper');this.buttonsWrapper=dfx.getId(id+'-buttonsWrapper');this.init();}
EditingToolbarWidgetType.prototype={init:function()
{var self=this;WidgetStore.addDataChangeListener('EditingToolbar','activeMode',function(newVal,oldVal){self.screenChanged(newVal,oldVal);});},screenChanged:function(newVal,oldVal)
{if(newVal.id!=='EditEditingMode'){dfx.empty(this.screenToolsEl);}},addScreenTool:function(elem)
{this.screenToolsEl.appendChild(this._createWrapper('tools',elem));},addIcon:function(iconElem)
{this.iconsWrapper.appendChild(this._createWrapper('icons',iconElem));},addButton:function(button)
{this.buttonsWrapper.appendChild(this._createWrapper('buttons',button));},_createWrapper:function(type,elem)
{var wrapper=document.createElement('div');dfx.addClass(wrapper,'ToolbarWidgetType-'+type+'Wrapper-item');wrapper.appendChild(elem);return wrapper;}};dfx.inherits('EditingToolbar','Widget');function ExpandableMenuItemWidgetType(id,title)
{Widget.call(this,id);this.widgetType='ExpandableMenuItem';this.title=null;this.content=null;this.data=null;this.setTitle(title);}
ExpandableMenuItemWidgetType.prototype={create:function(callback)
{if(!dfx.isFn(callback)){throw InvalidArgumentException();}
var main=document.createElement('div');main.id=this.id;dfx.addClass(main,this.getClass());var top=document.createElement('div');top.id=this.id+'-top';dfx.addClass(top,this.getClass()+'-top');var expander=document.createElement('div');expander.id=this.id+'-expander';dfx.addClass(expander,this.getClass()+'-expander');var titleBar=document.createElement('div');titleBar.id=this.id+'-title';dfx.addClass(titleBar,this.getClass()+'-title');dfx.setHtml(titleBar,this.title);var summary=document.createElement('div');summary.id=this.id+'-summary';dfx.addClass(summary,this.getClass()+'-summary');dfx.setHtml(summary,this.summary);var bottom=document.createElement('div');bottom.id=this.id+'-bottom';dfx.addClass(bottom,this.getClass()+'-bottom');this.content=document.createElement('div');dfx.addClass(this.content,this.getClass()+'-content');top.appendChild(expander);top.appendChild(titleBar);top.appendChild(summary);bottom.appendChild(this.content);main.appendChild(top);main.appendChild(bottom);this.createChildren(this.content,function(){callback.call(this,main);return;});},setTitle:function(title)
{this.title=title;var el=dfx.getId(this.id+'-title');if(el){dfx.setHtml(el,title);}},getTitle:function()
{return this.title;},setSummary:function(s)
{this.summary=s;var el=dfx.getId(this.id+'-summary');if(el){dfx.setStyle(el,'width',this._getMaxSummaryWidth()+'px');dfx.setHtml(el,s);}},_getMaxSummaryWidth:function()
{var title=dfx.getId(this.id+'-title');if(title){var pw=dfx.getElementWidth(title.parentNode);var tw=dfx.getElementWidth(title);var sw=(pw-tw-50);if(sw<0){sw=0;}
return sw;}},getSummary:function()
{return this.summary;},add:function(widget)
{Widget.prototype.add.call(this,widget);var el=this.content;if(el){widget.create(function(elem){el.appendChild(elem);});}},expand:function()
{var expander=dfx.getId(this.id+'-expander');var el=dfx.getId(this.id+'-bottom');dfx.setStyle(el,'display','block');dfx.addClass(expander,this.getClass()+'-expander-open');this.setSummary('');},collapse:function()
{var expander=dfx.getId(this.id+'-expander');var el=dfx.getId(this.id+'-bottom');dfx.setStyle(el,'display','none');dfx.removeClass(expander,this.getClass()+'-expander-open');this.setSummary(this.getChildrenSummary());},getChildrenSummary:function()
{var s=[];var len=this.children.length;for(var i=0;i<len;i++){if(dfx.isFn(this.children[i].getWidgetSummary)===true){s.push(this.children[i].getWidgetSummary());}}
return s.join(' - ');},_addEvents:function()
{this.setSummary(this.getChildrenSummary());var expander=dfx.getId(this.id+'-expander');if(expander){var el=dfx.getId(this.id+'-bottom');var self=this;dfx.addEvent(dfx.getId(this.id+'-top'),'click',function(){if(dfx.getStyle(el,'display')==='block'){self.collapse();}else{self.expand();}});}else{throw new'Failed to add action to expander. '+this.getClass();}},setData:function(data)
{this.data=data;},getData:function()
{return this.data;}};dfx.inherits('ExpandableMenuItem','Widget');function ExpandableMenuWidgetType(id,collapsed,ani)
{Widget.call(this,id);this.widgetType='ExpandableMenu';this.domElm=null;this.sortEnabled=false;this.animation=ani||false;this.collapsed=collapsed||true;this.header=dfx.getId(this.id+'_header');this.body=dfx.getId(this.id+'_body');this.addHeaderClickEvent();}
ExpandableMenuWidgetType.prototype={addHeaderClickEvent:function(callback)
{var self=this;dfx.addEvent(this.header,'click',function(){var after=function(){if(self.collapsed===true){self.collapsed=false;dfx.swapClass(self.header,'ExpandableMenuWidgetType-header-collapse','ExpandableMenuWidgetType-header-open');}else{self.collapsed=true;dfx.swapClass(self.header,'ExpandableMenuWidgetType-header-open','ExpandableMenuWidgetType-header-collapse');}
if(dfx.isFn(callback)===true){callback.call(self);}};if(self.animation===true){if(self.collapsed===true){dfx.blindDown(self.body,'fast',after);}else{dfx.blindUp(self.body,'fast',after);}}else{if(self.collapsed===true){dfx.setStyle(self.body,'display','block');}else{dfx.setStyle(self.body,'display','none');}
after();}});},create:function(callback)
{if(dfx.isFn(callback)===false){throw'callback must be a function (ExpandableMenuWidgetType.create)';}
var main=document.createElement('div');main.id=this.id;dfx.addClass(main,this.getClass());this.domElm=main;callback.call(this,main);},addItem:function(title,data,callback)
{if(dfx.isFn(callback)===false){throw'callback must be a function';}
var self=this;this.includeWidgets(['ExpandableMenuItem'],function(){var item=self.createWidget(null,'ExpandableMenuItem',title);item.setData(data);self.add(item);item.create(function(itemEl){self.domElm.appendChild(itemEl);if(self.sortEnabled===true){$(self.domElm).SortableAddItem(itemEl);}
callback.call(self,item);});});},show:function(index,closeOthers)
{var len=this.children.length;if(closeOthers===true){for(var i=0;i<len;i++){this.children[i].collapse();}}
if(index<0){index=(len-1);}
this.children[index].expand();},getChildren:function()
{var elems=dfx.getClass('ExpandableMenuItemWidgetType',this.domElem);var children=[];var len=elems.length;for(var i=0;i<len;i++){children.push(WidgetStore.get(elems[i].id));}
return children;},enableSorting:function(onStopCallback,handle)
{this.sortEnabled=true;var c='ExpandableMenuItemWidgetType';handle=handle||('div.'+c+'-top');$(dfx.getId(this.id)).Sortable({accept:c,revert:true,tolerance:'intersect',opacity:0.8,handle:handle,ghosting:true,axis:'vertically',onStop:function(e){dfx.setStyle(dfx.getClass(c),'display','block');if(dfx.isFn(onStopCallback)===true){onStopCallback.call(this);}},onStart:function(){dfx.setStyle(dfx.getId('dragHelper'),'z-index',1010);}});}};dfx.inherits('ExpandableMenu','Widget');function FileCreateWizardWidgetType(id)
{Widget.call(this,id);this.progressBar=null;this.incrm=100;this.errors=[];this.success={};var wiz=WidgetStore.get('WizardRunner');if(dfx.isset(wiz)===true){this.wizardRunner=wiz;var self=this;wiz.setCustomProcessFn(function(steps,values){self.processWizard(steps,values);});}}
FileCreateWizardWidgetType.prototype={processWizard:function(steps,values,_index)
{if(dfx.isset(_index)===false){_index=0;this.errors=[];this.success={};if(values.length>0){this.incrm=(100/values.length);}
var self=this;this.createProgressBar(function(el){self.wizardRunner.wizardStepManager._setProcessingMessage(el);self.wizardRunner.wizardStepManager._showProcessing();self.processWizard(steps,values,_index);});}else{if(dfx.isset(values[_index])===true){var fileWidget=null;for(var step in values[_index]){for(var widgetid in values[_index][step]){var widget=WidgetStore.get(widgetid);if(widget.widgetType==='FileUpload'){fileWidget=widget;break;}}}
var self=this;this.processSingleUpload(fileWidget,_index,values[_index],function(){self.processWizard(steps,values,(_index+1));});}else{this.wizardRunner.wizardStepManager._hideConfirmProcessing();var result={};result.errors=this.errors;result.type='action';if(dfx.isEmpty(this.success)===false){result.success=this.success;}
this.wizardRunner.wizardStepManager._showCompleteMsg(result);this.reset();}}},reset:function()
{this.errors=[];this.success={};this.incrm=100;},_getUploadParams:function()
{return this.wizardRunner.getProcessParams();},processSingleUpload:function(fileWidget,idx,stepData,callback)
{if(dfx.isset(fileWidget)===false){return;}
var form=document.createElement('form');form.id=this.id+idx;form.setAttribute('method','post');form.setAttribute('enctype','multipart/form-data');form.setAttribute('encoding','multipart/form-data');var fieldEl=fileWidget.getElem(idx);var tmpDiv=document.createElement('div');dfx.insertBefore(fieldEl,tmpDiv);form.appendChild(fieldEl);var params=this._getUploadParams();var steps=[];steps.push(stepData);params.steps=dfx.jsonEncode(steps);form.setAttribute('action',dfx.addToQueryStr(this.url,params));this.appendFields(form);dfx.setStyle(form,'display','none');document.body.appendChild(form);fileWidget.setForm(form);var self=this;fileWidget.setEndFunction(function(status){self._fileUploadCompleted(idx,status,form,callback);});form.submit();dfx.insertBefore(tmpDiv,fieldEl);dfx.remove(tmpDiv);},_fileUploadCompleted:function(idx,status,form,callback)
{var self=this;status=dfx.jsonDecode(dfx.getHtml(status));var errLen=status.errors.length;for(var i=0;i<errLen;i++){self.errors.push(status.errors[i]);}
if(status.hasOwnProperty('success')===true){if(status.success.hasOwnProperty('icon')===true){self.success.icon=status.success.icon;}
if(status.success.hasOwnProperty('assets')===true){if(self.success.hasOwnProperty('assets')===false){self.success.assets={};}
for(var assetid in status.success.assets){self.success.assets[assetid]=status.success.assets[assetid];}}}
dfx.remove(form);self.progressBar.updateProgress((self.incrm*(idx+1)),function(){callback.call(self);});},createProgressBar:function(callback)
{var main=document.createElement('div');var progressBarCont=document.createElement('div');main.appendChild(progressBarCont);var self=this;this.includeWidget('ProgressBar',function(){self.progressBar=self.createWidget(this.id+'-progresbar','ProgressBar');self.progressBar.setNoDeleteBtn(true);self.progressBar.create(function(el){self.progressBar.updateLabel('File upload in progress ...');progressBarCont.appendChild(el);callback.call(self,main);});});},appendFields:function(formEl){}};dfx.inherits('FileCreateWizard','Widget');function FileUploadWidgetType(id,allowedTypes,linkedTextFieldid,showFileName)
{Widget.call(this,id);this.widgetType='FileUpload';this.iframe=null;this.startFn=null;this.endFn=null;this.updateFn=null;this.uploadElements=[];this._currentIndex=0;this.parentNode=null;this.allowedTypes=allowedTypes||[];this.showFileName=showFileName||false;this.linkedTextFieldid=linkedTextFieldid||null;this.linkedTextField=null;this.previousText=null;var self=this;this.includeWidget('Intervention',function(){self.init();});}
FileUploadWidgetType.prototype={init:function()
{this._createIframe();var elem=dfx.getId(this.id);this.attachFileTypeCheck(elem);if(dfx.isset(elem)===true){this.parentNode=elem.parentNode;this.uploadElements[this._currentIndex]=elem;}},attachFileTypeCheck:function(ipt)
{var self=this;dfx.addEvent(ipt,'change',function(e){if(self.allowedTypes.length>0){var ext=dfx.getFileExtension(ipt.value);if(dfx.inArray(ext,self.allowedTypes)===false){var iw=self.createWidget('inter','Intervention',null,function(){ipt.value='';if(self.linkedTextFieldid!==null){self.linkedTextField.setReturnDefaultText(false);if(self.linkedTextField.getValue()===''){self.linkedTextField.setDefaultText('');self.linkedTextField.setValue('');dfx.trigger(self.linkedTextField.input,'keyup');self.linkedTextField.setReturnDefaultText(true);}else{self.linkedTextField.setDefaultText('');}
if(self.showFileName){dfx.setHtml(ipt.parentNode.childNodes[1],'&nbsp;');}}});iw.setCancelText(null);iw.setConfirmText('Close');iw.create(function(){iw.setSize(null,'61px');iw.setMessage('The file type that you have selected is not supported.');iw.show(ipt);});}}
var pathSplit=ipt.value.split(/\/|\\/);var inputValue=pathSplit[(pathSplit.length-1)];if(self.showFileName){dfx.setHtml(ipt.parentNode.childNodes[1],inputValue);}
if(self.linkedTextFieldid!==null){self.linkedTextField=WidgetStore.get(self.linkedTextFieldid);self.linkedTextField.setDefaultText(inputValue);self.linkedTextField.setReturnDefaultText(true);}
if(self.linkedTextField!==null&&(self.linkedTextField.getValue()===''||self.linkedTextField.getValue()===self.previousText||self.previousText===null)&&self.linkedTextField.enabled===true){self.previousText=ipt.value;self.linkedTextField.setValue('');dfx.trigger(self.linkedTextField.input,'keyup');}});},getAllowedExtensions:function()
{return this.allowedTypes;},create:function(callback)
{var wrap=document.createElement('div');var input=document.createElement('input');input.id=this.id;input.name=this.id;this.attachFileTypeCheck(input);dfx.addClass(input,'FileUploadWidgetType');input.type='file';this.uploadElements[this._currentIndex]=input;wrap.appendChild(input);if(this.showFileName===true){var filename=document.createElement('div');filename.id=this.id+'-filename';dfx.addClass(filename,this.widgetType+'WidgetType-filename');dfx.setHtml(filename,'No file selected');wrap.appendChild(filename);}
if(dfx.isFn(callback)===true){callback.call(this,wrap);}},setForm:function(form)
{form.setAttribute('target',this.id+'-iframe');var hidden=document.createElement('input');hidden.type='hidden';hidden.name='APC_UPLOAD_PROGRESS';hidden.value=this.id+'-apc';var fields=form.getElementsByTagName('input');var ln=fields.length;for(var i=0;i<ln;i++){if(fields[i].type==='file'){dfx.insertBefore(fields[i],hidden);break;}}
var self=this;form.onsubmit=function(){self._uploadStarted();};},_uploadStarted:function()
{if(this.startFn!==null){this.startFn.call(this);}},_uploadCompleted:function()
{if(this.endFn!==null){var doc=dfx.getIframeDocument(this.iframe);this.endFn.call(this,doc.body);}},_createIframe:function()
{var id=this.id+'-iframe';var iframe=dfx.getId(id);if(iframe){dfx.remove(iframe);}
iframe=null;var failBrowser=false;try{iframe=document.createElement('<iframe name="'+id+'">');failBrowser=true;}catch(ex){iframe=document.createElement('iframe');iframe.name=id;}
var self=this;iframe.id=id;iframe.setAttribute('src','about:blank');dfx.setStyle(iframe,'display','none');document.body.appendChild(iframe);if(failBrowser===false){iframe.onload=function(){self._uploadCompleted();};}else{iframe.onreadystatechange=function(){if(iframe.readyState==='complete'){self._uploadCompleted();}};}
this.iframe=iframe;},setUpdateFunction:function(callback)
{this.updateFn=callback;},setStartFunction:function(callback)
{this.startFn=callback;},setEndFunction:function(callback)
{this.endFn=callback;},checkProgress:function(callback)
{var progress=0;var params={action:'getProgress',widget:'FileUploadWidget',progress_key:this.id+'-apc'};var self=this;dfx.get(this.url,params,function(progress){if(dfx.isFn(callback)===true){callback.call(this,progress);}
if(dfx.isFn(self.updateFn)===true){self.updateFn.call(self,progress);}});},getValue:function()
{return this.uploadElements[this._currentIndex].value;},getElem:function(idx)
{return this.uploadElements[idx];},setElem:function(idx,elem)
{this.uploadElements[idx]=elem;this.parentNode.appendChild(elem);},setValue:function(value,r,index)
{if(this._currentIndex!==index){var cElem=this.uploadElements[this._currentIndex].parentNode;if(dfx.isset(cElem)===true){dfx.setStyle(cElem,'display','none');}
this._currentIndex=index;}
var nElem=this.uploadElements[index];if(dfx.isset(nElem)===false){this.create(function(elem){dfx.insertAfter(cElem,elem);});}else{dfx.setStyle(nElem.parentNode,'display','block');}},reset:function()
{var self=this;var wrap=dfx.getId(this.id).parentNode;wrap.innerHTML='';this.uploadElements=[];this._currentIndex=0;this.create(function(i){wrap.appendChild(i);});}};dfx.inherits('FileUpload','Widget');function HelpWidgetType(id,systems,canSubmitIssue,isClientSystem,firstLogin)
{Widget.call(this,id);this.widgetType='Help';this.container=null;this.mode='help';this.screen='';this.title='';this.subTitle='';this.systems=systems||[];this.pointer=null;this.pointerDim={};this._fadeTimer=null;this.levels=['msg','popup','tab','ape','screen','mode'];this.systemsMenu=null;this.selectedSystem=null;this.iframeDoc=null;this.canSubmitIssue=canSubmitIssue;this.isClientSystem=isClientSystem;this.info={};this.stepList={steps:[],element:null};this.navBtns={};this.domElem=null;this.firstLogin=firstLogin||false;this.url=this.getCurrentUrl(true);this.init();}
HelpWidgetType.prototype={init:function()
{this.selectedSystem=null;var button=dfx.getId('HelpEditingToolbarIcon-icon');var self=this;dfx.addEvent(button,'click',function(){var icon=WidgetStore.get('HelpEditingToolbarIcon');if(icon){if(icon.state!=='active'){icon.toggleState('active');}else{self._close();return;}}
self.selectedSystem=null;if(self.container===null){WidgetStore.addDataChangeListener('HelpGenModeListener','activeMode',function(newMode,prevMode){self.modeChanged(newMode,prevMode);});WidgetStore.addDataChangeListener('HelpGenScreenListener','activeScreen',function(newScreen,prevScreen){self.screenChanged(newScreen,prevScreen);});self.create(function(el){self.container=el;document.body.appendChild(el);self.titleEl=dfx.getClass(self.getClass()+'-title',el)[0];self.titleSubEl=dfx.getClass(self.getClass()+'-sub-title',el)[0];var iframe=dfx.getId(self.id+'-iframe');dfx.addEvent(iframe,'load',function(){self.frameLoaded();var doc=dfx.getIframeDocument(iframe);var elems=dfx.getClass('HelpWidgetType-article-title',doc.body);self.iframeDoc=doc;if(self.mode==='help'){if(dfx.ucFirst(doc.title)===doc.title){self.setSubTitle(doc.title);}
if(self.firstLogin===true){self.firstLogin=false;var firstMsg='Welcome to MySource Mini. Please take the time to read these general';firstMsg+=' help articles and familiarise yourself with the system.';self.showInfoBox(firstMsg);}
self.applyLinkActions(doc);self.checkArticleContext(doc);}else if(self.mode==='issue'){self.setSubTitle(dfx.ucFirst(self.getCurrentSystem()));}
setTimeout(function(){self.hideOverlay();},500);});if(self.firstLogin===true){var params={value:'Editing',context:'General',system:'Editing'};self.loadInIframe(params);}else{self.loadInIframe();}
var handle=[dfx.getClass('HelpWidgetType-top-mid',el)[0],dfx.getClass('HelpWidgetType-title',el)[0],dfx.getClass('HelpWidgetType-sub-title',el)[0]];var reisizeEl=dfx.getClass(self.getClass()+'-mid-center',el)[0];jQuery(el).draggable({handle:handle,start:function(){dfx.setStyle(el,'right','auto');}});var resizables=[el,dfx.getClass(this.getClass()+'-mid',el)[0]];var overlay=dfx.getClass(this.getClass()+'-mid-overlay',el)[0];var handles=dfx.getClass(this.getClass()+'-bottom-right',el)[0];var opts={handles:handles,minWidth:380,minHeight:150};self.enableResize(resizables,opts,function(){dfx.setStyle(overlay,'width','100%');dfx.setStyle(overlay,'height','100%');},function(){dfx.setStyle(overlay,'width','0%');dfx.setStyle(overlay,'height','0%');});});}else{dfx.setStyle(self.container,'display','block');self.loadInIframe();}});if(this.firstLogin===true){WidgetStore.addDataChangeListener('HelpGenModeListener-firstLogin','activeMode',function(newMode,prevMode){if(prevMode&&self.firstLogin===true){dfx.trigger(button,'click');WidgetStore.removeDataChangeListener('HelpGenModeListener-firstLogin','activeMode');}});}},create:function(callback)
{var self=this;var c=this.getClass();var id=this.id;var main=document.createElement('div');main.id=id;dfx.addClass(main,c);this.domElem=main;var content='<div class="'+c+'-top">';content+='<div class="'+c+'-top-left"></div>';content+='<div class="'+c+'-top-right"></div>';content+='<div class="'+c+'-top-mid">';content+='<div class="'+c+'-top-close" title="Close"></div><div class="'+c+'-title">Help Desk</div><div class="'+c+'-sub-title">'+this.subTitle+'</div>';content+='<div class="'+c+'-mode-switcher"><div class="'+c+'-slider left">&nbsp;</div><div class="'+c+'-icon-help" title="Click to view the help articles">&nbsp;</div><div class="'+c+'-icon-support" title="Click to view and report problems with the system">&nbsp;</div></div>';content+='</div>';content+='</div>';content+='<div class="'+c+'-menubar">';content+='<div class="'+c+'-menubar-left"></div>';content+='<div class="'+c+'-menubar-right"></div>';content+='<div class="'+c+'-menubar-center"></div>';content+='</div>';content+='<div class="'+c+'-issue-menubar hide">';content+='<div class="'+c+'-issue-menubar-left"></div>';content+='<div class="'+c+'-issue-menubar-right"></div>';content+='</div>';content+='<div class="'+c+'-mid">';content+='<div class="'+c+'-mid-left"></div>';content+='<div class="'+c+'-mid-right"></div>';content+='<div class="'+c+'-mid-center">';content+='<div class="'+c+'-helpContent">';content+='<iframe frameborder="0" border="0" name="'+this.id+'-iframe" id="'+this.id+'-iframe" width="100%" height="100%" src="" style="border:none;"></iframe>';content+='<div id="'+this.id+'-mid-overlay" class="'+c+'-mid-overlay"></div>';content+='<div id= "'+this.id+'-msgoverlay" class="'+c+'-mid-msgoverlay"></div>';content+='<div class="'+c+'-mid-infoBox-wrapper">';content+='<div class="'+c+'-mid-infoBox">';content+='<div class="'+c+'-mid-infoBox-inner">';content+='<div class="'+c+'-mid-infoBox-wrp">';content+='<div class="'+c+'-mid-infoBox-icon-info"></div>';content+='<div class="'+c+'-mid-infoBox-msg"></div>';content+='</div>';content+='<div class="'+c+'-mid-infoBox-hidemsg"><span id="_infoBox-hide" class="'+c+'-mid-infoBox-hide">Cancel</span></div>';content+='</div></div></div>';content+='</div>';content+='</div>';content+='</div>';content+='<div class="'+c+'-bottom"><div class="'+c+'-bottom-left"></div><div class="'+c+'-bottom-right"></div><div class="'+c+'-bottom-center"></div></div>';dfx.setHtml(main,content);var closeBtn=dfx.getClass(c+'-top-close',main)[0];dfx.addEvent(closeBtn,'click',function(){if(self.mode==='issue'){self.changeMode('help');}
self._close();});var modeSwitcher=dfx.getClass(c+'-mode-switcher',main)[0];dfx.addEvent(modeSwitcher,'click',function(){self.changeMode();});var menuBar=dfx.getClass(c+'-menubar-center',main)[0];this._createMenuBar(menuBar);if(dfx.isFn(callback)===true){callback.call(this,main);}},changeMode:function(mode)
{var self=this;var c=this.getClass();var main=dfx.getId(this.id);var modeSwitcher=dfx.getClass(c+'-mode-switcher',main)[0];var menuBar=dfx.getClass(c+'-menubar-center',main)[0];var slider=dfx.getClass(c+'-slider',main)[0];var helpMenubar=dfx.getClass(c+'-menubar',main)[0];var changeTo='';if(dfx.isset(mode)===false){if(dfx.hasClass(slider,'left')===true){changeTo='issue';}else{changeTo='help';}}else{changeTo=mode;}
var title=dfx.getClass('HelpWidgetType-title',main)[0];var subTitle=dfx.getClass('HelpWidgetType-sub-title',main)[0];switch(changeTo){case'help':dfx.swapClass(slider,'right','left');dfx.addClass(self.navBtns.bugs,'hidden');if(this.canSubmitIssue===true){dfx.addClass(self.navBtns.newIssue,'hidden');}
dfx.removeClass(self.navBtns.find,'hidden');dfx.removeClass(self.navBtns.index,'hidden');dfx.removeClass(self.navBtns.general,'hidden');this.setTitle('Help Desk');dfx.removeClass(title,'supportDesk');this.mode='help';this.loadInIframe();break;case'issue':dfx.swapClass(slider,'left','right');dfx.removeClass(self.navBtns.bugs,'hidden');if(this.canSubmitIssue===true){dfx.removeClass(self.navBtns.newIssue,'hidden');}
dfx.addClass(self.navBtns.find,'hidden');dfx.addClass(self.navBtns.index,'hidden');dfx.addClass(self.navBtns.general,'hidden');this.setTitle('Support Desk');dfx.addClass(title,'supportDesk');this.mode='issue';this.loadInIframe({},'getBugLists','bug');break;default:break;}},_createMenuBar:function(menuBar)
{var self=this;var btns=[];this.navBtns.back=this._createMenuBarBackButton();menuBar.appendChild(this.navBtns.back);this.navBtns.forward=this._createMenuBarForwardButton();menuBar.appendChild(this.navBtns.forward);this.navBtns.home=this._createMenuBarHomeButton();menuBar.appendChild(this.navBtns.home);this.navBtns.navSys=this._createMenuBarSysSelector();menuBar.appendChild(this.navBtns.navSys);this.navBtns.find=this._createMenuBarFind();menuBar.appendChild(this.navBtns.find);this.navBtns.index=this._createMenuBarIndex();menuBar.appendChild(this.navBtns.index);this.navBtns.general=this._createMenuBarGeneral();menuBar.appendChild(this.navBtns.general);this.navBtns.bugs=this._createMenuBarInstallationBugs()
menuBar.appendChild(this.navBtns.bugs);if(this.canSubmitIssue===true){this.navBtns.newIssue=this._createMenuBarNewIssue();menuBar.appendChild(this.navBtns.newIssue);}
dfx.foreach(this.navBtns,function(key){var button=self.navBtns[key];dfx.addClass(button,'HelpWidgetType-nav-button');dfx.addEvent(button,'mousedown',function(e){var target=dfx.getMouseEventTarget(e);dfx.addClass(target,'nav-btn-hit');dfx.addEvent(document,'mouseup.HelpWidgetType_nav',function(e){dfx.removeClass(button,'nav-btn-hit');dfx.removeEvent(document,'mouseup.HelpWidgetType_nav');});});return true;});if(this.mode==='help'){dfx.addClass(this.navBtns.bugs,'hidden');dfx.addClass(this.navBtns.newIssue,'hidden');}else if(this.mode==='issue'){dfx.addClass(this.navBtns.find,'hidden');dfx.addClass(this.navBtns.index,'hidden');}},_createMenuBarBackButton:function()
{var self=this;var back=document.createElement('div');back.title='Back';dfx.addClass(back,this.getClass()+'-nav-back');dfx.addEvent(back,'click',function(){window[self.id+'-iframe'].history.back();});return back;},_createMenuBarForwardButton:function()
{var self=this;var forward=document.createElement('div');forward.title='Forward';dfx.addClass(forward,this.getClass()+'-nav-forward');dfx.addEvent(forward,'click',function(){window[self.id+'-iframe'].history.forward();});return forward;},_createMenuBarHomeButton:function()
{var self=this;var home=document.createElement('div');home.title='Home';dfx.addClass(home,this.getClass()+'-nav-home');dfx.addEvent(home,'click',function(){if(self.mode==='help'){self.selectedSystem=null;self.loadInIframe();}else{dfx.removeClass(dfx.getId('HelpWidgetType-nav-newIssue'),'selected');dfx.removeClass(dfx.getId('HelpWidgetType-nav-bugs'),'selected');self.selectedSystem=null;self.loadInIframe({},'getBugLists','bug');}});return home;},_createMenuBarSysSelector:function()
{var self=this;var navSys=document.createElement('div');navSys.title='Menu';dfx.addClass(navSys,this.getClass()+'-nav-systems');dfx.addEvent(navSys,'click',function(){var active=dfx.hasClass(self.navBtns.navSys,'HelpWidgetType-nav-systems-on');if(active===true){dfx.removeClass(self.navBtns.navSys,'HelpWidgetType-nav-systems-on');dfx.setHtml(self.systemsMenu,'');dfx.hideElement(self.systemsMenu);}else{dfx.addClass(self.navBtns.navSys,'HelpWidgetType-nav-systems-on');var cls=self.getClass()+'-systemsMenu';var menu=document.createElement('div');dfx.addClass(menu,cls);var content='<div class="'+cls+'-wrapper">';var c=cls+'-item';var currentSystem=self.getCurrentSystem();var baseURL=self.getSkinURL();for(var i in self.systems){if(self.systems.hasOwnProperty(i)===true){var bgurl=baseURL+'images/SystemIcons/smh_'+self.systems[i].toLowerCase()+'.png';content+='<div class="'+c;if(currentSystem===self.systems[i]){content+=' selected';}
content+='" sys="'+self.systems[i]+'">';content+='<div class="'+c+'-icon" sys="'+self.systems[i]+'" style="background-image:url('+bgurl+');"></div>';content+='<div class="'+c+'-text" sys="'+self.systems[i]+'">'+self.systems[i].replace(/([a-z])([A-Z])/,'$1 $2')+'</div>';if(currentSystem===self.systems[i]){content+='<div class="'+c+'-selected"></div>';}
content+='</div>';}}
content+='</div>';content+='<div class="'+cls+'-bottom"></div>';dfx.setHtml(menu,content);dfx.addEvent(dfx.getClass(c,menu),'click',function(e){var target=dfx.getMouseEventTarget(e);if(self.mode==='help'){if(target.getAttribute('sys')){self.selectedSystem=target.getAttribute('sys');self.loadInIframe({value:self.selectedSystem});}}else{if(target.getAttribute('sys')){self.selectedSystem=target.getAttribute('sys');dfx.removeClass(dfx.getId('HelpWidgetType-nav-newIssue'),'selected');dfx.removeClass(dfx.getId('HelpWidgetType-nav-bugs'),'selected');self.loadInIframe({onlySystem:self.getCurrentSystem()},'getBugLists','bug');}}});dfx.addEvent([document,self.iframeDoc],'click',function(e){var target=dfx.getMouseEventTarget(e);if(target!==navSys){dfx.removeClass(navSys,'HelpWidgetType-nav-systems-on');dfx.setHtml(self.systemsMenu,'');dfx.hideElement(self.systemsMenu);}});self.systemsMenu=menu;dfx.showElement(self.systemsMenu);var menuBar=dfx.getClass('HelpWidgetType-menubar',dfx.getId(self.id))[0];menuBar.appendChild(menu);}});return navSys;},_createMenuBarGeneral:function()
{var self=this;var index=document.createElement('div');index.title='General help articles';dfx.addClass(index,this.getClass()+'-nav-gen');var params={value:'Editing',context:'General',system:'Editing'};dfx.addEvent(index,'click',function(){self.loadInIframe(params);});return index;},_createMenuBarIndex:function()
{var self=this;var index=document.createElement('div');index.title='Glossary';dfx.addClass(index,this.getClass()+'-nav-index');dfx.addEvent(index,'click',function(){self.loadInIframe({glossary:'glossary_index'});});return index;},_createMenuBarFind:function()
{var self=this;var find=document.createElement('div');find.title='Picker';dfx.addClass(find,this.getClass()+'-nav-find');dfx.addEvent(find,'click',function(e,showMsg){dfx.addEvent(document,'keypress.HelpWidgetType_finder',function(e){if(e.keyCode===27){self.closeMessage();dfx.removeEvent(document,'keypress.HelpWidgetType_finder');dfx.removeEvent(document,'mousedown.HelpWidgetType_finder');}});if(showMsg!==false){self.showMessage('Click on a section of the screen to view more information about it.');}
dfx.addEvent(document,'mousedown.HelpWidgetType_finder',function(e){var target=dfx.getMouseEventTarget(e);if(target!==find&&target!==self.iframeDoc.getElementById('_infoBox-hide')&&target!==dfx.getId('_infoBox-hide')){dfx.removeEvent(document,'keypress.HelpWidgetType_finder');var target=dfx.getMouseEventTarget(e);var parents=dfx.getParents(target);var parentEvents=self._removeEvents(parents);var targetEvents=self._removeEvents([target]);dfx.addEvent(document,'mouseup.HelpWidgetType_finder',function(){setTimeout(function(){self._addElemEvents(parentEvents);self._addElemEvents(targetEvents);},150);dfx.removeEvent(document,'mouseup.HelpWidgetType_finder');});dfx.removeEvent(document,'mousedown.HelpWidgetType_finder');var elemInfos=self.getIds(parents);if(target.id){elemInfos.ids.unshift(target.id);}
if(target.className){elemInfos.classNames.unshift(target.className);}
var params={widget:'HelpWidget',action:'findArticleForWidget',elemInfos:dfx.jsonEncode(elemInfos),system:self.getCurrentSystem(true)};var contextInfo=self._getContextInfo();params.context=contextInfo.context;params.cvalue=contextInfo.value;dfx.get(self.url,params,function(data){try{data=dfx.jsonDecode(data);}catch(e){data={};}
if(!data.msg){self.pointToWidget(data.widgetid,data.widgetclass,data.system);self.showArticle(data.glossaryid,'glossary',data.system);}else{self.showMessage(data.msg);dfx.trigger(find,'click',false);}});dfx.preventDefault(e);dfx.stopPropagation(e);return false;}});});return find;},_createMenuBarInstallationBugs:function()
{var self=this;var bugs=document.createElement('div');bugs.title='Show issues from this system';bugs.id='HelpWidgetType-nav-bugs';dfx.addClass(bugs,this.getClass()+'-nav-bugs');dfx.addEvent(bugs,'click',function(){dfx.addClass(self.navBtns.bugs,'selected');if(self.canSubmitIssue===true){dfx.removeClass(self.navBtns.newIssue,'selected');}
self.loadInIframe({currentInstall:true},'getBugLists','bug');});return bugs;},_createMenuBarNewIssue:function()
{var self=this;var newIssue=document.createElement('div');newIssue.title='Add new issue';newIssue.id='HelpWidgetType-nav-newIssue';dfx.addClass(newIssue,this.getClass()+'-nav-newIssue');dfx.addEvent(newIssue,'click',function(){dfx.addClass(self.navBtns.newIssue,'selected');dfx.removeClass(self.navBtns.bugs,'selected');self.loadInIframe({},'newIssue','bug');});return newIssue;},_close:function()
{dfx.setStyle(this.container,'display','none');var icon=WidgetStore.get('HelpEditingToolbarIcon');if(icon){icon.toggleState('inactive');}
this.closeMessage();dfx.removeEvent(document,'keypress.HelpWidgetType_finder');dfx.removeEvent(document,'mousedown.HelpWidgetType_finder');},showArticle:function(id,type,system)
{switch(type){case'glossary':var params={glossary:id};if(system){params.system=system;}
this.loadInIframe(params);break;default:break;}},getIds:function(elements)
{var elemInfos={ids:[],classNames:[]};var ln=elements.length;for(var i=0;i<ln;i++){if(elements[i].id){elemInfos.ids.push(elements[i].id);}
if(elements[i].className){elemInfos.classNames.push(elements[i].className);}}
return elemInfos;},_removeEvents:function(elements)
{var events={elements:[],events:[]};var ln=elements.length;for(var i=0;i<ln;i++){if(elements[i].tagName.toLowerCase()==='body'){break;}
var es=null;if(elements[i].tagName.toLowerCase()==='label'){var elem=dfx.getId(elements[i].htmlFor);if(elem){es=jQuery.data(dfx.getId(elements[i].htmlFor),'events');if(es){events.elements.push(dfx.getId(elements[i].htmlFor));events.events.push(es);jQuery.removeData(dfx.getId(elements[i].htmlFor),'events');}}}else{es=jQuery.data(elements[i],'events');if(es){events.elements.push(elements[i]);events.events.push(es);jQuery.removeData(elements[i],'events');}}}
return events;},_addElemEvents:function(events)
{var ln=events.elements.length;for(var i=0;i<ln;i++){jQuery.data(events.elements[i],'events',events.events[i]);}},setTitle:function(title)
{this.title=title;if(this.titleEl){var niceTitle=title.replace(/(\w)([A-Z]{1})/g,'$1 $2');dfx.setHtml(this.titleEl,niceTitle);}},setSubTitle:function(subTitle)
{this.subTitle=subTitle;if(this.titleSubEl){var niceTitle=subTitle.replace(/(\w)([A-Z]{1})/g,'$1 $2');if(niceTitle!=='General Help'){niceTitle+=' System';}
dfx.setHtml(this.titleSubEl,niceTitle);}},frameLoaded:function()
{this.closeMessage();this.stepList={steps:[],element:null};},_getContextInfo:function()
{var wizardIsActive=WidgetStore.getData('wizardIsActive');if(wizardIsActive===true){var activeWizardid=WidgetStore.getData('activeWizardAssetType');if(!activeWizardid){activeWizardid='Wizard';}
return{context:'Wizard',value:activeWizardid,system:'Wizard'};}
var apeType=WidgetStore.getData('activeAssetSetting');if(apeType){return{context:'APE',value:apeType};}
var screen=WidgetStore.getData('activeScreen');if(screen){return{context:'Screen',value:screen.system.replace(/ScreenWidget/,'')};}
var mode=WidgetStore.getData('activeMode');this.info.currentMode=mode;if(mode){return{context:'Mode',value:mode.title};}},loadInIframe:function(params,action,type)
{if(!params){params={};}
if(!action){action='getHelpContents';}
var contextInfo=this._getContextInfo();if(!params.context){params.context=contextInfo.context;}
if(!params.value){params.value=contextInfo.value;}
this.showLodingAnim();if(!params.system){if(contextInfo.system){params.system=contextInfo.system;}else{params.system=this.getCurrentSystem();}}
if(window.location.href.indexOf('__user')!==-1){if((params.value==='Preview'||params.value==='Edit')&&params.system==='Editing'){params.value='Profile';params.system='User';}}
var data=dfx.jsonEncode(params);var url=this.url;if(this.url.indexOf('?')===-1){url+='?';}else{url+='&';}
url+='widget=HelpWidget&action='+action;if(type){url+='&type='+type;}
url+='&data='+escape(data);var iframe=dfx.getId(this.id+'-iframe');if(iframe){iframe.setAttribute('src',url);}},getCurrentSystem:function(notSelected)
{if(notSelected!==true&&this.selectedSystem!==null){return this.selectedSystem;}
var system=null;var screen=WidgetStore.getData('activeScreen');if(screen){system=screen.baseSystem;}
if(!system){var mode=WidgetStore.getData('activeMode');if(mode){system=mode.system;}}
return system;},getCurrentMode:function()
{return WidgetStore.getData('activeMode');},getCurrentScreen:function()
{return WidgetStore.getData('activeScreen');},checkArticleContext:function(doc)
{var msg='In order to understand this article, please perform the following steps.';var stepList=document.createElement('div');var c=this.getClass()+'-stepsList';dfx.addClass(stepList,c);this.stepList.element=stepList;var elems=dfx.find(doc,'h1');if(elems.length>0){var elem=elems[0];if(elem.getAttribute('atype')!=='article'&&elem.getAttribute('atype')!=='glossary'){return;}
var prevElem=elem;var self=this;var lvlLen=this.levels.length;for(var i=(lvlLen-1);i>=0;i--){var level=this.levels[i];var val=elem.getAttribute(level);if(val){switch(level){case'mode':if(!val){continue;}
var mode=this.getCurrentMode();if(mode.id!==val){var modeVal=val;var modeSwitcher=WidgetStore.get('EditingModeSwitcher');var modeInfo=modeSwitcher.getModeInfo(modeVal);var stepInfo={title:'Select the '+modeInfo.title.toLowerCase()+' mode',type:'mode',modeid:val,action:function(){if(dfx.getId(modeSwitcher.getModeButtonid(modeVal))){self.pointToWidget(modeSwitcher.getModeButtonid(modeVal));}else if(dfx.getId(modeSwitcher.getModeIconid(modeVal))){self.pointToWidget(modeSwitcher.getModeIconid(modeVal));}}};this._addStep(stepInfo);}
break;case'screen':if(!val){continue;}
var screenVal=val;var screenTitle=elem.getAttribute('screenTitle');if(!screenTitle){screenTitle=screenVal;}
var stepInfo={title:'Select the '+screenTitle.toLowerCase()+' screen',screenid:screenVal,type:'screen',action:function(){var modeid=self.getCurrentMode().id;self.pointToWidget(WidgetStore.get(modeid+'WidgetType').getTabid(screenVal)+'-title');}};if(this.stepList.steps.length!==0){this._addStep(stepInfo);}else{var screenInfo=this.getCurrentScreen()||{id:''};var screen=screenInfo.id;if(screen!==val){this._addStep(stepInfo);}}
break;case'tab':if(!val){continue;}
var tabVal=val;var title=elem.getAttribute('tab_title')||tabVal;var stepInfo={title:'Click the '+title+' tab',tabid:tabVal,type:'tab',action:function(){self.pointToWidget(tabVal);}};WidgetStore.addDataChangeListener('HelpTabChgListener','activeTabid',function(){self.updateStepsList();});if(this.stepList.steps.length!==0){this._addStep(stepInfo);}else{var activeTab=WidgetStore.getData('activeTab');if(activeTab!==val){this._addStep(stepInfo);}}
break;default:break;}}}}
this.updateStepsList(msg);},_addStep:function(step)
{var c=this.getClass()+'-stepsList-item';var stepPos=(this.stepList.steps.length+1);var main=document.createElement('div');dfx.addClass(main,c);var contents='<div class="'+c+'-icon step_'+stepPos+'"></div>';contents+='<div class="'+c+'-cont-wrp">';contents+='<div class="'+c+'-cont-top">';contents+='<div class="'+c+'-cont-title">'+step.title+'</div>';contents+='<div class="'+c+'-cont-showme">Show me</div>';contents+='</div>';contents+='<div class="'+c+'-cont-err"></div>';contents+='</div>';dfx.setHtml(main,contents);var showMeElem=dfx.getClass(c+'-cont-showme',main)[0];dfx.addEvent(showMeElem,'click',function(){if(dfx.isFn(step.action)===true){step.action.call(this);}});step.element=main;this.stepList.element.appendChild(main);this.stepList.steps.push(step);},updateStepsList:function(msg)
{var sl=this.stepList.steps.length;if(sl===0){return;}
var foundActiveStep=false;var statuses=['incomplete','active','complete','error'];var prevStatus=null;var shown=false;for(var i=0;i<sl;i++){var step=this.stepList.steps[i];var status=0;switch(step.type){case'mode':var currMode=this.getCurrentMode();if(step.modeid===currMode.id){status=2;}
break;case'screen':var screenInfo=this.getCurrentScreen()||{id:''};var screen=screenInfo.id;if(screen===step.screenid){status=2;}else{if(screenInfo.obj){if(screenInfo.obj.hasPermission(step.screenid)!==true){status=3;}}else{var modeId=WidgetStore.getData('activeMode');if(modeId){var modeWidget=WidgetStore.get(modeId.id+'WidgetType');if(modeWidget&&modeWidget.hasPermission&&modeWidget.hasPermission(step.screenid)!==true){status=3;}}}}
break;case'tab':if(WidgetStore.getData('activeTabid')===step.tabid){status=2;}
break;default:break;}
if(status!==2&&status!==3&&(prevStatus===null||prevStatus===2)){status=1;}else if(prevStatus!==null&&prevStatus!==2&&prevStatus!==3){status=0;}
prevStatus=status;var errMsg=this._setStepStatus(step,statuses[status],i);if(errMsg===true){msg=false;}
if(i===(sl-1)&&status===2){var self=this;self.stepList={steps:[],element:null};setTimeout(function(){self.hideInfoBox();self.applyLinkActions(self.iframeDoc);},1000);}else if(shown===false){shown=true;}}
this.showInfoBox(msg,this.stepList.element,true);},_setStepStatus:function(step,status,pos)
{if(pos===0&&status==='error'){this._setInfoBoxStyle('error');var elem=this.iframeDoc.getElementById('_infoBox-msg');dfx.empty(elem);var msg='We have detected that you do not have appropriate';msg+=' permissions to follow the steps requrired to place yourself';msg+=' in context for this article.';dfx.setHtml(elem,msg);return true;}else if(step.element){this._removeStepStatuses(step);dfx.addClass(step.element,this.getClass()+'-stepList-item-'+status);if(status==='error'){var errEl=dfx.getClass(this.getClass()+'-stepsList-item-cont-err',step.element)[0];dfx.setHtml(errEl,'You don\'t have permission to perform this action');}}},_removeStepStatuses:function(step)
{var statuses=['incomplete','active','complete','error'];while(statuses.length){dfx.removeClass(step.element,this.getClass()+'-stepList-item-'+statuses.pop());}
var errEl=dfx.getClass(this.getClass()+'-stepsList-item-cont-err',step.element)[0];dfx.empty(errEl);},applyLinkActions:function(doc)
{var elems=dfx.find(doc,'span[term]');var self=this;dfx.removeEvent(elems,'click');dfx.addEvent(elems,'click',function(e){var target=dfx.getMouseEventTarget(e);if(target.hasAttribute('term')===false){target=target.parentNode;}
var params={glossary:target.getAttribute('term')};if(target.getAttribute('system')){params.value=target.getAttribute('system');}
if(target.getAttribute('context')){params.context=target.getAttribute('context');}
self.loadInIframe(params);});var iconElems=dfx.getClass('HelpWidgetType-pnter-img',doc);var iconln=iconElems.length;for(var i=0;i<iconln;i++){var elem=iconElems[i];var widgetid=elem.getAttribute('widget')||'';var widgetClass=elem.getAttribute('widgetclass')||'';if(dfx.getId(widgetid)||(widgetClass!==''&&dfx.getClass(widgetClass).length>0)){var hidden=false;if(dfx.getId(widgetid)&&dfx.getStyle(dfx.getId(widgetid),'visibility')==='hidden'){hidden=true;}
if(hidden===false){dfx.setStyle(elem,'display','inline');dfx.setStyle(elem.parentNode,'margin-right','20px');}else{dfx.setStyle(elem,'display','none');dfx.setStyle(elem.parentNode,'margin-right','0px');}}else{dfx.setStyle(elem,'display','none');dfx.setStyle(elem.parentNode,'margin-right','0px');}}
dfx.addEvent(iconElems,'click',function(e){var target=dfx.getMouseEventTarget(e);var widgetid=target.getAttribute('widget')||'';var widgetClass=target.getAttribute('widgetclass')||'';var system=target.getAttribute('system')||'';self.pointToWidget(widgetid,widgetClass,system);dfx.preventDefault(e);dfx.stopPropagation(e);return false;});},pointToWidget:function(widgetid,widgetClass,system)
{var widgetElem=null;if(!widgetid||widgetid===''){if(!widgetClass||widgetClass===''){return;}
var celems=dfx.getClass(widgetClass);var cln=celems.length;for(var i=0;i<cln;i++){if(dfx.getElementWidth(celems[i])>0){widgetElem=celems[i];break;}}}else{widgetElem=dfx.getId(widgetid);}
if(!widgetElem){return;}
if(widgetid&&widgetid.indexOf('EditingModeSwitcher')===0){if(this._showModeButton(widgetid)===false){return;}}
if(dfx.getStyle(widgetElem,'visibility','hidden')===true){return;}
var rect=dfx.getBoundingRectangle(widgetElem);if(rect.x1===0&&rect.x2===0||rect.x1===rect.x2||rect.y1===rect.y2){return;}
var winDim=dfx.getWindowDimensions();var pointer=this.getPointer();dfx.setStyle(pointer,'display','block');if(jQuery.support.opacity===true){dfx.setOpacity(pointer,1);}
var pointerRect=dfx.getBoundingRectangle(pointer);var pointerH=(pointerRect.y2-pointerRect.y1);var pointerW=(pointerRect.x2-pointerRect.x1);this.pointerDim.height=pointerH;this.pointerDim.width=pointerW;var bounceHeight=20;var scroll=dfx.getScrollCoords();if((rect.y1-pointerH+bounceHeight)>scroll.y){this.showPointer(widgetElem,'down',system);}else if((rect.y2+pointerH)<(winDim.height-scroll.y)){this.showPointer(widgetElem,'up',system);}else if((rect.y2+pointerW)<winDim.width){this.showPointer(widgetElem,'left',system);}else if((rect.y1-pointerW)>0){this.showPointer(widgetElem,'right',system);}},_showModeButton:function(widgetid)
{var modeSwitcher=WidgetStore.get('EditingModeSwitcher');var self=this;if(modeSwitcher.buttonIsVisible(widgetid)===false){modeSwitcher.makeButtonVisible(widgetid,function(){self.pointToWidget(widgetid);setTimeout(function(){modeSwitcher.animateModeSelection(null);},5000);});return false;}
return true;},getPointer:function()
{if(this.pointer===null){this.pointer=document.createElement('div');var c=this.getClass();dfx.addClass(this.pointer,c+'-pointer');dfx.addClass(this.pointer,c+'-pointer-hidden');document.body.appendChild(this.pointer);}
return this.pointer;},showPointer:function(elem,direction,system)
{var c=this.getClass();this._removeDirectionClasses();dfx.addClass(this.pointer,c+'-pointer-'+direction);dfx.removeClass(this.pointer,c+'-pointer-hidden');var rect=dfx.getBoundingRectangle(elem);var top=0;var left=0;var bounceHeight=20;switch(direction){case'up':bounceHeight=(-bounceHeight);top=rect.y2;if((rect.x2-rect.x1)<250){left=(this.getRectMidPnt(rect)-(this.pointerDim.width/2));}else{left=rect.x1;}
break;case'left':left=rect.x2;top=this.getRectMidPnt(rect,true);break;case'right':left=(rect.x1-this.pointerDim.width);top=this.getRectMidPnt(rect,true);break;case'down':default:top=(rect.y1-this.pointerDim.height);if((rect.x2-rect.x1)<250){left=(this.getRectMidPnt(rect)-(this.pointerDim.width/2));}else{left=rect.x1;}
break;}
dfx.setStyle(this.pointer,'top',top+'px');dfx.setStyle(this.pointer,'left',left+'px');if(system&&system==='Help'||dfx.isChildOf(elem,this.domElem)===true){}else{var coords=dfx.getBoundingRectangle(this.container);rect=dfx.getBoundingRectangle(this.pointer);var posOffset=20;var newPos=null;var midX=(rect.x1+((rect.x2-rect.x1)/2));var midY=(rect.y1+((rect.y2-rect.y1)/2));if(coords.x1<=midX&&coords.x2>=midX&&coords.y1<=midY&&coords.y2>=midY){var winDim=dfx.getWindowDimensions();if(rect.x2+posOffset+(coords.x2-coords.x1)<winDim.width){newPos=(rect.x2+posOffset);}else{newPos=(rect.x1-posOffset-(coords.x2-coords.x1));}
dfx.setStyle(this.container,'right','auto');dfx.setStyle(this.container,'left',newPos+'px');}}
dfx.stop(this.pointer);clearTimeout(this._fadeTimer);var self=this;dfx.bounce(this.pointer,4,bounceHeight,function(){self._fadeTimer=setTimeout(function(){if(jQuery.support.opacity===true){dfx.fadeOut(self.pointer,600);}else{dfx.setStyle(self.pointer,'display','none');}},1000);});},hidePointer:function()
{if(this.pointer){dfx.stop(this.pointer);dfx.fadeOut(this.pointer,200);}},getRectMidPnt:function(rect,height)
{var midPnt=0;if(height===true){midPnt=(rect.y1+((rect.y2-rect.y1)/2));}else{midPnt=(rect.x1+((rect.x2-rect.x1)/2));}
return midPnt;},_removeDirectionClasses:function()
{var c=this.getClass();var d=['down','up','left','right'];var l=d.length;for(var i=0;i<l;i++){dfx.removeClass(this.pointer,c+'-pointer-'+d[i]);}},enableResize:function(resizeElements,options,start,stop)
{dfx.addEvent(options.handles,'mousedown.helpWidgetResize',function(de){start.call(this);var width=dfx.getElementWidth(resizeElements[0]);var height=dfx.getElementHeight(resizeElements[1]);var startMPos=dfx.getMouseEventPosition(de);var top=dfx.getClass('HelpWidgetType-top-mid');dfx.addEvent(document,'mousemove.helpWidgetResize',function(me){var mpos=dfx.getMouseEventPosition(me);var wdiff=(mpos.x-startMPos.x);var nwidth=(width+wdiff);if(nwidth>=options.minWidth){dfx.setStyle(resizeElements[0],'width',nwidth+'px');}
var hdiff=(mpos.y-startMPos.y);var nheight=(height+hdiff);if(nheight>=options.minHeight){dfx.setStyle(resizeElements[1],'height',nheight+'px');}});dfx.addEvent(document,'mouseup.helpWidgetResize',function(){stop.call(this);dfx.removeEvent(document,'mousemove.helpWidgetResize');dfx.removeEvent(document,'mouseup.helpWidgetResize');});});},showOverlay:function(loading)
{var overlay=dfx.getClass('HelpWidgetType-mid-msgoverlay',this.container)[0];this.displayDisabledDiv(loading,overlay,'white','absolute');},hideOverlay:function()
{var overlay=dfx.getClass('HelpWidgetType-mid-msgoverlay',this.container)[0];this.removeDisabledDiv(overlay);},showLodingAnim:function()
{this.showOverlay(true);},showAllTasks:function(id,linkElem)
{var elem=this.iframeDoc.getElementById(id);var c=this.getClass()+'-list-item-hidden';dfx.removeClass(dfx.getClass(c,elem),c);dfx.remove(linkElem.parentNode);},refresh:function()
{var iframe=dfx.getId(this.id+'-iframe');if(iframe){var doc=dfx.getIframeDocument(iframe);if(doc){this.applyLinkActions(doc);this.checkArticleContext(doc);}}},modeChanged:function(newMode,prevMode)
{this.hidePointer();if(this.stepList.steps.length>0){this.updateStepsList();}else if(!this.info||!this.info.currentMode||newMode.id!==this.info.currentMode.id){this._showScreenChanged();}else{this.hideInfoBox();}},_showScreenChanged:function()
{if(this.iframeDoc.getElementById('HelpWidgetType-articleList-Tasks')||this.iframeDoc.getElementById('HelpWidgetType-articleList-Bugs')){var elem=document.createElement('div');var content='You have switched screens. Click on the Home button';content+=' to view the Suggestions for the current screen';dfx.setHtml(elem,content);this.showInfoBox(elem);}},screenChanged:function(newScreen,prevScreen)
{if(newScreen===null){return;}
this.hidePointer();this.applyLinkActions(this.iframeDoc);if(this.stepList.steps.length>0){this.updateStepsList();}else if(!newScreen||!this.info.currentScreen||(newScreen.id!==this.info.currentScreen.id)){this._showScreenChanged();}else{this.hideInfoBox();}},showInfoBox:function(msgElem,extraElem,noOverride)
{if(!this.iframeDoc){return;}
var infoBox=this.iframeDoc.getElementById('_infoBox');if(!infoBox){return;}
if(noOverride===true&&dfx.getStyle(infoBox,'display')!=='none'){return;}
if(msgElem){var elem=this.iframeDoc.getElementById('_infoBox-msg');dfx.empty(elem);if(typeof msgElem==='string'){dfx.setHtml(elem,msgElem);}else{elem.appendChild(msgElem);}}
var exElem=dfx.getClass(this.getClass()+'-iframe-infoBox-extra',infoBox)[0];if(extraElem){dfx.empty(exElem);exElem.appendChild(extraElem);dfx.setStyle(exElem,'display','block');}else{dfx.setStyle(exElem,'display','none');}
var hideElem=this.iframeDoc.getElementById('_infoBox-hide');dfx.removeEvent(hideElem);var self=this;dfx.addEvent(hideElem,'click',function(){self.hideInfoBox();});if(dfx.getStyle(infoBox,'display')==='none'){dfx.setStyle(infoBox,'opacity','0');dfx.setStyle(infoBox,'display','block');dfx.setStyle(infoBox,'margin-top',-dfx.getElementHeight(infoBox));dfx.animate(infoBox,{marginTop:0,opacity:1},1000,function(){dfx.setStyle(infoBox,'display','block');dfx.setStyle(infoBox,'margin-top','10px');dfx.setStyle(infoBox,'opacity',1);});}},hideInfoBox:function()
{this.stepList={steps:[],element:null};if(!this.iframeDoc){return;}
var infoBox=this.iframeDoc.getElementById('_infoBox');if(!infoBox){return;}
dfx.animate(infoBox,{marginTop:(-dfx.getElementHeight(infoBox)),opacity:0},500,function(){dfx.setStyle(infoBox,'display','none');dfx.setStyle(infoBox,'margin-top','0px');dfx.setStyle(infoBox,'opacity',1);});},_setInfoBoxStyle:function(style)
{var infoBox=this.iframeDoc.getElementById('_infoBox');dfx.addClass(infoBox,'HelpWidgetType-mid-infoBox-'+style);},showMessage:function(msg)
{this.showOverlay();var msgBox=dfx.getClass('HelpWidgetType-mid-infoBox',this.container)[0];var elem=dfx.getClass('HelpWidgetType-mid-infoBox-msg',msgBox)[0];dfx.setHtml(elem,msg);dfx.setStyle();if(dfx.getStyle(msgBox,'display')==='block'){jQuery(msgBox).effect("bounce",{distance:10,times:3},300);}else{dfx.setStyle(msgBox,'display','block');}
dfx.removeEvent(document,'click.HelpWidgetType_message');dfx.removeEvent(document,'keypress.HelpWidgetType_message');var self=this;dfx.addEvent(document,'keypress.HelpWidgetType_message',function(e){if(e.keyCode===27){self.closeMessage();}});var hideElem=this.iframeDoc.getElementById('_infoBox-hide');var cancelEl=dfx.getClass('HelpWidgetType-mid-infoBox-hidemsg',msgBox)[0];dfx.addEvent([hideElem,cancelEl],'click.HelpWidgetType_message',function(e){dfx.removeEvent(document,'mousedown.HelpWidgetType_finder');self.closeMessage();self.stepList={steps:[],element:null};dfx.removeEvent(cancelEl,'click.HelpWidgetType_message');});},closeMessage:function()
{dfx.removeEvent(document,'keypress.HelpWidgetType_message');var msgBox=dfx.getClass('HelpWidgetType-mid-infoBox',this.container)[0];if(dfx.getStyle(msgBox,'display')!=='none'){this.hideOverlay();dfx.setStyle(msgBox,'display','none');}}};dfx.inherits('Help','Widget');function IFrameWidgetType(id,source)
{Widget.call(this,id);this.widgetType='IFrame';this.cssClass=null;this.contentElements=[];this.source=source;}
IFrameWidgetType.prototype={create:function(callback)
{var iframeElem=document.createElement('iframe');iframeElem.setAttribute('id',this.id);iframeElem.setAttribute('src',this.source);if(this.cssClass!==null){dfx.addClass(iframeElem,this.cssClass);}
var len=this.contentElements.length;for(var i=0;i<len;i++){iframeElem.appendChild(this.contentElements[i]);}
var self=this;this.createChildren(iframeElem,function(){callback.call(self,iframeElem);return;});},setClass:function(c)
{this.cssClass=c;},addContentElement:function(elem)
{this.contentElements.push(elem);}};dfx.inherits('IFrame','Widget');function ListItemWidgetType(id,columnSizes,showRemoveButton)
{Widget.call(this,id);}
ListItemWidgetType.prototype={};dfx.inherits('ListItem','Widget');function LogAdminScreenWidgetType(id)
{Widget.call(this,id);this.widgetType='LogAdminScreen';}
LogAdminScreenWidgetType.prototype={init:function(data)
{this.settings=dfx.jsonDecode(data.settings);},getRequestParams:function()
{var params={keys:['action','mode','screen'],vals:['processScreen','AdminScreenMode','LogAdminScreenWidget']};return params;},switchOnScreen:function()
{var self=this;if(this.settings.length>0){this.setSaveButton(function(){self.save();},function(){});}},switchOffScreen:function(){}};dfx.inherits('LogAdminScreen','Widget');function MetadataAdminSettingWidgetType(id)
{Widget.call(this,id);this.widgetType='MetadataAdminSetting';this.settings={};this.settingValues={};}
MetadataAdminSettingWidgetType.prototype={create:function(callback)
{this.createMain(function(el){callback.call(this,el);return;});},createMain:function(callback,childElem,className)
{var c=this.getClassName();var main=document.createElement('div');if(dfx.isset(className)===true){dfx.addClass(main,className);}
var content='';content+='<div class="'+c+'-bot-left">';content+='<div class="'+c+'-desc-label">Description</div>';content+='<div class="'+c+'-desc"></div>';content+='</div>';content+='<div class="'+c+'-bot-right"></div>';dfx.setHtml(main,content);var descCont=dfx.getClass(c+'-desc',main)[0];if(childElem){dfx.getClass(c+'-bot-right',main)[0].appendChild(childElem);}
var self=this;this.includeWidget('TextArea',function(){var desc=self.createWidget(null,'TextArea');self.settings.description=desc;desc.create(function(descEl){if(dfx.isset(self.settingValues.description)===true){desc.setValue(self.settingValues.description);}
descCont.appendChild(descEl);desc.addOnChangeEvent(function(){self.setModified(true);});});callback.call(self,main);});},getClassName:function()
{return'MetadataAdminSettingWidgetType';},getSettings:function()
{var settings={};for(var setting in this.settings){if(this.settings.hasOwnProperty(setting)===true){settings[setting]=this.settings[setting].getValue();}}
return settings;},setSttings:function(settings)
{if(settings){this.settingValues=settings;}},check:function()
{return true;}};dfx.inherits('MetadataAdminSetting','Widget');function OptionsWidgetType(id,options)
{Widget.call(this,id);this.widgetType='Options';this.id=id;this.options=options;this.counter=0;this.lock=false;this.domElem=null;this.showCheck=true;this.showKey=false;this.deleted={};this.multi=false;this.onChangeCallbacks=[];this._newOptionBoxValue='Add new value ...';this.addNew=dfx.getId(this.id+'-addNew');if(this.addNew){this.addNewEvent();}
var elem=dfx.getId(this.id);if(elem){this.domElem=elem;this.init();var self=this;jQuery(this.domElem).sortable({axis:'y',handle:'span.move',stop:function(){self.fireOnChangeEvents();}});}
this.allowEmpty=false;this.allowEmptyText='-- Leave Empty --';this.empty=dfx.getId(this.id+'-emptyText');if(this.empty){this.empty.onblur=function(evt){self.fireOnChangeEvents();};}}
OptionsWidgetType.prototype={init:function()
{if((this.options instanceof Array)===true){var len=this.options.length;for(var i=0;i<len;i++){this.createField(i,this.options[i].value,this.options[i].selected);}}else if((this.options instanceof Object)===true){for(var key in this.options){this.createField(key,this.options[key].value,this.options[key].selected);}}},create:function(callback)
{var c=this.getClass();var main=document.createElement('div');main.id=this.id+'-container';dfx.addClass(main,c+'-container');var content='';if(this.readOnly===false){var aec='entry-hidden';if(this.allowEmpty===true){aec='entry';}
content+='<div id="'+this.id+'-emptyTextContainer" class="'+aec+'">';content+='<input type="text" id="'+this.id+'-emptyText" name="'+this.id+'-emptyText" class="emptyText OptionsWidgetType-emptyText" value="'+this.allowEmptyText+'"/>';content+='</div>';}
content+='<div id="'+this.id+'" class="'+c+'"></div>';if(this.readOnly===false){content+='<div class="entry">';content+='<input type="text" id="'+this.id+'-addNew" name="'+this.id+'-addNew" class="addNew OptionsWidgetType-addNew" readonly="1"/>';content+='</div>';}
dfx.setHtml(main,content);this.domElem=dfx.getClass(c,main)[0];this.addNew=dfx.getClass('addNew',main)[0];this.addNewEvent();this.empty=dfx.getClass('emptyText',main)[0];if(this.empty){this.empty.onblur=function(evt){self.fireOnChangeEvents();};}
var self=this;jQuery(this.domElem).sortable({axis:'y',handle:'span.move',stop:function(){self.fireOnChangeEvents();}});this.init();callback.call(this,main);},addNewEvent:function()
{if(this.addNew){var self=this;this.addNew.value=this._newOptionBoxValue;dfx.addEvent(this.addNew,'focus',function(){if(self.lock===false){self.lock=true;var newEntry=self.createField('','',false);newEntry.focus();dfx.addEvent(newEntry,'blur',function(){if(newEntry.value!==''){self.fireOnChangeEvents();dfx.removeEvent(newEntry,'blur');self.lock=false;}});}});}},createField:function(key,val,checked)
{var self=this;var div=document.createElement('div');var id=this.id+'_'+this.counter;div.id=id;dfx.addClass(div,'entry');this.domElem.appendChild(div);jQuery(div).sortable('refresh');var moveButton=document.createElement('span');moveButton.id=id+'-move';dfx.addClass(moveButton,'move');dfx.addClass(moveButton,'OptionsWidgetType-move');div.appendChild(moveButton);if(this.readOnly===true){dfx.hideElement(moveButton);}
var keyField=document.createElement('input');keyField.type='text';keyField.value=key;keyField.id=this.id+'_key['+this.counter+']';keyField.name=this.id+'_key[]';dfx.addClass(keyField,'key');dfx.addClass(keyField,'OptionsWidgetType-key');div.appendChild(keyField);keyField.onblur=function(evt){self.fireOnChangeEvents();};if(this.showKey===false){dfx.hideElement(keyField);keyField.value=this.counter;}else if(this.readOnly===true){dfx.hideElement(keyField);}
var valField=document.createElement('input');valField.type='text';valField.value=val;valField.id=this.id+'_val['+this.counter+']';valField.name=this.id+'_val[]';dfx.addClass(valField,'value');dfx.addClass(valField,'OptionsWidgetType-value');div.appendChild(valField);if(this.readOnly===true){valField.disabled='disabled';}
valField.onblur=function(evt){self.fireOnChangeEvents();};if(this.showCheck===true){var checkField=document.createElement('input');checkField.type='checkbox';checkField.check=checked;checkField.id=this.id+'_selected['+this.counter+']';checkField.name=this.id+'_selected[]';dfx.addClass(checkField,'check');dfx.addClass(checkField,'OptionsWidgetType-check');var container=document.createElement('div');container.id=this.id+'_check_'+this.counter;container.appendChild(checkField);div.appendChild(container);if(checked===true){dfx.addClass(container,'check-selected');}else{dfx.addClass(container,'check');}
if(this.readOnly===true){dfx.addClass(container,'check-disabled');checkField.disabled='disabled';}
dfx.addEvent(checkField,'click',function(){if(checkField.check===false){self.uncheckAll(false);checkField.check=true;dfx.swapClass(container,'check','check-selected');}else{checkField.check=false;dfx.swapClass(container,'check-selected','check');}
self.fireOnChangeEvents();});}
var deleteButton=document.createElement('span');deleteButton.id=id+'_delete';dfx.addClass(deleteButton,'delete');dfx.addClass(deleteButton,'OptionsWidgetType-delete');div.appendChild(deleteButton);if(this.readOnly===true){dfx.hideElement(deleteButton);}
dfx.addEvent(deleteButton,'click',function(){self.markForDeletion(div);self.updateTabIndexes();self.fireOnChangeEvents();});this.counter++;if(this.options!==undefined&&this.options.hasOwnProperty(key)===true){if(this.options[key].hasOwnProperty('marked')===true){if(this.options[key].marked===true){this.markForDeletion(div,true);}}}
this.updateTabIndexes();return valField;},markForDeletion:function(div,force)
{var id=div.id;var count=id.replace(this.id+'_','');var move=dfx.getId(id+'-move');var val=dfx.getId(this.id+'_val['+count+']');var key=dfx.getId(this.id+'_key['+count+']');var check=dfx.getId(this.id+'_selected['+count+']');if(this.deleted.hasOwnProperty(count)===false||force===true){this.deleted[count]=true;dfx.addClass(div,'recover');dfx.swapClass(move,'move','move-recover');key.disabled='disabled';val.disabled='disabled';check.disabled='disabled';}else{delete this.deleted[count];dfx.removeClass(div,'recover');dfx.swapClass(move,'move-recover','move');key.disabled='';val.disabled='';check.disabled='';}},updateTabIndexes:function()
{var inputs=dfx.getTag('input',this.domElem);var iln=inputs.length;var count=1;for(var i=0;i<iln;i++){var input=inputs[i];if(dfx.getStyle(input,'display')!=='none'){input.tabIndex=count;count++;}}
if(this.addNew){this.addNew.tabIndex=count;}},formatValue:function(val)
{var res='';if((val instanceof Array)===true){var len=val.length;for(var i=0;i<len;i++){for(var j in val[i]){res+=j+':'+val[i][j]+',';}}}else if((val instanceof Object)===true){for(var x in val){for(var y in val[x]){res+=y+':'+val[x][y]+',';}}}
return res;},setOptions:function(options)
{this.options=options;},setAddNewOptionBoxValue:function(value)
{this._newOptionBoxValue=value;},setDefaultOptions:function()
{this.options={0:{selected:false,value:'First Choice'},1:{selected:false,value:'Second Choice'}};},refresh:function()
{dfx.setHtml(this.domElem,'');this.counter=0;this.init();},prune:function()
{for(var index in this.deleted){var div=dfx.getId(this.id+'_'+index);this.domElem.removeChild(div);delete this.options[index];}
this.deleted={};},getValue:function()
{var op={};var len=this.domElem.childNodes.length;for(var i=0;i<len;i++){var elem=this.domElem.childNodes[i];var inputs=elem.getElementsByTagName('INPUT');if(dfx.isset(inputs[0])===true){if(dfx.isset(inputs[1])===true){var key=inputs[0].value;var val=inputs[1].value;if(key!==''&&val!==''){op[key]={};op[key]['value']=val;if(inputs[1].disabled===true){op[key]['marked']=true;}
if(this.showCheck===true){if(dfx.isset(inputs[2])===true){op[key]['selected']=inputs[2].check;}}}}}}
var ret={};ret.options=op;ret.allowEmpty=this.allowEmpty;ret.allowEmptyText=dfx.getId(this.id+'-emptyText').value;return ret;},getDefaultValue:function(asString)
{var values=this.getValue();var selected=[];for(var x in values.options){if(values.options[x].selected===true){selected.push(x);}}
if(asString&&asString===true){return selected.join(',');}else{return selected;}},addOnChangeEvent:function(fn)
{this.onChangeCallbacks.push(fn);},fireOnChangeEvents:function(val)
{var len=(this.onChangeCallbacks.length-1);for(var i=len;i>=0;i--){this.onChangeCallbacks[i].call(this);}},setMulti:function(multi)
{this.multi=multi;this.uncheckAll(true);},setAllowEmpty:function(allow,text)
{var container=dfx.getId(this.id+'-emptyTextContainer');if(container){if(allow===true){dfx.swapClass(container,'entry-hidden','entry');}else{dfx.swapClass(container,'entry','entry-hidden');}}
this.allowEmpty=allow;if(text){this.allowEmptyText=text;if(this.empty){this.empty.value=text;}}},uncheckAll:function(keepOne)
{if(this.multi===false){var containerKept=true;var checkboxKept=true;if(keepOne===true){containerKept=false;checkboxKept=false;}
var containers=dfx.getClass('check-selected',this.domElem);var ids={};var conLen=containers.length;for(var j=0;j<conLen;j++){ids[containers[j].id]=true;}
for(var id in ids){if(containerKept===false){containerKept=true;continue;}
var container=dfx.getId(id);dfx.swapClass(container,'check-selected','check');}
var checkboxes=dfx.getClass('check',this.domElem);var checkLen=checkboxes.length;for(var i=0;i<checkLen;i++){if(checkboxes[i].type==='checkbox'){if(checkboxes[i].check===true){if(checkboxKept===false){checkboxKept=true;continue;}
checkboxes[i].check=false;}}}}},enableKey:function()
{this.showKey=true;},disableKey:function()
{this.showKey=false;},enableCheck:function()
{this.showCheck=true;},disableCheck:function()
{this.showCheck=false;}};dfx.inherits('Options','Widget');function PasswordStrengthWidgetType(id,passwdFieldId,width)
{Widget.call(this,id);this.widgetType='PasswordStrength';this.passwdDesc=dfx.getId(id+'-passwdDescription');this.passwdStrength=dfx.getId(id+'-passwdStrength');this.currentRating=-1;this.width=null;if(dfx.isset(width)===true){this.width=width;}else{this.width=140;}
this.stepWidth=Math.round(this.width/5);}
PasswordStrengthWidgetType.prototype={init:function()
{var self=this;dfx.addEvent(this.passwdField.domEl,'keyup',function(e){var passwd=self.passwdField.getValue();if(passwd===''){self.passwdDesc.innerHTML='Very weak';self.passwdDesc.className=self.widgetType+'WidgetType-Description';self.passwdStrengthInner.className=self.widgetType+'WidgetType-passwordStrengthInner';self.currentRating=-1;}else{var result=self.getPasswdRating(passwd);if(result!==self.currentRating){var classN=self.getRatingClassName(self.currentRating);dfx.removeClass(self.passwdDesc,classN);dfx.removeClass(self.passwdStrengthInner,classN);self.updateRatingBar(result);self.currentRating=result;}}});this.initRatingBar();},create:function(callback)
{var div=document.createElement('div');div.id=this.id+'-passwdStrengthContainer';dfx.addClass(div,'PasswordStrengthWidgetType-Container');var divDesc=document.createElement('div');divDesc.id=this.id+'-passwdDescription';dfx.addClass(divDesc,this.widgetType+'WidgetType-Description');var divStrength=document.createElement('div');divStrength.id=this.id+'-passwdStrength';dfx.addClass(divStrength,this.widgetType+'WidgetType-passwordStrength');var divStrengthInner=document.createElement('div');divStrength.id=this.id+'-passwdStrengthInner';dfx.addClass(divStrengthInner,this.widgetType+'WidgetType-passwordStrengthInner');dfx.setHtml(divStrengthInner,'&nbsp;');this.passwdDesc=divDesc;this.passwdStrength=divStrength;this.passwdStrengthInner=divStrengthInner;this.domEl=div;div.appendChild(divDesc);divStrength.appendChild(divStrengthInner);div.appendChild(divStrength);if(this.readOnly===true){dfx.hideElement(div);}else{dfx.showElement(div);}
callback.call(this,div);},setPasswordField:function(id)
{this.passwdFieldId=id;this.passwdField=WidgetStore.get(this.passwdFieldId);},getPasswdRating:function(val)
{var score=0;if(val.length>=6){score++;}
if(val.match(/[a-z]+/)!==null&&val.match(/[A-Z]+/)!==null&&val.match(/[0-9]+/)!==null){score++;}
if(val.match(/[ ]+/)!==null){score++;}
if(val.match(/[!@#$%\^&*\?_~\-\(\)]+/)!==null){score++;}
if(val.length>=12){score++;}
return score;},clearValue:function()
{this.initRatingBar();},initRatingBar:function()
{dfx.setHtml(this.passwdDesc,'Very weak');var classNames=['veryWeak','weak','better','medium','strong','veryStrong'];var len=classNames.length;for(var i=0;i<len;i++){dfx.removeClass(this.passwdStrengthInner,classNames[i]);dfx.removeClass(this.passwdDesc,classNames[i]);}},updateRatingBar:function(rating)
{var classN=this.getRatingClassName(rating);dfx.setHtml(this.passwdDesc,this.getRatingDisplayName(rating));dfx.addClass(this.passwdDesc,classN);dfx.addClass(this.passwdStrengthInner,classN);},getRatingClassName:function(rating)
{var classN='';switch(rating){case 0:classN='veryWeak';break;case 1:classN='weak';break;case 2:classN='better';break;case 3:classN='medium';break;case 4:classN='strong';break;case 5:classN='veryStrong';break;default:break;}
return classN;},getRatingDisplayName:function(rating)
{var str='';switch(rating){case 0:str='Very weak';break;case 1:str='Weak';break;case 2:str='Better';break;case 3:str='Medium';break;case 4:str='Strong';break;case 5:str='Very strong';break;default:break;}
return str;}};dfx.inherits('PasswordStrength','Widget');function PasswordWidgetType(id,className)
{Widget.call(this,id);this.widgetType='Password';this.reEnterText='Re enter password here ...';this.isMatched=false;this.passwordTypedEvents=[];if(dfx.getId(id+'-passwordWrapper')&&dfx.isset(dfx.getId(id))===false){var self=this;this.create(function(el){dfx.getId(id+'-passwordWrapper').appendChild(el);self.addEvents();});}}
PasswordWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractWidgetWidgetType.prototype.setReadOnly.call(this,readOnly);var p=dfx.getClass('PasswordWidgetType-passwordContainer',dfx.getId(this.id))[0];var c=dfx.getClass('PasswordWidgetType-confirmPasswordContainer',dfx.getId(this.id))[0];var mt=dfx.getId('ProfileScreenWidgetType-password-passwordMatchedText');if(readOnly===true){dfx.hideElement(p);dfx.hideElement(c);dfx.hideElement(mt);}else{dfx.showElement(p);dfx.showElement(c);dfx.showElement(mt);}},addEvents:function()
{this.password=dfx.getId(this.id+'-password');this.confirmPassword=dfx.getId(this.id+'-confirmPassword');this.passwdMatched=dfx.getId(this.id+'-passwordMatchedText');if(dfx.isset(this.confirmPassword)===true){var self=this;dfx.addEvent(this.confirmPassword,'focus',function(e){dfx.hideElement(dfx.getId(self.id+'-msgField'));});dfx.addEvent(this.confirmPassword,'blur',function(e){var cPasswd=self.confirmPassword.value;if(cPasswd===''){dfx.hideElement(self.confirmPassword);dfx.showElement(dfx.getId(self.id+'-msgField'));}});dfx.addEvent(this.confirmPassword,'keyup',function(e){var passwd=self.password.value;var cPasswd=self.confirmPassword.value;if(passwd!==''&&passwd===cPasswd){dfx.setHtml(self.passwdMatched,'Matched');dfx.addClass(self.passwdMatched,'matched');self.isMatched=true;}else{dfx.setHtml(self.passwdMatched,'No Match');dfx.removeClass(self.passwdMatched,'matched');self.isMatched=false;}
self.firePasswordTypedEvents();});dfx.addEvent(this.password,'keyup',function(e){var passwd=self.password.value;var cPasswd=self.confirmPassword.value;if(passwd!==''&&passwd===cPasswd){dfx.setHtml(self.passwdMatched,'Matched');}else{dfx.setHtml(self.passwdMatched,'No Match');}
self.firePasswordTypedEvents();});}},firePasswordTypedEvents:function()
{var len=this.passwordTypedEvents.length;for(var i=0;i<len;i++){this.passwordTypedEvents[i].call(this);}},addPasswordTypedEvents:function(fn,removeOthers)
{var removeO=removeOthers||false;if(removeO===true){this.passwordTypedEvents=[];}
this.passwordTypedEvents.push(fn);},create:function(callback)
{var self=this;this.includeWidgets(['PasswordField','PasswordStrength','TextField'],function(){var div=document.createElement('div');var password=self.createWidget(self.id+'-password','PasswordField');var confirmPassword=self.createWidget(self.id+'-confirmPassword','PasswordField');var passwordStrength=self.createWidget(self.id+'-passwordStrength','PasswordStrength');var matched=document.createElement('div');var confirmMsgField=self.createWidget(self.id+'-msgField','TextField');confirmMsgField.setValue(self.reEnterText);div.id=self.id;matched.id=self.id+'-passwordMatchedText';dfx.setHtml(matched,'No Match');dfx.addClass(matched,'PasswordConfirmMatched');password.setShowLabel(self.showPasswordLabel);if(self.showPasswordLabel===true){password.setLabel(self.passwordLabel);}
password.setWidth(self.passwordWidth);confirmPassword.setShowLabel(self.showConfirmPasswordLabel);if(self.showConfirmPasswordLabel===true){confirmPassword.setLabel(self.passwordConfirmLabel);}
confirmPassword.setWidth(self.passwordConfirmWidth);password.create(function(p){confirmPassword.create(function(c){passwordStrength.create(function(s){confirmMsgField.create(function(confirmMsgFieldEl){passwordStrength.setPasswordField(self.id+'-password');passwordStrength.init();self.passContainer=p;self.passConfirmContainer=c;dfx.addClass(p,self.widgetType+'WidgetType-passwordContainer');dfx.addClass(c,self.widgetType+'WidgetType-confirmPasswordContainer');var pi=dfx.getClass('TextFieldWidgetType',p)[0];var ci=dfx.getClass('TextFieldWidgetType',c)[0];dfx.setStyle(pi,'width','203px');dfx.setStyle(ci,'width','203px');dfx.setStyle(confirmMsgField.input,'width','203px');dfx.setStyle(confirmMsgField.input,'color','#858585');dfx.setStyle(ci,'color','#646464');var confirmInputBox=confirmPassword.input;c.appendChild(confirmMsgFieldEl);dfx.addEvent(confirmMsgField.input,'focus',function(){dfx.hideElement(confirmMsgField.input);dfx.showElement(confirmInputBox);confirmInputBox.focus();});dfx.setStyle(confirmInputBox,'display','none');div.appendChild(s);div.appendChild(p);div.appendChild(c);div.appendChild(matched);dfx.addClass(div,self.widgetType+'WidgetType');if(self.readOnly===true){dfx.hideElement(p);dfx.hideElement(c);dfx.hideElement(matched);}
callback.call(this,div);return div;});});});});});},addConfirmEvent:function()
{var self=this;dfx.addEvent(this.confirmPasswd,'keyup',function(e){var passwd=self.passwdField.getValue();var result=self.getPasswdRating(passwd);if(result!==this.currentRating){self.updateRatingBar(result);this.currentRating=result;}});this.initRatingBar();},isValueMatched:function()
{return this.isMatched;},getValue:function()
{if(this.password){return this.password.value;}
return'';},getConfirmValue:function()
{if(this.confirmPassword){return this.confirmPassword.value;}
return'';},setValue:function(val)
{var self=this;var _setPasswordValue=function(){if(val===''){self.password.value='';self.confirmPassword.value='';dfx.showElement(dfx.getId(self.id+'-reenterText'));dfx.setStyle(self.confirmPassword,'color','#646464');}else{self.password.value=val;dfx.setStyle(self.confirmPassword,'color','#000');self.confirmPassword.value=val;self.isMatched=true;dfx.hideElement(dfx.getId(self.id+'-reenterText'));}};var ti=null;var _setValue=function(){if(!self.password){var ti=setTimeout(function(){_setValue();},100);}else{if(ti!==null){clearTimeout(ti);_setPasswordValue();}}}
_setValue();},clearValue:function()
{var widget=WidgetStore.get(this.id+'-passwordStrength');this.setValue('');widget.clearValue();this.isMatched=false;},setShowPasswordLabel:function(show)
{if(typeof show==='string'||show==='true'){this.showPasswordLabel=true;}else if(typeof show==='boolean'||show===true){this.showPasswordLabel=show;}},setPasswordLabel:function(label)
{this.passwordLabel=label;},setPasswordWidth:function(width)
{this.passwordWidth=width;},setShowConfirmPasswordLabel:function(show)
{if(typeof show==='string'||show==='true'){this.showConfirmPasswordLabel=true;}else if(typeof show==='boolean'||show===true){this.showConfirmPasswordLabel=show;}},setPasswordConfirmLabel:function(label)
{this.passwordConfirmLabel=label;},setPasswordConfirmWidth:function(width)
{this.passwordConfirmWidth=width;},disable:function()
{this.password.disabled=true;dfx.setStyle(this.password,'background-color','#999999');this.confirmPassword.disabled=true;dfx.setStyle(this.confirmPassword,'background-color','#999999');this.enabled=false;},enable:function()
{var self=this;var _enable=function(){self.password.disabled=false;dfx.setStyle(self.password,'background-color','#FFFFFF');self.confirmPassword.disabled=false;dfx.setStyle(self.confirmPassword,'background-color','#FFFFFF');self.enabled=true;};var _check=function(){if(!self.password||!self.confirmPassword){_wait();}else{_enable();}};var _wait=function(){setTimeout(function(){_check();},100);};_check();}};dfx.inherits('Password','Widget');function ProgressBarWidgetType(id)
{Widget.call(this,id);this.classPrefix='ProgressBarWidgetType';this.bar=dfx.getId(this.id+'_bar_background');this.label=dfx.getId(this.id+'_label');this.percent=0;this.px=0;this.totalWidth=0;this.startCallbacks=[];this.progressCallbacks=[];this.completeCallbacks=[];this.deleteCallbacks=[];this.enabled=true;this.noDelete=false;}
ProgressBarWidgetType.prototype={setNoDeleteBtn:function(noDelete)
{if(dfx.isset(noDelete)===false){this.noDelete=false;}else{this.noDelete=noDelete;}},create:function(callback)
{var self=this;var wrapper=document.createElement('div');wrapper.id=this.id+'_progress';wrapper.className=this.classPrefix;var barBackground=document.createElement('div');barBackground.id=this.id+'_bar_background';barBackground.className=this.classPrefix+'-bar-background';var ready=document.createElement('div');ready.id=this.id+'_ready';ready.className=this.classPrefix+'-ready';var label=document.createElement('div');label.id=this.id+'_label';label.className=this.classPrefix+'-label';if(this.noDelete===false){var deleteDiv=document.createElement('div');deleteDiv.id=this.id+'_delete';deleteDiv.className=this.classPrefix+'-delete';}
barBackground.appendChild(ready);wrapper.appendChild(barBackground);wrapper.appendChild(label);if(this.noDelete===false){wrapper.appendChild(deleteDiv);dfx.addEvent(deleteDiv,'click',function(e){var cLen=self.deleteCallbacks.length;if(self.isEnabled()===true){self.disable();}else{self.enable();}
for(var i=0;i<cLen;i++){self.deleteCallbacks[i].call(self,self.id);}});}
this.wrapper=wrapper;this.bar=barBackground;this.label=label;if(dfx.isFn(callback)===true){callback.call(this,wrapper);}},hide:function()
{dfx.hideElement(dfx.getId(this.id+'_progress'));},show:function()
{dfx.showElement(dfx.getId(this.id+'_progress'));},disable:function()
{var rect=dfx.getBoundingRectangle(this.wrapper);var width=(rect.x2-rect.x1);this.enabled=false;dfx.addClass(dfx.getId(this.id+'_delete'),'recover');dfx.setStyle(this.bar,'width',width+'px');dfx.addClass(this.bar,'disabled');},enable:function()
{this.enabled=true;dfx.removeClass(dfx.getId(this.id+'_delete'),'recover');dfx.setStyle(this.bar,'width','0px');dfx.removeClass(this.bar,'disabled');},isEnabled:function()
{return this.enabled;},addOnStartCallback:function(callback)
{if(dfx.isFn(callback)===true){this.startCallbacks.push(callback);}},addOnProgressCallback:function(callback)
{if(dfx.isFn(callback)===true){this.progressCallbacks.push(callback);}},addOnCompleteCallback:function(callback)
{if(dfx.isFn(callback)===true){this.completeCallbacks.push(callback);}},addOnDeleteCallback:function(callback)
{if(dfx.isFn(callback)===true){this.deleteCallbacks.push(callback);}},getLabel:function()
{return this.label.innerHTML;},updateLabel:function(label)
{dfx.setHtml(this.label,label);},updateProgress:function(percent,callback)
{var self=this;if(this.percent===0){var scLen=this.startCallbacks.length;for(var i=0;i<scLen;i++){this.startCallbacks[i].call(this);}}
this.percent=Math.floor(percent);if(this.totalWidth===0){var rect=dfx.getBoundingRectangle(this.wrapper);this.totalWidth=(rect.x2-rect.x1);}
targetWidth=Math.ceil((this.totalWidth/100)*percent);dfx.animate(this.bar,{width:targetWidth+'px'},1000,function(){if(dfx.isFn(callback)===true){callback.call(this);}
if(self.percent===100){var scLen=self.completeCallbacks.length;for(var j=0;j<scLen;j++){self.completeCallbacks[j].call(this);}}else{var pcLen=self.progressCallbacks.length;for(var j=0;j<pcLen;j++){self.progressCallbacks[j].call(this);}}},false);},reset:function()
{this.percent=0;this.px=0;this.totalWidth=0;dfx.setStyle(this.bar,'width','0px');},isFinished:function()
{if(this.percent===100){return true;}
return false;}};dfx.inherits('ProgressBar','Widget');function PublicAssetFilterWidgetType(id)
{Widget.call(this,id);this.id=id;}
PublicAssetFilterWidgetType.prototype={getValue:function()
{var id=this.id+'-toggle';var widget=WidgetStore.get(id);var result={};result.enabled=widget.getValue();return result;},setValue:function(value)
{var id=this.id+'-toggle';var widget=WidgetStore.get(id);widget.setValue(value);}};dfx.inherits('PublicAssetFilter','Widget');function PublishedAssetFilterWidgetType(id)
{Widget.call(this,id);this.id=id;}
PublishedAssetFilterWidgetType.prototype={getValue:function()
{var id=this.id+'-toggle';var widget=WidgetStore.get(id);var result={};result.enabled=widget.getValue();return result;},setValue:function(value)
{var id=this.id+'-toggle';var widget=WidgetStore.get(id);widget.setValue(value);}};dfx.inherits('PublishedAssetFilter','Widget');function RootNodeListWidgetType(id,whiteList,hideSite,buttonName)
{Widget.call(this,id);this.widgetType='RootNodeList';this.parents=[];this.cache={};this.whiteList=whiteList||[];this.hideSite=hideSite||false;this.buttonName=buttonName;this.addButton=null;if(dfx.getId(id+'-rootNodeListWrapper')&&dfx.isset(dfx.getId(id))===false){var self=this;this.create(function(el){self.addEvents();});}}
RootNodeListWidgetType.prototype={create:function(callback)
{var self=this;this.includeWidgets(['Button'],function(){var left=document.createElement('div');left.id=self.id+'-locationList';dfx.addClass(left,self.widgetType+'-locationList');var right=document.createElement('div');right.id=self.id+'-addNewWrap';dfx.addClass(right,self.widgetType+'-addNewWrap');var button=self.createWidget(self.id+'-addNewLocation','Button');self.addButton=button;button.setName(self.buttonName);button.create(function(el){right.appendChild(el);if(self.parents.length===0){var row=document.createElement('div');dfx.setHtml(row,'No locations are currently set');dfx.addClass(row,self.widgetType+'-noLoc');dfx.addClass(row,self.widgetType+'-list-last');left.appendChild(row);}else{dfx.foreach(self.parents,function(idx){var pid=self.parents[idx];return self.createParentRow(pid,function(div){left.appendChild(div);return true;});});}
var wrap=dfx.getId(self.id+'-rootNodeListWrapper');wrap.appendChild(left);wrap.appendChild(right);dfx.addClass(el,'RootNodeList-AddNewButton');var modal=dfx.getId('WizardModalDialog-mid-center');var wizardZindex=null;button.addClickEvent(function(){self._toggleAllAddNewButtons(false);self.displayDisabledDiv(true,modal,'white','absolute');wizardZindex=parseInt(dfx.getStyle(dfx.getId('WizardModalDialog'),'z-index'),10);var disabledZindex=parseInt(dfx.getStyle(dfx.getId('_disabledDiv'),'z-index'),10);dfx.setStyle(dfx.getId('WizardModalDialog'),'z-index',(disabledZindex-1));self.assetPicker=WidgetStore.get('EditingAssetPicker');self.assetPicker.setScreen(self.id+'-assetPicker');self.assetPicker.setUniqueSelect(false);self.assetPicker.addAssetsSelectedAction(function(assets){var len=assets.length;for(var i=0;i<len;i++){self._processSelectedAsset(assets[i],left);}
dfx.setStyle(dfx.getId('WizardModalDialog'),'z-index',wizardZindex);},true,self.id+'-assetPicker');var pickerid=self.id+'-assetPicker';var folders=['Documents','Images','Movies','Designs','Roles','Users','Workflows'];var fLen=folders.length;self.assetPicker.resetProjectFolderList(pickerid);for(var i=0;i<fLen;i++){if(dfx.inArray(folders[i],self.whiteList)===true){self.assetPicker.addProjectFolderWhiteList(pickerid,folders[i]);}else{self.assetPicker.addProjectFolderBlackList(pickerid,folders[i]);}}
self.assetPicker.setForceShowRoots(pickerid,true);self.assetPicker.setHideSite(pickerid,self.hideSite);self.assetPicker.init(self.id+'-assetPicker',function(){self.assetPicker.dialog.open();});self.assetPicker.addCloseAction(function(){self._toggleAllAddNewButtons(true);dfx.setStyle(dfx.getId('WizardModalDialog'),'z-index',wizardZindex);self.removeDisabledDiv(modal);});callback.call(this);return;});return;});});},_toggleAllAddNewButtons:function(enable)
{var c='RootNodeList-AddNewButton';var buttons=dfx.getClass(c);var len=buttons.length;for(var i=0;i<len;i++){this._toggleAddNewButton(buttons[i].id,enable);}},_toggleAddNewButton:function(buttonid,enable)
{var button=WidgetStore.get(buttonid);if(button){if(enable===true){button.enable();}else{button.disable();}}},_processSelectedAsset:function(assetid,left)
{if(dfx.inArray(assetid,this.parents)===false){if(this.parents.length===0){var noLoc=dfx.getClass(this.widgetType+'-noLoc',dfx.getId(this.id+'-rootNodeListWrapper'))[0];dfx.hideElement(noLoc);}
var self=this;this.createParentRow(assetid,function(div){var list=dfx.getId(self.id+'-locationList');var rows=dfx.getClass(self.widgetType+'-row',list);dfx.removeClass(rows,self.widgetType+'-list-last');dfx.addClass(div,self.widgetType+'-list-last');left.appendChild(div);self.parents.push(assetid);});}},createParentRow:function(pid,callback)
{var self=this;var _create=function(asset,cb){var div=document.createElement('div');div.id=self.id+'-row-'+pid;dfx.addClass(div,self.widgetType+'-row');var content='<div class="'+self.widgetType+'-icon"><img src="'+asset.iconUrl+'" /></div>';content+='<div class="'+self.widgetType+'-name">'+asset.name+'</div>';content+='<div class="'+self.widgetType+'-delete">&nbsp;</div>';dfx.setHtml(div,content);var delBtn=dfx.getClass(self.widgetType+'-delete',div)[0];if(self.disabled===true){dfx.hideElement(delBtn);}
dfx.addEvent(delBtn,'click',function(e){if(dfx.hasClass(delBtn,'recover')===true){dfx.removeClass(delBtn,'recover');dfx.removeClass(div,'deleted');}else{dfx.addClass(delBtn,'recover');dfx.addClass(div,'deleted');}});self.cache[pid]={name:asset.name,iconUrl:asset.iconUrl};return callback.call(self,div);};if(dfx.isset(this.cache[pid])===true){_create(this.cache[pid],callback);}else{AssetManager.getAsset(pid,function(asset){_create(asset,callback);},true,{attributes:['name'],type:false,typeIcon:true,linking:[],urls:false});}},getValue:function()
{if(this.parents.length===0){return[];}else{var result=[];var self=this;dfx.foreach(this.parents,function(idx){result.push({id:self.parents[idx],deleted:dfx.hasClass(dfx.getId(self.id+'-row-'+self.parents[idx]),'deleted')});return true;});}
return result;},setValue:function(values)
{var self=this;this.parents=[];dfx.foreach(values,function(idx){self.parents.push(values[idx].id);return true;});var listWrap=dfx.getId(this.id+'-locationList');dfx.setHtml(listWrap,'');if(this.parents.length===0){var row=document.createElement('div');dfx.setHtml(row,'No locations are currently set');dfx.addClass(row,self.widgetType+'-noLoc');dfx.addClass(row,self.widgetType+'-list-last');listWrap.appendChild(row);}else{var last=null;dfx.foreach(this.parents,function(idx){var assetid=self.parents[idx];self.createParentRow(assetid,function(div){if(values[idx].deleted===true){dfx.addClass(div,'deleted');dfx.addClass(dfx.getClass(self.widgetType+'-delete',div)[0],'recover');}
listWrap.appendChild(div);});return true;});dfx.addClass(dfx.getId(self.id+'-row-'+this.parents[(this.parents.length-1)]),self.widgetType+'-list-last');}},disable:function()
{var delBtns=dfx.getClass('RootNodeList-delete',dfx.getId(this.id+'-rootNodeListWrapper'));dfx.foreach(delBtns,function(idx){dfx.hideElement(delBtns[idx]);});this.addButton.disable();this.disabled=true;},enable:function()
{var delBtns=dfx.getClass('RootNodeList-delete',dfx.getId(this.id+'-rootNodeListWrapper'));dfx.foreach(delBtns,function(idx){dfx.showElement(delBtns[idx]);});this.addButton.enable();this.disabled=false;},reset:function()
{this.parents=[];this.cache={};var row=document.createElement('div');var listWrap=dfx.getId(this.id+'-locationList');dfx.setHtml(listWrap,'');dfx.setHtml(row,'No locations are currently set');dfx.addClass(row,this.widgetType+'-noLoc');dfx.addClass(row,this.widgetType+'-list-last');listWrap.appendChild(row);}};dfx.inherits('RootNodeList','Widget');function RuleTypeWidgetType(id)
{Widget.call(this,id);this.widgetType='RuleTypeWidgetType';this.simpleResult=false;this.widget=null;this.widgetid='';this.value=null;this.server=true;this.client=true;this.errors=[];this.errorMsg='Rule JS class '+id+' does not have validateRule method overriden. Please make sure you implement it.';}
RuleTypeWidgetType.prototype={create:function(callback)
{if(dfx.isFn(callabck)===true){callback.call(this);return;}},reset:function()
{this.simpleResult=false;this.widget=null;this.value=null;this.server=true;this.client=true;this.errors=[];},simpleResultMode:function()
{this.simpleResult=true;},validate:function(arg)
{this.setValue(arg);var result=this.getRuleValidationInfo();if(this.validateRule()===false){result.result=false;result.errors=result.errors.concat(this.errors);}
if(this.simpleResult===true){return result.result;}
return result;},validateRule:function()
{this.errors.push(this.errorMsg);return false;},setWidgetid:function(wid)
{this.widgetid=wid;},setValue:function(arg)
{if(dfx.isObj(arg)===true&&dfx.isArray(arg)===false){if(this.isValidWidget(arg)===false){var msg='The widget (#ID: '+this.id+') is not a valid widget to apply rules.';alert(msg);}
this.widget=arg;this.value=arg.getValue();}else{this.value=arg;}},setServer:function(svr)
{this.server=svr;},setClient:function(clt)
{this.client=clt;},setErrorMsg:function(msg)
{this.errorMsg=msg;},getRuleValidationInfo:function()
{var info={'rule_type':this.getRuleTypeString(),'result':true,'errors':[]};return info;},getRuleTypeString:function()
{if(dfx.isset(this.widgetType)===false||typeof this.widgetType!=='string'){return'';}
return this.widgetType.substr(8,(this.widgetType.length-18));},isValidWidget:function(wdgt)
{if(dfx.isset(wdgt.getValue)===true&&dfx.isFn(wdgt.getValue)===true){return true;}
return false;}};dfx.inherits('RuleType','Widget');function ScrollPaneWidgetType(id,width,widthUnit,height,heightUnit,mouseWheelSclDist,hasVerticalSclBar,hasHorizontalSclBar,overflow)
{Widget.call(this,id);this.widgetType='ScrollPane';this.content=null;this.domElem=null;this.vScroll=null;this.hScroll=null;this.height=height||null;this.width=width||null;this.heightUnit=heightUnit||'px';this.widthUnit=widthUnit||'px';this.mouseWheelSclDist=mouseWheelSclDist||'0';if(overflow==='auto'){return;}
this.hasVerticalSclBar=false;if(dfx.isset(hasVerticalSclBar)===true){this.hasVerticalSclBar=hasVerticalSclBar;}
this.hasHorizontalSclBar=false;if(dfx.isset(hasHorizontalSclBar)===true){this.hasHorizontalSclBar=hasHorizontalSclBar;}
this.init();}
ScrollPaneWidgetType.prototype={init:function()
{var main=dfx.getId(this.id);if(main){this.content=dfx.getId(this.id+'-content');this.domElem=main;var self=this;if(this.height!==null){this.setHeight(parseInt(this.height),this.heightUnit);}
if(this.width!==null){this.setWidth(parseInt(this.width),this.widthUnit);}
this.create(function(){self.update();self._addEvents();});}else{var c=this.getClass();var main=document.createElement('div');main.id=this.id;dfx.addClass(main,c);var content=document.createElement('div');content.id=this.id+'-content';this.content=content;dfx.addClass(content,c+'-content');main.appendChild(content);this.domElem=main;}},parentSizeChanged:function(widgetid,elem,size)
{this.setHeight(size.height,'px');this.update();},create:function(callback)
{var main=this.domElem;if(this.hasVerticalSclBar===true){this.vScroll=new ScrollPaneWidgetTypeVerticalScrollbar(this.id+'-vertical',main,this.content);}
if(this.hasHorizontalSclBar===true){this.hScroll=new ScrollPaneWidgetTypeHorizontalScrollbar(this.id+'-horizontal',main,this.content);}
var self=this;if(this.hScroll!==null){this.hScroll.addDisabledAction(function(){if(self.vScroll!==null){self.vScroll.heightModifier=2;self.vScroll.update();}});}
if(this.vScroll!==null){main.appendChild(this.vScroll.create());}
if(this.hScroll!==null){main.appendChild(this.hScroll.create());}
if(dfx.isFn(callback)){callback.call(this,main);}},getClass:function()
{return'ScrollPaneWidgetType';},addContentElement:function(el)
{if(this.content){this.content.appendChild(el);}},update:function(noDelayedUpdate)
{if(!dfx.getId(this.id)){return;}
var paneWidth=dfx.getElementWidth(this.domElem);if(paneWidth>0){this.updateWidth();this.updateHeight();if(this.vScroll!==null){this.vScroll.update();}
if(this.hScroll!==null){this.hScroll.update();}}
if(noDelayedUpdate!==true){var self=this;setTimeout(function(){self.update(true);},2000);}},updateWidth:function(){},updateHeight:function()
{var paneHeight=dfx.getElementHeight(this.domElem);dfx.setStyle(this.content,'height','auto');var elH=dfx.getElementHeight(this.content);if(elH<paneHeight){dfx.setStyle(this.content,'height','100%');}},setWidth:function(size,unit)
{var u=unit||'px';dfx.setStyle(this.domElem,'width',size+u);},setHeight:function(size,unit)
{var u=unit||'px';dfx.setStyle(this.domElem,'height',size+u);},getBorderWidth:function()
{var l=parseInt(dfx.getStyle(this.domElem,'border-left-width'));var r=parseInt(dfx.getStyle(this.domElem,'border-right-width'));var v=l+r;if(isNaN(v)){v=0;}
return v;},addDisabledAction:function(action)
{if(this.vScroll!==null){this.vScroll.addDisabledAction(action);}
if(this.hScroll!==null){this.hScroll.addDisabledAction(action);}},addEnabledAction:function(action)
{if(this.vScroll!==null){this.vScroll.addEnabledAction(action);}
if(this.hScroll!==null){this.hScroll.addEnabledAction(action);}},_addEvents:function()
{if(this.vScroll!==null){this.vScroll.addEvents();}
if(this.hScroll!==null){this.hScroll.addEvents();}},scrollTo:function(top)
{if(this.vScroll!==null){this.vScroll.sync(0);}}};dfx.inherits('ScrollPane','Widget');function ScrollPaneWidgetTypeScrollbar(id)
{this.id=id;this.domElem=null;this.scroller=null;this.enabledActions=[];this.disabledActions=[];}
ScrollPaneWidgetTypeScrollbar.prototype={getWidth:function()
{return dfx.getElementWidth(this.domElem);},getHeight:function()
{return dfx.getElementHeight(this.domElem);},fireDisabledActions:function()
{var len=this.disabledActions.length;for(var i=0;i<len;i++){this.disabledActions[i].call(this);}},addDisabledAction:function(action)
{this.disabledActions.push(action);},fireEnabledActions:function()
{var len=this.enabledActions.length;for(var i=0;i<len;i++){this.enabledActions[i].call(this);}},addEnabledAction:function(action)
{this.enabledActions.push(action);}};function ScrollPaneWidgetTypeVerticalScrollbar(id,elem,content)
{ScrollPaneWidgetTypeScrollbar.call(this,id);this.scrollPaneElem=elem;this.arrowTop=this.shaft=this.arrowBottom=null;this.content=content;this.paneHeight=this.scrollerHeight=this.shaftHeight=this.arrowHeight=0;this.syncC=this.maxDown=this.shaftTop=0;this.contentHeight=dfx.getElementHeight(this.content);this.mouseWheelMultiplier=5;this.heightModifier=3;}
ScrollPaneWidgetTypeVerticalScrollbar.prototype={create:function()
{var c='ScrollPaneWidgetType-scroll';var main=document.createElement('div');dfx.addClass(main,c+'-vertical');this.arrowTop=document.createElement('div');dfx.addClass(this.arrowTop,c+'-vertical-arrow-top');main.appendChild(this.arrowTop);this.shaft=document.createElement('div');dfx.addClass(this.shaft,c+'-vertical-shaft');main.appendChild(this.shaft);this.scroller=document.createElement('div');dfx.addClass(this.scroller,c+'-vertical-scroller');this.shaft.appendChild(this.scroller);this.arrowBottom=document.createElement('div');dfx.addClass(this.arrowBottom,c+'-vertical-arrow-bottom');main.appendChild(this.arrowBottom);this.domElem=main;return main;},update:function()
{if(dfx.isset(this.content.firstChild)===false){return;}
var paneHeight=dfx.getElementHeight(this.scrollPaneElem);this.paneHeight=paneHeight;var arrowHeight=dfx.getElementHeight(this.arrowTop);this.arrowHeight=arrowHeight;var t=parseInt(dfx.getStyle(this.scrollPaneElem,'border-top-width'));var b=parseInt(dfx.getStyle(this.scrollPaneElem,'border-bottom-width'));var v=t+b;if(isNaN(v)){v=0;}
this.shaftHeight=(paneHeight-(arrowHeight*this.heightModifier)-v+1);dfx.setStyle(this.shaft,'height',this.shaftHeight+'px');this.contentHeight=dfx.getElementHeight(this.content.firstChild);this.contentHeight-=parseInt(dfx.getStyle(this.content.firstChild,'margin-top'));this.contentHeight-=parseInt(dfx.getStyle(this.content.firstChild,'margin-bottom'));dfx.setStyle(this.content.firstChild,'position','relative');if(this.contentHeight<=this.paneHeight){this.fireDisabledActions();dfx.setStyle(this.domElem,'display','none');this.maxDown=this.contentHeight;return;}else{this.fireEnabledActions();dfx.setStyle(this.domElem,'display','block');}
this.scrollerHeight=((paneHeight*this.shaftHeight)/this.contentHeight);dfx.setStyle(this.scroller,'height',this.scrollerHeight+'px');this.maxDown=(dfx.getElementHeight(this.shaft)-this.scrollerHeight);this.syncC=(this.contentHeight-this.paneHeight);this.syncB=(this.shaftHeight-this.scrollerHeight);},addEvents:function()
{var clickDist=0;var self=this;var mMove=function(e){var pos=dfx.getMouseEventPosition(e);var np=(pos.y-self.shaftTop-clickDist);self.sync(np);};dfx.addEvent(this.scroller,'mousedown',function(e){var pos=dfx.getMouseEventPosition(e);clickDist=(pos.y-dfx.getElementCoords(self.scroller).y);self.shaftTop=dfx.getElementCoords(self.shaft).y;dfx.addEvent(document,'mousemove',mMove);return false;});dfx.addEvent(document,'mouseup',function(e){dfx.removeEvent(document,'mousemove',mMove);});var arrowTopInterval=null;dfx.addEvent(this.arrowTop,'mousedown',function(e){arrowTopInterval=setInterval(function(){self.sync(parseInt(dfx.getStyle(self.scroller,'top'))-5);},10);});dfx.addEvent(document,'mouseup',function(e){clearInterval(arrowTopInterval);});var arrowBottomInterval=null;dfx.addEvent(this.arrowBottom,'mousedown',function(e){arrowBottomInterval=setInterval(function(){self.sync(parseInt(dfx.getStyle(self.scroller,'top'))+5);},10);});dfx.addEvent(document,'mouseup',function(e){clearInterval(arrowBottomInterval);});dfx.addEvent(this.scrollPaneElem,'mousewheel',function(e,delta){self.sync((parseInt(dfx.getStyle(self.scroller,'top'))-delta*self.mouseWheelMultiplier));});dfx.addEvent(this.shaft,'mousedown',function(e){var mp=(dfx.getMouseEventPosition(e).y-dfx.getElementCoords(self.shaft).y);var top=parseInt(dfx.getStyle(self.scroller,'top'));var p=0;if(mp>top){p=top+self.scrollerHeight;}else{p=(top-self.scrollerHeight);}
self.sync(p);});},sync:function(top)
{if(top<0){top=0;}else if(top>this.maxDown){top=this.maxDown;}
dfx.setStyle(this.scroller,'top',top+'px');var pos=(0-(top*this.syncC/this.syncB));if(isNaN(pos)){pos=0;}
dfx.setStyle(this.content.firstChild,'top',pos+'px');}};dfx.noInclusionInherits('ScrollPaneWidgetTypeVerticalScrollbar','ScrollPaneWidgetTypeScrollbar',true);function ScrollPaneWidgetTypeHorizontalScrollbar(id,elem,content)
{ScrollPaneWidgetTypeScrollbar.call(this,id);this.scrollPaneElem=elem;this.content=content;this.arrowLeft=this.shaft=this.scroller=this.arrowRight=null;this.paneWidth=this.arrowWidth=this.arrowWidth=this.shaftWidth=0;this.scrollerWidth=this.contentWidth=this.syncC=this.syncB=0;this.maxRight=this.shaftLeft=0;}
ScrollPaneWidgetTypeHorizontalScrollbar.prototype={create:function()
{var c='ScrollPaneWidgetType-scroll';var main=document.createElement('div');dfx.addClass(main,c+'-horizontal');this.arrowLeft=document.createElement('div');dfx.addClass(this.arrowLeft,c+'-horizontal-arrow-left');main.appendChild(this.arrowLeft);this.shaft=document.createElement('div');dfx.addClass(this.shaft,c+'-horizontal-shaft');main.appendChild(this.shaft);this.scroller=document.createElement('div');dfx.addClass(this.scroller,c+'-horizontal-scroller');this.shaft.appendChild(this.scroller);this.arrowRight=document.createElement('div');dfx.addClass(this.arrowRight,c+'-horizontal-arrow-right');main.appendChild(this.arrowRight);this.domElem=main;return main;},update:function()
{if(dfx.isset(this.content.firstChild)===false){return;}
this.paneWidth=dfx.getElementWidth(this.scrollPaneElem);this.arrowWidth=dfx.getElementWidth(this.arrowLeft);var l=parseInt(dfx.getStyle(this.scrollPaneElem,'border-left-width'));var r=parseInt(dfx.getStyle(this.scrollPaneElem,'border-right-width'));var v=l+r;if(isNaN(v)){v=0;}
this.shaftWidth=(this.paneWidth-(this.arrowWidth*2)-v);dfx.setStyle(this.shaft,'width',this.shaftWidth+'px');this.contentWidth=dfx.getElementWidth(this.content.firstChild);dfx.setStyle(this.content.firstChild,'position','relative');if(this.contentWidth<=this.paneWidth){dfx.setStyle(this.domElem,'display','none');this.fireDisabledActions();return;}
this.scrollerWidth=((this.paneWidth*this.shaftWidth)/this.contentWidth);dfx.setStyle(this.scroller,'width',this.scrollerWidth+'px');this.maxRight=(dfx.getElementWidth(this.shaft)-dfx.getElementWidth(this.scroller));this.syncC=(this.contentWidth-this.paneWidth+(this.arrowWidth*2));this.syncB=(this.shaftWidth-this.scrollerWidth);},addEvents:function()
{var clickDist=0;var self=this;var mMove=function(e){var pos=dfx.getMouseEventPosition(e);var np=(pos.x-self.shaftLeft-clickDist);self.sync(np);};dfx.addEvent(this.scroller,'mousedown',function(e){var pos=dfx.getMouseEventPosition(e);clickDist=(pos.x-dfx.getElementCoords(self.scroller).x);self.shaftLeft=dfx.getElementCoords(self.shaft).x;dfx.addEvent(document,'mousemove',mMove);return false;});dfx.addEvent(document,'mouseup',function(e){dfx.removeEvent(document,'mousemove',mMove);});var arrowLeftInterval=null;dfx.addEvent(this.arrowLeft,'mousedown',function(e){arrowLeftInterval=setInterval(function(){self.sync(parseInt(dfx.getStyle(self.scroller,'left'))-5);},10);});dfx.addEvent(document,'mouseup',function(e){clearInterval(arrowLeftInterval);});var arrowRightInterval=null;dfx.addEvent(this.arrowRight,'mousedown',function(e){arrowRightInterval=setInterval(function(){self.sync(parseInt(dfx.getStyle(self.scroller,'left'))+5);},10);});dfx.addEvent(document,'mouseup',function(e){clearInterval(arrowRightInterval);});dfx.addEvent(this.shaft,'mousedown',function(e){var mp=(dfx.getMouseEventPosition(e).x-dfx.getElementCoords(self.shaft).x);var left=parseInt(dfx.getStyle(self.scroller,'left'));var p=0;if(mp>left){p=left+self.scrollerWidth;}else{p=(left-self.scrollerWidth);}
self.sync(p);});},sync:function(left)
{if(left<0){left=0;}else if(left>this.maxRight){left=this.maxRight;}
dfx.setStyle(this.scroller,'left',left+'px');var pos=(0-(left*this.syncC/this.syncB));dfx.setStyle(this.content.firstChild,'left',pos+'px');}};dfx.noInclusionInherits('ScrollPaneWidgetTypeHorizontalScrollbar','ScrollPaneWidgetTypeScrollbar',true);function SettingsPaneWidgetType(id)
{Widget.call(this,id);this.domElem=dfx.getId(this.id);this.dynamicDiv=null;this.container=null;this.prevHeight=null;this.resizeEvents=null;this.editingContents=null;this.loader=null;this.offset=0;this.noOffset=false;this.top=null;this.resizeButton=null;this.assetType=null;if(dfx.isset(this.domElem)===true){this.init();}
WidgetStore.addDataChangeListener('SettingsPaneWidget','activeMode',function(newMode,prevMode){WidgetStore.setData('activeAssetSetting',null);});WidgetStore.addDataChangeListener('SettingsPaneWidget','activeScreen',function(newScreen,prevScreen){WidgetStore.setData('activeAssetSetting',null);});}
SettingsPaneWidgetType.prototype={create:function(callback)
{var div=document.createElement('div');div.id=this.id;var top=document.createElement('div');top.id=this.id+'-top';var btn=document.createElement('div');dfx.addClass(btn,'SettingsPaneWidgetType-top-btn');top.appendChild(btn);this.top=top;this.addResizeBtnEvent(btn);dfx.addClass(top,'SettingsPaneWidgetType-top');div.appendChild(top);this.container=document.createElement('div');this.container.id=this.id+'-container';dfx.addClass(this.container,'SettingsPaneWidgetType-container');div.appendChild(this.container);this.domElem=div;dfx.addClass(div,'SettingsPaneWidgetType');this.init();if(dfx.isFn(callback)===true){WidgetStore.setData('bugState',1);callback.call(this,div);return;}},init:function()
{var ec=dfx.getId('EditingContents');this.editingContents=ec;dfx.insertAfter(ec,this.domElem);dfx.addClass(ec,'scrollable');this.offset=parseInt(dfx.getStyle(ec,'margin-top'),10);var self=this;this.includeWidget('DynamicDiv',function(){self.dynamicDiv=self.createWidget(self.id+'-dd','DynamicDiv');self.dynamicDiv.setElement(self.container);});dfx.addEvent(window,'resize',function(){self.resizeContent();});this.enableResize();this.resizeContent();},enableResize:function()
{var elem=dfx.getClass('SettingsPaneWidgetType-top',this.domElem)[0];var self=this;var windim=null;dfx.resizeHeight(this.domElem,elem,function(){windim=dfx.getWindowDimensions();},null,function(info){self.resizeContent(windim,info.height);},0);},fireSizeChanged:function(size)
{WidgetStore.fireParentSizeChanged(this.id,this.domElem,size);},setSettingsContent:function(dynamicContent,callback)
{this.dynamicDiv.updateContent(dynamicContent,callback);},changeContent:function(params,endFunc)
{var self=this;this.displayDisabledDiv(true,this.container,'white','absolute');this.dynamicDiv.changeContent(params,function(data){if(data){var ddata=dfx.jsonDecode(data);if(ddata&&ddata.assetType){self.assetType=ddata.assetType;WidgetStore.setData('activeAssetSetting',self.assetType);}}
self.removeDisabledDiv(self.container);if(dfx.isFn(endFunc)===true){endFunc.call(this,data);}});},resizeContent:function(dim,height)
{var ec=this.editingContents;dim=dim||dfx.getWindowDimensions();elHeight=height||dfx.getElementHeight(this.domElem);var marginTop=this.offset;var contentH=(dim.height-elHeight-marginTop);if(this.noOffset!==true){contentH-=31;}
if(dfx.getStyle(ec,'display')!=='none'){dfx.setStyle(ec,'height',contentH+'px');}
return contentH;},remove:function()
{dfx.remove(this.domElem);if(dfx.getStyle(this.editingContents,'display')!=='none'){dfx.setStyle(this.editingContents,'height','auto');}},setHeight:function(height,noOffset)
{this.noOffset=noOffset;dfx.setStyle(this.domElem,'height',height);this.resizeContent();},getHeight:function()
{return dfx.getElementHeight(this.domElem);},addResizeBtnEvent:function(elem)
{this.resizeButton=elem;var self=this;dfx.addEvent(elem,'click',function(){if(dfx.hasClass(elem,'close')!==true){self.close();}else{self.open();}});},close:function()
{this.removeDisabledDiv(this.container);dfx.addClass(this.resizeButton,'close');this.prevHeight=dfx.getElementHeight(this.domElem);dfx.setStyle(this.domElem,'height','0px');WidgetStore.setData('bugState',{state:0,widget:this});dfx.removeEvent(dfx.getClass('SettingsPaneWidgetType-top',this.domElem)[0]);this.resizeContent();WidgetStore.setData('activeAssetSetting',null);},open:function()
{if(this.prevHeight!==null){dfx.setStyle(this.domElem,'height',this.prevHeight+'px');}
dfx.removeClass(this.resizeButton,'close');WidgetStore.setData('bugState',{state:1,widget:this});WidgetStore.setData('activeAssetSetting',this.assetType);this.enableResize();this.resizeContent();}};dfx.inherits('SettingsPane','Widget');function SplitPaneWidgetType(id,orientation,totalSize,totalSizeType,paneOneSize,paneOneSizeType,paneTwoSize,paneTwoSizeType,minSize,minSizeType,maxSize,maxSizeType)
{Widget.call(this,id);this.totalSize=totalSize;this.totalSizeType=totalSizeType;this.paneOneSize=paneOneSize;this.paneOneSizeType=paneOneSizeType;this.paneTwoSize=paneTwoSize;this.paneTwoSizeType=paneTwoSizeType;this.sizeType='px';this.minSize=minSize;this.minSizeType=minSizeType;this.maxSize=maxSize;this.maxSizeType=maxSizeType;this.vertical=true;if(orientation==='horizontal'){this.vertical=false;}
this.splitPane=dfx.getId(id);this.splitPane.onselectstart=function(){return false;};this.handle=dfx.getId(id+'_handlebar');this.paneOne=dfx.getId(id+'_paneone');this.paneTwo=dfx.getId(id+'_panetwo');this.containerSize=this.getContainerSize();this.handlebarSize=this.getHandlebarSize();if(this.vertical===true){this.verticalDrag();}else{this.horizontalDrag();}}
SplitPaneWidgetType.prototype={paneOneFullSizeOn:function()
{this.paneOneCurrentSize=this.paneOneSize;if(this.paneOneSizeType==='%'){dfx.setStyle(this.paneOne.parentNode,'width','100%');dfx.swapClass(this.paneTwo.parentNode,'SplitPaneWidgetType-show','SplitPaneWidgetType-hide');}},paneOneFullSizeOff:function()
{if(this.paneOneSizeType==='%'){dfx.setStyle(this.paneOne.parentNode,'width',this.paneOneCurrentSize+'%');dfx.swapClass(this.paneTwo.parentNode,'SplitPaneWidgetType-hide','SplitPaneWidgetType-show');}},getContainerSize:function()
{var type='width';if(this.vertical){type='height';}
return parseInt(dfx.getStyle(this.splitPane,type));},getHandlebarSize:function()
{var size=1;return size;},verticalDrag:function()
{var self=this;var dragHandle=null;var left=dfx.getElementCoords(this.handle)['x']+1;var top=dfx.getElementCoords(this.handle)['y']+1;var rect=null;var coords=null;var dimensions=null;var updateMeLater=function(){rect=dfx.getBoundingRectangle(self.splitPane);coords=dfx.getElementCoords(self.splitPane);dimensions=dfx.getElementDimensions(self.splitPane);};setTimeout(updateMeLater,1000);var move=function(e){if(dragHandle===null){dragHandle=self.handle.cloneNode(true);dragHandle.id=dragHandle.id+'_clone';dfx.setStyle(dragHandle,'z-index','999');dfx.setStyle(dragHandle,'background-color','#999');dfx.setStyle(dragHandle,'position','absolute');dfx.setStyle(dragHandle,'height',dfx.getElementHeight(self.handle)+'px');dfx.setStyle(dragHandle,'width',dfx.getElementWidth(self.handle)+'px');dfx.setStyle(dragHandle,'top',top+'px');dfx.setStyle(dragHandle,'display','block');dfx.setStyle(document.body,'cursor','w-resize');dfx.setStyle(dragHandle,'cursor','w-resize');document.body.appendChild(dragHandle);}
if(e.clientX<rect.x2&&e.clientX>rect.x1){var pos=dfx.getMouseEventPosition(e);dfx.setStyle(dragHandle,'left',pos.x+'px');}};dfx.addEvent(this.handle,'mousedown',function(){dfx.addEvent(document,'mousemove',move);});dfx.addEvent(document,'mouseup',function(e){if(dragHandle){var width=0;var splitPaneSize=dfx.getElementWidth(self.splitPane);if(self.paneTwoSizeType==='%'){width=Math.ceil(((splitPaneSize-(parseInt(dfx.getStyle(dragHandle,'left'))-rect.x1))/splitPaneSize)*100);}else{width=(splitPaneSize-(parseInt(dfx.getStyle(dragHandle,'left'))-rect.x1));}
if(self.minSize&&width<self.minSize){width=self.minSize;}else if(self.maxSize&&width>self.maxSize){width=self.maxSize;}
dfx.setStyle(self.paneTwo.parentNode,'width',width+self.paneTwoSizeType);var oneWidth=0;if(self.paneOneSizeType==='%'){if(self.paneTwoSizeType==='%'){oneWidth=(100-width);}else{oneWidth=self.pixelToPercent(splitPaneSize,width);}}else{if(self.paneTwoSizeType==='%'){oneWidth=(self.percentToPixel(splitPaneSize,width)-self.handlebarSize);}else{oneWidth=(splitPaneSize-width-self.handlebarSize);}}
dfx.setStyle(self.paneOne.parentNode,'width',oneWidth+self.paneOneSizeType);dfx.remove(dragHandle);dragHandle=null;dfx.setStyle(document.body,'cursor','');dfx.removeEvent(document,'mousemove',move);}});},pixelToPercent:function(total,pixel)
{return Math.ceil(((total-pixel)/total)*100);},percentToPixel:function(total,percent)
{return Math.ceil(total*((100-percent)/100));},horizontalDrag:function()
{var self=this;var dragHandle=null;var left=dfx.getElementCoords(this.handle)['x']+1;var rect=null;var move=function(e){if(dragHandle===null){dragHandle=self.handle.cloneNode(true);dragHandle.id=self.handle.id+'_clone';dfx.setStyle(dragHandle,'background-color','#999');dfx.setStyle(dragHandle,'position','absolute');dfx.setStyle(dragHandle,'height',dfx.getElementHeight(self.handle)+'px');dfx.setStyle(dragHandle,'width',dfx.getElementWidth(self.handle)+'px');dfx.setStyle(dragHandle,'left',rect.x1+'px');dfx.setStyle(dragHandle,'display','block');dfx.setStyle(document.body,'cursor','n-resize');dfx.setStyle(dragHandle,'cursor','n-resize');document.body.appendChild(dragHandle);}
if(e.clientY<rect.y2&&e.clientY>rect.y1){var pos=dfx.getMouseEventPosition(e);dfx.setStyle(dragHandle,'top',pos.y+'px');}};var mouseUp=function(e){if(dragHandle){var splitPaneSize=dfx.getElementHeight(self.splitPane);var height=((parseInt(dfx.getStyle(dragHandle,'top'))-rect.y1)/splitPaneSize);if(self.sizeType==='%'){height=Math.ceil(height*100);}else{height=(parseInt(dfx.getStyle(dragHandle,'top'))-rect.y1);}
if(self.minSize&&height<self.minSize){height=self.minSize;}else if(self.maxSize&&height>self.maxSize){height=self.maxSize;}
dfx.setStyle(self.paneOne.parentNode,'height',height+self.sizeType);if(self.containerSize===0){self.containerSize=self.getContainerSize();}
if(self.handlebarSize===0){self.handlebarSize=self.getHandlebarSize();}
var paneTwoSize=0;if(self.sizeType==='%'){paneTwoSize=(100-height);}else{paneTwoSize=(self.containerSize-self.handlebarSize-height);}
dfx.setStyle(self.paneTwo.parentNode,'height',paneTwoSize+self.sizeType);dfx.remove(dragHandle);WidgetStore.fireParentSizeChanged(self.paneOne,self);WidgetStore.fireParentSizeChanged(self.paneTwo,self);dragHandle=null;dfx.setStyle(document.body,'cursor','');dfx.removeEvent(document,'mousemove',move);dfx.removeEvent(document,'mouseup',mouseUp);}};dfx.addEvent(this.handle,'mousedown',function(){if(!rect){rect=dfx.getBoundingRectangle(self.splitPane);}
dfx.addEvent(document,'mousemove',move);dfx.addEvent(document,'mouseup',mouseUp);});}};dfx.inherits('SplitPane','Widget');function TabPaneWidgetType(id,orientation,tabs)
{Widget.call(this,id);this.widgetType='TabPane';this.selectedIndex=-1;this.tabElements=[];this.tabs=tabs;this.tabsElem=dfx.getId(this.id+'-tabs');this.stopSelection=false;this.selectHandlers=[];this.changeHandlers=[];this.orientation=orientation;this.domElem=dfx.getId(this.id);if(dfx.isset(this.domElem)===true){this._addEvents();}}
TabPaneWidgetType.prototype={getClass:function()
{var className=Widget.prototype.getClass.call(this);if(this.orientation==='1'){className+='-o-left';}else if(this.orientation==='3'){className+='-o-top';}
return className;},addOnSelectHandler:function(callback)
{this.selectHandlers.push(callback);},addOnChangeHandler:function(callback)
{this.changeHandlers.push(callback);},create:function(callback)
{var main=document.createElement('div');main.id=this.id;dfx.addClass(main,'TabPaneWidgetType');var tabs=document.createElement('div');dfx.addClass(tabs,'TabPaneWidgetType-tabs');main.appendChild(tabs);this.tabsElem=tabs;var leftFade=document.createElement('div');dfx.addClass(leftFade,'TabPaneWidgetType-tabs-left-fade');tabs.appendChild(leftFade);var containers=document.createElement('div');containers.id=this.id+'-containers';dfx.addClass(containers,'TabPaneWidgetType-containers');main.appendChild(containers);var tcount=0;for(var tab in this.tabs){if(this.tabs.hasOwnProperty(tab)===false){continue;}
var tabEl=this._createTab(tab,tcount++);tabs.appendChild(tabEl);}
var rightFade=document.createElement('div');dfx.addClass(rightFade,'TabPaneWidgetType-tabs-right-fade');tabs.appendChild(rightFade);this.domElem=main;this._addEvents();var self=this;this.includeWidget('CardLayout',function(){var cardLayout=self.createWidget(self.id+'-cardLayout','CardLayout');for(var tab in self.tabs){if(self.tabs.hasOwnProperty(tab)===false){continue;}
cardLayout.add(self.tabs[tab]);}
cardLayout.create(function(card){containers.appendChild(card);self.selectTab(0);callback.call(self,main);return;});});},_createTab:function(title,index)
{var c='TabPaneWidgetType-tab';var main=document.createElement('div');main.id=this.id+'-tabs:'+title;dfx.addClass(main,c);dfx.addClass(main,'tab-'+index);var content='<div class="'+c+'-left"></div>';content+='<div class="'+c+'-content">'+title+'</div>';content+='<div class="'+c+'-right"></div>';dfx.setHtml(main,content);return main;},getTabs:function()
{var tabs=[];var tbs=this.tabsElem;if(tbs){if(tbs.firstChild&&tbs.firstChild.id===this.id+'-tabs-wrapper'){tabs=tbs.firstChild.childNodes;}else{var len=tbs.childNodes.length;for(var i=0;i<len;i++){if(dfx.hasClass(tbs.childNodes[i],'TabPaneWidgetType-tabs-left-fade')){continue;}
if(dfx.hasClass(tbs.childNodes[i],'TabPaneWidgetType-tabs-right-fade')){continue;}
tabs.push(tbs.childNodes[i]);}}}
return tabs;},getTab:function(idx)
{var tbs=this.getTabs();if(tbs[idx]){return tbs[idx];}
return null;},_addEvents:function()
{var tabs=this.getTabs();var tbln=tabs.length;for(var i=0;i<tbln;i++){this.tabElements.push(tabs[i]);this._addTabClickEvent(tabs[i],i);}
var selected=0;if(this.selectedIndex>0){selected=this.selectedIndex;}
WidgetStore.setData('activeTabid',this.tabElements[selected].id);},_addTabClickEvent:function(tab,index)
{var self=this;dfx.addEvent(tab,'click',function(){self.selectTab(index);});},showTab:function(index)
{dfx.showElement(this.tabElements[index]);},hideTab:function(index)
{dfx.hideElement(this.tabElements[index]);},selectTab:function(index,force)
{if(index<0){return;}
if(index===this.selectedIndex){return;}
var prevIndex=this.selectedIndex;if(this.selectedIndex===-1){this.selectedIndex=0;}
WidgetStore.setData('activeTabid',this.tabElements[index].id);if(this.fireTabSelectedEvent(index,this.selectedIndex)===false){return;}
if(this.stopSelection===true){this.stopSelection=false;return;}
var cardLayout=WidgetStore.get(this.id+'-cardLayout');var c=this.getClass();if(this.selectedIndex!==-1){dfx.removeClass(this.tabElements[this.selectedIndex],'selected');}
this.selectedIndex=index;cardLayout.show(index);if(this.orientation==='1'){dfx.addClass(this.tabElements[index],'selected');}else{if(prevIndex>=0){var prevTab=this.tabElements[prevIndex];dfx.removeClass(prevTab,'selected');}
var tabElm=this.tabElements[index];dfx.addClass(tabElm,'selected');}
this.fireTabChangedEvent(index,prevIndex);},fireTabSelectedEvent:function(index,prevIndex)
{var cont=true;var ln=this.selectHandlers.length;for(var i=0;i<ln;i++){if(this.selectHandlers[i].call(this,index,prevIndex)===false){cont=false;}}
return cont;},fireTabChangedEvent:function(index,prevIndex)
{var ln=this.changeHandlers.length;for(var i=0;i<ln;i++){this.changeHandlers[i].call(this,index,prevIndex);}},getCurrentTabIndex:function()
{return this.selectedIndex;}};dfx.inherits('TabPane','Widget');function TableWidgetType(id)
{Widget.call(this,id);this.widgetType='Table';this.index=0;this.data=[];this.tableElem=null;this.domElem=null;this.clickEvents={};this.tableIndex=0;var elem=dfx.getId(this.id);if(elem){this.domElem=elem;this._setClickEvent();}}
TableWidgetType.prototype={init:function()
{this.index=0;this.show(this.index);},create:function(callback)
{var c=this.getClass();var div=document.createElement('div');div.id=this.id;this.domElem=div;var tables='';var len=this.data.length;for(var i=0;i<len;i++){var rowData=this.data[i];var colClassExists=false;if(dfx.isset(rowData.colClass)===true){colClassExists=true;}
var suffix='-hidden';if(i===this.index){suffix='';}
var tableContents='<table id="'+this.id+'-'+i+'" class="';tableContents+=c+suffix+'" cellspacing="0" cellpadding="0">';var headerContents=this.createHeader(rowData);var rows='';for(var j in rowData.data){if(rowData.data.hasOwnProperty(j)===false){continue;}
rows+=this.createRow(rowData[j]);}
rows='<tbody>'+rows+'</tbody>';tableContents+=headerContents+rows+'</table>';tables+=tableContents;}
dfx.setHtml(div,tables);this._setClickEvent();if(dfx.isFn(callback)===true){callback.call(this,div);}},addRow:function(row,tableIndex)
{if(dfx.isset(tableIndex)===false){tableIndex=0;}
var tableElem=dfx.getId(this.id+'-'+tableIndex);if(dfx.isset(tableElem)===true){if(dfx.isset(tableElem.firstChild)===true){var elem=tableElem.firstChild;while(elem){if(elem.tagName.toLowerCase()==='tbody'){tableElem=elem;break;}else{elem=elem.nextSibling;}}}
tableElem.appendChild(row);}},getRowElement:function(id)
{var rowid=this.id+'-row-'+id;return rowid;},hasRow:function(rowid)
{if(dfx.getId(this.getRowElement(rowid))){return true;}
return false;},deleteRow:function(row,tableIndex)
{if(dfx.isset(tableIndex)===false){tableIndex=0;}
var tableElem=dfx.getId(this.id+'-'+tableIndex);if(dfx.isset(tableElem)===true){if(row){dfx.remove(row);}}},createRowAsElement:function(rowData,colClass,rowid)
{if(dfx.isset(rowid)===false){rowid=0;}
var c=this.getClass();var id=this.id+'-row-'+rowid;var tr=document.createElement('tr');tr.id=id;dfx.addClass(tr,c+'-row');for(var k in rowData){if(rowData.hasOwnProperty(k)===false){continue;}
var rr=rowData[k];var td=document.createElement('td');dfx.addClass(td,c+'-cell');if(dfx.isset(colClass)===true){dfx.addClass(td,' '+c+'-cell-'+colClass[k]);}
if(typeof rr==='object'){td.appendChild(rr);}else{dfx.setHtml(td,rr);}
tr.appendChild(td);}
return tr;},createRow:function(rowData,colClass)
{var c=this.getClass();var id=this.id+'-row-'+j;var tr='<tr id="'+id+'" class="'+c+'-row">';for(var k in rowData){if(rowData.hasOwnProperty(k)===false){continue;}
var rr=rowData[k];var td='<td class="'+c+'-cell';if(dfx.isset(colClass)===true){td+=' '+c+'-cell-'+colClass[k];}
tr+=td+'">'+rr+'</td>';}
tr+='</tr>';return tr;},createHeader:function(rowData)
{var cl=this.getClass();var col=rowData.col;var colHeaderClass='';var colClassExist=false;if(dfx.isset(rowData.colHeaderClass)===true){colHeaderClass=rowData.colHeaderClass;colClassExist=true;}
var contents='';if(dfx.isset(col)===true){contents='<thead>';contents+='<tr class="'+cl+'-row-bg">';for(var i in col){if(col.hasOwnProperty(i)===false){continue;}
var c=col[i];var style='';if(colClassExist===true){contents+='<th class="'+cl+'-header '+cl+'-header-'+colHeaderClass[i]+'" style="'+style+'">';}else{contents+='<th class="'+cl+'-header" style="'+style+'">';}
contents+=c;contents+='</td>';}
contents+='</tr>';contents+='</thead>';}
return contents;},setData:function(data)
{this.data.push(data);},getIndex:function()
{return this.index;},check:function(offset)
{var i=(this.index+offset);var check=dfx.getId(this.id+'-'+i);if(dfx.isset(check)===false){return false;}else{return true;}},prev:function()
{this.show((this.index+1));this.hide(this.index);this.index+=1;return this.check(1);},next:function()
{this.show((this.index-1));this.hide(this.index);this.index-=1;return this.check(-1);},show:function(index)
{if(dfx.isset(index)===false){dfx.showElement(this.domElem);return;}
var current=dfx.getId(this.id+'-'+index);if(dfx.isset(current)===true){current.className=this.getClass();}},hide:function(index)
{if(dfx.isset(index)===false){dfx.hideElement(this.domElem);return;}
var current=dfx.getId(this.id+'-'+index);if(dfx.isset(current)===true){current.className=this.getClass()+'-hidden';}},makeSortable:function(tableIndex,handle,start,stop)
{if(dfx.isset(tableIndex)===false){tableIndex=0;}
var tableElem=dfx.getId(this.id+'-'+tableIndex);var tbody=tableElem.getElementsByTagName("tbody")[0];if(dfx.isset(tbody)===true){var params={axis:'y'};if(dfx.isset(handle)===true){params.handle=handle;}
if(dfx.isFn(start)===true){params.start=start;}
if(dfx.isFn(stop)===true){params.stop=stop;}
jQuery(tbody).sortable(params);}},reorderRow:function(fromId,toId)
{var to=null;if(dfx.isset(toId)===false){var table=dfx.getId(this.id+'-'+this.tableIndex);var tbody=table.getElementsByTagName("tbody")[0];to=tbody.getElementsByTagName("tr")[0];}else{to=dfx.getId(this.getRowElement(toId));}
var from=dfx.getId(this.getRowElement(fromId));if(dfx.isset(to)===true&&dfx.isset(from)===true){if(to.id!==from.id){dfx.insertBefore(to,from);}}},_setClickEvent:function()
{var self=this;dfx.addEvent(this.domElem,'click',function(e){var target=dfx.getMouseEventTarget(e);var parents=dfx.getParents(target,null,self.domElem);parents.unshift(target);var ln=parents.length;var rowid='';var colidx=0;for(var i=0;i<ln;i++){var p=parents[i];if(p.tagName){if(p.tagName.toLowerCase()==='tr'){rowid=p.id;break;}else if(p.tagName.toLowerCase()==='td'){var tmp=p.previousSibling;while(tmp){if(tmp.tagName&&tmp.tagName.toLowerCase()==='td'){colidx++;}
tmp=tmp.previousSibling;}}}}
self.fireClickEvents(p.id,colidx,target);});},fireClickEvents:function(rowid,col,target)
{for(var id in this.clickEvents){if(this.clickEvents.hasOwnProperty(id)===true){this.clickEvents[id].call(this,rowid,col,target);}}},addClickEvent:function(id,callback)
{this.clickEvents[id]=callback;},getRowids:function(tableIndex,filterFn)
{if(dfx.isFn(filterFn)===false){filterFn=function(){return true;};}
tableIndex=tableIndex||0;var tableElem=dfx.getId(this.id+'-'+tableIndex);var rows=dfx.getTag('tr',tableElem);var rln=rows.length;var ids=[];for(var i=0;i<rln;i++){if(dfx.hasClass(rows[i],'TableWidgetType-row-bg')===true){continue;}
if(filterFn.call(this,rows[i])===true){ids.push(rows[i].id.replace(this.id+'-row-',''));}}
return ids;},getRowid:function(rowid)
{return rowid.replace(this.id+'-row-','');}};dfx.inherits('Table','Widget');function TextAreaWidgetType(id)
{Widget.call(this,id);this.widgetType='TextArea';var self=this;this.error=false;this.errorElem=this.domElem;this.name='';this.label='';this.labelEl=null;this.hasWizardOpts=true;this.inline=false;this.setValueActions=[];this.domElem=null;this.inuput=null;this.value='';this.rod=null;this.onChangeCallbacks=[];if(dfx.isset(dfx.getId(this.id))===true){this.input=dfx.getId(this.id);var rod=dfx.getId(this.id+'-readOnly');if(rod){this.rod=rod;}
this.addEvents();}}
TextAreaWidgetType.prototype={blur:function(){},focus:function()
{this.input.focus();},setReadOnly:function(readOnly)
{AbstractWidgetWidgetType.prototype.setReadOnly.call(this,readOnly);var textArea=dfx.getId(this.id);var rod=dfx.getId(this.id+'-readOnly');if(rod&&textArea){if(this.readOnly){var h=dfx.getStyle(textArea,'height');var w=dfx.getStyle(textArea,'width');dfx.setStyle(rod,'height',h);dfx.setStyle(rod,'width','99%');dfx.addClass(rod,this.widgetType+'WidgetType-readOnly');dfx.showElement(rod);dfx.hideElement(textArea);}else{dfx.showElement(textArea);dfx.hideElement(rod);}}},create:function(callback)
{var div=document.createElement('div');div.id=this.id+'-wrap';if(this.showLabel===true){div.appendChild(this.createLabel(this.inline));}
var textArea=document.createElement('textarea');textArea.id=this.id;this.input=textArea;div.appendChild(textArea);this.domElem=div;textArea.value=this.value;var rod=document.createElement('div');this.rod=rod;rod.id=this.id+'-readOnly';div.appendChild(rod);dfx.setHtml(rod,'<pre style="margin: 0px;">'+dfx.htmlspecialchars(this.value)+'</pre>');if(this.readOnly){dfx.showElement(rod);dfx.hideElement(textArea);}else{dfx.showElement(textArea);dfx.hideElement(rod);}
if(dfx.isFn(callback)===true){callback.call(this,div);}},createLabel:function(inline)
{var label=document.createElement('label');dfx.setHtml(label,this.label);label.setAttribute('for',this.id);this.labelEl=label;if(inline===true){dfx.setStyle(label,'float','left');dfx.setStyle(label,'margin-top','3px');}
return label;},setValue:function(val)
{val=val||'';if(val==='null'){val='';}
this.value=val;if(dfx.isset(this.input)===true){this.input.value=val;if(this.rod){dfx.setHtml(this.rod,'<pre style="margin: 0px;">'+dfx.htmlspecialchars(val)+'</pre>');}}
this.fireSetValueActions(val);},setContents:function(val)
{this.setValue(val);},getValue:function()
{return this.input.value||'';},getContents:function()
{return this.getValue();},getHtml:function()
{return this.getValue();},getName:function()
{return this.name;},getErrorElement:function()
{return this.errorElem;},getTextAreaElement:function()
{return dfx.getId(this.id);},setName:function(name)
{this.name=name;},setShowLabel:function(show)
{this.showLabel=show;},setLabel:function(label)
{this.label=label;if(this.labelEl!==null){dfx.setHtml(this.labelEl,label);}},getLabel:function()
{return this.label;},setInline:function(inline)
{this.inline=inline;},clearValue:function()
{this.input.value='';},getWidgetSummary:function()
{var s='';var val=this.getValue();if(val!==''){s=this.label+':'+val;}
return s;},disable:function()
{this.input.disabled=true;dfx.setOpacity(this.input,0.6);},enable:function()
{this.input.disabled=false;dfx.setOpacity(this.input,1);},addSetValueAction:function(action)
{this.setValueActions.push(action);},fireSetValueActions:function(value)
{var aln=this.setValueActions.length;for(var i=0;i<aln;i++){this.setValueActions[i].call(this,value);}},addOnChangeEvent:function(fn)
{var self=this;if(this.onChangeCallbacks.length===0){dfx.addEvent(this.input,'keyup',function(evt){var val=evt.target.value;var len=self.onChangeCallbacks.length;for(var i=0;i<len;i++){self.onChangeCallbacks[i].call(self,val,evt);}});}
this.onChangeCallbacks.push(fn);},removeOnChangeEvents:function()
{delete this.onChangeCallbacks;this.onChangeCallbacks=[];}};dfx.inherits('TextArea','Widget');function TimeLineWidgetType(id,markers,baseYear,baseTime,year,month,type,offset)
{Widget.call(this,id);this.widgetType='TimeLine';this.id=id;this.markers=markers||[];this.className='TimeLineWidgetType';this.domElem=null;this.timeLinesElem=null;this.timeLines={};this.markerContainers={};this.currentTimeLine=null;this.currentLevel='year';this.currentMarkers=null;this.baseYear=baseYear;this.baseTime=baseTime;this.currentMonth=0;this.currentYear=0;this.currentDay=0;this.selectedIndex=null;this.dateObj=new Date();this.yearUnit=[];this.navButtons={};this.prevButton=null;this.nextButton=null;this.switchStatus=false;this.markerSelectedEvents=[];this.noMarkerBeforeTimeEvents=[];this.rangeSliderDraggedEvents=[];this.onSwitchCompleteEvents=[];this.prevEvents=[];this.nextEvents=[];this.slider={};this.monthDisabled=false;this.dayDisabled=false;this.type=type;this.offset=offset||0;this.sliderElem=null;this.markerCount=0;while(this.markers[this.markerCount]){this.markerCount++;}
this.levels=['day','month','year'];var currentMonth=month||this.dateObj.getMonth();var currentYear=year||this.dateObj.getFullYear();this.create();}
TimeLineWidgetType.prototype={create:function(callback)
{var main=document.createElement('div');main.id=this.id;this.domElem=main;var elem=document.createElement('div');this.timeLinesElem=elem;main.appendChild(elem);this.createNavigation();this.createSlider();this.setSliderInactive();var self=this;this.addOnSwitchCompleteEvent(function(){self.switchStatus=false;});if(callback){callback.call(this,main);}},createSlider:function()
{var label=document.createElement('div');var labelText=document.createElement('span');var options={offset:this.offset};label.appendChild(labelText);var div=document.createElement('div');div.id=this.id+'-slider';this.sliderElem=div;dfx.attr(div,'title','Drag this to view the version for a specific date and time');dfx.addClass(div,this.className+'-slider');this.domElem.appendChild(div);div.appendChild(label);if(this.type==='point'){dfx.addClass(labelText,this.className+'-slider-label-text');dfx.addClass(label,this.className+'-slider-label');var shovel=document.createElement('div');dfx.addClass(shovel,this.className+'-slider-shovel');div.appendChild(shovel);}else if(this.type==='range'){dfx.addClass(label,this.className+'-slider-label-range');label.id=this.id+'-slider-label-range';var range=document.createElement('div');range.id=this.id+'-slider-range';dfx.addClass(range,this.className+'-slider-range');dfx.setStyle(div,'width','8.5%');var rangeTop=document.createElement('div');dfx.addClass(rangeTop,this.className+'-slider-range-top');var rangeLeft=document.createElement('div');dfx.addClass(rangeLeft,this.className+'-slider-range-left');var rangeMiddle=document.createElement('div');dfx.addClass(rangeMiddle,this.className+'-slider-range-middle');var rangeRight=document.createElement('div');dfx.addClass(rangeRight,this.className+'-slider-range-right');range.appendChild(rangeTop);range.appendChild(rangeLeft);range.appendChild(rangeMiddle);range.appendChild(rangeRight);div.appendChild(range);options.maxLeft=this.offset;}
var labelWidth=parseInt(dfx.getStyle(label,'width'));var self=this;var date=new Date();date.setUTCFullYear(2007,0,0);date.setUTCHours(0,0,0,0);this.slider.date=date;this.slider.labelWidth=labelWidth;this.slider.label=label;this.slider.labelText=labelText;this.slider.elem=div;dfx.hideElement(this.slider.label);dfx.drag(div,options,function(){self.setSliderActive();dfx.showElement(self.slider.label);var containerX=dfx.getElementCoords(self.domElem).x;var containerWidth=dfx.getElementWidth(self.domElem);var sliderWidth=dfx.getElementWidth(div);options.maxRight=(containerX+containerWidth-sliderWidth+3);},function(windowWidth){self.selectMarkerBeforeTime((date.getTime()/1000));var width=dfx.getElementWidth(self.domElem);var pos=dfx.getElementCoords(div).x;var left=(((pos-self.offset)/width)*100);dfx.setStyle(div,'left',left+'%');self.fireRangeSliderDraggedEvents((pos-self.offset));dfx.hideElement(self.slider.label);},function(posX,windowWidth){self.setSliderPosition(posX,true);});},setSliderPosition:function(posX,dragging,callback)
{var label=this.slider.label;var labelText=this.slider.labelText;var labelWidth=this.slider.labelWidth;var windowWidth=0;if(dfx.isEmpty(dfx.getClass(this.className+'-nav'))===false){var navBar=dfx.getClass(this.className+'-nav')[0];windowWidth=dfx.getElementWidth(navBar);}else{windowWidth=dfx.getWindowDimensions().width;}
var self=this;if(dragging!==true){if(this.type==='point'){var percent=((posX/windowWidth)*100)+'%';dfx.move(this.slider.elem,percent,null,500);}}
var dateStr='';if(this.type==='point'){var labelPos=posX;if((posX+labelWidth)>windowWidth){dfx.setStyle(labelText,'margin-left','5px');dfx.setStyle(label,'margin-left','-87px');}else{dfx.setStyle(labelText,'margin-left','23px');dfx.setStyle(label,'margin-left','-2px');}
dateStr=this.getPointDateStr(posX,windowWidth);}else if(this.type==='range'){dateStr=this.getRangeDateStr(posX);var width=dfx.getElementWidth(this.domElem);if(dragging!==true){dfx.move(this.slider.elem,(posX+'%'),null,500,function(){callback.call(self);});posX=(posX*width/100);dateStr=this.getRangeDateStr(posX);}
var sliderWidth=dfx.getElementWidth(this.sliderElem);var labelPos=posX;var add=(posX+labelWidth+(sliderWidth/2)+20);var leftMargin=0;if(add>width){leftMargin=(((sliderWidth/2)-8)-labelWidth-12);dfx.setStyle(label,'margin-left',(leftMargin+'px'));}else{leftMargin=(sliderWidth/2)+16;dfx.setStyle(label,'margin-left',(leftMargin+'px'));}}
dfx.setHtml(labelText,dateStr);},getPointDateStr:function(posX,windowWidth)
{var offset=(((((posX+9)/windowWidth)*100)/this.currentUnit)*3600);var time=(parseInt(this.currentOffset+offset)*1000);var date=this.slider.date;date.setTime(time);var day=this.getDayOfMonth(date.getDate(),null,true,true);var month=this.getMonth(date.getMonth(),true);var hours=date.getHours();if(hours<12){if(hours===0){hours=12;}
hours+='am';}else{if(hours!==12){hours-=12;}
hours+='pm';}
return day+' '+month+' '+hours;},getRangeDateStr:function(posX)
{var date=this.posToTime(posX);var sDay=this.getDayOfMonth(date.start.getDate(),null,true,false);var sMonth=this.getMonth(date.start.getMonth(),true);var eDay=this.getDayOfMonth(date.end.getDate(),null,true,false);var eMonth=this.getMonth(date.end.getMonth(),true);return sDay+' '+sMonth+' - '+eDay+' '+eMonth;},setSliderInactive:function()
{var label=dfx.getClass(this.className+'-slider-label',this.domElem);if(label.length>0){dfx.setStyle(label[0],'display','none');}},setSliderActive:function()
{var label=dfx.getClass(this.className+'-slider-label',this.domElem);if(label.length>0){dfx.setStyle(label[0],'display','block');}},createNavigation:function()
{var self=this;var c=this.className+'-nav';var nav=document.createElement('div');dfx.addClass(nav,c);var main=document.createElement('div');dfx.addClass(main,c+'-content');main.id=c+'-content';nav.appendChild(main);var prev=document.createElement('div');prev.id=this.id+'-nav-prev';this.prevButton=prev;dfx.addClass(prev,c+'-prev');main.appendChild(prev);dfx.addEvent(prev,'click',function(){var inf=self.getPrevDateInfo();if(self.canShowDate(null,null,inf.year)===true){if(self.switchStatus===true){return;}
self.switchStatus=true;self.previous();}});var day=document.createElement('div');day.id=this.id+'-nav-day';dfx.addClass(day,c+'-day');dfx.attr(day,'title','Click to view the hours in the day');main.appendChild(day);this.navButtons.day=day;var month=document.createElement('div');month.id=this.id+'-nav-month';dfx.addClass(month,c+'-month');dfx.attr(month,'title','Click to view the days in the month');main.appendChild(month);this.navButtons.month=month;var year=document.createElement('div');year.id=this.id+'-nav-year';dfx.addClass(year,c+'-year');dfx.attr(year,'title','Click to view the months in the year');main.appendChild(year);this.navButtons.year=year;for(var lvl in this.navButtons){this.addZoomOutClickEvent(this.navButtons[lvl],lvl);}
var next=document.createElement('div');next.id=this.id+'-nav-next';this.nextButton=next;dfx.addClass(next,c+'-next');main.appendChild(next);dfx.addEvent(next,'click',function(){var inf=self.getNextDateInfo();if(self.canShowDate(null,null,inf.year)===true){if(self.switchStatus===true){return;}
self.switchStatus=true;self.next();}});this.domElem.appendChild(nav);},addZoomOutClickEvent:function(el,level)
{var self=this;dfx.addEvent(el,'click',function(){self.zoomOut(level);});},setNavigationDate:function(day,month,year)
{var c=this.className+'-nav';var d='Day';if(day>=0){d=this.getDayOfMonth(day,year,true,true);dfx.addClass(this.navButtons.day,c+'-day-on');}else{dfx.removeClass(this.navButtons.day,c+'-day-on');}
dfx.setHtml(this.navButtons.day,d);var m='Month';if(month>=0){m=this.getMonth(month);dfx.addClass(this.navButtons.month,c+'-month-on');}else{dfx.removeClass(this.navButtons.month,c+'-month-on');}
dfx.setHtml(this.navButtons.month,m);var y='Year';if(year>=0){y=this.getYear(year);dfx.addClass(this.navButtons.year,c+'-year-on');}else{dfx.removeClass(this.navButtons.year,c+'-year-on');}
dfx.setHtml(this.navButtons.year,y);},updateNavigationButtons:function()
{var c=this.className+'-nav';var inf=this.getNextDateInfo();if(this.canShowDate(null,null,inf.year)===true){dfx.removeClass(this.nextButton,c+'-next-inactive');}else{dfx.addClass(this.nextButton,c+'-next-inactive');}
inf=this.getPrevDateInfo();if(this.canShowDate(null,null,inf.year)===true){dfx.removeClass(this.prevButton,c+'-prev-inactive');}else{dfx.addClass(this.prevButton,c+'-prev-inactive');}
dfx.attr(this.prevButton,'title','Click to view the previous '+this.currentLevel);dfx.attr(this.nextButton,'title','Click to view the next '+this.currentLevel);},getElement:function()
{return this.domElem;},createTimeLine:function(level,suffix)
{var timeLine=document.createElement('div');timeLine.id=this.id+'-'+level;if(dfx.isset(suffix)===true){timeLine.id+=suffix;}
this.timeLinesElem.appendChild(timeLine);dfx.addClass(timeLine,this.className);return timeLine;},getMonthRegionSize:function(month,year)
{var days=this.getDaysInMonth(year,month);var hours=(365*24);if(this.isLeapYear(year)===true){hours+=24;}
var yearHourUnit=(100/hours);var size=(days*yearHourUnit*24);return size;},addMarkers:function(hourUnit,startDate)
{startDate+=this.timeZoneDiff(startDate);this.dateObj.setTime(startDate*1000);var markersContainer=document.createElement('div');dfx.addClass(markersContainer,this.className+'-markersContainer');for(var version in this.markers){if(this.markers.hasOwnProperty(version)===false){continue;}
var utcDate=this.markers[version].date;var date=utcDate+this.timeZoneDiff(utcDate);if(date<startDate){continue;}
var timeDiff=(date-startDate);var offset=(hourUnit*(timeDiff/3600));if(offset>100){break;}
var markerDiv=document.createElement('div');markersContainer.appendChild(markerDiv);dfx.addClass(markerDiv,this.className+'-timeLine-marker');dfx.addClass(markerDiv,this.className+'-timeLine-marker-'+version);this.dateObj.setTime(utcDate*1000);this.markers[version].marker=markerDiv;this.addMarkerClickEvent(markerDiv,version);dfx.setStyle(markerDiv,'left',offset+'%');markerDiv.title=dfx.date('l F dS Y h:ia',this.dateObj.getTime());}
return markersContainer;},addMarkerClickEvent:function(el,markerIndex)
{var self=this;dfx.addEvent(el,'click',function(){self.selectMarker(markerIndex,true);});},_updateMarkers:function()
{var container=this.currentMarkers;for(var index in this.markers){var c='TimeLineWidgetType-timeLine-marker-'+index;this.markers[index]['marker']=dfx.getClass(c,container)[0];}},selectMarker:function(markerIndex,moveSlider)
{this._selectMarker(markerIndex);this.showDate(this.markers[markerIndex].date);this.selectedIndex=markerIndex;this.fireMarkerSelectedEvents(markerIndex,this.markers[markerIndex].date);if(moveSlider===true){var marker=this.markers[this.selectedIndex].marker;var x=dfx.getElementCoords(marker).x;if(x!==0){this.moveSlider(x);this.setSliderActive();}else{var lim=50;var self=this;var t=setInterval(function(){x=dfx.getElementCoords(marker).x;if(x!==0){clearInterval(t);self.moveSlider(x);self.setSliderActive();}else if(lim--<0){clearInterval(t);}},60);}}},_selectMarker:function(markerIndex)
{if(dfx.isset(this.markers[this.selectedIndex])===true){dfx.removeClass(dfx.getClass('TimeLineWidgetType-timeLine-marker-'+this.selectedIndex,this.domElem),'TimeLineWidgetType-timLine-marker-selected');}
dfx.addClass(dfx.getClass('TimeLineWidgetType-timeLine-marker-'+markerIndex,this.domElem),'TimeLineWidgetType-timLine-marker-selected');},moveSlider:function(position)
{if(position>=2){position-=2;}
this.setSliderPosition(position);},addMarkerSelectedEvent:function(fn)
{this.markerSelectedEvents.push(fn);},fireMarkerSelectedEvents:function(markerIndex)
{var ln=this.markerSelectedEvents.length;for(var i=0;i<ln;i++){this.markerSelectedEvents[i].call(this,markerIndex,this.markers[markerIndex].date);}},addRangeSliderDraggedEvent:function(fn)
{this.rangeSliderDraggedEvents.push(fn);},fireRangeSliderDraggedEvents:function(posX,start,end)
{var s=0;var e=0;if(posX===null){s=start;e=end;}else{var date=this.posToTime(posX);s=(date.start.getTime()/1000);e=(date.end.getTime()/1000);}
var ln=this.rangeSliderDraggedEvents.length;for(var i=0;i<ln;i++){this.rangeSliderDraggedEvents[i].call(this,s,e);}},addPreviousEvent:function(fn)
{this.prevEvents.push(fn);},addNextEvent:function(fn)
{this.nextEvents.push(fn);},createRegionElement:function(width,oddEven)
{var regionDiv=document.createElement('div');dfx.addClass(regionDiv,this.className+'-timeLine-region');dfx.addClass(regionDiv,this.className+'-timeLine-region-'+oddEven);dfx.setStyle(regionDiv,'width',width+'%');return regionDiv;},createRegionLabel:function(label,clickable)
{var div=document.createElement('div');var c=this.className+'-timeLine-region-label';dfx.setHtml(div,label);if(clickable===false){c+='-nc';}
dfx.addClass(div,c);return div;},createYearRegions:function(year)
{var regionContainer=document.createElement('div');dfx.addClass(regionContainer,this.className+'-timeLine-regionContainer');var oddEven='';var offset=0;var self=this;for(var i=0;i<12;i++){var size=this.getMonthRegionSize(i,year);var regionDiv=this.createRegionElement(size,this.oddEven(i));regionContainer.appendChild(regionDiv);var label=null;label=this.createRegionLabel(this.getMonth(i),true);this.addShowMonthEvent(label,year,i);regionDiv.appendChild(label);}
return regionContainer;},addShowMonthEvent:function(elem,year,month)
{var self=this;dfx.addEvent(elem,'click',function(){if(self.monthDisabled===false){self.showMonth(year,month);}else{self.displayMonth(year,month);}});},showYear:function(year)
{if(year<this.baseYear){return;}else if(this.canShowDate(0,0,year)===false){return;}
if(dfx.isset(this.timeLines[year])===false){this.timeLines[year]={};}
var timeLine=null;if(dfx.isset(this.timeLines[year]['year'])===false){timeLine=this.createTimeLine('year',':'+year);this.timeLines[year]['year']=timeLine;timeLine.appendChild(this.createYearRegions(year));}else{timeLine=this.timeLines[year]['year'];}
this.showTimeLine(timeLine);var hours=(365*24);if(this.isLeapYear(year)===true){hours+=24;}
var unit=(100/hours);var offset=this.getYearOffset(year);this.dateObj.setFullYear(year,0,1);this.dateObj.setHours(0,0,0,0);var startDate=(this.dateObj.getTime()/1000);var markerContainer=null;if(this.type==='point'){if(dfx.isset(this.markerContainers[year])===false){this.markerContainers[year]={};}
if(dfx.isset(this.markerContainers[year]['year'])===false){this.markerContainers[year]['year']=null;markerContainer=this.addMarkers(unit,startDate);this.markerContainers[year]['year']=markerContainer;timeLine.appendChild(markerContainer);}else{markerContainer=this.markerContainers[year]['year'];}
this.showMarkers(markerContainer);}
this.currentTimeLine=timeLine;this.currentLevel='year';this.currentMarkers=markerContainer;this.currentYear=year;this.currentUnit=unit;this.currentOffset=startDate;this.currentMonth=null;this.setNavigationDate(-1,-1,year);this.updateNavigationButtons();this._updateMarkers();},getYearOffset:function(year)
{var offset=0;for(var i=year;i>this.baseYear;i--){offset+=(24*365);if(this.isLeapYear(i)===true){offset+=24;}}
return offset;},showMonth:function(year,month)
{if(this.canShowDate(null,month,year)!==true){return;}
if(dfx.isset(this.timeLines[year])===false){this.timeLines[year]={};}
if(dfx.isset(this.timeLines[year]['month'])===false){this.timeLines[year]['month']=[];}
var timeLine=null;if(dfx.isset(this.timeLines[year]['month'][month])===false){timeLine=this.createTimeLine('month','-y:'+year+'-m:'+month);this.timeLines[year]['month'][month]=timeLine;timeLine.appendChild(this.createMonthRegions(year,month));}else{timeLine=this.timeLines[year]['month'][month];}
this.showTimeLine(timeLine);var markerContainer=null;if(dfx.isset(this.markerContainers[year])===false){this.markerContainers[year]={};}
if(dfx.isset(this.markerContainers[year]['month'])===false){this.markerContainers[year]['month']={};this.markerContainers[year]['month']=[];}
var days=this.getDaysInMonth(year,month);var pday=(100/(days*24));var offset=((this.getFirstDayOfMonth(year,month))*24);offset+=this.getYearOffset(year);this.dateObj.setFullYear(year,month,1);this.dateObj.setHours(0,0,0,0);var startDate=(this.dateObj.getTime()/1000);if(dfx.isset(this.markerContainers[year]['month'][month])===false){markerContainer=this.addMarkers(pday,startDate);this.markerContainers[year]['month'][month]=markerContainer;timeLine.appendChild(markerContainer);}else{markerContainer=this.markerContainers[year]['month'][month];}
this.showMarkers(markerContainer);this.currentTimeLine=timeLine;this.currentLevel='month';this.currentMarkers=markerContainer;this.currentMonth=month;this.currentYear=year;this.currentUnit=pday;this.currentOffset=startDate;this.currentDay=null;this.setNavigationDate(-1,month,year);this.updateNavigationButtons();this._updateMarkers();},createMonthRegions:function(year,month)
{var regionContainer=document.createElement('div');dfx.addClass(regionContainer,this.className+'-timeLine-regionContainer');var days=this.getDaysInMonth(year,month);var day=this.getFirstDayOfMonth(year,month);var pday=(100/days);for(var i=0;i<days;i++){var regionDiv=this.createRegionElement(pday,this.oddEven(i));regionContainer.appendChild(regionDiv);var label=null;if(this.dayDisabled===true){label=this.createRegionLabel(this.getDayOfMonth(i,year,true,true),false);}else{label=this.createRegionLabel(this.getDayOfMonth(i,year,true,true),true);this.addShowDayEvent(label,year,day);}
regionDiv.appendChild(label);day++;}
return regionContainer;},addShowDayEvent:function(elem,year,day)
{var self=this;if(this.dayDisabled===false){dfx.addEvent(elem,'click',function(){self.showDay(year,day);});}},showDay:function(year,day)
{if(this.canShowDate(day,null,year)!==true){return;}
if(dfx.isset(this.timeLines[year])===false){this.timeLines[year]={};}
if(dfx.isset(this.timeLines[year]['day'])===false){this.timeLines[year]['day']=[];}
var timeLine=null;if(dfx.isset(this.timeLines[year]['day'][day])===false){timeLine=this.createTimeLine('day');this.timeLines[year]['day'][day]=timeLine;timeLine.appendChild(this.createDayRegions());}else{timeLine=this.timeLines[year]['day'][day];}
this.showTimeLine(timeLine);var markerContainer=null;if(dfx.isset(this.markerContainers[year])===false){this.markerContainers[year]={};}
if(dfx.isset(this.markerContainers[year]['day'])===false){this.markerContainers[year]['day']={};this.markerContainers[year]['day']=[];}
var unit=(100/24);var offset=(24*day);offset+=this.getYearOffset(year);this.dateObj.setFullYear(year,this.getMonthOfDay(year,day),this.getDayOfMonth(day,year,true));this.dateObj.setHours(0,0,0,0);var startDate=(this.dateObj.getTime()/1000);if(dfx.isset(this.markerContainers[year]['day'][day])===false){markerContainer=this.addMarkers(unit,startDate);this.markerContainers[year]['day'][day]=markerContainer;timeLine.appendChild(markerContainer);}else{markerContainer=this.markerContainers[year]['day'][day];}
this.showMarkers(markerContainer);var month=this.getMonthOfDay(year,day);this.currentTimeLine=timeLine;this.currentLevel='day';this.currentMarkers=markerContainer;this.currentYear=year;this.currentDay=day;this.currentMonth=month;this.currentUnit=unit;this.currentOffset=startDate;this.setNavigationDate(day,month,year);this.updateNavigationButtons();this._updateMarkers();},createDayRegions:function()
{var regionContainer=document.createElement('div');dfx.addClass(regionContainer,this.className+'-timeLine-regionContainer');var hourSize=(100/24);for(var i=0;i<24;i++){var hour=i;var regionDiv=this.createRegionElement(hourSize,this.oddEven(i));regionContainer.appendChild(regionDiv);var suffix='am';if(i>=12){suffix='pm';if(i>12){hour=(i-12);}}else if(i===0){hour=12;}
hour=hour+suffix;var label=this.createRegionLabel(hour,false);regionDiv.appendChild(label);}
return regionContainer;},addOnSwitchCompleteEvent:function(callback)
{this.onSwitchCompleteEvents.push(callback);},fireOnSwitchCompleteEvents:function()
{var ln=this.onSwitchCompleteEvents.length;for(var i=0;i<ln;i++){this.onSwitchCompleteEvents[i].call(this);}},showTimeLine:function(timeLineElem)
{var self=this;if(dfx.isset(this.currentTimeLine)===true){dfx.fadeOut(this.currentTimeLine,300,function(){dfx.fadeIn(timeLineElem,300,function(){dfx.setStyle(timeLineElem,'display','block');self.fireOnSwitchCompleteEvents();});});}else{dfx.fadeIn(timeLineElem,300,function(){dfx.setStyle(timeLineElem,'display','block');self.fireOnSwitchCompleteEvents();});}},showMarkers:function(markerContainer)
{var self=this;if(this.currentMarkers){dfx.fadeOut(this.currentMarkers,300,function(){dfx.fadeIn(markerContainer,300,function(){self._showMarkers(markerContainer);});});}else{this._showMarkers(markerContainer);}},_showMarkers:function(markerContainer)
{this._selectMarker(this.selectedIndex);var marker=dfx.getClass(this.className+'-timeLine-marker-'+this.selectedIndex,markerContainer);if(marker.length>0){var elem=marker[0];this.setSliderActive(true);this.moveSlider(dfx.getElementCoords(elem).x);}else{this.moveSlider(0);this.setSliderInactive(true);}},showDate:function(date,callback)
{if(dfx.isFn(callback)===false){callback=function(){};}
var date=new Date(date*1000);var year=date.getFullYear();var month=date.getMonth();switch(this.currentLevel){case'day':var day=this.getFirstDayOfMonth(year,month)+(date.getDate()-1);if(this.currentYear!==year||this.currentDay!==day){this.showDay(year,day,callback);}else{callback.call(this);}
break;case'month':if(this.currentYear!==year||this.currentMonth!==month){this.showMonth(year,month,callback);}else{callback.call(this);}
break;case'year':if(this.currentYear!==year){this.showYear(year,callback);}else{callback.call(this);}
break;default:break;}},selectMarkerBeforeTime:function(time)
{var sIndex=null;for(var index in this.markers){if(this.markers[index].date<=time){sIndex=index;}else{break;}}
if(sIndex!==null){this.selectMarker(sIndex);}else{this.fireNoMarkerBeforeTimeEvents();}},fireNoMarkerBeforeTimeEvents:function()
{var ln=this.noMarkerBeforeTimeEvents.length;for(var i=0;i<ln;i++){this.noMarkerBeforeTimeEvents[i].call(this);}},addNoMarkerBeforeTimeEvent:function(fn)
{this.noMarkerBeforeTimeEvents.push(fn);},zoomOut:function(level)
{var idx=-1;if(dfx.isset(level)===true){idx=this.levels.find(level);if(idx<=this.levels.find(this.currentLevel)){this.currentLevel=this.levels[idx];this.showDate(this.markers[this.selectedIndex].date);return;}}else{idx=this.levels.find(this.currentLevel)+1;}
if(idx>=0&&idx<this.levels.length){switch(this.levels[idx]){case'year':this.showYear(this.currentYear);break;case'month':this.showMonth(this.currentYear,this.currentMonth);break;default:break;}}},canShowDate:function(day,month,year)
{if(year<this.baseYear){return false;}else{if(this.type!=='range'){if(this.markerCount===0&&year>this.baseYear){return false;}
if(dfx.isset(this.markers[(this.markerCount-1)])===false){return true;}
var date=(new Date(this.markers[(this.markerCount-1)].date*1000));if(year>date.getFullYear()){return false;}}else{var date=new Date();if(year>date.getFullYear()){return false;}}}
return true;},next:function()
{var date=new Date();date.setFullYear(this.currentYear+1,0,1);date.setHours(0,0,0,0);var info=this.getNextDateInfo();switch(this.currentLevel){case'year':this.showYear(info.year);break;case'month':this.showMonth(info.year,info.month);break;case'day':this.showDay(info.year,info.day);break;default:break;}
var ln=this.nextEvents.length;if(ln>0){for(var i=0;i<ln;i++){this.nextEvents[i].call(this,date.getFullYear());}}},getNextDateInfo:function()
{var info={};level=this.currentLevel;var year,month,day=0;switch(level){case'year':year=this.currentYear+1;day=0;month=0;break;case'month':year=this.currentYear;month=this.currentMonth+1;if(month>=12){month=0;year++;}
break;case'day':year=this.currentYear;day=this.currentDay+1;if(day>364){if((day===365&&this.isLeapYear(year)===true)===false){day=0;month=0;year++;}}
break;default:break;}
info.year=year;info.month=month;info.day=day;return info;},getPrevDateInfo:function()
{var info={};level=this.currentLevel;var year,month,day=0;switch(this.currentLevel){case'year':year=(this.currentYear-1);day=0;month=0;break;case'month':var year=this.currentYear;var month=(this.currentMonth-1);if(month<0){month=11;year--;}
break;case'day':var day=(this.currentDay-1);var year=this.currentYear;if(day<0){year--;day=364;if(this.isLeapYear(year)===true){day++;}}
break;default:break;}
info.year=year;info.month=month;info.day=day;return info;},previous:function()
{var date=new Date();date.setFullYear((this.currentYear-1),0,1);date.setHours(0,0,0,0);var info=this.getPrevDateInfo();switch(this.currentLevel){case'year':this.showYear(info.year);break;case'month':this.showMonth(info.year,info.month);break;case'day':this.showDay(info.year,info.day);break;default:break;}
if(date.getFullYear()<this.baseYear){return;}
var ln=this.prevEvents.length;if(ln>0){for(var i=0;i<ln;i++){this.nextEvents[i].call(this,date.getFullYear());}}},oddEven:function(i)
{if((i%2)===0){return'even';}else{return'odd';}},getDaysInMonth:function(year,month)
{var days=0;if(month===1){if(this.isLeapYear(year)===true){days=29;}else{days=28;}}else if((month%2)===0){if(month<8){days=31;}else{days=30;}}else{if(month>6){days=31;}else{days=30;}}
return days;},getFirstDayOfMonth:function(year,month)
{var firstDay=0;for(var i=0;i<=(month-1);i++){firstDay+=this.getDaysInMonth(year,i);}
return firstDay;},getMonthOfDay:function(year,day)
{var days=0;for(var i=0;i<12;i++){var daysInMonth=this.getDaysInMonth(year,i);if(day>=days&&day<(days+daysInMonth)){return i;}
days+=daysInMonth;}},isLeapYear:function(year)
{if((year%4===0)&&((year%100)!==0)||((year%400)===0)){return true;}
return false;},getDayOfMonth:function(day,year,shortT,incSuffix)
{if(dfx.isset(year)===true){var month=this.getMonthOfDay(year,day);var firstDay=this.getFirstDayOfMonth(year,month);day=(day-firstDay+1);}
var d=day;if(shortT!==true&&day<10){d='0'+d;}
if(incSuffix===true){var suffix=this.getOrdinalSuffix(day);d=d+suffix;}
return d;},getOrdinalSuffix:function(number)
{var suffix='th';if(number<4||number>20){switch((number%10)){case 1:suffix='st';break;case 2:suffix='nd';break;case 3:suffix='rd';break;default:suffix='th';break;}}
return suffix;},addNumberPadding:function(number)
{if(number<10){number='0'+number;}
return number;},getMonth:function(month,shortT)
{var months=[];if(shortT===true){months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];}else{months=['January','February','March','April','May','June','July','August','September','October','November','December'];}
return months[month];},getYear:function(year,shortT)
{if(shortT===true){}
return year;},getHours:function(hours,suffixOnly)
{var suffix='am';if(hours>=12){suffix='pm';}
if(suffixOnly===true){return suffix;}
if(hours>12){hours-=12;}
if(hours===0){hours=12;}
return hours+suffix;},getDayString:function(dayOfWeek)
{var days=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];return days[dayOfWeek];},timeZoneDiff:function(time)
{this.dateObj.setTime(time*1000);var diff=(this.dateObj.getTimezoneOffset()/60);return diff;},disableMonth:function()
{this.monthDisabled=true;dfx.setStyle(this.navButtons.month,'display','none');var c=this.className+'-nav-content';var content=dfx.getId(c);var width=parseInt(dfx.getStyle(content,'width'));var newWidth=(width-127);dfx.setStyle(content,'width',newWidth);},disableDay:function()
{this.dayDisabled=true;dfx.setStyle(this.navButtons.day,'display','none');var c=this.className+'-nav-content';var content=dfx.getId(c);var width=parseInt(dfx.getStyle(content,'width'));var newWidth=(width-71);dfx.setStyle(content,'width',newWidth);},timeToPos:function(timestamp)
{var unit=(((timestamp/1000)-this.currentOffset)/3600);var posX=(unit*this.currentUnit);return posX;},posToTime:function(posX)
{var result={};var width=dfx.getElementWidth(this.domElem);var offset=(((((posX+2)/width)*100)/this.currentUnit)*3600);var time=(parseInt((this.currentOffset+offset))*1000);var startDate=new Date();startDate.setTime(time);startDate.setUTCHours(0,0,0,0);var div=this.sliderElem;var sliderWidth=parseFloat(dfx.getStyle(div,'width'));var days=(Math.round(sliderWidth/(24*this.currentUnit))-1);var endDate=new Date();endDate.setTime(time);endDate.setDate((endDate.getDate()+days));endDate.setUTCHours(0,0,0,0);result.start=startDate;result.end=endDate;return result;},displayMonth:function(year,month)
{var date=new Date();date.setUTCFullYear(year,month,1);date.setUTCHours(0,0,0,0);var start=(date.getTime()/1000);var days=this.getDaysInMonth(year,month);date.setUTCFullYear(year,month,days);date.setUTCHours(0,0,0,0);var end=(date.getTime()/1000);var div=this.sliderElem;var width=(days*24*this.currentUnit);dfx.setStyle(div,'width',width+'%');date.setFullYear(year,month,1);date.setHours(0,0,0,0);var posX=this.timeToPos(date.getTime());var self=this;this.setSliderPosition(posX,false,function(){self.fireRangeSliderDraggedEvents(null,start,end);});}};dfx.inherits('TimeLine','Widget');function ToggleButtonWidgetType(id,readOnly,type,on,buttonOnName,buttonOffName,buttonSize,groupid,toggleDisabled)
{Widget.call(this,id);this.widgetType='ToggleButton';this.readOnly=readOnly||false;this.domElem=null;this.type=type||'image';this.on=on||false;this.buttonOnName=buttonOnName||'On';this.buttonOffName=buttonOffName||'Off';this.buttonSize=buttonSize||null;this.buttonWidget=null;this.toggleOnTitle='Click to toggle on';this.toggleOffTitle='Click to toggle off';this.groupid=groupid||null;this.single='';this.toggleDisabled=toggleDisabled;if(this.groupid!==null){this.single='-single';}
this.toggleEvents=[];this.toggleOnEvents=[];this.toggleOffEvents=[];if(this.on===1){this.on=true;}else if(this.on!==true){this.on=false;}
if(this.type==='image'){if(dfx.isset(dfx.getId(this.id))===true){this.domElem=dfx.getId(this.id);this.addEvents();}}else if(this.type==='button'){var btnid=this.id+'-button';if(dfx.isset(dfx.getId(btnid))===true){this.domElem=dfx.getId(btnid);this.addEvents();}}else if(this.type==='slider'){var sliderid=this.id+'-slider';if(dfx.isset(dfx.getId(sliderid))===true){this.domElem=dfx.getId(sliderid);}
if(this.domElem){this._addEvents();}}}
ToggleButtonWidgetType.prototype={create:function(callback)
{var self=this;if(this.type==='image'){this._createImageToggle(callback);self._addEvents();}else if(this.type==='button'){this._createButtonToggle(function(el){self._addEvents();callback.call(self,el);});}else if(this.type==='slider'){this._createSliderToggele(function(el){self._addEvents();callback.call(self,el);});}},_createImageToggle:function(callback)
{var div=document.createElement('div');this.domElem=div;div.id=this.id;dfx.addClass(div,(this.getClass()+'-image'));if(this.on===true){this.toggleOn();}else{this.toggleOff(true);}
callback.call(this,div);},setReadOnly:function(readOnly)
{AbstractWidgetWidgetType.prototype.setReadOnly.call(this,readOnly);if(this.domElem){if(this.type==='image'){}else if(this.type==='button'){}else if(this.type==='slider'){if(this.readOnly){dfx.addClass(dfx.getId(this.id+'-glow'),'disabled');dfx.addClass(dfx.getId(this.id+'-slider'),this.widgetType+'WidgetType-slider-disabled');}else{dfx.removeClass(dfx.getId(this.id+'-glow'),'disabled');dfx.removeClass(dfx.getId(this.id+'-slider'),this.widgetType+'WidgetType-slider-disabled');}}}},_createSliderToggele:function(callback)
{var c=(this.getClass()+'-slider');var main=document.createElement('div');main.id=(this.id+'-slider');dfx.addClass(main,c);var content='<div class="'+c+'-Padding">';var glowClass=(c+'-Glow');if(this.on===false){glowClass+=' '+c+'-Glow-off';}
if(this.readOnly||this.disabled===true){glowClass+=' disabled';}
content+='<div id="'+this.id+'-glow" class="'+glowClass+'">&nbsp;</div>';content+='<div class="'+c+'-Left">&nbsp;</div>';content+='<div class="'+c+'-Middle">';var leftSelectClass=c+'-Left-Select';if(this.buttonOnName.length===3){leftSelectClass+=' '+c+'-Left-Select-Long';}
if(this.on===true){leftSelectClass+=' selected';}
content+='<div class="'+leftSelectClass+'">'+this.buttonOnName+'</div>';var rightSelectClass=c+'-Right-Select';if(this.buttonOffName.length===3){rightSelectClass+=' '+c+'-Right-Select-Long';}
if(this.on!==true){rightSelectClass+=' selected';}
content+='<div class="'+rightSelectClass+'">'+this.buttonOffName+'</div>';content+='</div>';content+='<div class="'+c+'-Right">&nbsp;</div>';content+='</div>';dfx.setHtml(main,content);var rod=document.createElement('div');rod.id=this.id+'-readOnly';dfx.addClass(rod,this.getClass()+'-slider-readOnly');if(this.on!==true){dfx.setHtml(rod,this.buttonOffName);}else{dfx.setHtml(rod,this.buttonOnName);}
dfx.hideElement(rod);main.appendChild(rod);this.domElem=main;if(this.on!==true){var glowMask=dfx.getClass((c+'-Glow'),main)[0];dfx.setStyle(glowMask,'left',50);}
callback.call(this,main);},_addEvents:function()
{var self=this;if(this.type==='image'){if(this.groupid!==null){dfx.addClass(this.domElem,('ToggleButton-group-'+this.groupid));}
dfx.addEvent(this.domElem,'click',function(){if(self.on===true){self.toggleOff();}else{self.toggleOn();}});}else if(this.type==='button'){var buttonWidget=WidgetStore.get((this.id+'-button'));this.buttonWidget=buttonWidget;buttonWidget.setClassPrefix((this.getClass()+'-button'+this.single));if(this.on!==true){dfx.addClass(this.domElem,('ToggleButtonWidgetType-button'+this.single+'-off'));}else{dfx.addClass(this.domElem,('ToggleButtonWidgetType-button'+this.single+'-on'));}
if(this.groupid!==null){dfx.addClass(buttonWidget.domElem,('ToggleButton-group-'+this.groupid));}
if(dfx.isset(self.buttonSize)===true){buttonWidget.setMinWidth(self.buttonSize);}
if(this.on===true){buttonWidget.setName(this.buttonOnName);this.toggleOn();}else{buttonWidget.setName(this.buttonOffName);this.toggleOff();}
if(dfx.isset(buttonWidget)===true){buttonWidget.addClickEvent(function(){self.toggle();});}}else if(this.type==='slider'){dfx.addEvent(this.domElem,'click',function(e){if(self.toggleDisabled===true||self.readOnly){return;}
var myself=self;if(self.on===false){self.toggleSlideOn(null);}else if(self.on===true){self.toggleSlideOff(null);}});}},toggleSlideOn:function(cb,force,fireEvents,noAnim)
{var sec=300;if(noAnim===true){sec=0;}
var self=this;var glowMask=dfx.getClass((this.getClass()+'-slider-Glow'),this.domElem)[0];dfx.animate(glowMask,{left:6},sec,function(){self.on=true;if(fireEvents!==false){self.fireToggleEvents(true);self.fireToggleOnEvents(true);}
var left=dfx.getClass((self.getClass()+'-slider-Left-Select'),self.domElem)[0];dfx.addClass(left,'selected');var right=dfx.getClass((self.getClass()+'-slider-Right-Select'),self.domElem)[0];dfx.removeClass(right,'selected');if(dfx.isset(cb)===true){cb.call(self);}});},toggleSlideOff:function(cb,force,fireEvents,noAnim)
{var sec=300;if(noAnim===true){sec=0;}
var self=this;var glowMask=dfx.getClass((this.getClass()+'-slider-Glow'),this.domElem)[0];dfx.animate(glowMask,{left:50},sec,function(){self.on=false;if(fireEvents!==false){self.fireToggleEvents(false);self.fireToggleOffEvents(false);}
var left=dfx.getClass((self.getClass()+'-slider-Left-Select'),self.domElem)[0];dfx.removeClass(left,'selected');var right=dfx.getClass((self.getClass()+'-slider-Right-Select'),self.domElem)[0];dfx.addClass(right,'selected');if(dfx.isset(cb)===true){cb.call(self);}});},_createButtonToggle:function(callback)
{var self=this;this.includeWidget('Button',function(){var button=self.createWidget((self.id+'-button'),'Button','ButtonWidgetType-white');self.buttonWidget=button;if(dfx.isset(self.buttonSize)===true){button.setMinWidth(self.buttonSize);}
if(self.on===true){button.setName(self.buttonOnName);}else{button.setName(self.buttonOffName);}
button.create(function(el){self.domElem=el;callback.call(self,el);});});},toggleOff:function(force)
{if(force!==true&&this.groupid!==null){return;}
if(force!==true&&this.on===false){return;}
this.on=false;dfx.addClass(this.domElem,(this.getClass()+'-'+this.type+this.single+'-off'));dfx.removeClass(this.domElem,(this.getClass()+'-'+this.type+this.single+'-on'));this.domElem.setAttribute('title',this.toggleOnTitle);this.fireToggleEvents(false);this.fireToggleOffEvents(false);if(this.type==='button'){this.buttonWidget.setName(this.buttonOffName);}},toggleOn:function(force)
{if(force!==true&&this.on===true){return;}
this.on=true;dfx.addClass(this.domElem,(this.getClass()+'-'+this.type+this.single+'-on'));dfx.removeClass(this.domElem,(this.getClass()+'-'+this.type+this.single+'-off'));this.domElem.setAttribute('title',this.toggleOffTitle);this.fireToggleEvents(true);this.fireToggleOnEvents(false);if(this.type==='button'){this.buttonWidget.setName(this.buttonOnName);}
if(this.groupid!==null){var elems=dfx.getClass('ToggleButton-group-'+this.groupid);var elen=elems.length;for(var i=0;i<elen;i++){var elemid=elems[i].id;var widget=null;if(elemid.lastIndexOf('-button')===(elemid.length-7)){elemid=elemid.substring(0,(elemid.length-7));}
widget=WidgetStore.get(elemid);if(this.id!==elemid){if(dfx.isset(widget)===true&&dfx.isFn(widget.toggleOff)===true){widget.toggleOff(true);}}}}},toggle:function()
{if(this.isOn()===true){this.toggleOff();}else{this.toggleOn();}},setToggleOffTitle:function(title)
{this.toggleOffTitle=title;if(this.on===true&&dfx.isset(this.domElem)===true){this.domElem.setAttribute('title',title);}},setToggleOnTitle:function(title)
{this.toggleOnTitle=title;if(this.on===false&&dfx.isset(this.domElem)===true){this.domElem.setAttribute('title',title);}},addToggleEvent:function(fn)
{this.toggleEvents.push(fn);},addToggleOnEvent:function(fn)
{this.toggleOnEvents.push(fn);},addToggleOffEvent:function(fn)
{this.toggleOffEvents.push(fn);},fireToggleEvents:function(t)
{var tlen=this.toggleEvents.length;for(var i=0;i<tlen;i++){this.toggleEvents[i].call(this,t);}},fireToggleOnEvents:function(t)
{var tlen=this.toggleOnEvents.length;for(var i=0;i<tlen;i++){this.toggleOnEvents[i].call(this,t);}},fireToggleOffEvents:function(t)
{var tlen=this.toggleOffEvents.length;for(var i=0;i<tlen;i++){this.toggleOffEvents[i].call(this,t);}},isOn:function()
{return this.on;},hide:function()
{dfx.setStyle(this.domElem,'display','none');},show:function()
{dfx.setStyle(this.domElem,'display','block');},getValue:function()
{return this.on;},setValue:function(status)
{if(typeof status==='string'){if(status.toLowerCase()==='true'){status=true;}else{status=false;}}
if(status===true){this.toggleOn();if(this.type==='slider'){this.toggleSlideOn(null,true);}}else{this.toggleOff(true);if(this.type==='slider'){this.toggleSlideOff(null,true);}}},disable:function()
{if(this.type==='image'){}else if(this.type==='button'){}else if(this.type==='slider'){dfx.addClass(dfx.getId(this.id+'-glow'),'disabled');}
this.toggleDisabled=true;},enable:function()
{if(this.type==='image'){}else if(this.type==='button'){}else if(this.type==='slider'){dfx.removeClass(dfx.getId(this.id+'-glow'),'disabled');}
this.toggleDisabled=false;}};dfx.inherits('ToggleButton','Widget');function ToggleDivWidgetType(id,parentid,openWhenTrue)
{Widget.call(this,id);this.parentid=parentid;this.domElem=dfx.getId(this.id);this.openWhenTrue=openWhenTrue;if(dfx.isset(this.openWhenTrue)===false){this.openWhenTrue=true;}
if(this.domElem){this.init();}}
ToggleDivWidgetType.prototype={init:function()
{var parentid=this.parentid;var max=50;var elem=this.domElem;var openWhenTrue=this.openWhenTrue;var t=setInterval(function(){var widget=WidgetStore.get(parentid);if(dfx.isset(widget)===true){clearInterval(t);if(dfx.isFn(widget.addToggleEvent)===false){return;}
widget.addToggleEvent(function(status){if(status===openWhenTrue){dfx.blindDown(elem,'fast');}else{dfx.blindUp(elem,'fast');}});}else if(max--<0){clearInterval(t);}},200);}};dfx.inherits('ToggleDiv','Widget');function TreeWidgetType(id)
{Widget.call(this,id);this.widgetType='Tree';this.rootNode=null;this.nodes={};this.treeElement=null;this.rootHidden=false;this.nodeDblclickEvents=[];this.nodeControlClickedEvents=[];this.itemHoverEvents=[];}
TreeWidgetType.prototype={getClass:function()
{return this.widgetType+'WidgetType';},create:function(callback)
{var ul=document.createElement('ul');ul.id=this.id;this.treeElement=ul;dfx.addClass(ul,this.getClass());dfx.addClass(ul,this.getClass()+'-node');if(this.rootNode!==null){this._addNodeElement(this.rootNode,null,ul,'last',true);}
if(dfx.isFn(callback)===true){callback.call(this,ul);}},clearTree:function(incEvents)
{dfx.remove(this.treeElement);this.rootNode=null;this.nodes={};this.treeElement=null;if(incEvents===true){this.nodeDblclickEvents=[];}},_addNodeElement:function(nodeid,parentid,parentElement,nodePos,expanded)
{var node=this.nodes[nodeid];if(dfx.isset(node)===false){return;}
var parent=this.nodes[parentid];var childCount=node.children.length;var hasKids=false;var parentLineStack=[];if(parentid!==null){parentLineStack=this.nodes[parentid].lineStack;}
if(childCount>0||node.hasKids===true){hasKids=true;}
var nodeElement=this._createNode(nodeid,node.content,nodePos,hasKids,expanded,parentLineStack,node.iconUrl);this.addNodeElement(nodeid,nodeElement);if(dfx.isset(parentElement.childNodes[1])===true){parentElement=parentElement.childNodes[1];}
parentElement.appendChild(nodeElement);var chLineStack=parentLineStack.concat([]);if(nodePos==='last'){chLineStack.push(0);}else{chLineStack.push(1);}
node.lineStack=chLineStack;this._addChildElements(nodeid,nodeElement);},_addChildElements:function(nodeid,nodeElement)
{var node=this.nodes[nodeid];var childCount=node.children.length;var nodePos='mid';if(nodeid===this.rootNode&&this.rootHidden===true){nodePos='first';}
for(var i=0;i<childCount;i++){if(i===(childCount-1)){nodePos='last';}
this._addNodeElement(node.children[i],nodeid,nodeElement,nodePos,false);nodePos='mid';}},addNodeElement:function(nodeid,nodeElement)
{this.nodes[nodeid].elements.push(nodeElement);},getParentElements:function(childNodeid,parentid)
{var paerntElements=[];var childNode=this.getNode(childNodeid);if(childNode){var parents=childNode.parents;var pCount=parents.length;for(var i=0;i<pCount;i++){if(parents[i]===parentid){paerntElements=paerntElements.concat(this.getNode(parents[i]).elements);break;}}}
return paerntElements;},getNode:function(nodeid)
{return this.nodes[nodeid];},addNode:function(nodeid,content,parentNodes,hasKids,iconUrl)
{if(nodeid in this.nodes){return;}
this.nodes[nodeid]={elements:[],children:[],parents:[],content:content,lineStack:[],hasKids:hasKids,iconUrl:iconUrl};if(this.rootNode===null){this.rootNode=nodeid;}else{if((parentNodes instanceof Array)===false){parentNodes=[parentNodes];}
var len=parentNodes.length;for(var i=0;i<len;i++){var parentNode=parentNodes[i];if(parentNode===null||typeof parentNode==='undefined'){parentNode=this.rootNode;}
if((parentNode in this.nodes)===false){return;}else{this.linkNodes(parentNode,nodeid);}}}},removeNode:function(nodeid)
{var parents=this.nodes[nodeid].parents;var plen=parents.length;for(var i=0;i<plen;i++){this.removeChild(parents[i],nodeid);}
dfx.remove(this.nodes[nodeid].elements);var children=this.nodes[nodeid].children;var clen=children.length;for(var i=0;i<clen;i++){if(this.nodes[children[i]].parents.length===1){this.removeNode(children[i]);}}},removeChild:function(parentid,childid)
{var children=this.getNode(parentid).children;var clen=children.length;for(var i=0;i<clen;i++){if(children[i]===childid){children.splice(i,1);break;}}},linkNodes:function(parentNodeid,childNodeid)
{var parentNode=this.getNode(parentNodeid);parentNode.children.push(childNodeid);this.getNode(childNodeid).parents.push(parentNodeid);},_createNode:function(nodeid,content,nodePos,hasKids,expanded,lineStack,iconUrl)
{var li=document.createElement('li');li.setAttribute('id',this.id+'-node:'+nodeid);dfx.addClass(li,this.getClass()+'-node');var div=document.createElement('div');dfx.addClass(div,this.getClass()+'-node-elem');var lvlSpacers=document.createElement('span');dfx.addClass(lvlSpacers,this.getClass()+'-lvl-spacers');div.appendChild(lvlSpacers);var stackLen=lineStack.length;for(var i=0;i<stackLen;i++){var lvlSpcrCont=document.createElement('img');lvlSpcrCont.src=Widget.WEB_URL+'Systems/TreeWidget/spacer.gif';if(lineStack[i]===0){dfx.addClass(lvlSpcrCont,this.getClass()+'-lvl-spacer');}else{dfx.addClass(lvlSpcrCont,this.getClass()+'-vline');}
lvlSpacers.appendChild(lvlSpcrCont);}
var imgClassName=this.getClass()+'-node-img-'+nodePos;var altImgClassName=imgClassName;if(hasKids===true){if(expanded===true){imgClassName+='-exp';altImgClassName+='-col';}else{imgClassName+='-col';altImgClassName+='-exp';}}
var nodeImgCont=document.createElement('img');nodeImgCont.src=Widget.WEB_URL+'Systems/TreeWidget/spacer.gif';dfx.addClass(nodeImgCont,this.getClass()+'-node-img');dfx.addClass(nodeImgCont,imgClassName);div.appendChild(nodeImgCont);var nodeIconContW=document.createElement('div');var nodeIconCont=document.createElement('img');nodeIconContW.appendChild(nodeIconCont);nodeIconCont.src=Widget.WEB_URL+'Systems/TreeWidget/spacer.gif';dfx.addClass(nodeIconCont,this.getClass()+'-icon');if(dfx.isset(iconUrl)===true){dfx.setStyle(nodeIconCont,'background-image','url('+iconUrl+')');}
if(hasKids===true&&expanded===true){dfx.addClass(nodeIconContW,this.getClass()+'-icon-wrapper');}else{dfx.addClass(nodeIconContW,this.getClass()+'-icon-wrapper-noKids');}
div.appendChild(nodeIconContW);var nodeContentCont=document.createElement('div');dfx.addClass(nodeContentCont,this.getClass()+'-node-content');div.appendChild(nodeContentCont);if(typeof content!=='string'){nodeContentCont.appendChild(content);}else{dfx.setHtml(nodeContentCont,content);}
li.appendChild(div);var ul=document.createElement('ul');dfx.addClass(ul,this.getClass()+'-node');li.appendChild(ul);var self=this;if(expanded!==true){dfx.setStyle(ul,'display','none');}
dfx.addEvent(nodeImgCont,'click',function(){if(hasKids===true){dfx.toggleClass(nodeImgCont,imgClassName);dfx.toggleClass(nodeImgCont,altImgClassName);var expanding=false;if(dfx.hasClass(nodeImgCont,altImgClassName)===true){expanding=true;}
if(expanding===true){dfx.addClass(nodeIconContW,self.getClass()+'-icon-wrapper');}else{dfx.removeClass(nodeIconContW,self.getClass()+'-icon-wrapper');}
dfx.blindToggle(ul,1,function(){self.fireNodeControlClicked(nodeid,li,expanding);});}});var hoverClass=this.getClass()+'-node-hover';dfx.hover(div,function(){self.fireItemHoverEvents(nodeid,li,true);dfx.addClass(div,hoverClass);},function(){self.fireItemHoverEvents(nodeid,li,false);dfx.removeClass(div,hoverClass);});dfx.addEvent(div,'dblclick',function(){self.fireNodeDblClickEvents(nodeid);});return li;},addNodeDblClickEvent:function(callback)
{this.nodeDblclickEvents.push(callback);},fireNodeControlClicked:function(nodeid,li,expanding)
{var ln=this.nodeControlClickedEvents.length;for(var i=0;i<ln;i++){this.nodeControlClickedEvents[i].call(this,nodeid,li,expanding);}},addNodeControlClickedEvent:function(callback)
{this.nodeControlClickedEvents.push(callback);},fireNodeDblClickEvents:function(nodeid)
{var ln=this.nodeDblclickEvents.length;for(var i=0;i<ln;i++){this.nodeDblclickEvents[i].call(this,nodeid);}},addItemHoverEvent:function(fn)
{this.itemHoverEvents.push(fn);},fireItemHoverEvents:function(nodeid,li,on)
{var ln=this.itemHoverEvents.length;for(var i=0;i<ln;i++){this.itemHoverEvents[i].call(this,nodeid,li,on);}}};dfx.inherits('Tree','Widget');function WYSIWYGWidgetType(id)
{Widget.call(this,id);this.viper=WidgetStore.get('viper');this.plugins=('ViperToolbarPlugin|ViperSubToolbarPlugin|ViperCopyPastePlugin|ViperCoreStylesPlugin|ViperFormatPlugin|ViperImagePlugin|ViperImageGalleryPlugin|ViperMoviePlugin|ViperKeyboardEditorPlugin|ViperLinkPlugin|ViperListPlugin|ViperRedoPlugin|ViperTableEditorPlugin|ViperKeywordPlugin|ViperContentSharingPlugin|ViperSourceViewPlugin').split('|');this.contentChangedCallback=function(){};}
WYSIWYGWidgetType.prototype={init:function(callback)
{var self=this;if(!this.viper){var scripts=['Viper'];this._loadScripts(dfx.clone(scripts),function(){var viperOpts={viperURL:Widget.prototype.getWidgetUrl('WYSIWYGEditorWidget')+'/viper'};var self=this;var viper=new Viper(viperOpts,function(viper){self.viper=viper;WidgetStore.add('viper',self.viper);self.load(callback);});});}else{ViperPluginManager.addPluginSet(this.id+'all',this.plugins);var timer=null;this.viper.registerCallback('nodesChanged','WYSIWYGEditor',function(){clearTimeout(timer);timer=setTimeout(function(){self.contentChangedCallback();self.setModified(true);},200);});this.setViperPlugins(function(){callback.call(self);});}},setContentChangedCallback:function(callback)
{this.contentChangedCallback=callback;},setPluginSettings:function(pluginName,settings)
{var idx=this.plugins.find(pluginName);if(idx!==-1){this.plugins[idx]={name:this.plugins[idx],settings:settings};}},load:function(callback)
{this.init(callback);},setViperPlugins:function(callback)
{ViperPluginManager.usePluginSet(this.id+'all',false,callback);},setElement:function(element,mode)
{if(this.viper){this.viper.setMode(mode);this.viper.setEditableElement(element);this.viper.setEnabled(true);element.focus();var self=this;dfx.addEvent(element,'click',function(){self.viper.setEnabled(true);});}},setContents:function(content)
{if(this.viper){this.viper.setContents(content);}},getContents:function()
{if(this.viper){return this.viper.getContents();}
return null;},enable:function()
{if(this.viper){this.viper.setEnabled(true);}},disable:function()
{if(this.viper){this.viper.setEnabled(false);}},_loadScripts:function(scripts,callback)
{if(scripts.length===0){callback.call(this);return;}
var script=scripts.shift();if(script!=='Selection'&&window[script]){this._loadScripts(scripts,callback);return;}
var url=Widget.prototype.getWidgetUrl('WYSIWYGEditorWidget');var self=this;dfx.includeScript(url+'viper/'+script+'.js',function(){self._loadScripts(scripts,callback);});},getHtml:function(elem)
{return this.viper.getHtml(elem);},setHtml:function(contents,callback)
{this.viper.setHtml(contents,callback);}};dfx.inherits('WYSIWYG','Widget');function WebPathsManagerWidgetType(id,aliases,type,urlsInfo,redirects)
{Widget.call(this,id);this.widgetType='WebPathsManager';this.assetType=type||'';this.remove=[];this.hasChanges={};this.currentHome=null;if(this.assetType==='site'){this.urlsInfo=urlsInfo||[];this.redirects=redirects||[];this.newDomains=0;this.newRedirects=0;this.readyCheck=false;}else{this.aliases=aliases;this.listWidget=WidgetStore.get(this.id+'-webPathsList');this.oldUrl=WidgetStore.get(this.id+'-url-change').getValue();}
this.init();}
WebPathsManagerWidgetType.prototype={screenModified:function()
{var self=this;var modified=false;if(this.assetType==='site'){if(this.newDomains>0||this.newRedirects>0){modified=true;}
if(modified===false){dfx.foreach(this.urlsInfo.urls,function(idx){var btn=dfx.getId(self.id+'-domainDelete-'+idx);if(dfx.hasClass(btn,'recover')===true){modified=true;return false;}
var textfield=WidgetStore.get(self.id+'-urlField-'+idx);if('http://'+textfield.getValue()!==self.urlsInfo.urls[idx]){modified=true;return false;}
var homePagePicker=WidgetStore.get(self.id+'-homePage','AssetPicker');var notFoundPagePicker=WidgetStore.get(self.id+'-noFoundPage','AssetPicker');if(homePagePicker.getValue()!==self.urlsInfo.indexid||notFoundPagePicker.getValue()!==self.urlsInfo.notfoundid){modified=true;return false;}
return true;});if(modified===false){dfx.foreach(this.redirects,function(idx){var btn=dfx.getId(self.id+'-redirectDelete-'+idx);if(dfx.hasClass(btn,'recover')===true){modified=true;return false;}
var url=WidgetStore.get(self.id+'-redirectUrlField-'+idx);var mappedUrl=WidgetStore.get(self.id+'-bounceSelect-'+idx);if('http://'+url.getValue()!==self.redirects[idx].url||self.urlsInfo[parseInt(mappedUrl.getValue())]!==self.redirects[idx].mapped_url){modified=true;return false;}});}
dfx.foreach(this.urlsInfo.urls,function(idx){return true;});}
this.setModified(modified);return modified;}else{var noChange=true;for(var id in this.hasChanges){if(this.hasChanges[id]===true){this.setModified(true);noChange=false;break;}}
if(noChange===true){this.setModified(false);}}},init:function()
{var self=this;this.setSaveButton(function(){self.saveSettings();},function(){self.displayDisabledDiv(true);if(self.assetType==='site'){self.resetSite();}else{self.reload();}
setTimeout(function(){self.removeDisabledDiv();},300);});if(this.assetType==='site'){this.createDomainNamesSection();this.createRedirectsSection();}else{var len=this.aliases.length;for(var i=0;i<len;i++){this.addDeleteButtonEvent(this.aliases[i]);this.remove[i]=0;}
var url=WidgetStore.get(this.id+'-url-change');url.addOnChangeEvent(function(){var val=this.getValue().toLowerCase();var err=dfx.getId(self.id+'-url-error');if(val.match(/^_|[^a-z0-9_\.-]/g)!==null){dfx.showElement(err,true);dfx.setHtml(dfx.getId(self.id+'-url-error'),'URLs can only contain lower case characters, numbers, dashes and underscores but no leading underscores.');}else{dfx.hideElement(err,true);}
if(val!==self.oldUrl){self.hasChanges.url=true;}else{delete self.hasChanges.url;}
self.screenModified();});var alias=WidgetStore.get(this.id+'-alias-add');alias.addOnChangeEvent(function(){if(this.getValue()!==''){self.hasChanges.alias=true;}else{delete self.hasChanges.alias;}
self.screenModified();});this.changes={};this.screenModified();}},createDomainNamesSection:function()
{var self=this;var urlList=null;var _createDomainName=function(callback){var pagesSection=document.createElement('div');dfx.addClass(pagesSection,self.widgetType+'-pagesSection');var leftC=self.widgetType+'-pagesSection-left';var rightC=self.widgetType+'-pagesSection-right';content='<div class="'+leftC+'"></div>';content+='<div class="'+rightC+'"></div>';dfx.setHtml(pagesSection,content);var homePagePicker=self.createWidget(self.id+'-homePage','AssetPicker');var notFoundPagePicker=self.createWidget(self.id+'-noFoundPage','AssetPicker');homePagePicker.create(function(hp){notFoundPagePicker.create(function(np){var blackList=['Documents','Images','Movies','Designs','Roles','Users','Workflows'];homePagePicker.setProjectFolderBlackList(blackList);homePagePicker.setResetConfirmation('Are you sure you want to reset the Home Page?');notFoundPagePicker.setProjectFolderBlackList(blackList);var leftDiv=dfx.getClass(leftC,pagesSection)[0];var rightDiv=dfx.getClass(rightC,pagesSection)[0];var lLabel=document.createElement('div');var rLabel=document.createElement('div');dfx.addClass(lLabel,self.widgetType+'-pickerLabel');dfx.addClass(rLabel,self.widgetType+'-pickerLabel');dfx.setHtml(lLabel,'Home Page');dfx.setHtml(rLabel,'Page Not Found');leftDiv.appendChild(lLabel);leftDiv.appendChild(hp);rightDiv.appendChild(rLabel);rightDiv.appendChild(np);callback.call(self,pagesSection);});});};var createUrlField=function(index,listItem,value,sslEnabled){var _createUrlField=function(el,tel,sdel){urlField.setValue(value);dfx.addEvent(urlField.input,'keyup',function(e){var val=this.value.toLowerCase();val=val.replace('__','_');val=val.replace(/^\s*\w+:\/\//,'');this.value=val;self.screenModified();});var sslWrap=document.createElement('div');var sslStatus=document.createElement('div');dfx.setHtml(sslStatus,'Secure with SSL');dfx.addClass(sslWrap,self.widgetType+'-sslHeaderWrap');dfx.addClass(sslStatus,self.widgetType+'-sslStatus');dfx.addClass(sdel,self.widgetType+'-sslShowHideDetailsButton');var toggleWrap=document.createElement('div');toggleWrap.appendChild(tel);dfx.addClass(toggleWrap,self.widgetType+'-sslToggleWrap');var inProgressDiv=document.createElement('div');dfx.addClass(inProgressDiv,self.widgetType+'-sslProgress');dfx.setHtml(inProgressDiv,'in progress ...');if(self.urlsInfo.ssl[value]===false||value===''){dfx.hideElement(inProgressDiv);dfx.hideElement(sdel);}else{dfx.addClass(sslStatus,self.widgetType+'-sslStatus-active');if(self.urlsInfo.ssl[value].ready===true){dfx.hideElement(inProgressDiv);}else if(self.urlsInfo.ssl[value].ready===false){dfx.hideElement(sdel);}}
sslWrap.appendChild(el);sslWrap.appendChild(sslStatus);sslWrap.appendChild(toggleWrap);sslWrap.appendChild(sdel);sslWrap.appendChild(inProgressDiv);listItem.appendChild(sslWrap);};var disableToggle=false;var toggleValue=sslEnabled;if(self.urlsInfo.ssl[value]&&(self.urlsInfo.ssl[value].ready===false||self.urlsInfo.ssl[value].remove===true)){disableToggle=true;if(self.urlsInfo.ssl[value].remove===true){toggleValue=false;}}
var urlField=self.createWidget(self.id+'-urlField-'+index,'TextField');var toggWidget=self.createWidget(self.id+'-sslToggle-'+index,'ToggleButton',false,'slider',toggleValue,'Yes','No');var showDetailsBtnWdgt=self.createWidget(self.id+'-sslDetailsBtn-'+index,'Button','ButtonWidgetType');var showButtonTitle='Show Details';var hideButtonTitle='Hide Details';showDetailsBtnWdgt.setName(showButtonTitle);if(disableToggle===true){toggWidget.setReadOnly(true);urlField.setReadOnly(true);self.readyCheck=true;}
showDetailsBtnWdgt.addClickEvent(function(){var btnTitle=showDetailsBtnWdgt.getName();if(btnTitle===showButtonTitle){urlList.showSubContent(index);showDetailsBtnWdgt.setName(hideButtonTitle);}else if(btnTitle===hideButtonTitle){urlList.hideSubContent(index);showDetailsBtnWdgt.setName(showButtonTitle);}});toggWidget.addToggleOnEvent(function(){urlList.showSubContent(index);dfx.addClass(dfx.getClass(self.widgetType+'-sslStatus',listItem)[0],self.widgetType+'-sslStatus-active');showDetailsBtnWdgt.setName(hideButtonTitle);self.setModified(true);});toggWidget.addToggleOffEvent(function(){urlList.hideSubContent(index);dfx.removeClass(dfx.getClass(self.widgetType+'-sslStatus',listItem)[0],self.widgetType+'-sslStatus-active');showDetailsBtnWdgt.setName(showButtonTitle);self.setModified(true);});urlField.setDisplayAsBlock(false);urlField.create(function(urlFieldEl){toggWidget.create(function(toggWidgetEl){showDetailsBtnWdgt.create(function(showDetailsBtnWdgtEl){_createUrlField(urlFieldEl,toggWidgetEl,showDetailsBtnWdgtEl);});});});};var createUrlFieldSubContent=function(index,subContent,value,sslEnabled){var ipTextFieldWdgt=self.createWidget(self.id+'-sslIpField-'+index,'TextField');var netTextFieldWdgt=self.createWidget(self.id+'-sslNetField-'+index,'TextField');var fileUploadWdgt=self.createWidget(self.id+'-sslCrtFile-'+index,'FileUpload',null,null,false);if(sslEnabled===true){ipTextFieldWdgt.setValue(self.urlsInfo.ssl[value].ip);netTextFieldWdgt.setValue(self.urlsInfo.ssl[value].mask);}
ipTextFieldWdgt.create(function(ipTextFieldWdgtEl){netTextFieldWdgt.create(function(netTextFieldWdgtEl){fileUploadWdgt.create(function(fileUpEl){var ipWrap=document.createElement('div');var netWrap=document.createElement('div');var crtWrap=document.createElement('div');dfx.addClass(ipWrap,self.widgetType+'-sslDetailWrap');dfx.addClass(netWrap,self.widgetType+'-sslDetailWrap');dfx.addClass(crtWrap,self.widgetType+'-sslDetailWrap');var ipLabel=document.createElement('label');var netLabel=document.createElement('label');var crtLabel=document.createElement('label');dfx.setHtml(ipLabel,'IP Address');dfx.setHtml(netLabel,'Netmask');dfx.setHtml(crtLabel,'Certificate Upload');dfx.addClass(ipTextFieldWdgtEl,self.widgetType+'-sslIPAddress');dfx.addClass(netTextFieldWdgtEl,self.widgetType+'-sslNetmask');dfx.addClass(fileUpEl.childNodes[0],self.widgetType+'-sslCertificate');ipWrap.appendChild(ipLabel);ipWrap.appendChild(ipTextFieldWdgtEl);netWrap.appendChild(netLabel);netWrap.appendChild(netTextFieldWdgtEl);crtWrap.appendChild(crtLabel);crtWrap.appendChild(fileUpEl);var uploadForm=document.createElement('form');uploadForm.id=self.id+'-sslCertFileForm-'+index;uploadForm.action='';uploadForm.method='post';uploadForm.enctype='multipart/form-data';var formid=document.createElement('input');formid.type='hidden';formid.name='formid';formid.value=self.id+'-sslCrtFile-'+index;uploadForm.appendChild(formid);var domainData=document.createElement('input');domainData.type='hidden';domainData.name='domainData';domainData.value='';uploadForm.appendChild(domainData);uploadForm.appendChild(fileUpEl);uploadForm.appendChild(fileUpEl);subContent.appendChild(ipWrap);subContent.appendChild(netWrap);subContent.appendChild(crtWrap);subContent.appendChild(uploadForm);dfx.setStyle(dfx.getClass('TextFieldWidgetType',ipTextFieldWdgtEl)[0],'width','150px');dfx.setStyle(dfx.getClass('TextFieldWidgetType',netTextFieldWdgtEl)[0],'width','150px');});});});};var addNewWdgt=WidgetStore.get(this.id+'-domainNames-Button-AddNew');addNewWdgt.addClickEvent(function(e){var index=self.urlsInfo.urls.length+self.newDomains;self.newDomains++;var listItem=document.createElement('div');var listItemSubContent=document.createElement('div');dfx.addClass(listItem,self.getClass()+'-urlWrapper');dfx.addClass(listItemSubContent,self.getClass()+'-subWrapper');var sslEnabled=false;createUrlField(index,listItem,'',sslEnabled);createUrlFieldSubContent(index,listItemSubContent,'',sslEnabled);urlList.addItem({id:index,left:listItem,subContent:listItemSubContent});self.screenModified();},true);this.includeWidgets(['TextField','AssetPicker','Intervention','PlainList','ToggleButton','FileUpload'],function(){var urlListItems=[];dfx.foreach(self.urlsInfo.urls,function(i){var listItem=document.createElement('div');var subContent=document.createElement('div');dfx.addClass(listItem,self.getClass()+'-urlWrapper');dfx.addClass(subContent,self.getClass()+'-subWrapper');urlListItems.push({id:i,left:listItem,subContent:subContent});var url=self.urlsInfo.urls[i];url=url.replace(/^\s*\w+:\/\//,'');var sslEnabled=true;if(self.urlsInfo.ssl[url]===false||url===''){sslEnabled=false;}
createUrlField(i,listItem,url,sslEnabled);createUrlFieldSubContent(i,subContent,url,sslEnabled);return true;});if(self.readyCheck===true){var readyCheck=setInterval(function(){var currScrn=WidgetStore.getData('activeScreen');if(currScrn===null||currScrn.id!=='lookup'){clearInterval(readyCheck);return;}
var url=Widget.CURRENT_URL+'/'+Widget.CURRENT_SUFFIX;var params={widget:'LookupEditScreenWidget',action:'readyCheck',domain:dfx.jsonEncode(self.urlsInfo)};dfx.post(url,params,function(data){data=dfx.jsonDecode(data);var allReady=true;dfx.foreach(self.urlsInfo.urls,function(idx){var url=self.urlsInfo.urls[idx].replace(/http:\/\//,'');if(self.urlsInfo.ssl[url]&&self.urlsInfo.ssl[url].ready===false){if(dfx.isset(data[url])===true){if(data[url]===true){self.urlsInfo.ssl[url].ready=true;var urlField=WidgetStore.get(self.id+'-urlField-'+idx);var toggWidget=WidgetStore.get(self.id+'-sslToggle-'+idx);urlField.setReadOnly(false);toggWidget.setReadOnly(false);var detailsBtnDiv=dfx.getId(self.id+'-sslDetailsBtn-'+idx);var sslStatusLabel=dfx.getClass('WebPathsManager-sslStatus',detailsBtnDiv.parentNode)[0];var progressDiv=dfx.getClass('WebPathsManager-sslProgress',detailsBtnDiv.parentNode)[0];if(self.urlsInfo.ssl[url].remove===true){dfx.removeClass(sslStatusLabel,'WebPathsManager-sslStatus-active');}else{dfx.showElement(detailsBtnDiv);}
dfx.showElement(dfx.getClass('PlainListWidgetType-deleteOption',dfx.getId('WebPathsManager-urlsList-'+idx))[0]);dfx.hideElement(progressDiv);}else if(data[url]===false){allReady=false;}}}
return true;});if(allReady===true){clearInterval(readyCheck);}});},(1000*5));}
urlList=self.createWidget(self.id+'-urlsList','PlainList',830,false,true,true,urlListItems);urlList.create(function(urlListEl){dfx.getId(self.id+'-domainNames-items').appendChild(urlListEl);});urlList.addRemoveItemCallback(function(idx,removed,deleteBtn){self.setModified(true);if(removed===true){var enabledItems=urlList.getListEnabledItems();if(enabledItems.length===1){var intervention=dfx.getId('lastDomainInter');if(!intervention){var iw=self.createWidget('lastDomainInter','Intervention');iw.setCancelText(null);iw.setConfirmText('Close');iw.create(function(){iw.setSize('200px','61px');iw.setMessage('You can not delete the last domain name');iw.show(deleteBtn,'fixed');});}
return false;}}});_createDomainName(function(el){dfx.getId(self.id+'-domainNames-items').appendChild(el);var _addHomePickerCallbacks=function(){homePagePicker.addSelectedCallback(function(hid){if(hid===parseInt(self.assetid,10)){if(self.currentHome!==null){homePagePicker.setValue(parseInt(self.currentHome,10));}}else{self.currentHome=hid;self.screenModified();}});homePagePicker.setResetConfirmation('Are you sure you want to reset the Home Page?');homePagePicker.addClearAssetidCallback(function(){self.screenModified();});};var homePagePicker=WidgetStore.get(self.id+'-homePage');if(self.urlsInfo.indexid){self.currentHome=self.urlsInfo.indexid;homePagePicker.setValue(parseInt(self.urlsInfo.indexid),_addHomePickerCallbacks);}else{_addHomePickerCallbacks();}
var _notFoundPageCallbacks=function(){notFoundPagePicker.addSelectedCallback(function(){self.screenModified();});notFoundPagePicker.addClearAssetidCallback(function(){self.screenModified();});};var notFoundPagePicker=WidgetStore.get(self.id+'-noFoundPage');if(self.urlsInfo.notfoundid){notFoundPagePicker.setValue(parseInt(self.urlsInfo.notfoundid),_notFoundPageCallbacks);}else{_notFoundPageCallbacks();}});});},createRedirectsSection:function()
{var self=this;var _createRedirect=function(idx,callback,newField){var newField=newField||false;var redirectWrap=document.createElement('div');dfx.addClass(redirectWrap,self.widgetType+'-redirectWrap');var content='<div class="'+self.widgetType+'-redirectWrap-protocol">http://</div>';content+='<div class="'+self.widgetType+'-redirectWrap-textFieldWrap"></div>';content+='<div class="'+self.widgetType+'-redirectWrap-bounceLabel">Bounce to:</div>';content+='<div class="'+self.widgetType+'-redirectWrap-bounceSelect"></div>';content+='<div id="'+self.id+'-redirectDelete-'+idx+'" class="'+self.widgetType+'-redirectWrap-deleteBtn">&nbsp</div>';dfx.setHtml(redirectWrap,content);var urlField=self.createWidget(self.id+'-redirectUrlField-'+idx,'TextField');if(newField===false){urlField.setValue(self.redirects[idx].url.substring(7));}
urlField.create(function(uF){dfx.addEvent(urlField.input,'keyup',function(e){self.screenModified();});var textWrap=dfx.getClass(self.widgetType+'-redirectWrap-textFieldWrap',redirectWrap)[0];textWrap.appendChild(uF);var items={};var bounceSelect=self.createWidget(self.id+'-bounceSelect-'+idx,'Select');var uLen=self.urlsInfo.urls.length;var value=0;for(var i=0;i<uLen;i++){items[i]=self.urlsInfo.urls[i];if(newField===false&&self.redirects[idx].mapped_url===self.urlsInfo.urls[i]){value=i;}}
bounceSelect.addItems(items);bounceSelect.create(function(sEl){var bSelect=dfx.getClass(self.widgetType+'-redirectWrap-bounceSelect',redirectWrap)[0];bSelect.appendChild(sEl);dfx.addEvent(bounceSelect.select,'change',function(e){self.screenModified();});var deleteBtn=dfx.getClass(self.widgetType+'-redirectWrap-deleteBtn',redirectWrap)[0];dfx.addEvent(deleteBtn,'click',function(e){if(dfx.hasClass(deleteBtn,'recover')===true){dfx.removeClass(deleteBtn,'recover');dfx.removeClass(redirectWrap,'deleted');urlField.enable();bounceSelect.enable();}else{dfx.addClass(deleteBtn,'recover');dfx.addClass(redirectWrap,'deleted');urlField.disable();bounceSelect.disable();}
self.screenModified();});bounceSelect.setValue(value);if(callback){callback.call(self,redirectWrap);}});});};this.includeWidgets(['TextField','Select','Button'],function(){var rLen=self.redirects.length;var wrap=document.createElement('div');dfx.addClass(wrap,self.widgetType+'-redirectsWrap');var labelWrap=document.createElement('div');dfx.addClass(labelWrap,self.widgetType+'-labelWrap');var content='<div class="'+self.widgetType+'-redirectsWrap-label">Redirect URL\'s will bounce users to the domain name of your choice.</div>';content+='<div class="'+self.widgetType+'-redirectsWrap-btnWrap"></div>';dfx.setHtml(labelWrap,content);var addBtn=self.createWidget(self.id+'-newRedirect','Button','ButtonWidgetType');addBtn.setName('Add New');addBtn.create(function(bEl){var btnWrap=dfx.getClass(self.widgetType+'-redirectsWrap-btnWrap',labelWrap)[0];btnWrap.appendChild(bEl);wrap.appendChild(labelWrap);dfx.getId(self.id+'-redirects-items').appendChild(wrap);addBtn.addClickEvent(function(e){var index=self.redirects.length+self.newRedirects;self.newRedirects++;_createRedirect(index,function(el){wrap.appendChild(el);dfx.getId(self.id+'-redirectUrlField-'+index).focus();self.screenModified();},true);},true);for(var i=0;i<rLen;i++){(function(idx){_createRedirect(idx,function(el){wrap.appendChild(el);});})(i);}});});},addDeleteButtonEvent:function(id)
{var self=this;var span=dfx.getId(id);dfx.addEvent(span,'click',function(){var count=dfx.attr(this,'count');if(this.className==='deleteAlias'){self.markForDeletion(this);self.hasChanges[count]=true;}else{self.recover(this);delete self.hasChanges[count];}
self.screenModified();});},markForDeletion:function(span)
{var count=dfx.attr(span,'count');var list=dfx.getId(this.id+'-aliasList_'+count);dfx.swapClass(span,'deleteAlias','deleteAlias-recover');dfx.addClass(list,'ListItemWidgetType-recover');this.remove[count]=1;},recover:function(span)
{var count=dfx.attr(span,'count');var list=dfx.getId(this.id+'-aliasList_'+count);dfx.swapClass(span,'deleteAlias-recover','deleteAlias');dfx.removeClass(list,'ListItemWidgetType-recover');this.remove[count]=0;},saveSettings:function()
{var self=this;if(this.assetType==='site'){var params={screen:'LookupEditScreenWidget',type:'save',assetid:this.assetid};var uLen=self.urlsInfo.urls.length;uLen+=self.newDomains;var indexPage=WidgetStore.get(self.id+'-homePage').getValue();var notFoundPage=WidgetStore.get(self.id+'-noFoundPage').getValue();var domainData=[];var certToUpload=[];for(var i=0;i<uLen;i++){var textfield=WidgetStore.get(self.id+'-urlField-'+i);var domainD={domain:'http://'+dfx.trim(textfield.getValue().replace(/^\s*\w+:\/\//,'')),deleted:false,ssl:false};domainD.ready=false;if(dfx.isset(self.urlsInfo.urls[i])===true){domainD.newDomain=false;domainD.oldDomain=self.urlsInfo.urls[i];domainD.ready=self.urlsInfo.ssl[self.urlsInfo.urls[i].replace(/http:\/\//,'')].ready;}else{domainD.newDomain=true;}
if(WidgetStore.get(self.id+'-urlsList').itemIsRemoved(i)===true){domainD.deleted=true;}
var sslToggWdgt=WidgetStore.get(self.id+'-sslToggle-'+i);domainD.ssl=sslToggWdgt.getValue();var ipTextWdgt=WidgetStore.get(self.id+'-sslIpField-'+i);var netTextWdgt=WidgetStore.get(self.id+'-sslNetField-'+i);var fileUpWdgt=WidgetStore.get(self.id+'-sslCrtFile-'+i);domainD.sslIpAddr=ipTextWdgt.getValue();domainD.sslNetAddr=netTextWdgt.getValue();domainD.sslCert=fileUpWdgt.getValue();if(domainD.domain.length>7){domainData.push(domainD);}}
var start=0;var rLen=self.redirects.length;rLen+=self.newRedirects;var redirectData=[];for(var i=start;i<rLen;i++){var url=WidgetStore.get(self.id+'-redirectUrlField-'+i);var mappedUrl=WidgetStore.get(self.id+'-bounceSelect-'+i);var index=parseInt(mappedUrl.getValue());var val=WidgetStore.get(self.id+'-urlField-'+index).getValue();var redirectD={url:'http://'+dfx.trim(url.getValue().replace(/^\s*\w+:\/\//,'')),mappedUrl:'http://'+dfx.trim(val),deleted:false};if(dfx.isset(self.redirects[i])===true){redirectD.newRedirect=false;redirectD.oldUrl=self.redirects[i].url;redirectD.oldMappedUrl=self.redirects[i].mapped_url;}else{redirectD.newRedirect=true;}
var btn=dfx.getId(self.id+'-redirectDelete-'+i);if(dfx.hasClass(btn,'recover')===true){redirectD.deleted=true;}
if(redirectD.url.length>7){redirectData.push(redirectD);}}
self.displayDisabledDiv(true);self._uploadCertFiles(domainData,function(success){if(success!==true){self.showError([success],function(){self.resetSite();self.removeDisabledDiv(null,true);});return;}
params.type='saveSite';params.domainData=dfx.jsonEncode(domainData);params.redirectData=dfx.jsonEncode(redirectData);params.indexPage=dfx.jsonEncode(indexPage);params.notFoundPage=dfx.jsonEncode(notFoundPage);this.displayDisabledDiv(true);var lookupEditScreen=WidgetStore.get('LookupEditScreen');lookupEditScreen.parent.processScreen(params,function(data){if(data.errors){self.setModified(true);return;}
var dLen=domainData.length;var saveDiv=dfx.getClass('saveCompleted-msg',document.body)[0];var modeScreen='?initialMode=EditScreenMode&initialScreen=LookupEditScreenWidget';if(dLen===1&&domainData[0].deleted===false){if(domainData[0].domain!==domainData[0].oldDomain){if(saveDiv){dfx.setHtml(saveDiv,'Currently re-directing...');}
Locking.release();var pos=(domainData[0].domain.length-1);if(domainData[0].domain[pos]==='/'){window.location.href=domainData[0].domain.substring(0,pos)+'/_edit'+modeScreen;return;}else{window.location.href=domainData[0].domain+'/_edit'+modeScreen;return;}}}else{var currentDomain=window.location.href.replace('/_edit','');var redirectDomain='';var performRedirect=false;for(var i=0;i<dLen;i++){if(domainData[i].deleted===true){if(domainData[i].domain===currentDomain){performRedirect=true;}}else{redirectDomain=domainData[i].domain;}}
if(performRedirect===true&&redirectDomain!==''){if(saveDiv){dfx.setHtml(saveDiv,'Currently re-directing...');window.location.href=redirectDomain+'/_edit'+modeScreen;return;}}}
self.resetSite();self.removeDisabledDiv(null,true);},true)});}else{var url=WidgetStore.get(this.id+'-url-change').getValue();var alias=WidgetStore.get(this.id+'-alias-add').getValue();var len=this.remove.length;var rm=[];for(var i=0;i<len;i++){if(this.remove[i]===1){rm.push(this.aliases[i]);}}
var params={screen:'LookupEditScreenWidget',type:'save',assetid:this.assetid,oldUrl:this.oldUrl,newUrl:url,alias:alias,remove:dfx.jsonEncode(rm)};this.displayDisabledDiv(true);var lookupEditScreen=WidgetStore.get('LookupEditScreen');lookupEditScreen.parent.processScreen(params,function(data,respData){if(data.errors){if(dfx.isset(respData)===true&&dfx.isset(respData.redirect)===true){data.redirect=respData.redirect;}}
if(dfx.isset(data.redirect)===true){self.displayDisabledDiv(true,null,null,null,'Currently re-directing...');var pos=(data.redirect.length-1);if(data.redirect[pos]==='/'){window.location.href=data.redirect.substring(0,pos);}else{window.location.href=data.redirect;}}else{self.removeDisabledDiv(null,true);self.reload();}},true);}},_uploadCertFiles:function(domainData,callback)
{var self=this;var filesToUpload=[];dfx.foreach(domainData,function(idx){if(domainData[idx].sslCert&&domainData[idx].sslCert!==''){filesToUpload.push(idx);}
return true;});if(filesToUpload.length>0){var _uploadCertFilesRecursive=function(fileCountIndex){var idx=filesToUpload[fileCountIndex];var fileUploadWdgt=WidgetStore.get(self.id+'-sslCrtFile-'+idx);var fileUploadForm=dfx.getId(self.id+'-sslCertFileForm-'+idx);var qs='?widget=LookupEditScreenWidget&action=uploadCert';fileUploadForm.setAttribute('action',Widget.EDIT_URL+qs);fileUploadWdgt.setForm(fileUploadForm);fileUploadForm.domainData.value=dfx.jsonEncode(domainData[idx]);fileUploadForm.submit();var failsafeCount=0;var pt=setInterval(function(){var url=Widget.CURRENT_URL+'/'+Widget.CURRENT_SUFFIX;var params={widget:'LookupEditScreenWidget',action:'uploadCheck',domain:domainData[idx].domain};dfx.post(url,params,function(done){failsafeCount++;if(failsafeCount>45){clearInterval(pt);if(callback){callback.call(self,'Failed to upload PEM file(s)');}}
if(done==='completed'){clearInterval(pt);if(fileCountIndex<(filesToUpload.length-1)){_uploadCertFilesRecursive(fileCountIndex+1);}else{if(callback){callback.call(self,true);}}}});},1000);};_uploadCertFilesRecursive(0);}else{if(callback){callback.call(self,true);}}},resetSite:function(callback)
{var self=this;var params={mode:'EditScreenMode',screen:'LookupEditScreenWidget',type:'getScreenData',assetid:this.assetid};var lookupEditScreen=WidgetStore.get('LookupEditScreen');lookupEditScreen.parent.getScreenData(params,function(data){data=dfx.jsonDecode(data);self.urlsInfo=dfx.clone(data.urlInfo);self.redirects=dfx.clone(data.redirect);self.newDomains=0;self.newRedirects=0;dfx.getId(self.id+'-domainNames-items').innerHTML='';dfx.getId(self.id+'-redirects-items').innerHTML='';self.init();});},reload:function()
{var les=WidgetStore.get('LookupEditScreen');les.reload();},setReadOnly:function(readOnly)
{var self=this;if(this.assetType==='site'){this.readOnly=readOnly;var _setReadOnly=function(){var uLen=self.urlsInfo.length;uLen+=self.newDomains;for(var i=0;i<uLen;i++){var textfield=WidgetStore.get(self.id+'-urlField-'+i);textfield.setReadOnly(readOnly);if(readOnly){dfx.hideElement(dfx.getId(self.id+'-domainDelete-'+i));}else{dfx.showElement(dfx.getId(self.id+'-domainDelete-'+i));}}
var homePicker=WidgetStore.get(self.id+'-homePage','AssetPicker');var notfPicker=WidgetStore.get(self.id+'-noFoundPage','AssetPicker');if(homePicker){homePicker.setReadOnly(readOnly);}
if(notfPicker){notfPicker.setReadOnly(readOnly);}
var start=0;var rLen=self.redirects.length;for(var i=start;i<rLen;i++){var url=WidgetStore.get(self.id+'-redirectUrlField-'+i);var mappedUrl=WidgetStore.get(self.id+'-bounceSelect-'+i);url.setReadOnly(readOnly);mappedUrl.setReadOnly(readOnly);if(readOnly){dfx.hideElement(dfx.getId(self.id+'-redirectDelete-'+i));}else{dfx.showElement(dfx.getId(self.id+'-redirectDelete-'+i));}}
if(WidgetStore.get(self.id+'-domainNames-Button-AddNew')){WidgetStore.get(self.id+'-domainNames-Button-AddNew').setReadOnly(readOnly);}
if(WidgetStore.get(self.id+'-newRedirect')){WidgetStore.get(self.id+'-newRedirect').setReadOnly(readOnly);}};var waitDom=function(){var uLen=self.urlsInfo.length;uLen+=self.newDomains;var ready=true;for(var i=0;i<uLen;i++){var textfield=dfx.getId(self.id+'-urlField-'+i);var homePicker=dfx.getId(self.id+'-homePage');var notfPicker=dfx.getId(self.id+'-noFoundPage');if(dfx.isset(textfield)===false||dfx.isset(homePicker)===false||dfx.isset(notfPicker)===false){ready=false;break;}}
if(ready===true){var start=0;var rLen=self.redirects.length;for(var i=start;i<rLen;i++){var url=dfx.getId(self.id+'-redirectUrlField-'+i);var mappedUrl=dfx.getId(self.id+'-bounceSelect-'+i);if(dfx.isset(url)===false||dfx.isset(mappedUrl)===false){ready=false;}}}
if(ready===true){_setReadOnly();}else{setTimeout(function(){waitDom();},100);}};waitDom();}else{var list=dfx.getId(this.id+'-aliasList');if(readOnly){this.disableSaveButton();dfx.swapClass(list,'notReadOnly','readOnly');}else{dfx.swapClass(list,'readOnly','notReadOnly');}
if(this.assetType==='site'){}else{var url=WidgetStore.get(this.id+'-url-change');var alias=WidgetStore.get(this.id+'-alias-add');if(this.assetType==='projectFolder'){url.setReadOnly(true);alias.setReadOnly(true);}else{url.setReadOnly(readOnly);alias.setReadOnly(readOnly);}}}},forceEdit:function()
{if(this.assetType==='site'){var uLen=this.urlsInfo.urls.length;uLen+=this.newDomains;var indexPage=WidgetStore.get(this.id+'-homePage').setReadOnly(false);var notFoundPage=WidgetStore.get(this.id+'-noFoundPage').setReadOnly(false);for(var i=0;i<uLen;i++){var textfield=WidgetStore.get(this.id+'-urlField-'+i);if(textfield){textfield.setReadOnly(false);}}}else{var list=dfx.getId(this.id+'-aliasList');dfx.swapClass(list,'readOnly','notReadOnly');var url=WidgetStore.get(this.id+'-url-change');var alias=WidgetStore.get(this.id+'-alias-add');if(this.assetType==='projectFolder'){url.setReadOnly(true);alias.setReadOnly(true);}else{url.setReadOnly(false);alias.setReadOnly(false);}}}};dfx.inherits('WebPathsManager','Widget');function WizardAssetTypeWidgetType(id,assetTypes)
{Widget.call(this,id);this.widgetType='WizardAssetType';this.domElem=dfx.getId(this.id);this.assetTypes={};this.marked={};if(this.domElem){this.init();}}
WizardAssetTypeWidgetType.prototype={init:function()
{var self=this;var c=this.getClass();var button=WidgetStore.get(this.id+'-button');var table=WidgetStore.get(this.id+'-table');var select=WidgetStore.get(this.id+'-select');var colClass=[c+'-table-icon',c+'-table-name',c+'-table-inherit',c+'-table-delete'];if(button&&table&&select){button.disable();select.addItemSelectedEvent(function(val){if(val!==0){button.enable();}else{button.disable();}});button.addClickEvent(function(){var val=select.getValue();if(dfx.getId(table.getRowElement(val))){return;}
AssetManager.getAssetTypeInfos([val],function(typeInfo){typeInfo=typeInfo[0];var typeIcon='<div style="background-image: url('+typeInfo.iconURL+');"></div>';var delIcon='<span class="delete"> &nbsp;</span>';self.includeWidget('RadioButton',function(){var iid=self.id+'-'+val+'-inherit';var radio=self.createWidget(iid,'RadioButton');radio.setLabel('Inherit');radio.setLabelPos('left');radio.setShowLabel(true);radio.create(function(el){var row=table.createRowAsElement([typeIcon,typeInfo.name,el,delIcon],colClass,val);table.addRow(row);});});self.assetTypes[val]=false;});});table.addClickEvent(this.id,function(rowid,colidx,elem){var type=rowid.split('-');type=type[(type.length-1)];if(type){if(colidx===3||dfx.hasClass(elem,'delete')===true){self.toggleDeletion(rowid,type);}else if(colidx===2||dfx.hasClass(elem,'RadioButtonWidgetType')===true){self.toggleInheritance(rowid,type);}}});}},toggleDeletion:function(rowid,type)
{var row=dfx.getId(rowid);var check=WidgetStore.get(this.id+'-'+type+'-inherit');if(this.marked.hasOwnProperty(type)===false){this.marked[type]=true;dfx.addClass(row,'marked');check.disable();}else{delete this.marked[type];dfx.removeClass(row,'marked');check.enable();}},toggleInheritance:function(rowid,type)
{if(this.marked.hasOwnProperty(type)===true){return;}
var check=WidgetStore.get(this.id+'-'+type+'-inherit');if(this.assetTypes[type]!==true){this.assetTypes[type]=true;check.check();}else{this.assetTypes[type]=false;check.uncheck();}},getValue:function()
{for(var type in this.marked){delete this.assetTypes[type];}
return this.assetTypes;},setValue:function(value)
{this.assetTypes=value||{};}};dfx.inherits('WizardAssetType','Widget');function WizardDivWidgetType(id,wid,unique)
{Widget.call(this,id);this.widgetType='WizardDiv';this.lockActions=[];this.widgetId=wid;this.unique=unique;this.lockIcon=dfx.getClass(this.getClass()+'-lock',dfx.getId('wizardWidget-'+this.widgetId))[0];if(this.lockIcon){this.addEvent();}}
WizardDivWidgetType.prototype={addEvent:function()
{var self=this;dfx.addEvent(this.lockIcon,'click',function(e){dfx.toggleClass(self.lockIcon,'locked');self.fireLockActions(dfx.hasClass(self.lockIcon,'locked'));});},isUnique:function()
{return this.unique;},getWidgetId:function()
{return this.widgetId;},show:function()
{dfx.addClass(this.lockIcon,'active');},hide:function()
{dfx.removeClass(this.lockIcon,'active');},addLockAction:function(action)
{if(this.unique===false){this.lockActions.push(action);}},fireLockActions:function(checked)
{var lockActionLen=this.lockActions.length;for(var i=0;i<lockActionLen;i++){this.lockActions[i].call(this,checked);}},_addEvents:function()
{if(dfx.isset(this.lockIcon)===true){var self=this;dfx.addEvent(this.lockIcon,'click',function(e){self.fireLockActions(dfx.hasClass(self.lockIcon,'locked'));});}},setLockState:function(locked,changeOnly)
{if(this.lockIcon){if(locked===true){dfx.addClass(this.lockIcon,'locked');}else{dfx.removeClass(this.lockIcon,'locked');}
if(changeOnly===false){this.fireLockActions(locked);}}},showCheckbox:function()
{this.show();},hideCheckbox:function()
{this.hide();}};dfx.inherits('WizardDiv','Widget');function WizardRunnerWidgetType(id,wizardid,wizardidForLabel,wizardDivids,presetValues)
{Widget.call(this,id);this.widgetType='WizardRunner';this.wizardid=wizardid;this.wizardidForLabel=wizardidForLabel;this.wizardDivids=wizardDivids;this.presetValues=presetValues;this.info={};this.dialogWidget=null;this.wizardStepManager=null;this.wizardStepList=null;this.customProcessFn=null;if(wizardid){WidgetStore.setData('activeWizardAssetType',wizardid.replace(/_create_wizard/,''));}}
WizardRunnerWidgetType.prototype={init:function()
{var self=this;this.dialogWidget=WidgetStore.get('WizardModalDialog');this.wizardStepManager=WidgetStore.get('WizardRunner-wizardStepManager');this.wizardStepList=WidgetStore.get('WizardRunner-wizardSteps');this.initialized=true;this.customProcessFn=null;this.wizardStepManager.resetStepChangedActions();this.wizardStepManager.resetProcessActions();this.wizardStepManager.resetUpdateErrorsActions();this.loadWizardContents(function(){self.dialogWidget.setTitle(self.info.title+' Wizard',true);self.dialogWidget.setSubTitle(self.info.description,true);self.dialogWidget.setIcon(self.info.icon);self.dialogWidget.closeConfirm=true;self.dialogWidget.closeConfirmTitle='Confirm Close';self.dialogWidget.closeConfirmText='You are about to close wizard and the changes will be lost.<br />Are you sure you want to continue?';self.wizardStepManager.setRules(self.rules);self.wizardStepManager.setSteps(self.steps);self.wizardStepManager.setWizardIdForLabel(self.wizardidForLabel);self.wizardStepManager.setWizardDivIds(self.wizardDivids);self.wizardStepManager.addWizardButtons(self.dialogWidget);self.wizardStepManager.addStepChangedAction(function(stepIndex){self.wizardStepList.setCurrentStep(stepIndex);});self.wizardStepManager.addProcessAction(function(steps){self.processWizard(steps);});self.wizardStepManager.addUpdateErrorsAction(function(step){self.wizardStepList.setStepState((step+1),self.wizardStepManager.getStepState(step));});if(dfx.isset(self.info.createWidget)===true){self.includeWidget(self.info.createWidget,function(){self.createWidget(null,self.info.createWidget);});}
for(var wid in self.presetValues){if(self.presetValues.hasOwnProperty(wid)===true){var widget=WidgetStore.get(wid);if(widget.domEl.tagName.toLowerCase()==='select'){var opLen=widget.domEl.options.length;for(var i=0;i<opLen;i++){if(self.presetValues[wid]+''===widget.domEl.options[i].value){break;}}
widget.domEl.selectedIndex=i;}else{widget.setValue(self.presetValues[wid]);}}}});},loadWizardContents:function(callback)
{var self=this;var args={widget:'WizardRunnerWidget',action:'getWizardContents',wizardid:this.wizardid,stepid:this.stepid};dfx.getJSON(this.url,args,function(data){if(dfx.isset(data.info)===true){self.info=data.info;}
if(dfx.isset(data.steps)===true){self.steps=data.steps;}
if(dfx.isset(data.rules)===true){self.rules=data.rules;}
if(dfx.isFn(callback)===true){callback.call(self);}});},processWizard:function(steps)
{var values=this.wizardStepManager.getValues();if(dfx.isFn(this.customProcessFn)===true){this.customProcessFn.call(this,steps,values);return;}
var args=this.getProcessParams();args.steps=dfx.jsonEncode(values);var self=this;var message='';dfx.post(this.url,args,function(data){var result=dfx.jsonDecode(data);self.wizardStepManager._showCompleteMsg(result);},null,60);},getProcessParams:function()
{var args={widget:'WizardRunnerWidget',action:'processSave',wizardid:this.wizardid};return args;},setCustomProcessFn:function(fn)
{this.customProcessFn=fn;},setConfirmStepElem:function(elem)
{this.wizardStepManager.setConfirmStepElem(elem);}};dfx.inherits('WizardRunner','Widget');function WizardStepsWidgetType(id)
{Widget.call(this,id);this.widgetType='WizardSteps';this.domElem=dfx.getId(this.id);this.stepElems=[];this.wizardStepManager=WidgetStore.get('WizardRunner-wizardStepManager');this.init();}
WizardStepsWidgetType.prototype={init:function(callback)
{var self=this;this.stepElems=dfx.getClass(this.getClass()+'-item',this.domElem,'li');dfx.addEvent(this.stepElems,'click',function(e){var element=dfx.getMouseEventTarget(e);while(element&&element.tagName.toLowerCase()!=='li'){element=element.parentNode;}
var index=0;if(element){while(element.previousSibling){if(element.tagName&&element.tagName.toLowerCase()==='li'){index++;}
element=element.previousSibling;}}
if(index>0){index--;}
if(self.wizardStepManager.visitedStepCount>=index){if(self.wizardStepManager.getCurrentStep()!==index){self.wizardStepManager.setCurrentStep(index);}}});},setCurrentStep:function(step)
{step++;dfx.removeClass(this.stepElems,'selected');dfx.removeClass(this.stepElems,'aselected');dfx.addClass(this.stepElems[step],'selected');dfx.addClass(this.stepElems[(step-1)],'aselected');},setStepState:function(step,state)
{dfx.removeClass(this.stepElems[step],'error');dfx.removeClass(this.stepElems[step],'completed');if(state==='completed'||state==='error'){dfx.addClass(this.stepElems[step],state);}}};dfx.inherits('WizardSteps','Widget');function WizardSummaryWidgetType(id)
{Widget.call(this,id);this.widgetType='WizardSummary';}
WizardSummaryWidgetType.prototype={init:function()
{var self=this;var cats=dfx.getClass(this.getClass()+'-categories-name',dfx.getId('WizardSummary-cateogires'));dfx.addEvent(cats,'click',function(e){var target=dfx.getMouseEventTarget(e);self.showCategtory(target.getAttribute('category'));});var wizElems=dfx.getClass(this.getClass()+'-wizardsList-wizCont');var wln=wizElems.length;for(var i=0;i<wln;i++){this._addHoverEvent(wizElems[i]);this._addWizardClickEvent(wizElems[i]);}},_addWizardClickEvent:function(wizElem)
{var id=wizElem.id;var wizardid=id.replace(this.id+'-wizardsList-wiz-','');var self=this;dfx.addEvent(wizElem,'click',function(){self.createRunner(wizardid);});},_addHoverEvent:function(wizElem)
{dfx.hover(wizElem,function(e){dfx.addClass(wizElem,'hover');},function(e){dfx.removeClass(wizElem,'hover');});},showCategtory:function(cat)
{var elems=dfx.getClass(this.getClass()+'-wizardsList-catCont',dfx.getId('WizardSummary-wizardsList'));dfx.addClass(elems,'hidden');dfx.removeClass(dfx.getId(this.id+'-wizardsList-cat-'+cat),'hidden');var cats=dfx.getClass(this.getClass()+'-categories-name',dfx.getId('WizardSummary-cateogires'));dfx.removeClass(cats,'selected');dfx.addClass(dfx.getId(this.id+'-categories-'+cat),'selected');},createRunner:function(wizardId)
{var wizardModal=WidgetStore.get('WizardModalDialog');var contentParam={widgetType:'WizardRunner',widgetId:'WizardRunner',widgetArgs:dfx.jsonEncode([wizardId])};wizardModal.setDynamicParams(contentParam);wizardModal.update();}};dfx.inherits('WizardSummary','Widget');function WorkflowAdminScreenStreamWidgetType(id)
{Widget.call(this,id);this.widgetType='WorkflowAdminScreenStream';}
WorkflowAdminScreenStreamWidgetType.ptototype={create:function(callback)
{var self=this;if(dfx.isFn(callback)===true){callback.call(this);}}};dfx.inherits('WorkflowAdminScreenStream','Widget');function AssetPickerListViewWidgetType(id,picker)
{AbstractAssetPickerViewWidgetType.call(this,id,picker);this.widgetType='AssetPickerListView';this.columnBuilding=false;this.populated=false;this.preSelect=null;}
AssetPickerListViewWidgetType.prototype={create:function(callback)
{this.colWidth=222;var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);this.domElem=main;var wrapper=document.createElement('div');dfx.addClass(wrapper,c+'-wrapper');main.appendChild(wrapper);this.wrapper=wrapper;callback.call(this,main);},update:function(clear,callback)
{if(clear===true){dfx.empty(this.wrapper);this.populated=false;var container=document.createElement('div');var c=this.getClass();dfx.attr(container,'id',c+'-projects');dfx.addClass(container,c+'-col');this.wrapper.appendChild(container);dfx.hideElement(container);}
if(callback){callback.call(this);}},showChildren:function(assetid,callback)
{var self=this;var limit=3;var pos=2;if(this.populated===true){limit=2;pos=1;}
if(parseInt(assetid,10)===parseInt(this.picker.projectid,10)){this._populateProjectColumn();this._createColumn(this.picker.projectFoldersFiltered,function(){if(this.lineage.length>=limit){if(self.active===true){jQuery(this.domElem).scrollTo(((this.lineage.length-pos)*this.colWidth),{axis:'x',duration:500});}}
if(dfx.isFn(callback)===true){callback.call(this);}});}else{var loadingCol=self._createLoadingColumn();this.getChildrenInfo(assetid,function(assets){self._populateProjectColumn();self._createColumn(assets,function(){if(this.lineage.length>=limit){if(self.active===true){jQuery(this.domElem).scrollTo(((this.lineage.length-pos)*this.colWidth),{axis:'x',duration:500});}}
if(dfx.isFn(callback)===true){callback.call(this);}},loadingCol);});}},getAssetElement:function(colIndex,assetid)
{var columns=this.getColumns();var safeId=this._getSafeAssetid(assetid);var assetElem=dfx.getClass('asset_'+safeId,columns[colIndex])[0];return assetElem;},getColumns:function()
{return dfx.getClass(this.getClass()+'-col',this.domElem);},getColumnIndex:function(col)
{var columns=this.getColumns();var ln=columns.length;for(var i=0;i<ln;i++){if(col===columns[i]){return i;}}
return-1;},_populateProjectColumn:function()
{var show=false;if(this.picker.hasOwnProperty('lineage')===true){if(this.picker.lineage!==null&&this.picker.lineage.hasOwnProperty('hideProject')===true){if(this.picker.lineage.hideProject===false){show=true;}}}
var c=this.getClass();var container=dfx.getId(c+'-projects');if(show===true&&container&&this.populated===false){dfx.showElement(container);this.populated=true;var assets=this.picker.projects.projects;var alen=assets.length;for(var i=0;i<alen;i++){var item=document.createElement('div');dfx.addClass(item,c+'-project');dfx.addClass(item,'asset_'+assets[i].id);var content='<div class="'+c+'-project-title">';content+='  <span>';content+='    <em>'+assets[i].type+'</em>';content+=assets[i].name;content+='  </span>';content+='</div>';dfx.setHtml(item,content);container.appendChild(item);if(parseInt(this.picker.projectid,10)===assets[i].id){dfx.addClass(item,'active');}
this._addProjectClickedEvent(item,assets[i]);}
this._updateWrapperWidth();}},_addProjectClickedEvent:function(elem,asset)
{var self=this;dfx.addEvent(elem,'click',function(e){var projects=dfx.getClass(self.getClass()+'-project');dfx.removeClass(projects,'active');dfx.addClass(elem,'active');self.picker.switchProject(asset.id,function(){self.initAutoScroll(false);});});},setPreselect:function(lineage)
{this.preSelect=lineage;},autoScroll:function(index)
{var self=this;if(this.preSelect===null||this.preSelect.length===0){this.preSelect=null;return;}
var assetid=this.preSelect.shift();var tilda=(assetid+'').indexOf('~');if(tilda===-1){assetid=parseInt(assetid,10);}
if(index===0){if(assetid===parseInt(this.picker.projectid,10)){this.setRoot(assetid,true,function(){self.autoScroll(index+1);});return;}}
this.columnBuilding=true;this.colItemClicked(index,assetid,null,function(){self.fireLineageUpdatedActions();self.columnBuilding=false;self.autoScroll(index+1);})},initAutoScroll:function(noSelect,lineage,callback)
{if(dfx.isset(lineage)===false){lineage=[this.picker.projectid,this.picker.projectFoldersFiltered[0].id];if(noSelect===false&&this.picker.projectFolders.hasOwnProperty('currentAssetLineage')===true){var valid=false;var pid=parseInt(this.picker.projectFolders.currentAssetLineage[1],10);var fLen=this.picker.projectFoldersFiltered.length;for(var fdx=0;fdx<fLen;fdx++){var fid=parseInt(this.picker.projectFoldersFiltered[fdx].id,10);if(fid===pid){valid=true;break;}}
if(valid===true){lineage=this.picker.projectFolders.currentAssetLineage;}}}
var self=this;AssetManager.getAsset(lineage[(lineage.length-1)],function(asset){self.picker._updateCurrentSelection(asset);self.setPreselect(lineage);self.autoScroll(0);if(callback){callback.call(self);}});},_createLoadingColumn:function()
{var c=this.getClass()+'-col';var col=document.createElement('div');dfx.addClass(col,c);dfx.addClass(col,'loadingColumn');dfx.setHtml(col,'Loading...&nbsp;&nbsp;');this.wrapper.appendChild(col);this._updateWrapperWidth();return col;},_createColumn:function(assets,callback,loadingColumn)
{var col=null;if(!loadingColumn){var c=this.getClass()+'-col';col=document.createElement('div');dfx.addClass(col,c);}else{col=loadingColumn;dfx.empty(col);dfx.removeClass(col,'loadingColumn');}
var wrapper=document.createElement('div');dfx.addClass(wrapper,c+'-wrapper');col.appendChild(wrapper);var aln=assets.length;for(var i=0;i<aln;i++){wrapper.appendChild(this._createColItem(assets[i],col));}
if(!loadingColumn){this.wrapper.appendChild(col);}
this._updateWrapperWidth();callback.call(this);},_updateWrapperWidth:function()
{var cols=dfx.getClass(this.getClass()+'-col',this.wrapper);var len=cols.length;if(this.populated===false){len-=1;}
if(len>0){dfx.setStyle(this.wrapper,'width',(len*this.colWidth)+'px');}},_createColItem:function(asset,col)
{var c=this.getClass()+'-item';var main=document.createElement('div');var safeId=this._getSafeAssetid(asset.id);dfx.addClass(main,c+' asset_'+safeId);var content='<div class="'+c+'-icon" style="background-image:url('+asset.iconUrl+');"></div>';content+='<div class="'+c+'-title" title="'+asset.name+' [#'+asset.id+']">'+dfx.ellipsize(asset.name,20)+'</div>';if(asset.children&&asset.children.length>0){content+='<div class="'+c+'-childCount"><span>'+asset.children.length+'</span></div>';}
dfx.setHtml(main,content);var self=this;dfx.addEvent(main,'click',function(e){if(self.columnBuilding===false){self.columnBuilding=true;self.fireAssetSelected(asset);self.colItemClicked(self.getColumnIndex(col),asset.id,e,function(){self.fireLineageUpdatedActions();self.columnBuilding=false;});}});return main;},_selectLineage:function(lineage)
{if(!lineage){return;}
var ln=lineage.length;for(var i=0;i<ln;i++){this._selectAsset(i,lineage[i]);}},_selectAsset:function(colIndex,assetid,noReset)
{var columns=this.getColumns();var c=this.getClass()+'-item';var col=columns[colIndex];var lineage=dfx.clone(this.lineage);for(var i=0;i<colIndex;i++){dfx.removeClass(dfx.getClass(c,columns[i]),'last');dfx.removeClass(dfx.getClass(c,columns[i]),'selected');var safeId=this._getSafeAssetid(lineage[i]);dfx.addClass(dfx.getClass('asset_'+safeId,columns[i]),'selected');}
if(noReset!==true||colIndex!==this.prevSelectedColIdx){dfx.removeClass(dfx.getClass(c,col),'selected');dfx.removeClass(this.previousSelected,'last');this.selectedAssets=[assetid];}else{var index=this.selectedAssets.find(assetid);if(index===-1){this.selectedAssets.push(assetid);}else{this.selectedAssets.splice(index,1);var safeId=this._getSafeAssetid(assetid);dfx.removeClass(dfx.getClass('asset_'+safeId,columns[colIndex]),'last');dfx.removeClass(dfx.getClass('asset_'+safeId,columns[colIndex]),'selected');return false;}}
var elem=this.getAssetElement(colIndex,assetid);dfx.addClass(elem,'selected last');this.previousSelected=[elem];this.prevSelectedColIdx=colIndex;if(elem){return true;}
return false;},colItemClicked:function(colIndex,assetid,evt,callback)
{var columns=this.getColumns();var col=columns[colIndex];var c=this.getClass()+'-item';var safeId=this._getSafeAssetid(assetid);var main=dfx.getClass('asset_'+safeId,col)[0];while(col.nextSibling){dfx.remove(col.nextSibling);}
var self=this;var noReset=false;if(this.picker.uniqueSelect===false&&evt&&evt.metaKey===true){noReset=true;}
this._selectAsset(colIndex,assetid,noReset);this.picker.getAssetWithChildren(assetid,function(asset){self.currentAssetid=asset.id;if(asset.children&&asset.children.length>0){self.showChildren(asset.id,function(){colIndex++;self._updateLineage(colIndex,asset.id,(asset.children&&asset.children.length>0));if(callback){callback.call(self);}});}else{colIndex++;self._updateLineage(colIndex,asset.id,(asset.children&&asset.children.length>0));if(callback){callback.call(self);}}});},_updateLineage:function(colIndex,assetid,append)
{colIndex-=1;for(var i=(this.lineage.length-1);i>=colIndex;i--){this.lineage.pop();}
if(append===true){this.lineage.push(assetid);}},setRoot:function(assetid,setCurrent,callback)
{this.lineage=[assetid];this.rootAssetid=assetid;if(setCurrent===true){this.setCurrentAsset(assetid,true,callback);}else{this.update(true);}},setCurrentAsset:function(assetid,clear,callback)
{var index=this.lineage.find(assetid);if(index>0){this.colItemClicked(index,assetid);return;}else if(index===0){clear=true;}
this.currentAssetid=assetid;this.update(clear);this.showChildren(assetid,callback);},setLineage:function(lineage,selectedAssets)
{var self=this;this.setRoot(lineage[0],true,function(){self.lineage=[lineage[0]];self._setLineage(lineage,0,selectedAssets);});},_setLineage:function(lineage,index,selectedAssets)
{index=index||1;if(index>=lineage.length){return;}
var self=this;this.showChildren(lineage[index],function(){self._selectAsset((index-1),lineage[index]);self.lineage.push(lineage[index]);if((index+1)===lineage.length){self.setSelectedAssets(selectedAssets);}
self._setLineage(lineage,++index,selectedAssets);});},setSelectedAssets:function(assets)
{if(!assets){return;}
var columns=this.getColumns();var ln=columns.length;var colIdx=0;if((assets instanceof Array)===true){var aln=assets.length;if(aln>0){colIdx=(ln-1);for(var i=0;i<aln;i++){var noReset=true;if(i===0){noReset=false;}
if(this._selectAsset(colIdx,assets[i],noReset)===false){colIdx=(ln-2);if(colIdx<0){return;}}}}}else if((typeof assets)==='number'){colIdx=(ln-1);if(this._selectAsset(colIdx,assets)===false){colIdx=(ln-2);if(colIdx<0){return;}}}},getButtons:function()
{var button=document.createElement('div');button.title='List View';dfx.addClass(button,this.getClass()+'-listButton');return{list:button};},show:function(type)
{this.active=true;},hide:function(type)
{this.active=false;},getChildrenInfo:function(assetid,callback)
{var self=this;this.picker.getAsset(assetid,function(asset){if(asset&&asset.children&&asset.children.length>0){self.picker.getAssets(asset.children,function(assets){if(callback){callback.call(self,assets);}});}});},_getSafeAssetid:function(assetid)
{var cleanid=assetid.toString().replace(/[^a-zA-Z0-9_-]/gi,function(char){return char.charCodeAt(0);});return cleanid;}};dfx.inherits('AssetPickerListView','AbstractAssetPickerView');function AssetPickerSearchViewWidgetType(id,picker)
{AbstractAssetPickerViewWidgetType.call(this,id,picker);this.widgetType='AssetPickerSearchView';this.textFieldWidget=null;this._listContainer=null;this._infoPanel=null;}
AssetPickerSearchViewWidgetType.prototype={create:function(callback)
{var main=document.createElement('div');var c=this.getClass();dfx.addClass(main,c);this.domElem=main;var content='<div class="'+c+'-left">';content+='<div class="'+c+'-left-title"></div>';content+='<div class="'+c+'-left-desc"></div>';content+='<div class="'+c+'-left-thumb"></div>';content+='<div class="'+c+'-left-location-title">Location</div>';content+='<div class="'+c+'-left-location"></div>';content+='<div class="'+c+'-left-showLocButton"></div>';content+='<div class="'+c+'-left-noResults"></div>';content+='</div>';content+='<div class="'+c+'-right">';content+='<div class="'+c+'-right-results"></div>';content+='<div class="'+c+'-right-noResults">No results to display, please adjust your search terms.</div>';content+='</div>';dfx.setHtml(main,content);this._infoPanel={name:dfx.getClass(c+'-left-title',main)[0],desc:dfx.getClass(c+'-left-desc',main)[0],thumb:dfx.getClass(c+'-left-thumb',main)[0],loc:dfx.getClass(c+'-left-location',main)[0]}
this._leftNoResultsCont=dfx.getClass(c+'-left-noResults',main)[0];this._listContainer=dfx.getClass(c+'-right-results',main)[0];this._noResultsContainer=dfx.getClass(c+'-right-noResults',main)[0];var self=this;this.includeWidget('Button',function(){var showLoc=self.createWidget(null,'Button','ButtonWidgetType-liteGrey');showLoc.setName('Show Location');showLoc.create(function(el){var btncont=dfx.getClass(c+'-left-showLocButton',main)[0];btncont.appendChild(el);showLoc.addClickEvent(function(){self.fireLineageUpdatedActions();self.fireSwitchOffActions();});callback.call(self,main);return;});});},getButtons:function()
{var main=document.createElement('div');dfx.addClass(main,this.getClass()+'-Search');var cancel=document.createElement('div');dfx.addClass(cancel,this.getClass()+'-Search-cancel');main.appendChild(cancel);dfx.addEvent(cancel,'click',function(){self.textFieldWidget.setValue('');self.fireSwitchOffActions();});var label=document.createElement('span');dfx.setHtml(label,'Search');main.appendChild(label);var self=this;this.includeWidgets(['TextField','Button'],function(){self.textFieldWidget=self.createWidget(null,'TextField');self.textFieldWidget.setDisplayAsBlock(false);self.textFieldWidget.setWidth(150);var button=self.createWidget(null,'Button','ButtonWidgetType-liteGrey');button.setName('Go');self.textFieldWidget.create(function(tel){self.textFieldWidget.addOnChangeEvent(function(val,evt){if(evt.keyCode===13){if(dfx.trim(val).length===0){return;}
self.search();self.picker.showView('search','search');self.picker.hideViewButtons();}});main.appendChild(tel);button.create(function(bel){main.appendChild(bel);});button.addClickEvent(function(){if(dfx.trim(self.textFieldWidget.getValue()).length>0){self.search();self.picker.showView('search','search');self.picker.hideViewButtons();}});});});return{search:main,_noEvent:true};},search:function(value)
{var value=dfx.trim(this.textFieldWidget.getValue());var locations=this.picker.getLocationsIds();if(value.length>0){var self=this;AssetManager.searchAsset(value,function(assets){self.picker.showSearchResults(assets.length);self.updateList(assets);},locations);}},updateList:function(assets)
{if(assets.length<=0){dfx.empty(this._listContainer);dfx.addClass(this._noResultsContainer,'active');dfx.addClass(this._leftNoResultsCont,'active');return;}
dfx.removeClass(this._leftNoResultsCont,'active');dfx.removeClass(this._noResultsContainer,'active');var c=this.getClass()+'-list';var list=document.createElement('div');dfx.addClass(list,c);var self=this;this.picker.getAssets(assets,function(assetInfos){var ln=assetInfos.length;for(var i=0;i<ln;i++){var elem=self._createListItem(assetInfos[i]);list.appendChild(elem);if(i===0){dfx.trigger(elem,'click');}}
dfx.empty(self._listContainer);self._listContainer.appendChild(list);});},_createListItem:function(asset)
{var c=this.getClass()+'-list-item';var main=document.createElement('div');dfx.addClass(main,c)
main.setAttribute('assetid',asset.id);var content='<div class="'+c+'-icon" style="background-image:url('+asset.iconUrl+')"></div>';content+='<div class="'+c+'-title" title="'+asset.name+' [#'+asset.id+']">'+asset.name+'</div>';if(asset.children&&asset.children.length>0){content+='<div class="'+c+'-childCount">'+asset.children.length+'</div>';}
dfx.setHtml(main,content);var self=this;dfx.addEvent(main,'click',function(){dfx.removeClass(dfx.getClass('selected',self._listContainer),'selected');dfx.addClass(main,'selected');self.updateInfo(asset);});return main;},updateInfo:function(asset)
{dfx.setHtml(this._infoPanel.name,asset.name);var desc='';if(asset.getAttribute('width')&&asset.getAttribute('height')){desc=asset.getAttribute('width')+' x '+asset.getAttribute('height');if(asset.getAttribute('size')){desc+=' ('+dfx.readableSize(asset.getAttribute('size'))+')';}}
dfx.setHtml(this._infoPanel.desc,desc);var url=Widget.BASE_URL+'?a='+asset.id+'&tb=1';dfx.setStyle(this._infoPanel.thumb,'background-image','url('+url+')');var self=this;AssetManager.getAssetLineages(asset.id,null,function(lineages){self.picker.getAsset(asset.id,function(asset){if(lineages&&lineages.length>0){var lineage=lineages[0];if(lineage.length===0){lineage.push(asset.id);}
self._updateLineage(lineage);self.setSelectedAssets([asset.id]);self.picker._updateCurrentSelection(asset);}});});},_updateLineage:function(lineage,assetid)
{this.lineage=dfx.clone(lineage);this.lineage.unshift(this.picker.projectid);var self=this;this.picker.getAssets(lineage,function(assets){var aln=lineage.length;var names=[];for(var i=0;i<aln;i++){var asset=self._getAsset(lineage[i],assets);names.push('<span>'+asset.name+'</span>');}
dfx.setHtml(self._infoPanel.loc,names.join('<span class="sp"></span>'));});},_getAsset:function(id,assets)
{var ln=assets.length;for(var i=0;i<ln;i++){if(parseInt(assets[i].id)===parseInt(id)){return assets[i];}}
return null;}};dfx.inherits('AssetPickerSearchView','AbstractAssetPickerView');function TextAttributeEditorWidgetType(id)
{AbstractAttributeEditorWidgetType.call(this,id);this.viper=WidgetStore.get('viper');this.attrType='text';this.scripts=['Viper'];}
TextAttributeEditorWidgetType.prototype={load:function(callback)
{if(dfx.isset(window.Viper)===true){if(WidgetStore.get('viper')){this.addViperPlugins(callback);}else{var self=this;this._createViper(function(){self.addViperPlugins(callback);});}}else{var self=this;this.loadScripts(dfx.clone(this.scripts),function(){self.viper=WidgetStore.get('viper');if(dfx.isset(self.viper)===false){self._createViper(callback);}});}},_createViper:function(callback)
{var viperOpts={viperURL:Widget.prototype.getWidgetUrl('WYSIWYGEditorWidget')+'/viper'};var self=this;var viper=new Viper(viperOpts,function(viper){self.viper=viper;WidgetStore.add('viper',self.viper);self.load(callback);});},addViperPlugins:function(callback)
{ViperPluginManager.addPluginSet('simple',['Redo',{name:'CopyPaste',settings:{pasteType:'raw'}}],true,callback);},setViperPlugins:function()
{ViperPluginManager.usePluginSet('simple');},loadScripts:function(scripts,callback)
{if(scripts.length===0){callback.call(this);return;}
var url=Widget.prototype.getWidgetUrl('WYSIWYGEditorWidget');var script=scripts.shift();var self=this;dfx.includeScript(url+'viper/'+script+'.js',function(){self.loadScripts(scripts,callback);});},init:function()
{AbstractAttributeEditorWidgetType.prototype.init.call(this);this.viper=WidgetStore.get('viper');var toolbar=ViperPluginManager.getPlugin('ViperToolbarPlugin');if(dfx.isset(toolbar)===true){toolbar.createToolbar();}},activate:function(data)
{AbstractAttributeEditorWidgetType.prototype.activate.call(this,data);dfx.setStyle(data.placeHolder,'display','none');this.setViperPlugins();this.viper.setEditableElement(data.target);this.viper.setEnabled(true);var self=this;this.viper.registerCallback('clickedOutside','textEditor',function(){EditingEditorManager.disableActiveEditor(data);self.viper.removeCallback(null,'textEditor');});this.viper.registerCallback('nodesChanged','textEditor',function(nodesInfo){var nodes=data.attribute.nodes;var ln=nodes.length;var value=self.viper.getContents(data.target);data.attribute.setValue(value);for(var i=0;i<ln;i++){if(nodes[i]!==data.target){dfx.setHtml(nodes[i],value);}}
EditingEditorManager.contentChanged(data,nodesInfo);});this.viper.registerCallback('caretPositioned','textEditor',function(){EditingEditorManager.caretPositioned();});},getCaretCoords:function()
{var coords=null;if(this.viper){coords=this.viper.getCaretCoords();}
return coords;},getAttributeValue:function(attr)
{return this.viper.getSaveContent(attr.nodes[0]);},deactivate:function()
{this.viper.setEnabled(false);},remove:function()
{this.attributes=null;if(this.viper){this.viper.removeCallback(null,'textEditor');this.viper.setEnabled(false);this.viper=null;}}};dfx.inherits('TextAttributeEditor','AbstractAttributeEditor');function AbstractEditingModeWidgetType(id)
{AbstractContainerWidgetType.call(this,id);var loc=window.location.href;this.contentDiv=dfx.getId('EditingAsset');var body=document.getElementsByTagName('body')[0];dfx.setStyle(body,'background-color','#fff');dfx.setStyle(body,'background-image','none');var modeSwitcher=WidgetStore.get('EditingModeSwitcher');var cm=modeSwitcher.getCurrentMode();if(cm!=='PreviewEditingMode'&&cm!=='EditEditingMode'&&(loc.search(/(\/__images\/|\/__documents\/|\/__movies\/|\/__users\/)/)!==-1)){body.className='';}}
AbstractEditingModeWidgetType.prototype={setBackgroundColor:function(color)
{if(!color){color=dfx.getStyle(this.contentDiv,'background-color');}
var bgImg=dfx.getStyle(this.contentDiv,'background-image');var bgRep=dfx.getStyle(this.contentDiv,'background-repeat');dfx.setStyle(document.body,'background-color',color);dfx.setStyle(document.body,'background-image',bgImg);dfx.setStyle(document.body,'background-repeat',bgRep);dfx.setStyle(this.contentDiv,'background-color','transparent');dfx.setStyle(this.contentDiv,'background-image','none');dfx.setStyle(this.contentDiv,'background-repeat','repeat');dfx.setStyle(dfx.getId('EditingContents'),'position','absolute');dfx.setStyle(dfx.getId('EditingContents'),'width','100%');dfx.setStyle(dfx.getId('EditingAsset'),'position','relative');var bgPos=dfx.getStyle(this.contentDiv,'background-position');if(bgImg!=='none'){if(bgPos==='0% 0%'||typeof bgPos==='undefined'||bgPos==='0 0'){dfx.setStyle(document.body,'background-position','0% 38px');}else{var posRe=/(\d+)(%|in|cm|mm|em|ex|pt|pc|px)?\s+(\d+)(%|in|cm|mm|em|ex|pt|pc|px)?/;var res=posRe.exec(bgPos);if(res!==null){if(res[4]==='px'){var newPos=res[1]+res[2]+' '+(parseInt(res[3])+38)+'px';dfx.setStyle(document.body,'background-position',newPos);dfx.setStyle(this.contentDiv,'background-position','0% 0%');}}}}},switchMode:function()
{var modeSwitcher=WidgetStore.get('EditingModeSwitcher');var divs=$('div.mode-button');var divsLen=divs.length;for(var i=0;i<divsLen;i++){if(divs[i].id==='EditEditingModeWidgetType'){modeSwitcher.switchMode(divs[i]);break;}}},switchModeBegin:function()
{return true;},switchModeEnd:function(){},removeEditingAssetStyle:function()
{if(this.editingAssetCssUrl){var head=document.getElementsByTagName('head').item(0);var links=head.getElementsByTagName('link');var linksLen=links.length;for(var i=0;i<linksLen;i++){if(links[i].href===this.editingAssetCssUrl){dfx.remove(links[i]);}}}}};AbstractEditingModeWidgetType.prototype.setUrl=function(url)
{window.location=url;};dfx.inherits('AbstractEditingMode','AbstractContainer');function AbstractSettingsScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractContainerWidgetType.call(this,id);this.screenid=screenid;this.system=system;this.title=title;this.parent=parent;this.assetid=assetid;this.readOnly=readOnly||false;var autoSaveWidget=WidgetStore.get('EditingAutoSave');if(autoSaveWidget){autoSaveWidget.registerWidget(this);}}
AbstractSettingsScreenWidgetType.prototype={displayScreenReadOnlyWarning:function(callback,forceCb,rid)
{var self=this;var rid=rid||null;var setForceLock=function(resourceid){Locking.canForceLock(resourceid,function(canForceLock){var buttonTitle=null;if(canForceLock===true){buttonTitle='Force Edit';}
wrnOps={id:self.id+'-screenLockedMsg',leftTitle:'Read Only',mainMessage:'',colour:'yellow',buttonTitle:buttonTitle,buttonCb:function(){self.forceEdit(forceCb);}};var msg='This screen is <strong>Read Only</strong> because ';msg+='<strong>'+self.lockInfo.fullName+'</strong> is currently making changes.';wrnOps.mainMessage=msg;self.createScreenWarningMessage(wrnOps,function(el){callback.call(self,el);});});};if(rid===null){this.parent.getLockResourceid(function(rrid){setForceLock(rrid);});}else{setForceLock(rid);}},forceEdit:function(callback,rid)
{var self=this;var rid=rid||null;var forceAcquire=function(resourceid){Locking.acquire(resourceid,function(lock){if(lock===true){self.setReadOnly(false);dfx.remove(dfx.getId(self.id+'-screenLockedMsg'));if(dfx.isFn(callback)===true){callback.call(self);self.removeDisabledDiv();}
if(dfx.isFn(self.saveScreenSettings)===true&&dfx.isFn(self.revertScreenSettings)===true){self.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}}else{self.errorDialog('Failed to acquire the lock on the screen.','Error',function(){self.removeDisabledDiv();});}},true);};if(rid===null){this.parent.getLockResourceid(function(rrid){forceAcquire(rrid);});}else{forceAcquire(rid);}},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},canSwitchOffScreen:function()
{return true;}};dfx.inherits('AbstractSettingsScreen','AbstractContainer');function AssetAssetEditContentsWidgetType(id,assetid,extraAttrs,hasPerm)
{AbstractContainerWidgetType.call(this,id);dfx.addClass(document.body,'AssetAssetEditContentsWidgetType-body');this.assetid=assetid;this.currentMode=WidgetStore.get('EditingModeSwitcher').currentMode;this.widgetType='AssetAssetEditContents';this.extraAttrs=extraAttrs||[];this.readOnly=!hasPerm||false;this.lockError={};this.contentDiv=dfx.getId('EditingAsset');this.setBackgroundColor();this.start();}
AssetAssetEditContentsWidgetType.prototype={start:function()
{if(this.currentMode==='EditEditingMode'){var self=this;this.acquireLock(function(){self.init();});}else{this.init();}},setBackgroundColor:function(color)
{if(!color){color=dfx.getStyle(this.contentDiv,'background-color');}
var bgImg=dfx.getStyle(this.contentDiv,'background-image');var bgRep=dfx.getStyle(this.contentDiv,'background-repeat');dfx.setStyle(document.body,'background-color',color);dfx.setStyle(document.body,'background-image',bgImg);dfx.setStyle(document.body,'background-repeat',bgRep);dfx.setStyle(this.contentDiv,'background-color','transparent');dfx.setStyle(this.contentDiv,'background-image','none');dfx.setStyle(this.contentDiv,'background-repeat','repeat');dfx.setStyle(dfx.getId('EditingContents'),'position','absolute');dfx.setStyle(dfx.getId('EditingContents'),'width','100%');dfx.setStyle(dfx.getId('EditingAsset'),'position','relative');var bgPos=dfx.getStyle(this.contentDiv,'background-position');if(bgImg!=='none'){if(bgPos==='0% 0%'||typeof bgPos==='undefined'||bgPos==='0 0'){dfx.setStyle(document.body,'background-position','0% 38px');}else{var posRe=/(\d+)(%|in|cm|mm|em|ex|pt|pc|px)?\s+(\d+)(%|in|cm|mm|em|ex|pt|pc|px)?/;var res=posRe.exec(bgPos);if(res!==null){if(res[4]==='px'){var newPos=res[1]+res[2]+' '+(parseInt(res[3])+38)+'px';dfx.setStyle(document.body,'background-position',newPos);dfx.setStyle(this.contentDiv,'background-position','0% 0%');}}}}},init:function()
{if(this.currentMode==='EditEditingMode'){var self=this;self.nameFieldid='assetEdit_'+self.assetid+'-name';self.nameField=WidgetStore.get(self.nameFieldid);self.oriName=self.nameField.getValue();dfx.addEvent(dfx.getId(self.nameFieldid),'keyup',function(e){if(self.oriName===self.nameField.getValue()){self.disableSaveButton();}else{self.enableSaveButton();}});this.setSaveButton(function(){self.save();},function(){self.displayDisabledDiv(true);var params={attributes:['name'],type:false,typeIcon:false,linking:[],urls:false};AssetManager.getAsset(self.assetid,function(asset){self.nameField.setValue(asset.name);self.disableSaveButton();self.removeDisabledDiv();},false,params);});this.ready();}},acquireLock:function(cb)
{if(dfx.isset(this.assetid)===false){return;}
var self=this;var resource='AssetEdit:'+this.assetid;Locking.acquire(resource,function(result){if(result!==true){self.setReadOnly(true);self.lockError=Locking.getError(result,true);self.setScreenLock();}
if(dfx.isFn(cb)===true){cb.call(self);}});WidgetStore.addDataChangeListener('AssetEditContents','activeMode',function(newVal,oldVal){if(oldVal.id==='EditEditingMode'&&newVal.id!==oldVal.id){Locking.release(resource);self.setReadOnly(false);WidgetStore.removeDataChangeListener('AssetEditContents','activeMode');}});},setScreenLock:function(){},displayAssetEditReadOnlyWarning:function(callback,forceCb)
{var self=this;var setForceLock=function(resourceid){Locking.canForceLock(resourceid,function(canForceLock){var buttonTitle=null;if(canForceLock===true){buttonTitle='Force Edit';}
wrnOps={id:self.id+'-ReadOnlyMsg',leftTitle:'Read Only',mainMessage:'',colour:'yellow',buttonTitle:buttonTitle,buttonCb:function(){self.displayDisabledDiv(true);self.forceEdit(forceCb);}};var msg='This screen is <strong>Read Only</strong> because ';msg+='<strong>'+self.lockError.fullName+'</strong> is currently making changes.';wrnOps.mainMessage=msg;self.createScreenWarningMessage(wrnOps,function(el){callback.call(self,el);});});};setForceLock('AssetEdit:'+this.assetid);},forceEdit:function(forceCb)
{var self=this;var forceAcquire=function(resourceid){Locking.acquire(resourceid,function(lock){if(lock===true){self.setReadOnly(false);dfx.remove(dfx.getId(self.id+'-ReadOnlyMsg'));if(dfx.isFn(forceCb)===true){forceCb.call(self);self.removeDisabledDiv();}}else{self.errorDialog('Failed to acquire the lock on the screen.','Error',function(){self.removeDisabledDiv();});}},true);};forceAcquire('AssetEdit:'+this.assetid);},save:function()
{var self=this;var params={widget:'AssetAssetEditContentsWidgetType',action:'processWidget',assetid:this.assetid,op:'saveAsset',assetName:dfx.jsonEncode(this.nameField.getValue())};this.displayDisabledDiv(true);dfx.post(window.location.href,params,function(data){data=dfx.jsonDecode(data);if(data.success){self.oriName=data.success;}
self.removeDisabledDiv();});}};dfx.inherits('AssetAssetEditContents','AbstractContainer');function AssetEditWidgetType(id,assetid)
{AbstractContainerWidgetType.call(this,id);this.assetid=assetid;}
AssetEditWidgetType.prototype={init:function(data,assetid,editables){},getRequestParams:function()
{var params={keys:['widget','__action','assetid'],vals:['EditingAssetWidget','performAction',this.assetid]};return params;}};dfx.inherits('AssetEdit','AbstractContainer');function AssetListWidgetType(id)
{AbstractContainerWidgetType.call(this,id);this.widgetType='AssetList';this.assets={};this.list=WidgetStore.get(this.id+'-list');if(this.list){this.children.push(this.list.id);}}
AssetListWidgetType.prototype={addAsset:function(assetid)
{var self=this;AssetManager.getAsset(assetid,function(asset){self.assets[assetid]=1;var iconDiv=document.createElement('div');dfx.addClass(iconDiv,self.getClass()+'-icon');dfx.setStyle(iconDiv,'background-image','url('+asset.iconUrl+')');self.list.addItem(assetid,[iconDiv,asset.name]);});},getValue:function()
{var assetids=this.list.getValue();return assetids;},setValue:function(value)
{this.clear();var ln=value.length;for(var i=0;i<ln;i++){this.addAsset(value[i]);}},clear:function()
{this.list.clearItems();this.assets={};},disable:function()
{this.list.disable();},enable:function()
{this.list.enable();},addRemovedEvent:function(fn)
{this.list.addRemovedEvent(fn);},addItemDisabledEvent:function(fn)
{this.list.addItemDisabledEvent(fn);},addItemEnabledEvent:function(fn)
{this.list.addItemEnabledEvent(fn);}};dfx.inherits('AssetList','AbstractContainer');function AssociatedFileUploadWidgetType(id,designid,associatedFiles,missingFiles,unusedFiles)
{AbstractContainerWidgetType.call(this,id);this.widgetType='AssociatedFileUpload';this.designid=designid;this.associatedFiles=associatedFiles||null;this.missingFiles=missingFiles;this.missingFilesExists=false;this.missingFileResized=false;this.unusedFiles=unusedFiles;this.fileUploadKeyPrefix='';this.fileUploadHolder=null;this.fileUploadStatus=null;this.fileUploadAddBtn=null;this.associatedFilesHidden=false;this.fileUploadUploadBtnWrapper=null;this.fileUploadUploadBtn=null;this.fileUploadUploadBtnEnabled=true;this.fileUploadUploadPendingNum=0;this.missingFilesNoticeWrapper=null;this.uploading=false;this.uploadForms=[];this.progressBars={};this.currentFileName='';this.addFileCallbacks=[];this.removeFileCallbacks=[];this.replaceFileCallbacks=[];this.uploadingStartCallbacks=[];this.uploadingCompleteCallbacks=[];var self=this;Widget.registerWindowResize(function(e){self.resizeFileList();});}
AssociatedFileUploadWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);var result=[];var deletedBtns=dfx.getClass(this.widgetType+'-assocFileDelete',dfx.getId(this.id+'-assocFileListWrapper'));var dfLn=deletedBtns.length;var fln=this.uploadForms.length;var lastF=this.uploadForms[(fln-1)];if(readOnly){for(var i=0;i<dfLn;i++){dfx.setStyle(deletedBtns[i],'visibility','hidden');}
dfx.setStyle(lastF,'visibility','hidden');}else{for(var i=0;i<dfLn;i++){dfx.setStyle(deletedBtns[i],'visibility','visible');}
dfx.setStyle(lastF,'visibility','visible');}},resizeFileList:function()
{var dim=dfx.getWindowDimensions();var offsetH=375;var rod=dfx.getId('DesignAdminScreen-readOnlyMsg');if(rod){offsetH+=37;}
var missingLen=this.missingFiles.length;if(missingLen>0){offsetH+=26+32+2;offsetH+=(missingLen*18);}
var status=dfx.getId(this.id+'-associatedFileUploadStatus');if(status&&dfx.getStyle(status,'display')!=='none'){offsetH+=39;offsetH+=((this.uploadForms.length-1)*29);}
var designWdgt=WidgetStore.get('DesignAdminScreen');if(designWdgt.assocFilesHidden===false){var width=0;if(dim.width>1500){width=785;}else if(dim.width<=1120){width=400;}else{width=(dim.width-720);}
dfx.setStyle(dfx.getId('DesignAdminScreen-associatedFiles'),'left',width+'px');}
var assocFileListWrapOutter=dfx.getId(this.id+'-assocFileListWrapperOutter');dfx.setStyle(assocFileListWrapOutter,'height',(dim.height-offsetH)+'px');},create:function(callback)
{var self=this;var assocFileSelectBtn=self.createWidget(self.id+'-associatedFileAddBtn','Button');assocFileSelectBtn.setName('Add');assocFileSelectBtn.create(function(addBtnEl){var uploadStartBtn=self.createWidget(self.id+'-associatedFileUploadBtn','Button');uploadStartBtn.setName('Start Upload');uploadStartBtn.create(function(startBtnEl){dfx.addClass(startBtnEl,self.widgetType+'-StartUploadButton');var wrap=document.createElement('div');wrap.id=self.id;var header=document.createElement('div');var headerTitle=document.createElement('div');var headerHide=document.createElement('div');headerHide.id=self.id+'-AssociatedHeaderHide';headerHide.innerHTML='&nbsp;';dfx.addClass(header,self.widgetType+'-associatedHeader');dfx.addClass(headerTitle,self.widgetType+'-associatedHeaderTitle');dfx.addClass(headerHide,self.widgetType+'-associatedHeaderHide');dfx.addEvent(headerHide,'click',function(e){if(self.associatedFilesHidden===true){dfx.showElement(dfx.getId(self.id+'-associatedFiles'));}else{dfx.hideElement(dfx.getId(self.id+'-associatedFiles'));}});headerTitle.innerHTML='Associated Files';header.appendChild(headerTitle);header.appendChild(headerHide);var assocFileUpload=document.createElement('div');var assocFileSelectBtnWrap=document.createElement('div');var assocFileUploadIframes=document.createElement('div');assocFileUploadIframes.id=self.id+'-associatedFileUploadHolder';dfx.addClass(assocFileUpload,self.widgetType+'-associatedFileUpload');dfx.addClass(assocFileUploadIframes,self.widgetType+'-associatedFileUploadIframesHolder');dfx.addClass(assocFileSelectBtnWrap,self.widgetType+'-associatedFileUploadAddFileBtnWrap');assocFileSelectBtnWrap.appendChild(addBtnEl);assocFileUpload.appendChild(assocFileUploadIframes);assocFileUpload.appendChild(assocFileSelectBtnWrap);var assocFileUploadStatus=document.createElement('div');assocFileUploadStatus.id=self.id+'-associatedFileUploadStatus';dfx.addClass(assocFileUploadStatus,'associatedFileUploadStatus');var assocFileUploadBtnWrap=document.createElement('div');assocFileUploadBtnWrap.id=self.id+'-associatedFileUploadBtnWrapper';dfx.addClass(assocFileUploadBtnWrap,'associatedFileUploadBtnWrapper');assocFileUploadBtnWrap.appendChild(startBtnEl);var missingFileDivWrap=document.createElement('div');missingFileDivWrap.id=self.id+'-missingFilesNoticeWrapper';dfx.addClass(missingFileDivWrap,'missingFilesNoticeWrapper');dfx.addClass(missingFileDivWrap,'missingFilesNoticeWrapper-hidden');self.missingFilesNoticeWrapper=missingFileDivWrap;var assocFileListWrap=document.createElement('div');assocFileListWrap.id=self.id+'-assocFileListWrapper';dfx.addClass(assocFileListWrap,'associatedFileListWrapper');var assocFileListWrapOutter=document.createElement('div');assocFileListWrapOutter.id=self.id+'-assocFileListWrapperOutter';dfx.addClass(assocFileListWrapOutter,'associatedFileListWrapperOutter');assocFileListWrapOutter.appendChild(assocFileListWrap);wrap.appendChild(header);wrap.appendChild(assocFileUpload);wrap.appendChild(assocFileUploadStatus);wrap.appendChild(assocFileUploadBtnWrap);wrap.appendChild(missingFileDivWrap);self.addAddFileCallback(function(){var currHeight=parseInt(dfx.getStyle(assocFileListWrapOutter,'height'));var offsetH=29;if(self.uploadForms.length===1){offsetH+=39;}
dfx.setStyle(assocFileListWrapOutter,'height',(currHeight-offsetH)+'px');});self.addUploadingCompleteCallback(function(numFiles){var currHeight=parseInt(dfx.getStyle(assocFileListWrapOutter,'height'));var offsetH=(29*numFiles)+39;dfx.setStyle(assocFileListWrapOutter,'height',(currHeight+offsetH)+'px');});var headerFileWrap=document.createElement('div');dfx.addClass(headerFileWrap,self.widgetType+'-assocHeaderFileWrap');var headerC='';headerC+='<div class="'+self.widgetType+'-assocHeaderFileIcon">&nbsp;</div>';headerC+='<div class="'+self.widgetType+'-assocHeaderFileName">File Name</div>';headerC+='<div class="'+self.widgetType+'-assocHeaderFileSize">Size / ID</div>';headerC+='<div class="'+self.widgetType+'-assocHeaderFileNowUse">!</div>';headerC+='<div class="'+self.widgetType+'-assocHeaderFileDelete">&nbsp;</div>';dfx.setHtml(headerFileWrap,headerC);assocFileListWrap.appendChild(headerFileWrap);var lastFileWrap=null;if(self.associatedFiles!==null){for(var fid in self.associatedFiles){if(self.associatedFiles.hasOwnProperty(fid)){(function(fileid){var fileName=self.associatedFiles[fileid].fileName;var iconUrl=self.associatedFiles[fileid].iconUrl;var fileType=self.associatedFiles[fileid].fileType;var fileSize=self.associatedFiles[fileid].fileSize;var fileWrap=document.createElement('div');fileWrap.id=self.id+'_'+fileid+'_wrap';dfx.addClass(fileWrap,self.widgetType+'-assocFileWrap');dfx.attr(fileWrap,'fileid',fileid);var content='';content+='<div class="'+self.widgetType+'-assocFileIcon">';content+='<img src="'+iconUrl+'" class="'+self.widgetType+'-assocFileIcon"/></div>';content+='<div class="'+self.widgetType+'-assocFileName">'+fileName+'</div>';content+='<div class="'+self.widgetType+'-assocFileSize">'+fileSize+'</div>';content+='<div class="'+self.widgetType+'-assocFileNowUse';if(self.unusedFiles[fileid]){content+=' warning';}
content+='">&nbsp;</div>';content+='<div class="'+self.widgetType+'-assocFileDelete">&nbsp;</div>';dfx.setHtml(fileWrap,content);assocFileListWrap.appendChild(fileWrap);lastFileWrap=fileWrap;var fileDeleteDiv=dfx.getClass(self.widgetType+'-assocFileDelete',fileWrap)[0];dfx.addEvent(fileDeleteDiv,'click',function(e){var changeid=self.designid+':associated_file:'+fileid;var deletedClass='delete';var row=dfx.getId(self.id+'_'+fileid+'_wrap');var designAdmin=WidgetStore.get('DesignAdminScreen');if(dfx.hasClass(row,deletedClass)===false){dfx.addClass(row,deletedClass);dfx.addClass(fileDeleteDiv,'recover');designAdmin.changes[changeid]=true;designAdmin.screenModified();}else{dfx.removeClass(row,deletedClass);dfx.removeClass(fileDeleteDiv,'recover');designAdmin.changes[changeid]=false;designAdmin.screenModified();}});})(fid);}}}
dfx.addClass(lastFileWrap,self.widgetType+'-assocFileWrapLast');wrap.appendChild(assocFileListWrapOutter);self.fileUploadHolder=assocFileUploadIframes;self.fileUploadStatus=assocFileUploadStatus;self.fileUploadAddBtn=assocFileSelectBtn;self.fileUploadUploadBtnWrapper=assocFileUploadBtnWrap;self.fileUploadUploadBtn=uploadStartBtn;dfx.hideElement(self.fileUploadUploadBtnWrapper);if(dfx.isFn(callback)){callback.call(self,wrap);return;}});});},getDeletedFiles:function()
{var result=[];var deletedFiles=dfx.getClass('delete',dfx.getId(this.id+'-assocFileListWrapper'));var dfLn=deletedFiles.length;for(var i=0;i<dfLn;i++){result.push(dfx.attr(deletedFiles[i],'fileid'));}
return result;},createAssocFileList:function(assocFileListWrap,callback)
{var self=this;var lastFileWrap=null;if(self.associatedFiles!==null){dfx.foreach(self.associatedFiles,function(fileid){var fileName=self.associatedFiles[fileid].fileName;var iconUrl=self.associatedFiles[fileid].iconUrl;var fileType=self.associatedFiles[fileid].fileType;var fileSize=self.associatedFiles[fileid].fileSize;var fileWrap=document.createElement('div');fileWrap.id=self.id+'_'+fileid+'_wrap';dfx.addClass(fileWrap,self.widgetType+'-assocFileWrap');dfx.attr(fileWrap,'fileid',fileid);var content='';content+='<div class="'+self.widgetType+'-assocFileIcon">';content+='<img src="'+iconUrl+'" class="'+self.widgetType+'-assocFileIcon"/></div>';content+='<div class="'+self.widgetType+'-assocFileName">'+fileName+'</div>';content+='<div class="'+self.widgetType+'-assocFileSize">'+fileSize+'</div>';content+='<div class="'+self.widgetType+'-assocFileNowUse';if(self.unusedFiles[fileid]){content+=' warning';}
content+='">&nbsp;</div>';content+='<div class="'+self.widgetType+'-assocFileDelete">&nbsp;</div>';dfx.setHtml(fileWrap,content);assocFileListWrap.appendChild(fileWrap);lastFileWrap=fileWrap;var fileDeleteDiv=dfx.getClass(self.widgetType+'-assocFileDelete',fileWrap)[0];dfx.addEvent(fileDeleteDiv,'click',function(e){var changeid=self.designid+':associated_file:'+fileid;var deletedClass='delete';var row=dfx.getId(self.id+'_'+fileid+'_wrap');var designAdmin=WidgetStore.get('DesignAdminScreen');if(dfx.hasClass(row,deletedClass)===false){dfx.addClass(row,deletedClass);dfx.addClass(fileDeleteDiv,'recover');designAdmin.changes[changeid]=true;designAdmin.screenModified();}else{dfx.removeClass(row,deletedClass);dfx.removeClass(fileDeleteDiv,'recover');designAdmin.changes[changeid]=false;designAdmin.screenModified();}});return true;});dfx.addClass(lastFileWrap,self.widgetType+'-assocFileWrapLast');if(callback){callback.call(self);}}},createFileUploadIframe:function(holder)
{var iframe=document.createElement('iframe');iframe.setAttribute('frameBorder','no');iframe.setAttribute('scrolling','no');dfx.getId(this.id+'-associatedFileUploadHolder').appendChild(iframe);var doc=dfx.getIframeDocument(iframe);doc.open();doc.close();iframe.id=this.id+'_frame_'+this.uploadForms.length;dfx.addClass(iframe,this.widgetType+'-associatedFileIFrame');var div=doc.createElement('div');var formid=this.id+'_form_'+this.uploadForms.length;var lockInfo=dfx.clone(WidgetStore.get('DesignAdminScreen').parent.lockInfo);var content='<form id="'+formid+'" name="'+this.id+'_form_'+this.uploadForms.length+'"';content+=' enctype="multipart/form-data" method="post" action="'+window.location.href+'" style="margin:0; padding:0;" class="fileForm">';content+='<input type="hidden" name="APC_UPLOAD_PROGRESS" value="'+this.fileUploadKeyPrefix+'_'+this.uploadForms.length+'" />';content+='<input type="file" id="'+this.id+'_file_'+this.uploadForms.length+'" name="associated_file" class="fileUpload" />';content+='<input type="hidden" name="mode"      value="AdminScreenMode" />';content+='<input type="hidden" name="screen"    value="DesignAdminScreenWidget" />';content+='<input type="hidden" name="action"    value="processScreen" />';content+='<input type="hidden" name="op"        value="uploadFile" />';content+='<input type="hidden" name="lockInfo"  value=\''+dfx.jsonEncode(lockInfo)+'\' />';content+='<input type="hidden" name="fileIndex" value="'+this.uploadForms.length+'" />';content+='</form>';dfx.setHtml(div,content);var self=this;var file=dfx.getClass('fileUpload',div)[0];dfx.addEvent(file,'change',function(evt){self.currentFileName=dfx.getFileInputName(evt.target.value);for(var id in self.progressBars){if(self.currentFileName===self.progressBars[id].getLabel()){return;}}
self.fileUploadAddBtn.enable();});doc.body.appendChild(div);var form=dfx.getClass('fileForm',div)[0];this.uploadForms.push(form);return iframe;},init:function()
{this.fileUploadKeyPrefix=dfx.getUniqueId();this.iframe=this.createFileUploadIframe();var self=this;this.fileUploadAddBtn.disable();this.fileUploadAddBtn.addClickEvent(function(){var designAdmin=WidgetStore.get('DesignAdminScreen');var changeid=self.id+':new_file';designAdmin.changes[changeid]=true;self.fileUploadAddBtn.disable();var filename=self.currentFileName;var openStatusBar=function(){dfx.showElement(self.fileUploadUploadBtnWrapper);dfx.blindDown(self.fileUploadStatus,'slow',function(){self.runAddFileCallback();});};var addOneToStatusBar=function(div){var currHeight=parseInt(dfx.getStyle(self.fileUploadStatus,'height'));dfx.setStyle(div,'padding-top',29);dfx.setStyle(div,'border-bottom','1px dotted #d4d4d4');dfx.setStyle(div,'z-index',(1000-self.uploadForms.length+1)+'');dfx.animate(self.fileUploadStatus,{height:(currHeight+29)},500,function(){self.runAddFileCallback();});};var addProgressBar=function(idx){if(self.fileUploadUploadPendingNum===0){self.fileUploadUploadBtn.enable();}
var index=null;if(dfx.isset(idx)===true){index=idx;}else{index=(self.uploadForms.length-1);}
var progress=self.createWidget((self.id+'_progress_'+index),'ProgressBar');self.progressBars[index]=progress;progress.addOnProgressCallback(function(){setTimeout(function(){self.trackProgress('');},500);});progress.addOnCompleteCallback(function(){setTimeout(function(){self.trackProgress();},2000);});progress.addOnDeleteCallback(function(id){var allDisabled=true;if(self.fileUploadUploadPendingNum>0){}else{for(var pid in self.progressBars){if(self.progressBars.hasOwnProperty(pid)===true){if(self.progressBars[pid].isEnabled()===true){allDisabled=false;}}}}
if(allDisabled===true){self.fileUploadUploadBtn.disable();}else{self.fileUploadUploadBtn.enable();}});progress.create(function(div){this.updateLabel(filename);if(dfx.isset(idx)===true){dfx.setStyle(div,'z-index',((1000-idx)+''));if(idx===0){if(self.uploadForms.length>2){var before=dfx.getId((self.id+'_progress_1_progress'));if(dfx.isset(before)===false){before=dfx.getId((self.id+'_replace_wrapper_1'));}
dfx.insertBefore(before,div);}else{self.fileUploadStatus.appendChild(div);}
return;}else if(idx>0){dfx.setStyle(div,'padding-top',29);dfx.setStyle(div,'border-bottom','1px solid #d4d4d4');var after=dfx.getId((self.id+'_progress_'+(idx-1)+'_progress'));if(dfx.isset(after)===false){after=dfx.getId((self.id+'_replace_wrapper_'+(idx-1)));}
dfx.insertAfter(after,div);return;}}
self.fileUploadStatus.appendChild(div);if(self.uploadForms.length===1){dfx.setStyle(div,'z-index','1000');openStatusBar();}else{addOneToStatusBar(div);}});};var addReplacementConfirmBar=function(fileid){var repWrapper=document.createElement('div');var deleteMask=document.createElement('div');var noticeImg=document.createElement('div');var fileName=document.createElement('div');var replaceBtn=document.createElement('div');var deleteBtn=document.createElement('div');var idx=(self.uploadForms.length-1);var id=(this.id+'_replace_confirm_btn_'+idx);var replace=self.createWidget(id,'Button');replace.setName('Replace');replace.create(function(btn){self.fileUploadUploadPendingNum++;if(self.fileUploadUploadPendingNum>0){self.fileUploadUploadBtn.disable();}
var wrapperid=(self.id+'_replace_wrapper_'+(self.uploadForms.length-1));repWrapper.id=wrapperid;repWrapper.className='duplicatedWrapper';deleteMask.className='duplicatedDeleteMask';deleteMask.innerHTML='&nbsp;';noticeImg.innerHTML='&nbsp;';noticeImg.className='duplicatedNoticeImg';fileName.innerHTML=filename;fileName.className='duplicatedFileName';replaceBtn.className='duplicatedReplace';replaceBtn.appendChild(btn);deleteBtn.innerHTML='&nbsp;';deleteBtn.className='ProgressBarWidgetType-delete';dfx.addEvent(deleteBtn,'click',function(){if(dfx.hasClass(deleteMask,'disabled')===true){self.fileUploadUploadPendingNum++;dfx.removeClass(deleteBtn,'recover');dfx.removeClass(deleteMask,'disabled');replace.enable();}else{self.fileUploadUploadPendingNum--;dfx.addClass(deleteBtn,'recover');dfx.addClass(deleteMask,'disabled');replace.disable();}
if(self.fileUploadUploadPendingNum>0){self.fileUploadUploadBtn.disable();}else{var allDisabled=true;for(var pid in self.progressBars){if(self.progressBars.hasOwnProperty(pid)===true){if(self.progressBars[pid].isEnabled()===true){allDisabled=false;}}}
if(allDisabled===true){self.fileUploadUploadBtn.disable();}else{self.fileUploadUploadBtn.enable();}}});replace.addClickEvent(function(){dfx.remove(dfx.getId(wrapperid));addProgressBar(idx);var iframe=dfx.getId((self.id+'_frame_'+idx));var doc=dfx.getIframeDocument(iframe);var replacement=doc.createElement('input');replacement.type='hidden';replacement.name='replacement';replacement.value='1';var fileidField=doc.createElement('input');fileidField.type='hidden';fileidField.name='fileid';fileidField.value=fileid;self.uploadForms[idx].appendChild(replacement);self.uploadForms[idx].appendChild(fileidField);self.fileUploadUploadPendingNum--;if(self.fileUploadUploadPendingNum===0){self.fileUploadUploadBtn.enable();}});repWrapper.appendChild(deleteMask);repWrapper.appendChild(noticeImg);repWrapper.appendChild(fileName);repWrapper.appendChild(deleteBtn);repWrapper.appendChild(replaceBtn);self.fileUploadStatus.appendChild(repWrapper);if(self.uploadForms.length===1){dfx.setStyle(repWrapper,'z-index','1000');openStatusBar();}else{addOneToStatusBar(repWrapper);}});};var fileid=self.isDuplicated(filename);if(fileid===false){addProgressBar();}else{addReplacementConfirmBar(fileid);}});this.fileUploadUploadBtn.addClickEvent(function(){self.fileUploadUploadBtn.disable();self.currentUploadIdx=self._getNextUploadFileIndex();self.currentUploadWdgt=self.progressBars[self.currentUploadIdx];self.uploading=true;self.uploadForms[self.currentUploadIdx].appendChild(self._createTotalFilesHiddenField(self.currentUploadIdx));self.uploadForms[self.currentUploadIdx].appendChild(self._createDesignidHiddenField(self.currentUploadIdx));self.uploadForms[self.currentUploadIdx].submit();setTimeout(function(){self.trackProgress();},1000);});this.addAddFileCallback(function(){var iframe=dfx.getId((self.id+'_frame_'+(self.uploadForms.length-1)));dfx.hideElement(iframe);self.createFileUploadIframe();});this.addUploadingCompleteCallback(function(){self.refreshMissingFileNotice(function(){dfx.blindUp(self.fileUploadStatus,'slow',function(){dfx.setStyle(self.fileUploadUploadBtnWrapper,'display','none');dfx.setStyle(self.fileUploadUploadBtnWrapper,'visibility','hidden');self.reset();});});});this.missingFilesExists=false;if(this.missingFiles!==null&&this.missingFiles.length>0){this.missingFilesExists=true;this.createMissingFileNotice();}
this.resizeFileList();},_getNextUploadFileIndex:function()
{var idx=null;for(var pid in this.progressBars){if(this.progressBars.hasOwnProperty(pid)===true){if(this.progressBars[pid].isEnabled()===true&&this.progressBars[pid].isFinished()===false){idx=parseInt(pid);break;}}}
return idx;},_createDesignidHiddenField:function(idx)
{var iframe=dfx.getId(this.id+'_frame_'+idx);var doc=dfx.getIframeDocument(iframe);var designid=doc.createElement('input');designid.type='hidden';designid.name='designId';designid.value=this.designid;return designid;},_createTotalFilesHiddenField:function(idx)
{var iframe=dfx.getId(this.id+'_frame_'+idx);var doc=dfx.getIframeDocument(iframe);var designid=doc.createElement('input');designid.type='hidden';designid.name='totalFiles';designid.value=(this.uploadForms.length-1);return designid;},creatFileManager:function(callback)
{var self=this;this.fileManagerDynamicDiv.changeContent({action:'paintScreen',mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',designid:this.designid,type:'fileManager'},function(data){self.resetAssociatedFiles();if(dfx.isset(callback)===true){callback.call(self);}});},resetAssociatedFiles:function()
{var fileManager=WidgetStore.get('AssociatedFileManager');this.associatedFiles={};var currFiles=fileManager.getFiles();var currFilesLen=currFiles.length;for(var i=0;i<currFilesLen;i++){this.associatedFiles[currFiles[i].fileid]=currFiles[i].filename;}},refreshFileManager:function(callback)
{this.creatFileManager(callback);},createMissingFileNotice:function()
{var header=document.createElement('div');header.id='';header.className='missingFilesNoticeWrapper-header';header.innerHTML='Missing Files!';var desc=document.createElement('div');desc.id='';desc.className='missingFilesNoticeWrapper-desc';desc.innerHTML='The following files are referenced in your HTML, CSS or Javascript but have not been uploaded yet.';this.missingFilesNoticeWrapper.appendChild(header);this.missingFilesNoticeWrapper.appendChild(desc);var missingLen=this.missingFiles.length;for(var j=0;j<missingLen;j++){var fileDiv=document.createElement('div');fileDiv.id='';fileDiv.className='missingFilesNoticeWrapper-list';var fileNameDiv=document.createElement('div');fileNameDiv.className='missingFilesNoticeWrapper-filename';fileNameDiv.innerHTML=this.missingFiles[j].filename;var categoryDiv=document.createElement('div');categoryDiv.className='missingFilesNoticeWrapper-category';categoryDiv.innerHTML='[';var categoryLen=this.missingFiles[j].types.length;for(var i=0;i<categoryLen;i++){categoryDiv.innerHTML+=this.missingFiles[j].types[i].toUpperCase();if(i<(categoryLen-1)){categoryDiv.innerHTML+=', ';}}
categoryDiv.innerHTML+=']';fileDiv.appendChild(fileNameDiv);fileDiv.appendChild(categoryDiv);this.missingFilesNoticeWrapper.appendChild(fileDiv);}
dfx.removeClass(this.missingFilesNoticeWrapper,'missingFilesNoticeWrapper-hidden');},refreshMissingFileNotice:function(callback)
{var params={mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',action:'getScreenData',op:'getMissingFiles',designId:this.designid};var self=this;dfx.addClass(this.missingFilesNoticeWrapper,'missingFilesNoticeWrapper-hidden');dfx.post(window.location.href,params,function(data){self.missingFiles=dfx.jsonDecode(data);self.missingFilesNoticeWrapper.innerHTML='';if(self.missingFiles.length>0){self.createMissingFileNotice();}
self.resizeFileList();if(dfx.isFn(callback)===true){callback.call(self);}});},trackProgress:function(id)
{var trackKey=(this.fileUploadKeyPrefix+'_'+this.currentUploadIdx);var self=this;if(this.currentUploadWdgt.isFinished()===true){var doc=dfx.getIframeDocument(dfx.getId(this.id+'_frame_'+this.currentUploadIdx));var fileid=doc.body.firstChild.nodeValue;var filename=this.currentUploadWdgt.getLabel();if(this.associatedFiles&&dfx.isset(this.associatedFiles[fileid])===false){this.associatedFiles[fileid]=filename;}
var allUploaded=true;if(self.currentUploadIdx<(self.uploadForms.length-2)){self.currentUploadIdx=self._getNextUploadFileIndex();if(self.currentUploadIdx!==null){allUploaded=false;self.currentUploadWdgt=self.progressBars[self.currentUploadIdx];self.uploadForms[self.currentUploadIdx].appendChild(self._createTotalFilesHiddenField(self.currentUploadIdx));self.uploadForms[self.currentUploadIdx].appendChild(self._createDesignidHiddenField(self.currentUploadIdx));self.uploadForms[self.currentUploadIdx].submit();setTimeout(function(){self.trackProgress();},500);}}
if(allUploaded===true){self.runUploadingCompleteCallback(self.uploadForms.length-1);}}else{var params={mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',op:'trackUploading',progress_key:trackKey,designId:this.designid};var oriid=this.id;this.id='AdminScreenModeWidgetType';this.lockInfo=dfx.clone(WidgetStore.get('DesignAdminScreen').parent.lockInfo);AbstractEditingScreenModeWidgetType.prototype.processScreen.call(this,params,function(percent,responseCode){self.id=oriid;self.currentUploadWdgt.updateProgress(percent);});}},reset:function(callback)
{var self=this;var fln=this.uploadForms.length;for(var i=0;i<fln;i++){dfx.remove(dfx.getId(this.id+'_frame_'+i));dfx.remove(dfx.getId(this.id+'_progress_'+i+'_progress'));}
this.fileUploadAddBtn.disable();this.fileUploadUploadBtn.enable();this.fileUploadUploadBtnEnabled=true;this.fileUploadUploadPendingNum=0;this.uploading=false;this.uploadForms=[];this.progressBars={};this.currentFileName='';this.fileUploadKeyPrefix=dfx.getUniqueId();this.iframe=this.createFileUploadIframe();dfx.setStyle(this.fileUploadStatus,'height','29px');dfx.setStyle(this.fileUploadStatus,'display','none');dfx.setStyle(this.fileUploadUploadBtnWrapper,'display','none');dfx.setStyle(this.fileUploadUploadBtnWrapper,'visibility','hidden');this.resetAssocFileList(function(callback){if(dfx.isset(callback)===true){callback.call(this);}});},resetAssocFileList:function(callback)
{var self=this;var params={mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',action:'getScreenData',op:'getAssocFileData',designId:self.designid};dfx.post(window.location.href,params,function(data){var associatedFiles=dfx.jsonDecode(data);self.associatedFiles=associatedFiles[self.designid].files;self.unusedFiles=associatedFiles[self.designid].unusedFiles;var assocFileListWrap=dfx.getId(self.id+'-assocFileListWrapper');var aln=assocFileListWrap.childNodes.length;for(var i=(aln-1);i>0;i--){dfx.remove(assocFileListWrap.childNodes[i]);}
self.createAssocFileList(assocFileListWrap,function(){if(callback){callback.call(self);}});});},setDesignId:function(designid)
{this.designid=designid;},addAddFileCallback:function(callback)
{if(dfx.isFn(callback)===true){this.addFileCallbacks.push(callback);}},addRemoveFileCallback:function(callback)
{if(dfx.isFn(callback)===true){this.removeFileCallbacks.push(callback);}},addReplaceFileCallback:function(callback)
{if(dfx.isFn(callback)===true){this.replaceFileCallbacks.push(callback);}},addUploadingStartCallback:function(callback)
{if(dfx.isFn(callback)===true){this.uploadingStartCallbacks.push(callback);}},addUploadingCompleteCallback:function(callback)
{if(dfx.isFn(callback)===true){this.uploadingCompleteCallbacks.push(callback);}},runAddFileCallback:function(callback)
{var length=this.addFileCallbacks.length;for(var i=0;i<length;i++){this.addFileCallbacks[i].call(this);}},runRemoveFileCallback:function(callback)
{var length=this.removeFileCallbacks.length;for(var i=0;i<length;i++){this.removeFileCallbacks[i].call(this);}},runReplaceFileCallback:function(callback)
{var length=this.replaceFileCallbacks.length;for(var i=0;i<length;i++){this.replaceFileCallbacks[i].call(this);}},runUploadingStartCallback:function(callback)
{var length=this.uploadingStartCallbacks.length;for(var i=0;i<length;i++){this.uploadingStartCallbacks[i].call(this);}},runUploadingCompleteCallback:function(uploadedFilesLen)
{var length=this.uploadingCompleteCallbacks.length;for(var i=0;i<length;i++){this.uploadingCompleteCallbacks[i].call(this,uploadedFilesLen);}},isDuplicated:function(filename)
{for(var id in this.associatedFiles){if(this.associatedFiles.hasOwnProperty(id)){if(filename===this.associatedFiles[id].fileName){return id;}}}
return false;}};dfx.inherits('AssociatedFileUpload','AbstractContainer');function CardLayoutWidgetType(id,hasScrolls)
{AbstractContainerWidgetType.call(this,id);this.widgetType='CardLayout';this.domElem=null;this.cards=[];this.classes=[];this.currentCardIndex=0;this.hasScrolls=false;if(hasScrolls===1){this.hasScrolls=true;}
this.init();}
CardLayoutWidgetType.prototype={init:function()
{if(dfx.getId(this.id)){this._addCards();}},create:function(callback)
{var div=document.createElement('div');div.id=this.id;this.domElem=div;dfx.addClass(div,this.getClass());this.addClasses();var c='-item';var len=this.children.length;for(var i=0;i<len;i++){var child=document.createElement('div');dfx.addClass(child,this.getClass()+c);if(i!==0){dfx.addClass(child,this.getClass()+c+'-hidden');}
div.appendChild(child);this.cards.push(child);}
var self=this;this.createChildren(null,function(){callback.call(self,div);return;});},addCard:function(elem)
{this.children.push(elem);},getCard:function(index)
{return this.cards[index];},_addCards:function()
{var children=dfx.getId(this.id).childNodes;var cLen=children.length;for(var i=0;i<cLen;i++){var child=children[i];if(child.nodeType===1){this.cards.push(child);}}},addChildElement:function(index,element)
{this.cards[index].appendChild(element);},createChildren:function(parent,callback,index)
{if(typeof index==='undefined'){index=0;}
var self=this;if(this.children[index]){this.createChild(this.children[index],index,function(){self.createChildren(null,callback,++index);});}else{if(dfx.isFn(callback)){callback.call(self);}}},createChild:function(child,cardIndex,callback)
{var self=this;if((child instanceof Widget)!==true){self.cards[cardIndex].appendChild(child);callback.call(this);}else{child.create(function(el){self.cards[cardIndex].appendChild(el);callback.call(self);});}},addClasses:function(el)
{if(!el){el=this.domElem;}
if(el){var len=this.classes.length;for(var i=0;i<len;i++){dfx.addClass(el,this.classes[i]);}}},addClass:function(className)
{this.classes.push(className);if(this.domElem){dfx.addClass(this.domElem,className);}},next:function()
{this.hide(this.currentCardIndex);this.currentCardIndex++;this.show(this.currentCardIndex);},prev:function()
{this.hide(this.currentCardIndex);this.currentCardIndex--;this.show(this.currentCardIndex);},show:function(index)
{this.hideAll();dfx.removeClass(this.cards[index],this.getClass()+'-item-hidden');dfx.addClass(this.cards[index],this.getClass()+'-item');this.currentCardIndex=index;if(this.hasScrolls===true){WidgetStore.get(this.id+'-scp:'+index).update();}},hideAll:function()
{dfx.addClass(this.cards,this.getClass()+'-item-hidden');},hide:function(index)
{dfx.removeClass(this.cards[index],this.getClass()+'-item');dfx.addClass(this.cards[index],this.getClass()+'-item-hidden');},getTotalCards:function()
{return this.cards.length;}};dfx.inherits('CardLayout','AbstractContainer');function CronScriptsWidgetType(id,cScripts)
{AbstractContainerWidgetType.call(this,id);this.widgetType='CronScripts';this.cronScripts=cScripts;this.hasChanges={};this.addEvents();var self=this;dfx.foreach(this.cronScripts,function(idx){var sysName=self.cronScripts[idx].system;var scriptName=self.cronScripts[idx].script;self.children.push(self.id+'-interval-'+sysName+'-'+scriptName);self.children.push(self.id+'-enabled-'+sysName+'-'+scriptName);return true;});}
CronScriptsWidgetType.prototype={addEvents:function()
{var len=this.cronScripts.length;for(var i=0;i<len;i++){var sysName=this.cronScripts[i].system;var scriptName=this.cronScripts[i].script;var selectId=this.id+'-interval-'+sysName+'-'+scriptName;var toggleId=this.id+'-enabled-'+sysName+'-'+scriptName;var select=WidgetStore.get(selectId);var toggle=WidgetStore.get(toggleId);this._addEvent(select,'interval',i);this._addEvent(toggle,'enabled',i);}},_addEvent:function(widget,type,i)
{var self=this;if(type==='interval'){widget.addItemSelectedEvent(function(){var val=this.getValue();var ori=self.cronScripts[i][type];if(val!==ori){self.hasChanges[this.id]=true;}else{delete self.hasChanges[this.id];}
self._checkChanges();});}else if(type==='enabled'){widget.addToggleEvent(function(){var val=this.getValue();var ori=self.cronScripts[i][type];if(val!==ori){self.hasChanges[this.id]=true;}else{delete self.hasChanges[this.id];}
self._checkChanges();});}},revert:function()
{this.hasChanges={};var len=this.cronScripts.length;for(var i=0;i<len;i++){var sysName=this.cronScripts[i].system;var scriptName=this.cronScripts[i].script;var selectId=this.id+'-interval-'+sysName+'-'+scriptName;var toggleId=this.id+'-enabled-'+sysName+'-'+scriptName;var select=WidgetStore.get(selectId);var toggle=WidgetStore.get(toggleId);select.setValue(this.cronScripts[i].interval,true);toggle.setValue(this.cronScripts[i].enabled);}},_checkChanges:function()
{var noChange=true;for(var id in this.hasChanges){if(this.hasChanges[id]===true){this.setModified(true);noChange=false;break;}}
if(noChange===true){this.setModified(false);}},getChanges:function(field)
{var changes=[];var len=this.cronScripts.length;for(var i=0;i<len;i++){var sysName=this.cronScripts[i].system;var scriptName=this.cronScripts[i].script;var oriValue=this.cronScripts[i][field];var intervalSelectId=this.id+'-'+field+'-'+sysName+'-'+scriptName;var wdgt=WidgetStore.get(intervalSelectId);var value=wdgt.getValue();switch(field){case'interval':if(oriValue!==value){changes.push({system:sysName,script:scriptName,value:value});}
break;case'enabled':if(oriValue!==value){changes.push({system:sysName,script:scriptName,value:value});}
break;default:break;}}
return changes;}};dfx.inherits('CronScripts','AbstractContainer');function DynamicDivWidgetType(id)
{AbstractContainerWidgetType.call(this,id);this.widgetType='DynamicDiv';this.url=document.location.href;this.domElem=null;if(dfx.getId(id)){this.domElem=dfx.getId(id);}
this.cssLinks=[];this.cssStyles=[];this.jsScripts=[];}
DynamicDivWidgetType.prototype={create:function(callback)
{var div=document.createElement('div');div.id=this.id+'_content';this.domElem=div;if(dfx.isFn(callback)===true){callback.call(this,div);}},setAlternateDiv:function(id)
{if(dfx.getId(id)){this.domElem=dfx.getId(id);}},getInterface:function(system,xmlFileName,endFunc,postStr)
{var params={system:'EditInterface',action:'getInterface',systemName:system,file:xmlFileName+'&'+postStr};this.changeContent(params,endFunc);},setElement:function(elem)
{this.domElem=elem;},changeContent:function(params,endFunc)
{var url=this.url;var domElem=this.domElem;var self=this;dfx.post(url,params,function(data){self.updateContent(data,endFunc);});},includeScriptFiles:function(data,callback)
{var urls=[];var tmp=[];var url='';var name=0;var jsIncludes=data.getElementsByTagName('jsinclude');var include=false;var jsLen=jsIncludes.length;for(var i=0;i<jsLen;i++){include=true;url=jsIncludes.item(i).firstChild.nodeValue;if(dfx.scriptsIncluded.inArray(url)===true){include=false;}else{name=url.match(/\/[A-Za-z]+WidgetType\.js/);if(name!==null){name=name[0].substr(1,(name[0].length-4));if(typeof(window[name])!=='undefined'){include=false;}}}
if(include){dfx.scriptsIncluded.push(url);tmp.push(url);}}
dfx.includeScripts(tmp,callback);},updateContent:function(xml,endFunc)
{this.cleanup();var domElem=this.domElem;if(domElem===null){this.domElem=dfx.getId(this.id);domElem=this.domElem;}
var data=null;if(typeof xml==='string'){var parser=new Util.Xml(xml);data=parser.parse();if(data.firstChild.tagName==='parsererror'){data=xml;dfx.setHtml(domElem,data);if(dfx.isFn(endFunc)){endFunc.call();}
return;}else if(data.firstChild.tagName==='div'){dfx.setHtml(domElem,xml);if(dfx.isFn(endFunc)){endFunc.call();}
return;}}else{data=xml;}
var cssIncludes=data.getElementsByTagName('cssinclude');var cssIncNum=cssIncludes.length;for(var i=0;i<cssIncNum;i++){this.cssLinks.push(dfx.includeCss(cssIncludes.item(i).firstChild.nodeValue));}
var cssContents=data.getElementsByTagName('csscontent');var cssNum=cssContents.length;for(i=0;i<cssNum;i++){dfx.addCssToStyle(dfx.getNodeTextContent(cssContents[i]));}
var divContent=dfx.getNodeTextContent(data.getElementsByTagName('content').item(0));dfx.setHtml(domElem,divContent.replace(/jsscript/g,'script'));var callbackData=dfx.getNodeTextContent(data.getElementsByTagName('callbackdata').item(0));var self=this;this.includeScriptFiles(data,function(){var src=dfx.getNodeTextContent(data.getElementsByTagName('javascript').item(0));var script=document.createElement('script');script.text=src;script.language='javascript';script.type='text/javascript';self.jsScripts.push(script);setTimeout(function(){document.getElementsByTagName("head").item(0).appendChild(script);if(dfx.isFn(endFunc)){endFunc.call(self,callbackData);}},100);});},cleanup:function()
{var cssNum=this.cssLinks.length;for(var i=0;i<cssNum;i++){dfx.remove(this.cssLinks[i]);}
this.cssLinks=[];var jsNum=this.jsScripts.length;for(i=0;i<jsNum;i++){dfx.remove(this.jsScripts[i]);}
this.jsScripts=[];}};dfx.inherits('DynamicDiv','AbstractContainer');function InfoBoxWidgetType(id,warnings)
{AbstractContainerWidgetType.call(this,id);this.widgetType='InfoBox';this.className='InfoBoxWidgetType';this.title='';this.subtitle='';this.infoBody=dfx.getId(this.id+'_body');this.sections={};this.preSelectCheckFn=null;this.leftButton=null;this.leftButtonContainer=dfx.getId(this.id+'_BtnContainerLeft');this.middleButton=null;this.middleButtonContainer=dfx.getId(this.id+'_BtnContainerMiddle');this.rightButton=null;this.rightButtonContainer=dfx.getId(this.id+'_BtnContainerRight');this.callbackList={};this.clickedId=null;this.prevClickedId=null;this.preSelect=null;this.selectedClassName='selected';this.customisedSelectedClassName={};this.ulClassPrefix='Grey';this.warnings=warnings||{};this.init();}
InfoBoxWidgetType.prototype={init:function()
{if(dfx.isset(this.warnings.length)===true&&this.warnings.length===0){return;}
for(var section in this.warnings){for(var id in this.warnings[section]){if(this.warnings[section][id].show===true){this.showWarning(id);}else{this.hideWarning(id);}}}},setUlClassPrefix:function(prefix)
{this.ulClassPrefix=prefix;},reset:function()
{this.resetTitles();this.resetContent();this.resetButtons();this.callbackList={};this.clickedId=null;this.prevClickedId=null;this.preSelect=null;this.selectedClassName='selected';this.customisedSelectedClassName={};},resetTitles:function()
{this.setTitle('');this.setSubtitle('');},resetContent:function()
{this.infoBody=dfx.getId(this.id+'_body');this.infoBody.innerHTML='';this.sections={};},resetButtons:function()
{if(this.leftButton!==null){WidgetStore.remove(this.leftButton.id);}
if(this.middleButton!==null){WidgetStore.remove(this.middleButton.id);}
if(this.rightButton!==null){WidgetStore.remove(this.rightButton.id);}
delete this.leftButton;delete this.middleButton;delete this.rightButton;this.leftButton=null;this.middleButton=null;this.rightButton=null;dfx.setHtml(this.leftButtonContainer,'');dfx.setHtml(this.middleButtonContainer,'');dfx.setHtml(this.rightButtonContainer,'');},addNewButton:function(callback,ops)
{var self=this;if(dfx.isset(ops)===false){ops={};}
var defaultLabel=ops.defaultLabel||'Add New';var actionLabel=ops.actionLabel||'Create';this.addButton('addBtn',defaultLabel,'right',function(){self.includeWidgets(['TextField'],function(){var textfield=self.createWidget(self.id+'-addNewName','TextField');textfield.create(function(el){var newNameWrapper=document.createElement('div');var cancelIcon=document.createElement('div');dfx.addClass(newNameWrapper,self.className+'-TextFieldWrapper');dfx.addClass(cancelIcon,self.className+'-TextFieldCancel');newNameWrapper.appendChild(cancelIcon);newNameWrapper.appendChild(el);dfx.hideElement(newNameWrapper);self.middleButtonContainer.appendChild(newNameWrapper);dfx.addEvent(cancelIcon,'click',function(e){var btn=WidgetStore.get(self.id+'_btn_addBtn');btn.setName(defaultLabel);textfield.setValue('');dfx.hideElement(newNameWrapper);});self.addButtonClickEvent('right',function(){var btn=WidgetStore.get(self.id+'_btn_addBtn');var btnVal=btn.getName();var value=textfield.getValue();if(btnVal===defaultLabel){dfx.showElement(dfx.getId(self.id+'-addNewName_container'));btn.setName(actionLabel);dfx.showElement(newNameWrapper);dfx.getId(self.id+'-addNewName').focus();}else if(btnVal==='Create'&&value.length>0){dfx.hideElement(newNameWrapper);textfield.setValue('');btn.setName('Add New');dfx.hideElement(dfx.getId(self.id+'-addNewName_container'));if(callback){callback.call(self,value);}}});});});});},hasAddNewButton:function()
{var el=dfx.getId(this.id+'_btn_addBtn');if(el){return true;}
return false;},addButton:function(id,title,orientation,callback,clickEvent)
{var self=this;this.includeWidget('Button',function(){var buttonWdgt=self.createWidget(self.id+'_btn_'+id,'Button');buttonWdgt.setName(title);buttonWdgt.create(function(div){var parent=null;switch(orientation){case'left':parent=dfx.getId(self.id+'_BtnContainerLeft');self.leftButton=buttonWdgt;break;case'middle':parent=dfx.getId(self.id+'_BtnContainerMiddle');self.middleButton=buttonWdgt;break;case'right':parent=dfx.getId(self.id+'_BtnContainerRight');self.rightButton=buttonWdgt;break;default:break;}
parent.appendChild(div);if(dfx.isFn(clickEvent)===true){self.addButtonClickEvent(orientation,clickEvent);}
if(dfx.isFn(callback)===true){callback.call(self);}});});},addButtonClickEvent:function(orientation,callback)
{switch(orientation){case'left':this.leftButton.addClickEvent(callback);break;case'middle':this.middleButton.addClickEvent(callback);break;case'right':this.rightButton.addClickEvent(callback);break;default:break;}},enableButton:function(orientation)
{switch(orientation){case'left':this.leftButton.enable();break;case'middle':this.middleButton.enable();break;case'right':this.rightButton.enable();break;default:break;}},disableButton:function(orientation)
{switch(orientation){case'left':this.leftButton.disable();break;case'middle':this.middleButton.disable();break;case'right':this.rightButton.disable();break;default:break;}},setTitle:function(title)
{var elem=dfx.getId(this.id+'_title');if(elem!==null){dfx.setHtml(elem,title);}},setSubtitle:function(subtitle)
{var elem=dfx.getId(this.id+'_subtitle');if(elem!==null){dfx.setHtml(elem,subtitle);}},addSection:function(id,title,noList)
{var wrapper=document.createElement('div');wrapper.id=this.id+'_section_'+id;noList=noList||false;if(title!==null){var divider=document.createElement('div');divider.id=this.id+'_section_title_'+id;dfx.addClass(divider,'divider');dfx.setHtml(divider,title);wrapper.appendChild(divider);}
if(!noList){var ul=document.createElement('ul');ul.id=this.id+'_section_list_'+id;dfx.addClass(ul,this.className+'-Ul-'+this.ulClassPrefix);wrapper.appendChild(ul);}
this.infoBody.appendChild(wrapper);this.sections[id]=[];},setPreSelectCheckFn:function(fn)
{this.preSelectCheckFn=fn||null;},addItem:function(sectionid,id,name,callback,noClickEvent,hidden,isChild)
{if(dfx.isset(this.sections[sectionid])===false){return;}
var item={'id':id,'name':name,'fn':callback};this.sections[sectionid].push(item);var sectionList=dfx.getId(this.id+'_section_list_'+sectionid);if(sectionList){var target=document.createElement('li');var sectionWrapper=sectionList;}else{var target=document.createElement('div');var sectionWrapper=dfx.getId(this.id+'_section_'+sectionid);}
hidden=hidden||false;if(hidden){dfx.hideElement(target);}
target.id=id;if(this.preSelect!==null&&this.preSelect===id){this.prevClickedId=id;this.applySelectedClassName(target);}
var self=this;if(typeof name==='string'){dfx.setHtml(target,name);}else{target.appendChild(name);}
var noClickEvt=noClickEvent||false;if(noClickEvt===false&&target.nodeName.toLowerCase()==='li'){dfx.addEvent(target,'click',function(e){var et=dfx.getMouseEventTarget(e);while(et.nodeName.toLowerCase()!=="li"){et=et.parentNode;}
if(self.preSelectCheckFn&&self.preSelectCheckFn.call(self)===false){return;}
self.setItem(et.id);if(dfx.isFn(callback)){callback.call(self,et.id,e);}});}
if(isChild!==true){sectionWrapper.appendChild(target);}
return target;},changeItemid:function(oldid,newid)
{var elem=dfx.getId(oldid);if(elem){if(this.prevClickedId===oldid){this.prevClickedId=newid;}else if(this.clickedId===oldid){this.clickedId=newid;}
elem.id=newid;return true;}
return false;},addChildItem:function(sectionid,parentid,childid,content,callback,noClickEvent,hidden)
{var parentElem=dfx.getId(parentid);var childEl=this.addItem(sectionid,childid,content,callback,noClickEvent,hidden,true);dfx.addClass(childEl,'child');var node=parentElem;while(node){if(!node.nextSibling||dfx.hasClass(node.nextSibling,'child')!==true){break;}
node=node.nextSibling;}
dfx.insertAfter(node,childEl);},setItem:function(id)
{var self=this;if(self.clickedId!==null){self.prevClickedId=self.clickedId;}
self.clickedId=id;var target=dfx.getId(id);self.applySelectedClassName(target);if(self.prevClickedId!==null){self.removeSelectedClassName(dfx.getId(self.prevClickedId));}
self.applySelectedClassName(dfx.getId(self.clickedId));if(dfx.hasClass(target,'child')===false){dfx.removeClass(dfx.getClass('child',target.parentNode),'active');dfx.removeClass(dfx.getClass('expanded',target.parentNode),'expanded');dfx.addClass(target,'expanded');var node=target.nextSibling;while(node){if(dfx.hasClass(node,'child')===true){dfx.addClass(node,'active');}else{break;}
node=node.nextSibling;}}else{dfx.addClass(target,'active');}},showItem:function(id)
{var item=dfx.getId(id);if(item){dfx.showElement(item);}},hideItem:function(id)
{var item=dfx.getId(id);if(item){dfx.hideElement(item);}},getClickedId:function()
{if(this.clickedId===null&&this.hasSelection()===true){return this.preSelect;}else{return this.clickedId;}},setSelected:function(id)
{this.preSelect=id;},setSelecedClassName:function(cn)
{this.selectedClassName=cn;},addCustomiseSelectedClassName:function(itemid,cn,sticky,applyNow)
{var itemEl=dfx.getId(itemid);if(applyNow){dfx.removeClass(itemEl,this.selectedClassName);}
sticky=sticky||false;this.customisedSelectedClassName[itemid]={classN:cn,sticky:sticky};if(applyNow){dfx.addClass(itemEl,cn);}},applySelectedClassName:function(itemEl)
{if(this.customisedSelectedClassName[itemEl.id]){dfx.addClass(itemEl,this.customisedSelectedClassName[itemEl.id].classN);}else{dfx.addClass(itemEl,this.selectedClassName);}},removeSelectedClassName:function(itemEl)
{if(!itemEl){return;}
if(this.customisedSelectedClassName[itemEl.id]){if(this.customisedSelectedClassName[itemEl.id].sticky===false){dfx.removeClass(itemEl,this.customisedSelectedClassName[itemEl.id].classN);}}else{dfx.removeClass(itemEl,this.selectedClassName);}},hasSelection:function()
{if(this.preSelect!==null){return true;}else{return false;}},getPrevClickedId:function()
{return this.prevClickedId;},setContent:function(elem)
{var body=dfx.getId(this.id+'_body');body.appendChild(elem);},showWarning:function(id)
{var warning=dfx.getId(this.id+'_warning_'+id);if(warning){dfx.showElement(warning);}},hideWarning:function(id)
{var warning=dfx.getId(this.id+'_warning_'+id);if(warning){dfx.hideElement(warning);}}};dfx.inherits('InfoBox','AbstractContainer');function InputWidgetType(id)
{AbstractContainerWidgetType.call(this,id);this.widgetType='Input';var self=this;this.error=false;this.errorElem=this.domElem;this.name='';this.label='';this.labelEl=null;this.domEl=null;this.hasWizardOpts=true;this.inline=false;this.setValueActions=[];if(dfx.getId(this.id)){this.addEvents();}}
InputWidgetType.prototype={blur:function(){},focus:function(){},createLabel:function(inline)
{var label=document.createElement('label');dfx.setHtml(label,this.label);label.setAttribute('for',this.id);this.labelEl=label;if(inline===true){dfx.setStyle(label,'float','left');dfx.setStyle(label,'margin-top','3px');}
return label;},setValue:function(val)
{this.value=val;var el=dfx.getId(this.id);if(el){el.value=val;}
this.fireSetValueActions(val);},getValue:function()
{return dfx.getId(this.id).value;},getName:function()
{return this.name;},getErrorElement:function()
{return this.errorElem;},getForm:function()
{return WidgetStore.get(this.domElem.form.id);},hasError:function(error)
{this.error=error;},setName:function(name)
{this.name=name;},setShowLabel:function(show)
{this.showLabel=show;},setLabel:function(label)
{this.label=label;if(this.labelEl!==null){dfx.setHtml(this.labelEl,label);}},getLabel:function()
{return this.label;},setInline:function(inline)
{this.inline=inline;},getWizardOptions:function(callback)
{var self=this;Widget.prototype.getWizardOptions.call(this,function(widgets){self.includeWidgets(['TextField'],function(){var widget=self.createWidget(self.id+'-options-label','TextField');widget.setLabel('Label');widget.setInline(true);widget.setValue(self.getLabel());widget.setEvent('keyup',function(){self.setLabel(widget.getValue());});widgets.push(widget);var nameWidget=self.createWidget(self.id+'-options-name','TextField');nameWidget.setLabel('Name');nameWidget.setInline(true);nameWidget.setValue(self.name);nameWidget.setEvent('keyup',function(){self.name=nameWidget.getValue();});widgets.push(nameWidget);callback.call(self,widgets);});});},getWizardOptionName:function()
{return this.label;},exportWidget:function()
{var o=Widget.prototype.exportWidget.call(this);o.name=this.name;o.label=this.label;return o;},clearValue:function()
{this.domElem.value='';},getWidgetSummary:function()
{var s='';var val=this.getValue();if(val!==''){s=this.label+':'+val;}
return s;},addSetValueAction:function(action)
{this.setValueActions.push(action);},fireSetValueActions:function(value)
{var len=this.setValueActions.length;for(var i=0;i<len;i++){this.setValueActions[i].call(this,value);}}};dfx.inherits('Input','AbstractContainer');function ListWidgetType(id,columnSizes,showRemoveButton,uniqueItemsOnly,alternateStyle,toggleOption)
{AbstractContainerWidgetType.call(this,id);this.widgetType='ListItem';this.className='ListWidgetType';this.itemClassName='ListItemWidgetType';this.itemCount=0;this.items=[];this.itemids=[];this.columnSizes=columnSizes;this.showRemoveButton=showRemoveButton||false;this.itemEnabledEvents=[];this.itemDisabledEvents=[];this.itemHoverEvents=[];this.removedEvents=[];this.highlighted=null;this.domElem=null;this.itemClickedEvents=[];this.columnItemClickedEvents=[];this.columnItemDblClickedEvents=[];this.uniqueItemsOnly=uniqueItemsOnly;if(typeof uniqueItemsOnly!=='boolean'){if(uniqueItemsOnly===1){this.uniqueItemsOnly=true;}else{this.uniqueItemsOnly=false;}}
this.alternateStyle=alternateStyle;if(typeof alternateStyle!=='boolean'){if(alternateStyle===1){this.alternateStyle=true;}else{this.alternateStyle=false;}}
this.toggleOption=toggleOption;if(typeof toggleOption!=='boolean'){if(toggleOption===1){this.toggleOption=true;}else{this.toggleOption=false;}}
var elem=dfx.getId(this.id);if(dfx.isset(elem)===true){this.init();this.domElem=elem;}
this.timeout=null;}
ListWidgetType.prototype={init:function()
{this.items=dfx.getClass(this.itemClassName,dfx.getId(this.id));var iLen=this.items.length;for(var i=0;i<iLen;i++){var itemid=this.items[i].getAttribute('itemid');this.itemids.push(itemid);}
this.addRemoveButtonEvent();this.addMouseOverEvent();this.addMouseClickEvent();},create:function(callback)
{var list=document.createElement('div');this.domElem=list;list.id=this.id;dfx.addClass(list,this.className);if(dfx.isFn(callback)===true){callback.call(this,list);return;}},addItem:function(itemid,rowData,index)
{var self=this;if(this.toggleOption===true){if(this.itemids.inArray(itemid)===true){var idx=this.getIndexByItemid(itemid);if(idx!==false){dfx.showElement(this.items[idx]);this.toggleItemState(idx);return;}}}
if(this.uniqueItemsOnly===true){if(this.itemids.inArray(itemid)===true){return;}}
var div=document.createElement('div');var itemClassName=this.itemClassName;if(this.alternateStyle===true){var count=0;if(dfx.isset(index)===true){count=index;}else{count=this.items.length;}
if((count%2)===1){itemClassName=this.itemClassName+'-even';}}
dfx.addClass(div,itemClassName);div.id=this.id+'_'+this.items.length;div.setAttribute('itemid',itemid);var lastClassName=this.itemClassName+'-last';dfx.addClass(div,lastClassName);var prevItem=dfx.getId(this.id+'_'+(this.items.length-1));dfx.removeClass(prevItem,lastClassName);var rowLen=rowData.length;for(var i=0;i<rowLen;i++){div.appendChild(this.createColumn(i,rowData[i],false,itemid));}
if(this.showRemoveButton==='1'){var col=this.createColumn(rowData.length,'',true);div.appendChild(col);this._addRemoveButtonEvent(col,this.items.length);}
this.addMouseOverEvent(div);dfx.addEvent(div,'click',function(){self.fireItemClickedEvents(itemid);});dfx.hover(div,function(){self.fireItemHoverEvents(itemid,true);},function(){self.fireItemHoverEvents(itemid,false);});if(dfx.isset(index)===true){dfx.insertAfter(this.domElem.childNodes[(index-1)],div);this.items.splice(index,0,div);this.itemids.splice(index,0,itemid);}else{this.domElem.appendChild(div);this.items.push(div);this.itemids.push(itemid);}
return div;},getItemIndex:function(itemid)
{return this.itemids.find(itemid);},getItemElement:function(itemid)
{var index=this.getItemIndex(itemid);if(index>-1){return this.items[index];}},createColumn:function(index,content,removeCol,itemid)
{var size=this.columnSizes[index];var div=document.createElement('div');var c=this.itemClassName+'-col';if(removeCol===true){c=this.itemClassName+'-remove-col';if(this.readOnly===true){dfx.setStyle(div,'display','none');}}
dfx.addClass(div,c);div.id=this.id+'_'+this.items.length+'-col:'+index;if((content instanceof Object)===true){div.appendChild(content);}else{dfx.setHtml(div,content);}
if(dfx.isset(size)===true&&content!==null){dfx.setStyle(div,'width',size);}
var self=this;if(dfx.isset(content)===true){dfx.safedblclick(div,function(e){self.fireColumnItemClickedEvents(index,itemid,e);},function(e){self.fireColumnItemDblClickedEvents(index,itemid,e);});}
return div;},addMouseOverEvent:function(elems)
{if(dfx.isset(elems)===false){elems=this.items;}
var self=this;dfx.hover(elems,function(e){self.mouseOver(e.currentTarget);},function(e){self.mouseOut(e.currentTarget);});},mouseOver:function(el)
{this.mouseOut();if(dfx.hasClass(el,this.itemClassName+'-even')===true){dfx.addClass(el,this.itemClassName+'-even-hover');}else{dfx.addClass(el,this.itemClassName+'-hover');}},mouseOut:function(el)
{if(dfx.hasClass(el,this.itemClassName+'-even')===true){dfx.removeClass(el,this.itemClassName+'-even-hover');}else{dfx.removeClass(el,this.itemClassName+'-hover');}},addMouseClickEvent:function(elems)
{if(dfx.isset(elems)===false){elems=this.items;}
var self=this;dfx.addEvent(elems,'click',function(e){self.fireItemClickedEvents(e.currentTarget.getAttribute('itemid'));});},addRemoveButtonEvent:function()
{var self=this;var removeCols=dfx.getClass(this.itemClassName+'-remove-col',dfx.getId(this.id));var len=removeCols.length;for(var i=0;i<len;i++){this._addRemoveButtonEvent(removeCols[i],i);}},_addRemoveButtonEvent:function(elem,index)
{var self=this;dfx.addEvent(elem,'click',function(){if(self.toggleOption===true){dfx.hideElement(self.items[index]);}
self.toggleItemState(index);self.fireRemovedEvents();});},addRemovedEvent:function(fn)
{this.removedEvents.push(fn);},fireRemovedEvents:function()
{var ln=this.removedEvents.length;for(var i=0;i<ln;i++){this.removedEvents[i].call(this);}},toggleItemState:function(index)
{dfx.toggleClass(this.items[index],this.itemClassName+'-removed');var columns=dfx.getClass(this.itemClassName+'-col',this.items[index]);dfx.toggleClass(columns,this.itemClassName+'-col-removed');if(dfx.hasClass(this.items[index],this.itemClassName+'-removed')===true){this.fireItemDisabledEvents(this.items[index].getAttribute('itemid'));}else{this.fireItemEnabledEvents(this.items[index].getAttribute('itemid'));}},getListItems:function()
{var items=[];var length=this.items.length;for(var i=0;i<length;i++){items.push(this.items[i].getAttribute('itemid'));}
return items;},getListEnabledItems:function(idOnly)
{var enabledItems=[];var length=this.items.length;for(var i=0;i<length;i++){if(dfx.hasClass(this.items[i],'ListItemWidgetType-removed')===false){enabledItems.push(this.items[i].getAttribute('itemid'));}}
return enabledItems;},getListDisabledItems:function()
{var disabledItems=[];var length=this.items.length;for(var i=0;i<length;i++){if(dfx.hasClass(this.items[i],'ListItemWidgetType-removed')===true){disabledItems.push(this.items[i].getAttribute('itemid'));}}
return disabledItems;},disable:function()
{var removeCols=dfx.getClass(this.itemClassName+'-remove-col',dfx.getId(this.id));var len=removeCols.length;for(var i=0;i<len;i++){dfx.hideElement(removeCols[i]);}},enable:function()
{var removeCols=dfx.getClass(this.itemClassName+'-remove-col',dfx.getId(this.id));var len=removeCols.length;for(var i=0;i<len;i++){dfx.showElement(removeCols[i]);}},getItemCount:function()
{return this.items.length;},getValue:function(all)
{var itemids=[];var length=this.items.length;for(var i=0;i<length;i++){var itemid=this.items[i].getAttribute('itemid');if(dfx.isset(itemid)===true){if(all===true||dfx.hasClass(this.items[i],this.itemClassName+'-removed')===false){itemids.push(itemid);}}}
return itemids;},removeItem:function(itemid)
{var index=this.itemids.find(itemid);if(index>=0){this.itemids.splice(index,1);}
var iLen=this.items.length;for(var i=0;i<iLen;i++){if(i===itemid){dfx.remove(this.items[i]);this.items.splice(i,1);return;}}},clearItems:function()
{this.highlighted=null;this.itemids=[];dfx.remove(this.items);this.items=[];},addItemDisabledEvent:function(fn)
{this.itemDisabledEvents.push(fn);},fireItemDisabledEvents:function(itemid)
{var ln=this.itemDisabledEvents.length;for(var i=0;i<ln;i++){this.itemDisabledEvents[i].call(this,itemid);}},addItemEnabledEvent:function(fn)
{this.itemEnabledEvents.push(fn);},fireItemEnabledEvents:function(itemid)
{var ln=this.itemEnabledEvents.length;for(var i=0;i<ln;i++){this.itemEnabledEvents[i].call(this,itemid);}},addItemClickedEvent:function(fn)
{this.itemClickedEvents.push(fn);},fireItemClickedEvents:function(itemid)
{var ln=this.itemClickedEvents.length;for(var i=0;i<ln;i++){this.itemClickedEvents[i].call(this,itemid);}},addColumnItemClickedEvent:function(col,fn)
{if(dfx.isset(this.columnItemClickedEvents[col])===false){this.columnItemClickedEvents[col]=[];}
this.columnItemClickedEvents[col].push(fn);},fireColumnItemClickedEvents:function(col,itemid,e)
{if(dfx.isset(this.columnItemClickedEvents[col])===true){var ln=this.columnItemClickedEvents[col].length;for(var i=0;i<ln;i++){this.columnItemClickedEvents[col][i].call(this,itemid,e);}}},addColumnItemDblClickedEvent:function(col,fn)
{if(dfx.isset(this.columnItemDblClickedEvents[col])===false){this.columnItemDblClickedEvents[col]=[];}
this.columnItemDblClickedEvents[col].push(fn);},fireColumnItemDblClickedEvents:function(col,itemid,e)
{if(dfx.isset(this.columnItemDblClickedEvents[col])===true){var ln=this.columnItemDblClickedEvents[col].length;for(var i=0;i<ln;i++){this.columnItemDblClickedEvents[col][i].call(this,itemid,e);}}},addItemHoverEvent:function(fn)
{this.itemHoverEvents.push(fn);},fireItemHoverEvents:function(itemid,on)
{var ln=this.itemHoverEvents.length;for(var i=0;i<ln;i++){this.itemHoverEvents[i].call(this,itemid,on);}},highlight:function(itemid,dir)
{if(itemid===null){this.mouseOut(this.items[this.highlighted]);this.fireItemHoverEvents(this.getHighlightedItemid(),false);if(this.highlighted===null){this.highlighted=0;}else if(dir===1&&this.highlighted<(this.items.length-1)){this.highlighted++;}else if(dir===-1&&this.highlighted>0){this.highlighted--;}
this.mouseOver(this.items[this.highlighted]);this.fireItemHoverEvents(this.getHighlightedItemid(),true);}},getHighlightedItemid:function()
{var itemid=null;var el=this.items[this.highlighted];if(dfx.isset(el)===true){itemid=el.getAttribute('itemid');}
return itemid;},getIndexByItemid:function(itemid)
{var len=this.items.length;for(var i=0;i<len;i++){var id=this.items[i].getAttribute('itemid');if(Number(id)===Number(itemid)){return i;}}
return false;},setReadOnly:function(readOnly)
{AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);var state='';if(readOnly===true){state='none';}
var delIcons=dfx.getClass('ListItemWidgetType-remove-col',this.domElem);dfx.setStyle(delIcons,'display',state);}};dfx.inherits('List','AbstractContainer');function MenuDesignAreaParentSelectorWidgetType(id)
{AbstractContainerWidgetType.call(this,id);this.widgetType='MenuDesignAreaParentSelector';this.value='site';this.options={'site':'Current Site','current':'Current Asset','assetid':'Specific Asset'};this.selectWdgt=null;this.pickerWdgt=null;}
MenuDesignAreaParentSelectorWidgetType.prototype={create:function(callback)
{var self=this;this.includeWidgets(['Select','AssetPicker'],function(){var div=document.createElement('div');div.id=self.id;dfx.addClass(div,self.widgetType);var wrap=document.createElement('div');wrap.id=self.id+'-wrap';dfx.addClass(wrap,self.widgetType+'-wrap');dfx.setStyle(wrap,'margin-bottom','5px');var rod=document.createElement('div');rod.id=self.id+'-readOnly';dfx.addClass(rod,self.widgetType+'-readOnly');if(self.readOnly){dfx.hideElement(wrap);}else{dfx.hideElement(rod);}
self.selectWdgt=self.createWidget(self.id+'-select','Select');self.pickerWdgt=self.createWidget(self.id+'-asset-picker','AssetPicker');self.selectWdgt.addItemSelectedEvent(function(idx){if(idx===0||idx===1){dfx.hideElement(dfx.getId(self.id+'-asset-picker'));if(idx===0){self.value='site';}else if(idx===1){self.value='current';}}else if(idx===2){dfx.showElement(dfx.getId(self.id+'-asset-picker'));self.value='assetid';}});self.selectWdgt.addItems(self.options);self.selectWdgt.create(function(sEl){self.pickerWdgt.create(function(aEl){if(self.value==='site'){self.selectWdgt.setValue(self.value,true);dfx.hideElement(aEl);}else if(self.value==='current'){self.selectWdgt.setValue(self.value,true);dfx.hideElement(aEl);}else{self.selectWdgt.setValue('assetid',true);self.pickerWdgt.setValue(parseInt(self.value));}
wrap.appendChild(sEl);wrap.appendChild(aEl);div.appendChild(wrap);div.appendChild(rod);callback.call(self,div);return;});});});},getValue:function()
{if(this.value==='site'||this.value==='current'){return this.value;}
return this.pickerWdgt.getValue();},setValue:function(value)
{if(dfx.getId(this.id)){if(value==='site'||value==='current'){dfx.hideElement(dfx.getId(this.id+'-asset-picker'));this.selectWdgt.setValue(value,true);}else{dfx.showElement(dfx.getId(this.id+'-asset-picker'));this.pickerWdgt.setValue(parseInt(value));this.selectWdgt.setValue('assetid',true);}}
this.value=value;},disable:function()
{this.selectWdgt.disable();this.pickerWdgt.disable();},enable:function()
{this.selectWdgt.enable();this.pickerWdgt.enable();},reset:function(){}};dfx.inherits('MenuDesignAreaParentSelector','AbstractContainer');function MetadataEditTextWidgetType(id,defaultValue)
{AbstractContainerWidgetType.call(this,id);this.defaultValue=defaultValue||'';this.field=WidgetStore.get(this.id+'-field');this.elem=dfx.getId(this.id+'-field');this.container=dfx.getParents(this.elem,'.MetadataEditScreenWidgetType-field')[0];this.value='';if(this.field){this.value=this.field.getValue();this.init();}}
MetadataEditTextWidgetType.prototype={init:function()
{var self=this;if(this.defaultValue&&this.defaultValue!==''){dfx.showElement(dfx.getId(this.id+'-def'));if(this.isUsingDefault()===true){this.field.setValue(this.defaultValue);dfx.addClass(this.container,'useDefault');}
dfx.addEvent(this.elem,'focus',function(){dfx.removeClass(self.container,'useDefault');if(self.isUsingDefault()===true){self.field.clearValue();}});dfx.addEvent(this.elem,'blur',function(){self.toggleDefaultValue();});}
if(this.field){this.field.addOnChangeEvent(function(){self.setModified(true);});}},toggleDefaultValue:function()
{var text=this.field;if(text){var val=text.getValue();if(val===''){text.setValue(this.defaultValue);dfx.addClass(this.container,'useDefault');}
this.value=val;this.setModified(true);}},setValue:function(value)
{if(this.field){this.value=value;}},getValue:function()
{return WidgetStore.get(this.id+'-field').getValue();},isUsingDefault:function()
{if(this.defaultValue&&this.value===''){return true;}else{return false;}},check:function()
{return true;}};dfx.inherits('MetadataEditText','AbstractContainer');function MovieWizardThumbPickerWidgetType(id)
{AbstractContainerWidgetType.call(this,id);this.widgetType='MovieWizardThumbPicker';this.value=null;this.thumbs={};}
MovieWizardThumbPickerWidgetType.prototype={getValue:function()
{return this.value;},setValue:function(value)
{if(!value||!value.fileid){return;}else if(!value.thumbid){this.selectDefaultThumb(value.fileid);}else{this.value=value;this.showThumbs(value.fileid);}},showThumbs:function(fileid)
{if(!fileid||!this.thumbs[fileid]){return;}
var c=this.getClass();dfx.removeClass(dfx.getClass(c+'-thumbsWrapper'),'active');var thumbsWrapper=dfx.getId(fileid);dfx.addClass(thumbsWrapper,'active');},setThumbs:function(fileid,thumbids)
{this.thumbs[fileid]={thumbids:thumbids,content:''};var elem=dfx.getId(this.id);var c=this.getClass();var html='';var imgUrl=this.url+'?widget=MovieCreateWizardWidget&action=getThumb&fileid='+fileid+'&thumbid=';dfx.foreach(thumbids,function(i){html+='<div class="'+c+'-thumbWrapper">';html+='<img class="'+c+'-thumb" src="'+imgUrl+thumbids[i]+'"';html+=' id="'+thumbids[i]+'" fileid="'+fileid+'" />';html+='<div class="'+c+'-thumbTick"></div></div>';});var wrapper=document.createElement('div');wrapper.id=fileid;dfx.addClass(wrapper,c+'-thumbsWrapper');dfx.setHtml(wrapper,html);elem.appendChild(wrapper);this.thumbs[fileid].content=html;var imgs=dfx.getClass(c+'-thumb',wrapper);var iln=imgs.length;for(var i=0;i<iln;i++){this._addImgClickEvent(imgs[i],wrapper);}},_addImgClickEvent:function(elem,wrapper)
{var self=this;dfx.addEvent(elem,'click',function(){var value={fileid:elem.getAttribute('fileid'),thumbid:elem.getAttribute('id')};self.setValue(value);dfx.removeClass(dfx.getClass(self.getClass()+'-thumbWrapper',wrapper),'picked');dfx.addClass(elem.parentNode,'picked');});},selectDefaultThumb:function(fileid)
{var wrapper=dfx.getId(fileid);if(wrapper){var imgs=dfx.getClass(this.getClass()+'-thumb',wrapper);if(imgs.length>0){dfx.trigger(imgs[0],'click');}else{var value={fileid:fileid,thumbid:null};this.value=value;this.showThumbs(fileid);}}},reset:function()
{this.value=null;this.thumbs={};var elem=dfx.getId(this.id);if(elem){dfx.empty(elem);}},setError:function(msg)
{var elem=dfx.getId(this.id);if(elem){dfx.setHtml(elem,'<div class="'+this.getClass()+'-error">'+msg+'</div>');}}};dfx.inherits('MovieWizardThumbPicker','AbstractContainer');function OverlayWidgetType(id,el,title,width,closeAction)
{AbstractContainerWidgetType.call(this,id);this.widgetType='OverlayWidget';if(el){this.el=this.create(title,el);}else{this.el=dfx.getId(id);}}
OverlayWidgetType.prototype={create:function(callback)
{var div=document.createElement('div');div.setAttribute('id',this.id);var content=dfx.getHtml(this.el);dfx.setHtml(content);var self=this;dfx.addEvent(document,'keydown',function(e){if(e.keyCode===27){self.close();}});document.body.appendChild(div);if(callback){callback.call(this,div);}},setOrientation:function(orientation)
{this.orientation=orientation;},show:function()
{this.open();},open:function()
{this.adjustOrientation();var div=this.el;dfx.setStyle(div,'visibility','visible');dfx.setStyle(div,'display','block');},adjustOrientation:function()
{var div=this.el;dfx.setStyle(div,'visibility','hidden');var oldDisp=dfx.getStyle(div,'display');dfx.setStyle(div,'display','block');var h=dfx.getElementHeight(div);var w=dfx.getElementWidth(div);if(!this.orientation){this.orientation=Widget.CENTER;}
switch(this.orientation){case Widget.CENTER:dfx.setStyle(div,'margin-top',((h/2)*(-1))+'px');dfx.setStyle(div,'top','50%');dfx.setStyle(div,'margin-left',((w/2)*(-1))+'px');dfx.setStyle(div,'left','50%');break;case Widget.TOP:dfx.setStyle(div,'margin-top',((h)*(-1))+'px');dfx.setStyle(div,'top','0px');dfx.setStyle(div,'margin-left',((w/2)*(-1))+'px');dfx.setStyle(div,'left','50%');break;case Widget.BOTTOM:dfx.setStyle(div,'margin-top',((h)*(-1))+'px');dfx.setStyle(div,'top','100%');dfx.setStyle(div,'margin-left',((w/2)*(-1))+'px');dfx.setStyle(div,'left','50%');break;case Widget.LEFT:dfx.setStyle(div,'margin-top',((h/2)*(-1))+'px');dfx.setStyle(div,'top','50%');dfx.setStyle(div,'left','0px');break;case Widget.RIGHT:dfx.setStyle(div,'margin-top',((h/2)*(-1))+'px');dfx.setStyle(div,'top','50%');dfx.setStyle(div,'margin-left',((w)*(-1))+'px');dfx.setStyle(div,'left','100%');break;default:break;}
dfx.setStyle(div,'display',oldDisp);dfx.setStyle(div,'visibility','visible');},close:function()
{dfx.remove(this.el);},hide:function()
{dfx.setStyle(this.el,'display','none');},_disable:function()
{Widget.prototype.disable.call(this);this.displayDisabledDiv('100%','100%',true);},_enable:function()
{Widget.prototype.enable.call(this);this.removeDisabledDiv();}};dfx.inherits('Overlay','AbstractContainer');function PlainListWidgetType(id,width,showSortable,showRemoveButton,withSidesShadow,items,itemClass)
{AbstractContainerWidgetType.call(this,id);this.widgetType='PlainListWidgetType';this.deleteButtonClassName=this.widgetType+'-deleteOption';this.deleteButtonRevertClassName=this.widgetType+'-deleteOption-revert';this.markForDeletionClassName=this.widgetType+'-markedForDeletion';this.dragIconClassName=this.widgetType+'-dragIcon';this.alignLeftClassName=this.widgetType+'-alignLeft';this.alignRightClassName=this.widgetType+'-alignRight';this.subContentClassName=this.widgetType+'-subContent';this.width=width;this.showSortable=showSortable||false;this.showRemoveButton=showRemoveButton||false;this.withSidesShadow=withSidesShadow||false;this.items=items;this.listUL=null;this.itemClassName=itemClass||'';this.itemDeleteButtonClickedEvents=[];this.itemDeletedEvents=[];}
PlainListWidgetType.prototype={init:function()
{var self=this;var delIcons=dfx.getClass(this.deleteButtonClassName,this.domElem);dfx.foreach(delIcons,function(idx){dfx.addEvent(delIcons[idx],'click',function(e){if(dfx.hasClass(delIcons[idx].parentNode,self.markForDeletionClassName)===true){dfx.removeClass(delIcons[idx].parentNode,self.markForDeletionClassName);dfx.removeClass(delIcons[idx],self.deleteButtonRevertClassName);self.fireItemDeleteButtonClickedEvent(delIcons[idx].parentNode.id,false);}else{dfx.addClass(delIcons[idx].parentNode,self.markForDeletionClassName);dfx.addClass(delIcons[idx],self.deleteButtonRevertClassName);self.fireItemDeleteButtonClickedEvent(delIcons[idx].parentNode.id,true);}
e.preventDefault();});return true;});},create:function(callback)
{var self=this;var ul=document.createElement('ul');this.listUL=ul;dfx.addClass(ul,this.widgetType);dfx.foreach(this.items,function(idx){self.addItem(self.items[idx]);return true;});if(this.withSidesShadow===true){var leftWrap=document.createElement('div');var rightWrap=document.createElement('div');dfx.addClass(leftWrap,this.widgetType+'-listWrapLeft');dfx.addClass(rightWrap,this.widgetType+'-listWrapRight');rightWrap.appendChild(ul);leftWrap.appendChild(rightWrap);dfx.setStyle(leftWrap,'width',self.width+'px');if(callback){callback.call(this,leftWrap);return;}}else{dfx.setStyle(ul,'width',self.width+'px');if(callback){callback.call(this,ul);return;}}},addItem:function(item)
{var self=this;var li=document.createElement('li');dfx.attr(li,'itemid',item.id);li.id=self.id+'-'+item.id;dfx.addClass(li,self.widgetType);dfx.addClass(li,self.widgetType+'-li');if(self.showSortable===true){var handle=document.createElement('span');handle.title='Drag to re-arrange';dfx.addClass(handle,self.dragIconClassName);dfx.addClass(handle,self.alignLeftClassName);if(this.itemClassName!==''){dfx.addClass(handle,this.itemClassName+'-dragIcon');}
li.appendChild(handle);}
if(item.left){var leftElem=null;if(typeof item.left==='string'){leftElem=document.createElement('span');dfx.setHtml(leftElem,item.left);}else{leftElem=item.left;}
dfx.addClass(leftElem,self.alignLeftClassName);li.appendChild(leftElem);}
if(item.right){var rightElem=null;if(typeof item.right==='string'){rightElem=document.createElement('span');dfx.setHtml(rightElem,item.right);}else{rightElem=item.right;}
dfx.addClass(rightElem,self.alignRightClassName);li.appendChild(rightElem);}
var noDeleteItem=false;if(dfx.isset(item.showRemoveButton)&&item.showRemoveButton===false){noDeleteItem=true;}
if(self.showRemoveButton===true&&noDeleteItem===false){var delBtn=document.createElement('a');delBtn.title='Mark this item for deletion';delBtn.href='javascript: void(0);';dfx.addClass(delBtn,self.deleteButtonClassName);dfx.addClass(delBtn,self.alignRightClassName);if(this.itemClassName!==''){dfx.addClass(delBtn,this.itemClassName+'-deleteOption');}
li.appendChild(delBtn);dfx.addEvent(delBtn,'click',function(){if(self.fireItemRemoveCallbacks(item,!dfx.hasClass(li,self.markForDeletionClassName),delBtn)!==false){dfx.toggleClass(li,self.markForDeletionClassName);self.fireItemRemovedCallbacks(item.id,dfx.hasClass(li,self.markForDeletionClassName));}});}
if(item.subContent){var subContent=document.createElement('div');subContent.id=self.id+'-'+item.id+'-subContent';dfx.addClass(subContent,self.subContentClassName);if(typeof item.subContent==='string'){dfx.setHtml(subContent,item.subContent);}else{subContent.appendChild(item.subContent);}
li.appendChild(subContent);}
this.listUL.appendChild(li);},setItemClass:function(className)
{this.itemClassName=className;},showSubContent:function(id)
{var subCont=dfx.getId(this.id+'-'+id+'-subContent');dfx.showElement(subCont);dfx.setStyle(subCont.parentNode,'height','100%');},hideSubContent:function(id)
{var subCont=dfx.getId(this.id+'-'+id+'-subContent');dfx.hideElement(subCont);dfx.setStyle(subCont.parentNode,'height','null');},getListItems:function()
{var items=[];var listItems=dfx.getTag('li',this.listUL);var length=listItems.length;for(var i=0;i<length;i++){items.push(listItems[i].getAttribute('itemid'));}
return items;},getListEnabledItems:function(idOnly)
{var enabledItems=[];var listItems=dfx.getTag('li',this.listUL);var length=listItems.length;for(var i=0;i<length;i++){if(dfx.hasClass(listItems[i],this.markForDeletionClassName)===false){enabledItems.push(listItems[i].getAttribute('itemid'));}}
return enabledItems;},getListDisabledItems:function()
{var disabledItems=[];var length=this.items.length;for(var i=0;i<length;i++){if(dfx.hasClass(dfx.getId(this.id+'-'+this.items[i].id),this.markForDeletionClassName)===true){disabledItems.push(this.items[i].id);}}
return disabledItems;},disable:function(){},enable:function(){},setReadOnly:function(readOnly)
{AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);var self=this;var delIcons=dfx.getClass(this.className+'-deleteOption',this.domElem);dfx.foreach(delIcons,function(idx){if(readOnly===true){dfx.addClass(delIcons[idx],self.className+'-deleteOption-readOnly');}else{dfx.removeClass(delIcons[idx],self.className+'-deleteOption-readOnly');}
return true;});},addRemoveItemCallback:function(callback)
{this.itemDeleteButtonClickedEvents.push(callback);},fireItemRemoveCallbacks:function(item,removed,deleteBtn)
{var ln=this.itemDeleteButtonClickedEvents.length;for(var i=0;i<ln;i++){if(this.itemDeleteButtonClickedEvents[i].call(this,item.id,removed,deleteBtn)===false){return false;}}
return true;},addItemRemovedCallback:function(callback)
{this.itemDeletedEvents.push(callback);},fireItemRemovedCallbacks:function(item,removed,deleteBtn)
{var ln=this.itemDeletedEvents.length;for(var i=0;i<ln;i++){this.itemDeletedEvents[i].call(this,item.id,removed,deleteBtn);}
return true;},itemIsRemoved:function(itemid)
{var item=dfx.getId(this.id+'-'+itemid);if(item){return dfx.hasClass(item,this.markForDeletionClassName);}
return true;}};dfx.inherits('PlainList','AbstractContainer');function ProfileScreenWidgetType(id,userInfo,recentChanges,dates,tasks,readOnly,cid)
{this.modeType='Profile';AbstractContainerWidgetType.call(this,id);this.widgetType='ProfileScreen';this.dates=dates;this.tasks=tasks||[];this.userInfo=userInfo;this.userInfoOri=dfx.clone(userInfo);this.profileDiv=dfx.getId(this.id+'-profileScreen');this.leftDiv=dfx.getId(this.id+'-profileScreen-left');this.middleDiv=dfx.getId(this.id+'-profileScreen-mid');this.rightDiv=dfx.getId(this.id+'-profileScreen-right');this.taskProgress={};this.lockInfo=null;this.readOnly=readOnly||false;this.cid=cid||0;this.recentChanges=recentChanges||'';this.currentScreenMode='ProfileScreenWidget';this.thumbDisplayed=false;var self=this;this.resourceid='ProfileScreen:'+this.userInfo.userid;if(this.readOnly===true){self.init(readOnly);self.initSaveButton();}else{Locking.acquire(this.resourceid,function(lock){var readOnly=false;if(lock===true){var token=Locking.getToken(self.resourceid);self.lockInfo={resource:self.resourceid,token:token};}else{var errors=Locking.getError(lock);self.readOnly=true;self.lockInfo=errors;}
if(self.readOnly===true){self.includeWidgets(['AbstractSettingsScreen'],function(){AbstractSettingsScreenWidgetType.prototype.displayScreenReadOnlyWarning.call(self,function(el){dfx.insertBefore(self.leftDiv,el);self.init(readOnly);self.initSaveButton();},function(){self.disableSaveButton();self.initSaveButton();},self.resourceid);});}else{self.init(readOnly);self.initSaveButton();}});}}
ProfileScreenWidgetType.prototype={forceEdit:function(callback)
{var self=this;self.includeWidgets(['AbstractSettingsScreen'],function(){AbstractSettingsScreenWidgetType.prototype.forceEdit.call(this,function(){if(callback){callback.call(self);}},this.resourceid);});},setReadOnly:function(readOnly)
{var self=this;if(readOnly===true){this.includeWidgets(['AbstractSettingsScreen'],function(){AbstractSettingsScreenWidgetType.prototype.displayScreenReadOnlyWarning.call(this,function(el){dfx.insertBefore(self.leftDiv,el);self.initSaveButton();},function(){self.disableSaveButton();},self.resourceid);AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);});}else{AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);}},initSaveButton:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveUserProfile();},function(){self.displayDisabledDiv();self.reset();});}},screenModified:function(modified)
{var self=this;var modified=false;if(this.fnameWdgt.getValue()!==this.userInfoOri.fname||this.lnameWdgt.getValue()!==this.userInfoOri.lname){modified=true;}
if(modified===false&&(this.emailWdgt.getValue()!==this.userInfoOri.email||this.unameWdgt.getValue()!==this.userInfoOri.uname)){modified=true;}
if(this.userInfoOri.active!==this.activeToggle.getValue()){modified=true;}
if(this.passWdgt.getValue()!==''||this.passWdgt.getConfirmValue()!==''){modified=true;}
this.setModified(modified);},init:function()
{var self=this;this.includeWidgets(['AbstractEditingScreenMode'],function(){self.includeWidgets(['TextField','Password','ToggleButton','Button'],function(){self.createDetailsSection();self.createTasksSection();self.createRecentActivitySection();self.ready();});});},createDetailsSection:function()
{var self=this;var userLabel=document.createElement('div');dfx.addClass(userLabel,this.widgetType+'WidgetType-SectionLabel');dfx.addClass(userLabel,'userName');dfx.setHtml(userLabel,this.userInfo.fname+' '+this.userInfo.lname);this.leftDiv.appendChild(userLabel);this.fnameWdgt=this.createWidget(this.id+'-firstName','TextField','TextFieldWidgetType',false,1,31,true);this.lnameWdgt=this.createWidget(this.id+'-lastName','TextField','TextFieldWidgetType',false,1,31,true);this.emailWdgt=this.createWidget(this.id+'-email','TextField','TextFieldWidgetType',false,1,31,true);this.unameWdgt=this.createWidget(this.id+'-userName','TextField','TextFieldWidgetType',false,1,31,true);this.passWdgt=this.createWidget(this.id+'-password','Password');var pLabel=document.createElement('label');if(this.readOnly===false){dfx.setHtml(pLabel,'Password');}
this.fnameWdgt.setLabel('First Name');this.lnameWdgt.setLabel('Last Name');this.emailWdgt.setLabel('Email');this.unameWdgt.setLabel('Username');this.fnameWdgt.setShowLabel(true);this.lnameWdgt.setShowLabel(true);this.emailWdgt.setShowLabel(true);this.unameWdgt.setShowLabel(true);this.fnameWdgt.setValue(this.userInfo.fname);this.lnameWdgt.setValue(this.userInfo.lname);this.emailWdgt.setValue(this.userInfo.email);this.unameWdgt.setValue(this.userInfo.uname);var loginDetailsDiv=document.createElement('div');dfx.setHtml(loginDetailsDiv,'Login Details');dfx.addClass(loginDetailsDiv,this.widgetType+'WidgetType-SectionLabel');this.activeLabel=document.createElement('div');this.activeLabelInner=document.createElement('div');var activeWrap=document.createElement('div');var activeText=document.createElement('div');this.activeToggle=this.createWidget(this.id+'-activeToggle','ToggleButton',false,'slider',this.userInfo.active,'Yes','No');this.activeToggle.addToggleOnEvent(function(){dfx.removeClass(self.activeLabel,'inactive');dfx.removeClass(self.activeLabelInner,'inactive');dfx.setHtml(self.activeLabelInner,'Active');});this.activeToggle.addToggleOffEvent(function(){dfx.addClass(self.activeLabel,'inactive');dfx.addClass(self.activeLabelInner,'inactive');dfx.setHtml(self.activeLabelInner,'Inactive');});dfx.setHtml(activeText,'Active Account');if(this.userInfo.active===true){dfx.setHtml(this.activeLabelInner,'Active');dfx.addClass(this.activeLabel,this.widgetType+'WidgetType-activeLabel');dfx.addClass(this.activeLabelInner,this.widgetType+'WidgetType-activeLabelInner');}else{dfx.setHtml(this.activeLabelInner,'Inactive');dfx.addClass(this.activeLabel,this.widgetType+'WidgetType-activeLabel inactive');dfx.addClass(this.activeLabelInner,this.widgetType+'WidgetType-activeLabelInner inactive');}
dfx.addClass(activeWrap,this.widgetType+'WidgetType-activeWrap');dfx.addClass(activeText,this.widgetType+'WidgetType-activeText');this.fnameWdgt.create(function(fel){self.lnameWdgt.create(function(lel){self.emailWdgt.create(function(eel){self.unameWdgt.create(function(uel){self.passWdgt.create(function(pel){self.activeToggle.create(function(tg){self.leftDiv.appendChild(fel);self.leftDiv.appendChild(lel);self.leftDiv.appendChild(eel);self.activeLabel.appendChild(self.activeLabelInner);self.leftDiv.appendChild(self.activeLabel);activeWrap.appendChild(activeText);activeWrap.appendChild(tg);self.leftDiv.appendChild(self.activeLabel);self.leftDiv.appendChild(activeWrap);self.leftDiv.appendChild(loginDetailsDiv);self.leftDiv.appendChild(uel);self.leftDiv.appendChild(pLabel);self.leftDiv.appendChild(pel);self.passWdgt.addEvents();if(self.cid===self.userInfo.userid){self.activeToggle.disable();}});});});});});});dfx.addEvent(this.fnameWdgt.input,'keyup',function(e){self.screenModified();});dfx.addEvent(this.lnameWdgt.input,'keyup',function(e){self.screenModified();});dfx.addEvent(this.emailWdgt.input,'keyup',function(e){self.screenModified();});dfx.addEvent(this.unameWdgt.input,'keyup',function(e){self.screenModified();});self.activeToggle.addToggleOnEvent(function(){self.screenModified();});self.activeToggle.addToggleOffEvent(function(){self.screenModified();});this.passWdgt.addPasswordTypedEvents(function(){self.screenModified();});},createTasksSection:function()
{var self=this;var tasksLabel=document.createElement('div');dfx.addClass(tasksLabel,this.widgetType+'WidgetType-SectionLabel');dfx.addClass(tasksLabel,'tasks');dfx.setHtml(tasksLabel,'Tasks');this.middleDiv.appendChild(tasksLabel);var taskLen=this.tasks.length;if(taskLen===0){var noTasks=document.createElement('div');dfx.addClass(noTasks,this.widgetType+'WidgetType-noTasks');dfx.setHtml(noTasks,'No tasks are currently assigned.');this.middleDiv.appendChild(noTasks);}else{for(var i=0;i<taskLen;i++){(function(idx){var task=self.tasks[i];var taskElemC=self.widgetType+'WidgetType-taskColumn';var taskDivWrap=document.createElement('div');taskDivWrap.id=self.id+'-taskRow-'+idx;dfx.addClass(taskDivWrap,self.widgetType+'WidgetType-taskRow');var content='<div class="'+taskElemC+' taskExpander">&nbsp;</div>';content+='<div class="'+taskElemC+' taskType">'+dfx.ucWords(task.type)+'&nbsp;:&nbsp;</div>';content+='<div class="'+taskElemC+' taskTitle">'+task.title+'</div>';content+='<div class="'+taskElemC+' createDT">'+task.created_date_formatted+'</div>';dfx.setHtml(taskDivWrap,content);self.middleDiv.appendChild(taskDivWrap);var taskDivDescWrap=document.createElement('div');taskDivDescWrap.id=self.id+'-taskDescWrap-'+idx;dfx.addClass(taskDivDescWrap,self.widgetType+'WidgetType-taskDescWrap');dfx.addClass(taskDivDescWrap,'hidden');if(task.description.length===0){content='<div class="'+self.widgetType+'WidgetType-taskDesc">No task description.</div>';}else{content='<div class="'+self.widgetType+'WidgetType-taskDesc">'+task.description+'</div>';}
content+='<div class="'+self.widgetType+'WidgetType-taskProgress"> </div>';content+='<div class="'+self.widgetType+'WidgetType-gotoAsset"> </div>';dfx.setHtml(taskDivDescWrap,content);self.middleDiv.appendChild(taskDivDescWrap);dfx.addEvent(taskDivWrap,'click',function(e){var expander=dfx.getClass('taskExpander',taskDivWrap)[0];var progress=dfx.getClass(self.widgetType+'WidgetType-taskProgress',taskDivDescWrap)[0];if(dfx.hasClass(taskDivDescWrap,'hidden')===true){var expandProgress=function(){dfx.removeClass(taskDivDescWrap,'hidden');dfx.addClass(expander,'expanded');if(idx===(taskLen-1)){dfx.addClass(taskDivDescWrap,'last');dfx.removeClass(taskDivWrap,'last');}};if(dfx.isset(self.taskProgress[self.tasks[idx].taskid])===false){progress.innerHTML='Loading ...';expandProgress();var params={widget:'ProfileScreenModeWidget',taskid:self.tasks[idx].taskid};self.id='ProfileScreenModeWidgetType';AbstractEditingScreenModeWidgetType.prototype.getScreenData.call(self,params,function(progressD){self.id='ProfileScreenWidgetType';var progressD=dfx.jsonDecode(progressD);self.taskProgress[self.tasks[idx].taskid]=dfx.clone(progressD);var content='    <div class="'+self.widgetType+'WidgetType-taskProgressWrap">';content+='        <div class="'+self.widgetType+'WidgetType-taskProgressHeader">'+progressD[0].assetName+' (#'+progressD[0].data.assetid+')</div>';content+='        <div class="'+self.widgetType+'WidgetType-taskProgressNumber">('+progressD[0].data.approvedBy.length+' of '+progressD[0].data.numRequired+' approvals)</div>';content+='    </div>';var progLen=progressD.length;for(var k=0;k<progLen;k++){var commLen=progressD[k].comment.length;if(commLen===0){var progWrap=document.createElement('div');content+='<div class="'+self.widgetType+'WidgetType-taskProgressMsg">No actions have been taken.</div>';dfx.setHtml(progWrap,content);progress.innerHTML='';progress.appendChild(progWrap);}else{for(var j=0;j<commLen;j++){var progWrap=document.createElement('div');if(progressD[k].comment[j].type==='rejected'){content+='<div class="'+self.widgetType+'WidgetType-taskProgressLog rejected">'+progressD[k].comment[j].logMsg+'</div>';}else{content+='<div class="'+self.widgetType+'WidgetType-taskProgressLog">'+progressD[k].comment[j].logMsg+'</div>';}
if(progressD[k].comment[j].comment.length>0){content+='<div class="'+self.widgetType+'WidgetType-taskProgressMsg">"'+progressD[k].comment[j].comment+'"</div>';}else{content+='<div class="'+self.widgetType+'WidgetType-taskProgressMsg">No comment</div>';}
dfx.setHtml(progWrap,content);progress.innerHTML='';progress.appendChild(progWrap);}}}
var gotoBtn=self.createWidget(self.id+'-'+self.tasks[idx].taskid+'-gotoBtn','Button','ButtonWidgetType',false,'Go to Workflow Step');gotoBtn.create(function(el){var btnWrap=dfx.getClass(self.widgetType+'WidgetType-gotoAsset',taskDivDescWrap)[0];btnWrap.appendChild(el);});gotoBtn.addClickEvent(function(e){var params={attributes:['name'],type:false,typeIcon:false,linking:[],urls:true};self.displayDisabledDiv(true);AssetManager.getAsset(progressD[0].data.assetid,function(asset){var url=asset.getUrl()+'/_edit?initialMode=EditScreenMode&initialScreen=PublishingEditScreenWidget';var loaderMsg=dfx.getId('_disabledDiv_loaderMsg');if(loaderMsg){dfx.setHtml(loaderMsg,'Currently re-directing...');}
window.location=url;return false;},false,params);});});}else{expandProgress();}}else{dfx.addClass(taskDivDescWrap,'hidden');dfx.removeClass(expander,'expanded');if(idx===(taskLen-1)){dfx.removeClass(taskDivDescWrap,'last');dfx.addClass(taskDivWrap,'last');}}});})(i);var lastRow=dfx.getId(self.id+'-taskRow-'+(taskLen-1));dfx.addClass(lastRow,'last');}}},createRecentActivitySection:function()
{var self=this;var userLabel=document.createElement('div');dfx.addClass(userLabel,this.widgetType+'WidgetType-SectionLabel');dfx.addClass(userLabel,'recent');dfx.setHtml(userLabel,'Recent Activity');this.rightDiv.appendChild(userLabel);var lastLogin=document.createElement('div');dfx.addClass(lastLogin,this.widgetType+'WidgetType-lastLogin');dfx.setHtml(lastLogin,'Last logged in: '+this.userInfo.lastLogin);this.rightDiv.appendChild(lastLogin);var div=document.createElement('div');dfx.setHtml(div,this.recentChanges);this.rightDiv.appendChild(div);AbstractSplashScreenWidgetType.prototype.addDateClickEvent.call(this);AbstractSplashScreenWidgetType.prototype.addImageThumbMouseEvent.call(this);},saveUserProfile:function(callback)
{var self=this;var userInfo={};userInfo.firstName=this.fnameWdgt.getValue();userInfo.lastName=this.lnameWdgt.getValue();userInfo.email=this.emailWdgt.getValue();userInfo.active=this.activeToggle.getValue();userInfo.username=this.unameWdgt.getValue();userInfo.password=this.passWdgt.getValue();userInfo.userid=this.userInfo.userid;for(var attrid in userInfo){if(userInfo.hasOwnProperty(attrid)===true){if(attrid==='active'||attrid==='userid'){continue;}
if(attrid==='password'&&userInfo.password.length>0&&this.passWdgt.isValueMatched()===false){this.showError(['Entered password is not matched.']);this.initSaveButton();return;}
if(dfx.trim(userInfo[attrid]).length===0){var displayName='';switch(attrid){case'firstName':displayName='First Name';break;case'lastName':displayName='Last Name';break;case'email':displayName='Email';continue;break;case'username':displayName='Username';break;case'password':continue;break;default:break;}
this.showError([displayName+' can not be empty.']);this.initSaveButton();return;}}}
var params={widget:'ProfileScreenWidget',action:'saveUserProfile',userInfo:dfx.jsonEncode(userInfo)};this.displayDisabledDiv();this.id='ProfileScreenModeWidgetType';AbstractEditingScreenModeWidgetType.prototype.processScreen.call(self,params,function(data){self.id='ProfileScreenWidgetType';var unameFailed=false;if(data.errors){self.unameWdgt.setValue(self.userInfo.uname);unameFailed=true;}
var nameDiv=dfx.getClass(self.widgetType+'WidgetType-SectionLabel',self.profileDiv)[0];dfx.setHtml(nameDiv,userInfo.firstName+' '+userInfo.lastName);self.userInfo.fname=userInfo.firstName;self.userInfo.lname=userInfo.lastName;self.userInfo.email=userInfo.email;self.userInfo.active=userInfo.active;if(unameFailed===false){self.userInfo.uname=userInfo.username;}
if(self.cid===self.userInfo.userid){var prflIcnW=WidgetStore.get('ProfileEditingToolbarIcon');prflIcnW.setUsername(self.userInfo.uname);}
self.passWdgt.clearValue();self.userInfoOri=dfx.clone(self.userInfo);setTimeout(function(){self.reset(function(){setTimeout(function(){self.initSaveButton();self.removeDisabledDiv();},1000);});},500);},true);},reset:function(callback)
{this.fnameWdgt.setValue(this.userInfo.fname);this.lnameWdgt.setValue(this.userInfo.lname);this.emailWdgt.setValue(this.userInfo.email);this.activeToggle.setValue(this.userInfo.active);this.unameWdgt.setValue(this.userInfo.uname);this.passWdgt.clearValue();this.removeDisabledDiv();if(dfx.isFn(callback)===true){callback.call(this);}},updateScreen:function(callback)
{this.setReadOnly(true);this.reset(callback);},switchedOff:function()
{var icon=WidgetStore.get('ProfileEditingToolbarIcon');if(icon){icon.toggleState('inactive');}
Locking.release(this.resourceid);}};dfx.inherits('ProfileScreen','AbstractContainer');function WizardWidgetType(id,wizardid,stepid)
{AbstractContainerWidgetType.call(this,id);this.widgetType='Wizard';if(!wizardid){throw'No wizardid specified (WizardWidgetType)';}
this.wizardid=wizardid;this.stepid=stepid||null;this.info=null;this.steps={};this.wizardStepManager=null;this.wizardStepList=null;this.dialogButtons=[];}
WizardWidgetType.prototype={create:function(callback)
{var self=this;this.loadContents(function(){self.includeWidgets(['Div','WizardStepManager','WizardSteps'],function(){var main=self.createWidget(self.id,'Div');main.setClass(self.getClass());var wizardStepsPane=self.createWidget(self.id+'-leftPane','WizardSteps');self.wizardStepList=wizardStepsPane;var wizManager=self.createWidget(self.id+'-wizardStepManager','WizardStepManager');self.wizardStepManager=wizManager;wizManager.addStepChangedAction(function(stepIndex){self.stepChanged(stepIndex);});wizManager.addProcessAction(function(steps){self.processWizard(steps);});wizManager.addSteps(self.steps,function(){wizardStepsPane.setSteps(wizManager.getStepTitles());main.add(wizardStepsPane);main.add(wizManager);main.create(function(el){callback.call(self,el);return;});});});});},appendNewStep:function(title)
{this.steps[title]={attributes:[],contents:'',elements:[],tag:'widgets'};},getStepManager:function()
{return this.wizardStepManager;},getStepList:function()
{return this.wizardStepList;},loadContents:function(callback)
{var self=this;this.getWizardContents(function(data){if(data.info){self.info=data.info;}
if(data.steps){for(var step in self.steps){data.steps[step]=self.steps[step];}
self.steps=data.steps;callback.call(self);}});},getWizardContents:function(callback)
{var args={widget:'WizardWidget',action:'getWizardContents',wizardid:this.wizardid,stepid:this.stepid};var self=this;dfx.getJSON(this.url,args,callback);},addEvents:function()
{Widget.prototype.addEvents.call(this);this.wizardStepManager.addEvents();},getDialogButtons:function(callback)
{var self=this;this.includeWidgets(['Div','Button'],function(){var divWidget=self.createWidget(null,'Div');self.wizardStepManager.getDialogButtons(function(widgets){var len=widgets.length;for(var i=0;i<len;i++){divWidget.add(widgets[i]);}
callback.call(self,divWidget);});});},setDialog:function(w,callback)
{w.setTitle(this.info.title);this.dialogWidget=w;var self=this;this.getDialogButtons(function(widget){self.dialogWidget.setBottomWidget(widget,function(){widget.addEvents();if(dfx.isFn(callback)){callback.call(self);}});});},stepChanged:function(stepIndex)
{this.wizardStepList.setCurrentStep(stepIndex);},processWizard:function(steps)
{var values=this.wizardStepManager.getValues();var args={widget:'WizardWidget',action:'processSave',wizardid:this.wizardid,steps:dfx.jsonEncode(values)};var self=this;dfx.post(this.url,args,function(data){var success=data.getElementsByTagName('success');var message='';if(success.length>0){message=dfx.getNodeTextContent(success.item(0));self.wizardStepManager._showSuccess(message);}else{var failure=data.getElementsByTagName('failure');if(failure.length>0){var errors=data.getElementsByTagName('error');message=dfx.getNodeTextContent(errors.item(0));self.wizardStepManager._showFailed(message);}}});}};dfx.inherits('Wizard','AbstractContainer');function WorkflowAdminScreenStepUsersWidgetType(id,userid,count,removed)
{AbstractContainerWidgetType.call(this,id);this.widgetType='WorkflowAdminScreenStepUsers';this.userid=userid;this.count=count||1;this.domEl=null;this.removed=removed||false;}
WorkflowAdminScreenStepUsersWidgetType.prototype={create:function(callback)
{var c=this.getClass()+'-userList-item';var main=document.createElement('div');this.domEl=main;main.setAttribute('userid',this.userid);dfx.addClass(main,c);var count=this.count;if(this.readOnly===true){dfx.addClass(main,'readOnly');}
var self=this;AssetManager.getAsset(this.userid,function(user){var iconUrl=user.iconUrl;var content='<div class="'+c+'-typeIcon" style="background-image:url('+iconUrl+');"></div>';content+='<div class="'+c+'-name">'+user.getAttribute('name')+'</div>';content+='<div class="'+c+'-numUsers"></div>';content+='<div class="'+c+'-remove"></div>';dfx.setHtml(main,content);var removeButton=dfx.getClass(c+'-remove',main)[0];dfx.addEvent(removeButton,'click',function(){self.setModified(true);if(dfx.hasClass(main,'removed')===true){dfx.removeClass(main,'removed');self._removeDeletedLayer(main);}else{dfx.addClass(main,'removed');self._addDeletedLayer(main);}});if(self.removed===true){dfx.trigger(removeButton,'click');}
if(user.type==='userGroup'){var spinButton=self.createWidget(null,'SpinButton');spinButton.create(function(el){spinButton.setValue(count);dfx.getClass(c+'-numUsers',main)[0].appendChild(el);var span=document.createElement('span');dfx.setHtml(span,'User(s)');dfx.getClass(c+'-numUsers',main)[0].appendChild(span);spinButton.addOnChangeEvent(function(){self.setModified(true);});});}
callback.call(self,main);return;});},_addDeletedLayer:function(parent,custClass)
{var c=this.getClass()+'-removedLayer';var el=document.createElement('div');dfx.addClass(el,c);if(custClass){dfx.addClass(el,custClass);}
parent.appendChild(el);return el;},_removeDeletedLayer:function(parent)
{dfx.remove(dfx.getClass(this.getClass()+'-removedLayer',parent));},setReadOnly:function(readOnly)
{AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);if(this.domEl){if(readOnly===true){dfx.addClass(this.domEl,'readOnly');}else{dfx.removeClass(this.domEl,'readOnly');}}}};dfx.inherits('WorkflowAdminScreenStepUsers','AbstractContainer');function WorkflowAdminScreenStepWidgetType(id,streamEl,schemaid,streamid,stepid,stepName,stepDesc,stepUsers)
{AbstractContainerWidgetType.call(this,id);this.widgetType='WorkflowAdminScreenStep';this.streamEl=streamEl;this.schemaid=schemaid;this.streamid=streamid;this.stepid=stepid;this.stepName=stepName;this.stepDesc=stepDesc;this.stepUsers=stepUsers;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen('WorkflowAdminScreenStep');this.assetPicker.addProjectFolderWhiteList('WorkflowAdminScreenStep','Users');this.assetPicker.setHideSite('WorkflowAdminScreenStep');this.assetPicker.setUniqueSelect(false);this._removeButton=null;this._dragHandle=null;}
WorkflowAdminScreenStepWidgetType.prototype={create:function(callback)
{var schemaid=this.schemaid;var streamid=this.streamid;var stepid=this.stepid;var stepName=this.stepName;var stepDesc=this.stepDesc;var stepUsers=this.stepUsers;var streamEl=this.streamEl;stepid=stepid||null;stepName=stepName||'';stepDesc=stepDesc||'';stepUsers=stepUsers||{};var main=document.createElement('div');var id=stepid;if(!id){var nid=dfx.getUniqueId();id=streamid+'-'+nid;stepid=nid;}else{id=streamid+'-'+id;}
var c=this.getClass()+'-step';main.setAttribute('stepid',stepid);dfx.addClass(main,c);if(this.readOnly===true){dfx.addClass(main,'readOnly');}
var content='<div class="'+c+'-top">';content+='<div class="'+c+'-orderNum">'+(streamEl.childNodes.length+1)+'.</div>';content+='<div class="'+c+'-dragHandle"></div>';content+='<div class="'+c+'-name"></div>';content+='<div class="'+c+'-remove"></div>';content+='</div>';content+='<div class="'+c+'-bottom">';var style='';if(dfx.isEmpty(stepUsers)===false){style=' style="display:none;visibility:hidden"';}
var noUser='<div id="noUserMsg-'+stepid+'" class="noUserMsg"';noUser+=style+'>';noUser+='No users or user groups are assigned</div>';content+='<div class="'+c+'-bottom-left">';content+='<div class="'+c+'-bottom-left-top">';content+='<div class="'+c+'-bottom-left-title">Current Users</div>';content+='<div class="'+c+'-bottom-left-addUsers"></div></div>';content+='<div class="'+c+'-bottom-left-usersList">'+noUser+'</div>';content+='</div>';content+='<div class="'+c+'-bottom-right">';content+='<div class="'+c+'-bottom-right-label">Description</div>';content+='<div class="'+c+'-bottom-right-desc"></div>';content+='</div></div>';dfx.setHtml(main,content);var self=this;this._removeButton=dfx.getClass(c+'-remove',main)[0];dfx.addEvent(this._removeButton,'click',function(){self.setModified(true);if(dfx.hasClass(main,'removed')===true){dfx.removeClass(main,'removed');self._removeDeletedLayer(main);}else{dfx.addClass(main,'removed');self._addDeletedLayer(main);}});this._dragHandle=dfx.getClass(c+'-dragHandle',main)[0];this.includeWidgets(['TextField','TextArea','SpinButton','Button'],function(){var nameField=self.createWidget(id+'-name','TextField');nameField.setValue(stepName);nameField.create(function(el){dfx.getClass(c+'-name',main)[0].appendChild(el);nameField.addOnChangeEvent(function(){self.setModified(true);});});var addUsers=self.createWidget(id+'_','Button','ButtonWidgetType-liteGrey');addUsers.setName('Add Users');addUsers.create(function(el){dfx.getClass(c+'-bottom-left-addUsers',main)[0].appendChild(el);});var listCont=dfx.getClass(c+'-bottom-left-usersList',main)[0];addUsers.addClickEvent(function(){self._toggleAllAddNewButtons(false);self._addUsersToStep(listCont,id);});self._addUsersToStep(listCont,id,stepUsers);var descField=self.createWidget(id+'-desc','TextArea');descField.setValue(stepDesc);descField.create(function(el){dfx.getClass(c+'-bottom-right-desc',main)[0].appendChild(el);descField.addOnChangeEvent(function(){self.setModified(true);});});});callback.call(this,main);},_toggleAllAddNewButtons:function(enable)
{var c='ButtonWidgetType-liteGrey';if(enable===true){c='ButtonWidgetType-liteGrey-disabled';}
var container=dfx.getId('WorkflowAdminScreen-streamsWrapper');var buttons=dfx.getClass(c,container);var len=buttons.length;for(var i=0;i<len;i++){this._toggleAddNewButton(buttons[i].id,enable);}},_toggleAddNewButton:function(buttonid,enable)
{var button=WidgetStore.get(buttonid);if(button){if(enable===true){button.enable();}else{button.disable();}}},_addUsersToStep:function(listCont,id,users)
{if(users){for(var userid in users.assignees){if(users.assignees.hasOwnProperty(userid)===false){continue;}
for(var childNode=listCont.firstChild;childNode;childNode=childNode.nextSibling){if(childNode.getAttribute('userid')&&parseInt(childNode.getAttribute('userid'))===parseInt(userid)){return;}}
this._createUserListItem(id,userid,function(el){listCont.appendChild(el);},users.assignees[userid],(users.removedUsers&&users.removedUsers.inArray(userid)));}}else{var self=this;this.assetPicker.init('WorkflowAdminScreenStep',function(){self.assetPicker.dialog.open();self.assetPicker.dialog.addOnCloseCallback(function(){WidgetStore.get(id+'_').setEnabled(true);});});this.assetPicker.addAssetsSelectedAction(function(selectedAssets){var selectedUsers={};var sln=selectedAssets.length;if(sln>0){dfx.hideElement(dfx.getClass('noUserMsg',listCont)[0]);self.setModified(true);for(var i=0;i<sln;i++){selectedUsers[selectedAssets[i]]=1;}
self._addUsersToStep(listCont,id,{assignees:selectedUsers});}},true);this.assetPicker.addCloseAction(function(){self._toggleAllAddNewButtons(true);});}},_createUserListItem:function(id,userid,callback,count,removed)
{var self=this;this.includeWidget('WorkflowAdminScreenStepUsers',function(){var step=self.createWidget(null,'WorkflowAdminScreenStepUsers',userid,count,removed);step.create(function(el){callback.call(self,el);});});},_addDeletedLayer:function(parent,custClass)
{var c=this.getClass()+'-removedLayer';var el=document.createElement('div');dfx.addClass(el,c);if(custClass){dfx.addClass(el,custClass);}
parent.appendChild(el);return el;},_removeDeletedLayer:function(parent)
{dfx.remove(dfx.getClass(this.getClass()+'-removedLayer',parent));},setReadOnly:function(readOnly)
{AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);if(this._removeButton&&this._dragHandle){if(readOnly===true){dfx.setStyle([this._removeButton,this._dragHandle],'display','none');}else{dfx.setStyle([this._removeButton,this._dragHandle],'display','block');}}}};dfx.inherits('WorkflowAdminScreenStep','AbstractContainer');function WorkflowManagerStepWidgetType(id,step,index)
{AbstractContainerWidgetType.call(this,id);this.widgetType='WorkflowManagerStep';this.step=step;this.index=index;this.noteWidget=null;this.taskActionedCallbacks=[];}
WorkflowManagerStepWidgetType.prototype={create:function(callback)
{var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);var title='Step '+this.index+'.&nbsp;&nbsp;<span>'+this.step.title+'</span>';var contents='<div class="'+c+'-top">';contents+='<div class="'+c+'-expander"></div>';contents+='<div class="'+c+'-title">'+title+'</div>';contents+='<div class="'+c+'-right"></div>';contents+='</div>';var desc=this.step.description||'<span style="color:#666;">There is no description for this step</span>';contents+='<div class="'+c+'-details">';contents+='<div class="'+c+'-desc">'+desc+'</div>';contents+='<div class="'+c+'-assignees"></div>';contents+='<div class="'+c+'-notes"></div>';contents+='</div>';dfx.setHtml(main,contents);var top=dfx.getClass(c+'-top',main)[0];dfx.addEvent(top,'click',function(e){if(dfx.isChildOf(dfx.getMouseEventTarget(e),dfx.getClass(c+'-right',main)[0])===true){return;}
dfx.toggleClass(main,'expanded');});var usersCont=dfx.getClass(c+'-assignees',main)[0];this._addUsers(function(el){usersCont.appendChild(el);callback.call(this,main);return;});this._initRight(dfx.getClass(c+'-right',main)[0]);this._initNotes(dfx.getClass(c+'-notes',main)[0]);},_initNotes:function(parent)
{dfx.empty(parent);if(this.step.comments){var comEl=document.createElement('div');parent.appendChild(comEl);dfx.addClass(comEl,this.getClass()+'-comments');if(this.step.status===3){dfx.setHtml(comEl,'<div><strong>Last Run</strong></div>');}else{dfx.setHtml(comEl,'<div><strong>Notes</strong></div>');}
if(this.step.comments&&this.step.comments.length>0){this._createComments(this.step.comments.concat([]),comEl);}else{var text=document.createElement('div');dfx.setHtml(text,'There are no notes for this step.');comEl.appendChild(text);}}
if(this.step.canApprove===true&&this.step.status===1){var self=this;this.includeWidget('TextArea',function(){self.noteWidget=self.createWidget(null,'TextArea');self.noteWidget.create(function(el){dfx.addClass(el,'notes-textarea');parent.appendChild(el);});});}},_createComments:function(comments,parentEl)
{if(!comments||comments.length===0){return;}
var comment=comments.shift();var c=this.getClass()+'-comment';var comEl=document.createElement('div');dfx.addClass(comEl,c);var prefix='Approved';if(this.step.approvedUsers.inArray(comment.userid)!==true){prefix='Rejected';}
AssetManager.getAsset(comment.userid,function(user){var title=document.createElement('div');dfx.addClass(title,c+'-title');dfx.addClass(title,prefix);dfx.setHtml(title,prefix+' by '+user.getAttribute('name')+' ('+dfx.date('d M Y',(comment.date*1000))+')');var text=document.createElement('div');if(comment.comment&&dfx.trim(comment.comment).length>0){dfx.setHtml(text,'"'+comment.comment+'"');}
dfx.addClass(text,c+'-text');comEl.appendChild(title);comEl.appendChild(text);});parentEl.appendChild(comEl);this._createComments(comments,parentEl);},_initRight:function(parent)
{dfx.empty(parent);if(this.step.canApprove===true&&this.step.status===1){var self=this;this.includeWidget('Button',function(){var reject=self.createWidget(null,'Button','ButtonWidgetType-liteGrey');var approve=self.createWidget(null,'Button','ButtonWidgetType');reject.setName('Reject');approve.setName('Approve');reject.addClickEvent(function(){self.actionTask(false);});approve.addClickEvent(function(){self.actionTask(true);});reject.create(function(rejectEl){dfx.addClass(rejectEl,'reject-button');approve.create(function(approveEl){dfx.addClass(approveEl,'approve-button');parent.appendChild(rejectEl);parent.appendChild(approveEl);});});});}else{switch(this.step.status){case 0:dfx.setHtml(parent,'<span>(Step currently unavailable)</span>');break;case 3:dfx.setHtml(parent,'<div class="completed">Completed</div>');break;case 2:dfx.setHtml(parent,'<div class="rejected">Rejected</div>');break;default:dfx.setHtml(parent,'');break;}}},actionTask:function(approve)
{if(approve===true){approve='approve';}else{approve='reject';}
var params={widget:'WorkflowManager',action:'actionTask',approve:approve,taskid:this.step.taskid,notes:this.noteWidget.getValue()};var self=this;dfx.post(this.url,params,function(data){self.fireTaskActionedCallbacks(this.step,approve,data);});},_addUsers:function(callback)
{var c=this.getClass()+'-approvers';var main=document.createElement('div');dfx.addClass(main,c);var numRequired=this.step.numRequired||1;var contents='<div class="'+c+'-title">Approvers ('+numRequired+' required)</div>';contents+='<div class="'+c+'-list"></div>';dfx.setHtml(main,contents);var listElem=dfx.getClass(c+'-list',main)[0];AssetManager.getAssets(this.step.assignees,function(assets){var aln=assets.length;for(var i=0;i<aln;i++){var asset=assets[i];var elem=document.createElement('div');dfx.addClass(elem,c+'-approver');dfx.setHtml(elem,asset.getAttribute('name'));dfx.setStyle(elem,'background-image','url('+asset.iconUrl+')');listElem.appendChild(elem);}
callback.call(this,main);});},addTaskActionedCallback:function(callback)
{this.taskActionedCallbacks.push(callback);},fireTaskActionedCallbacks:function(step,approve,data)
{var ln=this.taskActionedCallbacks.length;for(var i=0;i<ln;i++){this.taskActionedCallbacks[i].call(this,step,approve,data);}}};dfx.inherits('WorkflowManagerStep','AbstractContainer');function WorkflowManagerStepsWidgetType(id,assetid,schemaid,schemaData)
{AbstractContainerWidgetType.call(this,id);this.widgetType='WorkflowManagerSteps';this.assetid=assetid;this.schemaid=schemaid;this.schemaData=schemaData||null;this.taskActionedCallbacks=[];}
WorkflowManagerStepsWidgetType.prototype={create:function(callback)
{var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);if(dfx.isset(this.schemaData.isRunning)===false){callback.call(this,main);return;}
var runningText='';var runInfoText='';if(this.schemaData.isRunning===true){runningText='<span class="running">(Currently Running)</span>';}else{if(this.schemaData.startedBy){runInfoText+='<span class="lastRunBy">Last Run by <strong class="lastRunByName"></strong></span>';}
if(this.schemaData.completedDate){runInfoText+='<span class="completed"><span>Completed:</span>'+this.schemaData.completedDate+'</span>';}else if(this.schemaData.rejectedDate){runInfoText+='<span class="rejected"><span>Rejected:</span>'+dfx.date('d M Y',(this.schemaData.rejectedDate*1000))+'</span>';}}
var contents='<div class="'+c+'-top">';contents+='<div class="'+c+'-top-icon"></div>';contents+='<div class="'+c+'-top-title">'+this.schemaData.name+runningText+'</div>';contents+='<div class="'+c+'-top-runInfo">'+runInfoText+'</div>';contents+='</div>';contents+='<div class="'+c+'-steps"></div>';dfx.setHtml(main,contents);if(this.schemaData.startedBy){var lastRunByNameEl=dfx.getClass('lastRunByName',main)[0];AssetManager.getAsset(this.schemaData.startedBy,function(asset){if(lastRunByNameEl){dfx.setHtml(lastRunByNameEl,asset.name);}});}
var bottom=dfx.getClass(c+'-steps',main)[0];AssetManager.getAssetTypeInfos(['workflowSchema'],function(typeInfos){var icon=dfx.getClass(c+'-top-icon',main)[0];dfx.setStyle(icon,'background-image','url('+typeInfos[0].iconURL+')');});this._createSteps(bottom,function(){callback.call(this,main);return;});},_createSteps:function(parentElem,callback)
{var self=this;this.includeWidget('WorkflowManagerStep',function(){self._createStepWidgets(self.schemaData.tasks,parentElem,callback);});},_createStepWidgets:function(steps,parentElem,callback,index)
{if(!steps||steps.length===0){callback.call(this);return;}
index=index||0;var step=steps.shift();var stepWidget=this.createWidget(null,'WorkflowManagerStep',step,++index);stepWidget.addTaskActionedCallback(function(step,approve,data){self.fireTaskActionedCallbacks(step,approve,data);});var self=this;stepWidget.create(function(el){parentElem.appendChild(el);self._createStepWidgets(steps,parentElem,callback,index);});},addTaskActionedCallback:function(callback)
{this.taskActionedCallbacks.push(callback);},fireTaskActionedCallbacks:function(step,approve,data)
{var ln=this.taskActionedCallbacks.length;for(var i=0;i<ln;i++){this.taskActionedCallbacks[i].call(this,step,approve,data);}}};dfx.inherits('WorkflowManagerSteps','AbstractContainer');function WorkflowManagerWidgetType(id,assetid,parentElement,isPublished,isInSafeEdit)
{AbstractContainerWidgetType.call(this,id);this.widgetType='WorkflowManager';this.assetid=assetid;this.schemas=null;this.parentElement=parentElement;this.resetCallbacks=[];this.streams={};this.ipopup=null;this.isPublished=isPublished||false;this.isInSafeEdit=isInSafeEdit||false;this.selectList={};this.topSection=null;}
WorkflowManagerWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);if(readOnly===false){if(this.topSection!==null){dfx.showElement(this.topSection);}
for(var schemaid in this.selectList){dfx.setStyle(this.selectList[schemaid].select,'display','inline');}}},init:function()
{dfx.empty(this.parentElement);var self=this;this.create(function(){});},create:function(callback)
{var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-secTitle">Workflow</div>';dfx.setHtml(main,content);this.domElem=main;var params={widget:this.widgetType,action:'getInfo',assetid:this.assetid};var self=this;this.includeWidgets('Intervention',function(){self.ipopup=self.createWidget(null,'Intervention',null,null);self.ipopup.create(function(){dfx.get(self.url,params,function(data){data=dfx.jsonDecode(data);self.schemas=data.schemas;self.inWorkflow=data.inWorkflow;self.permissions=data.permissions;if(self.isPublished!==true||self.isInSafeEdit===true){var overrides=self._createOverrideSection();if(overrides){main.appendChild(overrides);}}
if(self.inWorkflow===false&&(self.isPublished===false||self.isInSafeEdit===true)){self._createTopSection(function(elem){main.appendChild(elem);self.topSection=elem;if(self.readOnly===true){dfx.hideElement(elem);}
self._createWorkflows();});}else{self._createWorkflows();}});if(self.parentElement){self.parentElement.appendChild(main);}
callback.call(self,main);return;});});},_createOverrideSection:function()
{if((this.permissions['workflow.cancel']!==true||this.inWorkflow!==true)&&this.permissions['workflow.skip']!==true){return;}
var c=this.getClass()+'-overrides';var main=document.createElement('div');dfx.addClass(main,c);var title=document.createElement('div');main.appendChild(title);dfx.addClass(title,c+'-title');dfx.setHtml(title,'Workflow Overrides');var self=this;this.includeWidget('Button',function(){if(self.permissions['workflow.skip']===true){var skipCont=document.createElement('div');dfx.addClass(skipCont,c+'-skip');main.appendChild(skipCont);var skip=self.createWidget(null,'Button','ButtonWidgetType-black');skip.setName('Skip Workflow');skip.create(function(el){skipCont.appendChild(el);});skip.addClickEvent(function(){self.ipopup.setSize('250px','61px');self.ipopup.setMessage('Are you sure you want to skip workflow?');self.ipopup.setConfirmCallback(function(){var params={widget:self.widgetType,action:'skipWorkflow',assetid:self.assetid};dfx.post(self.url,params,function(data){self.fireResetCallbacks();});});self.ipopup.show(skipCont);},true);}
if(self.permissions['workflow.cancel']===true&&self.inWorkflow===true){var cancelCont=document.createElement('div');dfx.addClass(cancelCont,c+'-cancel');main.appendChild(cancelCont);var cancel=self.createWidget(null,'Button','ButtonWidgetType-black');cancel.setName('Cancel Workflow');cancel.create(function(el){cancelCont.appendChild(el);});cancel.addClickEvent(function(){self.ipopup.setSize('250px','61px');self.ipopup.setMessage('Are you sure you want to cancel workflow?');self.ipopup.setConfirmCallback(function(){var params={widget:self.widgetType,action:'cancelWorkflow',assetid:self.assetid};dfx.post(self.url,params,function(data){self.fireResetCallbacks();});});self.ipopup.show(cancelCont);},true);}});return main;},_createTopSection:function(callback)
{if(!this.permissions['workflow.start.default']&&!this.permissions['workflow.start.stream']){var elem=document.createElement('div');dfx.addClass(elem,this.getClass()+'-top-noPerm');dfx.setHtml(elem,'You do not have permission to start the workflow');callback.call(this,elem);return;}
if(!this.schemas){return;}
var c=this.getClass()+'-top';var main=document.createElement('div');dfx.addClass(main,c);var contents='<div class="'+c+'-left"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(main,contents);var left=dfx.getClass(c+'-left',main)[0];var right=dfx.getClass(c+'-right',main)[0];var self=this;this.includeWidget('Button',function(){var applyButton=self.createWidget(null,'Button','ButtonWidgetType');applyButton.setName('Apply for Approval');applyButton.addClickEvent(function(){self.applyForApproval();});applyButton.create(function(el){dfx.addClass(el,'apply-button');left.appendChild(el);});});this.includeWidget('Select',function(){for(var schemaid in self.schemas){if(!self.schemas[schemaid].streams){continue;}
(function(schemaid){var div=document.createElement('div');dfx.addClass(div,c+'-schemaInfo');right.appendChild(div);var schemaName=document.createElement('div');dfx.addClass(schemaName,c+'-schemaName');var selectCont=document.createElement('div');dfx.addClass(selectCont,c+'-select');var taskCountCont=document.createElement('div');dfx.addClass(taskCountCont,c+'-taskCount');div.appendChild(schemaName);div.appendChild(selectCont);div.appendChild(taskCountCont);dfx.setHtml(schemaName,self.schemas[schemaid].name+'&nbsp;-&nbsp;');var streams=self.schemas[schemaid].streams;var items={};var taskCount=null;for(var streamid in streams){items[streamid]=streams[streamid].name;if(taskCount===null){taskCount=self.schemas[schemaid].streams[streamid].tasks;var taskHtml='('+taskCount+' Step';if(taskCount>1){taskHtml+='s'}
taskHtml+=')';dfx.setHtml(taskCountCont,taskHtml);}}
if(!self.permissions['workflow.start.stream']){var defaultStream=self.schemas[schemaid].defaultStream;var name=self.schemas[schemaid].streams[defaultStream].name;dfx.setHtml(selectCont,name);}else{var select=self.createWidget(null,'Select');self.selectList[schemaid]=select;select.setSelectedEventValueType('value');select.addItemSelectedEvent(function(selected){var taskCount=self.schemas[schemaid].streams[selected].tasks;var taskHtml='('+taskCount+' Step';if(taskCount>1){taskHtml+='s'}
taskHtml+=')';dfx.setHtml(taskCountCont,taskHtml);self.streams[schemaid]=selected;});select.addItems(items);select.create(function(el){self.streams[schemaid]=self.schemas[schemaid].defaultStream.toString();select.setValue(self.streams[schemaid],true);selectCont.appendChild(el);});}})(schemaid);}});callback.call(this,main);},applyForApproval:function()
{var params={widget:this.widgetType,action:'applyForApproval',assetid:this.assetid,streams:dfx.jsonEncode(this.streams)};var self=this;dfx.get(this.url,params,function(data){self.fireResetCallbacks();});},_createWorkflows:function()
{var self=this;this.includeWidget('WorkflowManagerSteps',function(){for(var schemaid in self.schemas){var stepsWidget=self.createWidget(null,'WorkflowManagerSteps',self.assetid,schemaid,self.schemas[schemaid]);stepsWidget.create(function(el){self.domElem.appendChild(el);});stepsWidget.addTaskActionedCallback(function(){self.fireResetCallbacks();});}});},fireResetCallbacks:function()
{var ln=this.resetCallbacks.length;for(var i=0;i<ln;i++){this.resetCallbacks[i].call(this);}},addResetCallback:function(callback)
{this.resetCallbacks.push(callback);}};dfx.inherits('WorkflowManager','AbstractContainer');function AuthenticationEditingToolbarIconWidgetType(id)
{AbstractEditingToolbarIconWidgetType.call(this,id);this.widgetType='AuthenticationEditingToolbarIcon';this.init();this.setTitle('Click to logout of MySource Mini');}
AuthenticationEditingToolbarIconWidgetType.prototype={init:function()
{var button=dfx.getId('AuthenticationEditingToolbarIcon-icon');var self=this;var iw=null;dfx.addEvent(button,'click',function(){var icon=WidgetStore.get('AuthenticationEditingToolbarIcon');if(icon){icon.toggleState('active');}
if(iw){iw.show(button,'fixed');return;}
self.includeWidget('Intervention',function(){iw=self.createWidget(null,'Intervention');iw.setCancelCallback(function(){icon.toggleState('inactive');});iw.setConfirmCallback(function(){Locking.release(null,function(){var url=(new String(document.location)).valueOf();var authQryStr={};authQryStr.auth_action='logout';dfx.get(dfx.addToQueryString(url,authQryStr),null,function(data){if(data==='success'){window.location.href=url;}});});});iw.create(function(){iw.setMessage('Are you sure you want to logout?');iw.setSize('250px','47px');iw.show(button,'fixed');});});});}};dfx.inherits('AuthenticationEditingToolbarIcon','AbstractEditingToolbarIcon');function ContextSwitcherEditingToolbarIconWidgetType(id,noInit)
{AbstractEditingToolbarIconWidgetType.call(this,id);this.widgetType='ContextSwitcherEditingToolbarIcon';if(noInit!==true){this.init();}}
ContextSwitcherEditingToolbarIconWidgetType.prototype={init:function()
{this.setTitle('Click to change the context');this.setIconClickEvent();this.setupSwitchButton();this.addHoverEvent();this.addOnSelectEvent();},createButton:function()
{var param={widget:this.widgetType,action:'getBtnContent'};var self=this;dfx.post(this.getCurrentUrl(true),param,function(data){if(!data){return}
var oldIcon=dfx.getId(self.id);if(oldIcon){dfx.remove(oldIcon);}
var icons=dfx.getClass('ToolbarIcon-wrapper',dfx.getId('Toolbar-iconsWrapper'));if(data==='remove'){dfx.addClass(icons[0],'ToolbarIcon-first');return;}
var elem=document.createElement('div');elem.id=self.id;dfx.setHtml(elem,data);dfx.removeClass(icons[0],'ToolbarIcon-first');dfx.addClass(elem,'ContextSwitcherEditingToolbarIconWidgetType ToolbarIcon-wrapper ToolbarIcon-first');dfx.insertBefore(icons[0],elem);self.init();});},setIconClickEvent:function()
{var button=dfx.getId(this.id+'-wrapper');dfx.addEvent(button,'click',function(){dfx.toggleClass(button.parentNode,'active');});},setupSwitchButton:function()
{var btnCont=dfx.getId(this.id+'-switchBtnCont');if(btnCont){var self=this;this.includeWidget('Button',function(){var btn=self.createWidget(this.id+'-switchButton','Button','ButtonWidgetType-black');btn.setName('Switch');btn.create(function(btnEl){btn.addClickEvent(function(){var context=self._getContextFromOpts();self.switchToContext(context);},true);btnCont.appendChild(btnEl);});});}},_getContextFromOpts:function()
{var context='00';for(var i=3;i>=1;i--){var sel=dfx.getId(this.id+'-sel-'+i);if(!sel){context+='00';continue;}
context+=sel.value;}
return context;},switchToContext:function(context)
{var iconEl=dfx.getId(this.id+'-icon');if(iconEl){dfx.removeClass(iconEl,'active');}
this.displayDisabledDiv(true,null,null,null,'Currently re-directing...');var param={widget:this.widgetType,action:'switchContext',context:context};var mode=WidgetStore.getData('activeMode');if(mode&&mode.id){mode=mode.id;}
var screen=WidgetStore.getData('activeScreen');if(screen&&screen.system){screen=screen.system;}
dfx.post(this.getCurrentUrl(true),param,function(data){var url=data;var modeScreen='initialMode='+mode;if(screen!=='EditSplash'){modeScreen+='&initialScreen='+screen;}
if(url.indexOf('?')===-1){url+='?';}else{url+='&';}
window.location.href=url+modeScreen;});},updateContexts:function(contexts)
{for(var lvl=1;lvl<=3;lvl++){var select=dfx.getId(this.id+'-sel-'+lvl);if(!select){continue;}
if(!contexts[lvl]||contexts[lvl].length===0){if(select){dfx.remove(select);}}else{var selectedVal=select.value;if(!selectedVal){selectedVal='00';}
dfx.empty(select);var opt=document.createElement('option');opt.value='00';if(selectedVal==='00'){opt.selected='selected';}
dfx.setHtml(opt,'Master');select.appendChild(opt);var ln=contexts[lvl].length;var added=false;for(var i=0;i<ln;i++){var context=contexts[lvl][i];if(context.removed===true){continue;}
var opt=document.createElement('option');opt.value=context.id;dfx.setHtml(opt,context.name);if(selectedVal===context.id){opt.selected='selected';}
select.appendChild(opt);added=true;}
if(added===false){dfx.remove(select);}}}},addOnSelectEvent:function()
{var c=this.getClass()+'-contextActive';for(var lvl=1;lvl<=3;lvl++){var select=dfx.getId(this.id+'-sel-'+lvl);if(!select){continue;}
if(select.selectedIndex===0){dfx.removeClass(select,c);}else{dfx.addClass(select,c);}
(function(selectEl){dfx.addEvent(selectEl,'change',function(){if(selectEl.selectedIndex===0){dfx.removeClass(selectEl,c);}else{dfx.addClass(selectEl,c);}});})(select);}}};dfx.inherits('ContextSwitcherEditingToolbarIcon','AbstractEditingToolbarIcon');function HelpEditingToolbarIconWidgetType(id)
{AbstractEditingToolbarIconWidgetType.call(this,id);this.widgetType='HelpEditingToolbarIcon';this.setTitle('Click to view the help articles or report a problem with the system');}
HelpEditingToolbarIconWidgetType.prototype={};dfx.inherits('HelpEditingToolbarIcon','AbstractEditingToolbarIcon');function JumperEditingToolbarIconWidgetType(id)
{AbstractEditingToolbarIconWidgetType.call(this,id);this.widgetType='JumperEditingToolbarIcon';this.assetPicker=WidgetStore.get('JumperAssetPicker');this.assetPicker.setScreen('Jumper');this.assetPicker.setUniqueSelect(true);this.assetPicker.addProjectFolderWhiteList('Jumper','Documents');this.assetPicker.addProjectFolderWhiteList('Jumper','Images');this.assetPicker.addProjectFolderWhiteList('Jumper','Movies');this.assetPicker.addProjectFolderWhiteList('Jumper','Users');this.assetPicker.setSaveButtonCheck(true);this.showLoader=false;var self=this;var icon=dfx.getId('JumperEditingToolbarIcon-icon');if(icon){dfx.addEvent(icon,'click',function(){if(self.state!=='active'){self.toggleState('active');self.loadPicker();}else{self.assetPicker.dialog.close();}});}
this.setTitle('Click to find an asset in the system');}
JumperEditingToolbarIconWidgetType.prototype={loadPicker:function()
{this.showLoader=false;var self=this;self.displayDisabledDiv(true);this.assetPicker.init('Jumper',function(){self.assetPicker.dialog.open();});this.assetPicker.addAssetsSelectedAction(function(selectedAssets){self.toggleState('inactive');var len=selectedAssets.length;if(len===0){return;}
var lin=this.getSelectLineage();lin.shift();var last=lin[(lin.length-1)];if(last!==selectedAssets[0]){lin.push(selectedAssets[0]);}
lin=lin.join(':');self.jumpToAsset(selectedAssets,lin);},true);this.assetPicker.addCloseAction(function(){self.toggleState('inactive');if(self.showLoader===true){self.displayDisabledDiv(true);}},true,'Jumper');},jumpToAsset:function(id,lineage)
{this.showLoader=true;var id=id[0];var self=this;var params={attributes:[],type:false,typeIcon:false,linking:[],urls:true};self.displayDisabledDiv(true);AssetManager.getAsset(id,function(asset){var dest='';var url=asset.getUrl(lineage);var tilda=(asset.id+'').indexOf('~');var assetid=parseInt(asset.id,10);if(tilda!==-1||assetid<0){strip=url.replace(/\?a=.*/gi,'');if(strip===url){dest=url+'/'+Widget.CURRENT_SUFFIX;}else{if(asset.hasOwnProperty('encodedId')===true){dest=strip+'/'+Widget.CURRENT_SUFFIX+'?a='+asset.encodedId;}else{dest=strip+'/'+Widget.CURRENT_SUFFIX+'?a='+asset.id;}}}else if(url===''){dest=Widget.EDIT_URL+'?a='+asset.id;}else{dest=url+'/'+Widget.CURRENT_SUFFIX;}
window.location.href=dest;},true,params);}};dfx.inherits('JumperEditingToolbarIcon','AbstractEditingToolbarIcon');function ProfileEditingToolbarIconWidgetType(id)
{AbstractEditingToolbarIconWidgetType.call(this,id);this.widgetType='ProfileEditingToolbarIcon';this.setTitle('Click to view and edit your account details');}
ProfileEditingToolbarIconWidgetType.prototype={toggleState:function(state)
{this.displayDisabledDiv(true);AbstractEditingToolbarIconWidgetType.prototype.toggleState.call(this,state);},setUsername:function(uname)
{var titleDiv=dfx.getId(this.id+'-title');var length=uname.length;var newWidth=((length*7)+25)+'px';dfx.setStyle(titleDiv,'width',newWidth);dfx.setHtml(titleDiv,uname);}};dfx.inherits('ProfileEditingToolbarIcon','AbstractEditingToolbarIcon');function TrashEditingToolbarIconWidgetType(id)
{AbstractEditingToolbarIconWidgetType.call(this,id);this.widgetType='TrashEditingToolbarIcon';this.setTitle('Click to view the assets in the trash');}
TrashEditingToolbarIconWidgetType.prototype={toggleState:function(state)
{this.displayDisabledDiv(true);AbstractEditingToolbarIconWidgetType.prototype.toggleState.call(this,state);}};dfx.inherits('TrashEditingToolbarIcon','AbstractEditingToolbarIcon');function AdminSplashScreenWidgetType(id,dates)
{AbstractSplashScreenWidgetType.call(this,id,dates);}
AdminSplashScreenWidgetType.prototype={};dfx.inherits('AdminSplashScreen','AbstractSplashScreen');function EditSplashScreenWidgetType(id,dates,editingAssetid,assetName)
{AbstractSplashScreenWidgetType.call(this,id,dates);this.editingAssetid=editingAssetid;this.assetName=assetName;}
EditSplashScreenWidgetType.prototype={};dfx.inherits('EditSplashScreen','AbstractSplashScreen');function SystemConfigSplashScreenWidgetType(id,dates)
{AbstractSplashScreenWidgetType.call(this,id,dates);}
SystemConfigSplashScreenWidgetType.prototype={};dfx.inherits('SystemConfigSplashScreen','AbstractSplashScreen');function FileVersioningWidgetType(id,assetid,version)
{AssetVersioningWidgetType.call(this,id,assetid,version);this.widgetType='FileVersioning';}
FileVersioningWidgetType.prototype={init:function()
{AssetVersioningWidgetType.prototype.init.call(this);var button=WidgetStore.get(this.id+'_dl');this.addDownloadButtonClickEvent(button);},addDownloadButtonClickEvent:function(button)
{var self=this;button.addClickEvent(function(){self.downloadFileVersion();});},downloadFileVersion:function()
{window.location.href=this.url+'?widget='+this.widgetType+'WidgetType&action=dlf&assetid='+this.assetid+'&version='+this.version;}};dfx.inherits('FileVersioning','AssetVersioning');function InterventionWidgetType(id,cancelCallback,confirmCallback)
{BalloonPopupWidgetType.call(this,id);this.mainPositions=['n','s','e','w'];this.order=['mid','low','high'];this.cancelCallback=function(){};this.confirmCallback=function(){};this.width='250px';this.height='50px';this.cancelText='No';this.confirmText='Yes';this.confirmButtonSize=78;this.cancelButtonSize=78;this.positionType=null;if(cancelCallback){this.setCancelCallback(cancelCallback);}
if(confirmCallback){this.setConfirmCallback(confirmCallback);}
this.includeWidget('Button',function(){});}
InterventionWidgetType.prototype={create:function(callback)
{var self=this;this.includeWidget('BalloonPopup',function(){BalloonPopupWidgetType.prototype.create.call(self,function(el){self.dialog.setSize(self.width,self.height);callback.call(self,el);return;});});},setCancelText:function(text)
{this.cancelText=text;},setConfirmText:function(text)
{this.confirmText=text;},setSize:function(w,h)
{this.width=w;this.height=h;if(this.dialog){this.dialog.setSize(w,h);}},show:function(element,positionType)
{if(this.popupActive===true){return;}
var el=this.domElem;dfx.setStyle(el,'visibility','hidden');dfx.setStyle(el,'display','block');this.positionType=positionType||null;this.popupActive=true;var self=this;var lim=100;var c=0;this.setCancelCallback(this.cancelCallback);this.setConfirmCallback(this.confirmCallback);if(!el.parentNode||el.parentNode!==document.body){document.body.appendChild(el);}
var i=setInterval(function(){var popupDims=dfx.getElementDimensions(el);if(popupDims.height!==0&&popupDims.width!==0){clearInterval(i);self.setPopupPosition(element);dfx.setStyle(el,'visibility','visible');self.dialog.show();}else if(c++>lim){clearInterval(i);}},100);},close:function()
{this.popupActive=false;dfx.remove(this.domElem);dfx.setStyle(this.domElem,'display','none');dfx.setStyle(this.dialog.el,'display','block');dfx.setStyle(this.dialog.el,'visibility','hidden');},setCancelButtonSize:function(size)
{this.cancelButtonSize=size;},setConfirmButtonSize:function(size)
{this.confirmButtonSize=size;},setMessage:function(msg)
{var buttonsClass='';if(this.confirmText===null){buttonsClass+=' noConfrimBtn';}
if(this.cancelText===null){buttonsClass+=' noCancelBtn';}
var c='InterventionWidgetType';var main=document.createElement('div');var content='<div class="'+c+'-message">'+msg+'</div><div class="'+c+'-buttons '+buttonsClass+'">';content+='<div class="'+c+'-leftButton"></div>';content+='<div class="'+c+'-rightButton"></div></div>';dfx.setHtml(main,content);var lCont=dfx.getClass(c+'-leftButton',main)[0];var rCont=dfx.getClass(c+'-rightButton',main)[0];this.replaceContent(main);var self=this;this.includeWidget('Button',function(){if(self.cancelText!==null){self.cancel=self.createWidget(this.id+'-cancelButton','Button','ButtonWidgetType-black');self.cancel.setName(self.cancelText);self.cancel.create(function(el){self.cancel.setMinWidth(self.cancelButtonSize+'px');lCont.appendChild(el);});self.cancel.addClickEvent(function(){self.close();self.cancelCallback.call(self);},true);}else{dfx.setStyle(rCont,'position','absolute');dfx.setStyle(rCont,'margin-left',(((parseInt(self.confirmButtonSize)+15)/2)*-1));dfx.setStyle(rCont,'left','50%');}
if(self.confirmText!==null){self.confirm=self.createWidget(this.id+'-confirmButton','Button','ButtonWidgetType-black');self.confirm.setName(self.confirmText);self.confirm.create(function(el){self.confirm.setMinWidth(self.confirmButtonSize+'px');rCont.appendChild(el);});self.confirm.addClickEvent(function(){self.close();self.confirmCallback.call(self);},true);}else{dfx.setStyle(lCont,'position','absolute');dfx.setStyle(lCont,'margin-left',(((parseInt(self.cancelButtonSize)+15)/2)*-1));dfx.setStyle(lCont,'left','50%');}});},setCancelCallback:function(callback)
{this.cancelCallback=callback;if(this.cancel){var self=this;this.cancel.addClickEvent(function(){self.close();self.cancelCallback.call(self);},true);}},setConfirmCallback:function(callback)
{this.confirmCallback=callback;if(this.confirm){var self=this;this.confirm.addClickEvent(function(){self.close();self.confirmCallback.call(self);},true);}},setPopupPosition:function(element)
{var popupEl=this.domElem;if(!element||!popupEl){return;}
var elementRect=dfx.getBoundingRectangle(element);var windowDims=dfx.getWindowDimensions();var popupDims=dfx.getElementDimensions(popupEl);var scrollCoords=dfx.getScrollCoords();var margin=10;var posInfo={element:element,elementRect:elementRect,windowDims:windowDims,scrollCoords:scrollCoords,popupDims:popupDims,margin:margin,point:{x:elementRect.x1+((elementRect.x2-elementRect.x1)/2),y:elementRect.y1+((elementRect.y2-elementRect.y1)/2)}};if(this.positionType==='fixed'){posInfo.point.x-=scrollCoords.x;posInfo.point.y-=scrollCoords.y;posInfo.scrollCoords.x=0;posInfo.scrollCoords.y=0;dfx.setStyle(popupEl,'position',this.positionType);}
this._setPopupPosition(posInfo);},_setPopupPosition:function(info)
{var vln=this.mainPositions.length;var pos=null;for(var i=0;i<vln;i++){pos=this.mainPositions[i];if(this.isValidPosition(pos,info)===true){break;}else{pos=null;}}
if(pos===null){return false;}
var order=null;var oln=this.order.length;for(var i=0;i<oln;i++){order=this.order[i];if(this.isValidPosition((pos+order),info)===true){break;}else{order=null;}}
this.setPosition(pos,order,info);},setPosition:function(pos,order,info)
{var o='';var n=0;switch(pos){case's':o='top';n=(info.point.y+info.margin);break;case'n':o='top';n=(info.point.y-info.margin-info.popupDims.height);break;case'e':o='left';n=(info.point.x+info.margin);break;case'w':o='left';n=(info.point.x-info.margin-info.popupDims.width);break;default:break;}
if(o){dfx.setStyle(this.domElem,o,n+'px');}
n=0;switch(pos){case's':case'n':if(order==='low'){n=info.point.x;}else if(order==='high'){n=(info.point.x-info.popupDims.width);}else{n=(info.point.x-(info.popupDims.width/2));}
dfx.setStyle(this.domElem,'left',n+'px');break;default:break;}
var c='InterventionWidgetType-arrow';var arrow=dfx.getClass(c,this.wrapper)[0];if(!arrow){arrow=document.createElement('div');this.wrapper.appendChild(arrow);}
dfx.removeClass(arrow);var ac=' arrow-'+pos+'-'+order;dfx.addClass(arrow,c+ac);dfx.removeClass(this.domElem);dfx.addClass(this.domElem,this.getClass()+ac);},isValidPosition:function(pos,info)
{switch(pos){case'':case'n':case'whigh':case'ehigh':if((info.point.y-info.margin-info.popupDims.height-info.scrollCoords.y)>0){return true;}
break;case'wlow':case'elow':case's':if((info.point.y+info.margin+info.popupDims.height+info.scrollCoords.y)<info.windowDims.height){return true;}
break;case'e':case'nlow':case'slow':if((info.point.x+info.margin+info.popupDims.width+info.scrollCoords.x)<info.windowDims.width){return true;}
break;case'w':case'nhigh':case'shigh':if((info.point.x-info.margin-info.popupDims.width+info.scrollCoords.x)>0){return true;}
break;case'nmid':case'smid':if((info.point.x-info.margin-(info.popupDims.width/2)+info.scrollCoords.x)>0){if((info.point.x-info.margin+(info.popupDims.width/2)+info.scrollCoords.x)<info.windowDims.width){return true;}}
break;default:break;}
return false;},getClass:function()
{var c=BalloonPopupWidgetType.prototype.getClass.call(this);return'InterventionWidgetType '+c;}};dfx.inherits('Intervention','BalloonPopup');function ArrowButtonWidgetType(id,classPrefix,textOnly,value,direction)
{ButtonWidgetType.call(this,id,classPrefix,textOnly,value);this.classPrefix='ArrowButtonWidgetType';this.direction=direction;}
ArrowButtonWidgetType.prototype={setEnabled:function(enabled,force)
{if(force!==true&&this.enabled===enabled){return;}
this.enabled=enabled;var suffix='';if(this.toggleMode!==true&&enabled!==true){dfx.removeEvent(this.domElem,'mouseover',this.overFn);dfx.removeEvent(this.domElem,'mouseout',this.outFn);}else{dfx.addEvent(this.domElem,'mouseover',this.overFn);dfx.addEvent(this.domElem,'mouseout',this.outFn);}
if(enabled!==true){dfx.addClass(this.domElem,this.classPrefix+'-point-'+this.direction+'-disabled');}else{dfx.removeClass(this.domElem,this.classPrefix+'-point-'+this.direction+'-disabled');}}};dfx.inherits('ArrowButton','Button');function AdhocTaskContainerWidgetType(id,collapsed,ani,taskid,userName)
{ExpandableMenuWidgetType.call(this,id);this.widgetType='AdhocTaskContainer';this.domElem=dfx.getId(this.id);this.taskid=taskid;this.userName=userName||'';if(dfx.isset(this.domElem)===true){this.init();}}
AdhocTaskContainerWidgetType.prototype={init:function()
{this.completedButtonEvent();this.reassignButtonEvent();this.addCommentEvents();},addCommentEvents:function()
{var elem=dfx.getId(this.id+'-addComment');if(dfx.isset(elem)===true){var self=this;dfx.addEvent(elem,'click',function(){self.addNewComment();});}},addNewComment:function()
{var self=this;var parent=dfx.getId(this.id+'-commentsList');this.includeWidget('TextArea',function(){var textArea=self.createWidget(null,'TextArea');textArea.create(function(el){parent.appendChild(self._createCommentEl(el,textArea));textArea.focus();});});},addComment:function(comment,callback)
{var self=this;this.sendAction('comment',{comment:comment},function(data){if(data==='1'){callback.call(self);}else{alert('Failed to add comment to task');}});},_createCommentEl:function(comment,textArea,user)
{var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c+'-task-body '+c+'-task-comments-comment');var body=document.createElement('div');dfx.addClass(body,c+'-task-body '+c+'-task-comments-comment-msg');if(dfx.isset(comment)===true){body.appendChild(comment);}
main.appendChild(body);if(dfx.isset(textArea)===true){var buttons=document.createElement('div');dfx.addClass(buttons,c+'-task-body '+c+'-task-comments-comment-buttons');main.appendChild(buttons);var ok=document.createElement('div');buttons.appendChild(ok);dfx.addClass(ok,c+'-task-body '+c+'-task-comments-comment-ok');dfx.setHtml(ok,'OK');var cancel=document.createElement('div');buttons.appendChild(cancel);dfx.addClass(cancel,c+'-task-body '+c+'-task-comments-comment-cancel');dfx.setHtml(cancel,'Cancel');dfx.addEvent(cancel,'click',function(){dfx.remove(main);});var self=this;dfx.addEvent(ok,'click',function(){self.addComment(textArea.getValue(),function(){dfx.remove(comment);dfx.remove(buttons);dfx.setHtml(body,textArea.getValue());var poster=document.createElement('div');dfx.addClass(poster,c+'-task-body '+c+'-task-comments-comment-user');dfx.setHtml(poster,'- '+self.userName);main.appendChild(poster);});});}
return main;},completedButtonEvent:function()
{var button=WidgetStore.get(this.id+'-action:completed');if(dfx.isset(button)===true){var self=this;button.addClickEvent(function(){self.completeTask();});}},completeTask:function()
{var self=this;this.sendAction('complete',null,function(data){if(data==='1'){dfx.remove(self.domElem);}else{alert('Failed to complete task');}});},reassignButtonEvent:function()
{var button=WidgetStore.get(this.id+'-action:reassign');if(dfx.isset(button)===true){var self=this;button.addClickEvent(function(){AssetManager.showAssetPicker('users',function(assets){self.reAssignTask(assets);});});}},reAssignTask:function(assets)
{if(assets.length!==1){return;}
var self=this;this.sendAction('reassign',{newuserid:assets[0]},function(data){if(data==='1'){dfx.remove(self.domElem);}else{alert('Failed to re-assign task');}});},sendAction:function(type,params,callback)
{if(dfx.isset(params)===false){params={};}
params.widget=this.widgetType;params.action=type;params.taskid=this.taskid;dfx.post(this.url,params,callback);}};dfx.inherits('AdhocTaskContainer','ExpandableMenu');function MovieCreateWizardWidgetType(id)
{FileCreateWizardWidgetType.call(this,id);this._movieProcessStepIndex=1;this._fileids=[];this._fileid=null;this.stepManager=WidgetStore.get('WizardRunner-wizardStepManager');if(this.stepManager){var self=this;this.stepManager.addStepChangedAction(function(stepIndex){self.stepChanged(stepIndex);});var wiz=WidgetStore.get('WizardRunner');wiz.setCustomProcessFn(function(steps,values){self.processWizard(steps,values);});}}
MovieCreateWizardWidgetType.prototype={processWizard:function(steps,values)
{var params={widget:'MovieCreateWizardWidget',action:'completeWizard',steps:dfx.jsonEncode(steps),values:dfx.jsonEncode(values)};var self=this;dfx.post(this.url,params,function(result){result=dfx.jsonDecode(result);self.stepManager._showCompleteMsg(result);self.reset();});},reset:function()
{var widget=WidgetStore.get('movieThumb');if(widget){widget.reset();}
this._fileids=[];this._fileid=null;FileCreateWizardWidgetType.prototype.reset.call(this);},stepChanged:function(stepIndex)
{if(stepIndex===0){this.reset();return;}else if(stepIndex!==this._movieProcessStepIndex){return;}
this.stepManager.disableButtons();this._processStep(this.stepManager.getSteps(),this.stepManager.getValues(),0);},_processStep:function(steps,values,index)
{if(dfx.isset(values[index])===true){this.displayDisabledDiv(true,dfx.getId('WizardRunner-wrapper'),'white','absolute','Uploading File ('+(index+1)+' of '+values.length+')');var fileid=dfx.getUniqueId();this._fileid=fileid;this._fileids.push(fileid);var fileWidget=null;var thumbsWidget=null;for(var step in values[index]){for(var widgetid in values[index][step]){var widget=WidgetStore.get(widgetid);if(widget.widgetType==='FileUpload'){fileWidget=widget;}else if(widget.widgetType==='MovieWizardThumbPicker'){this.stepManager.setStepFieldData(index,widgetid,{fileid:fileid,thumbid:null});}}}
var self=this;this.processSingleUpload(fileWidget,index,values[index],function(status){if(status===false){self.removeDisabledDiv(dfx.getId('WizardRunner-wrapper'),true);self.stepManager.enableButtons();}else{self._checkConvertProgress(fileid,function(){self._processStep(steps,values,(index+1));},index,values.length);}});}else{var self=this;this.displayDisabledDiv(true,dfx.getId('WizardRunner-wrapper'),'white','absolute','Creating thumbnails...');this.loadThumbs(0,function(){self.displayDisabledDiv(true,dfx.getId('WizardRunner-wrapper'),'white','absolute','Done!');self.removeDisabledDiv(dfx.getId('WizardRunner-wrapper'),true);});}},loadThumbs:function(i,callback)
{var self=this;if(this._fileids[i]){self._loadThumbs(i,this._fileids[i],function(){self.loadThumbs((i+1),callback);});}else if(i>0){callback.call(this);}},_loadThumbs:function(dataIndex,fileid,callback)
{var params={widget:'MovieCreateWizardWidget',action:'getThumbs',fileid:fileid};var self=this;dfx.post(this.url,params,function(data){var error=null;try{data=dfx.jsonDecode(data);}catch(e){error=data;}
var widget=WidgetStore.get('movieThumb');if(widget){if(error!==null){widget.setError(error);widget.setThumbs(fileid,[]);}else{widget.setThumbs(fileid,data);}
if(self.stepManager.getCurrentStepDataIndex()===dataIndex){widget.setValue({fileid:fileid});}}
self.stepManager.enableButtons();callback.call(this);});},_checkConvertProgress:function(fileid,callback,index,total)
{this.displayDisabledDiv(true,dfx.getId('WizardRunner-wrapper'),'white','absolute','Converting File ('+(index+1)+' of '+total+')');var params={widget:'MovieCreateWizardWidget',action:'checkProgress',fileid:fileid};var self=this;var i=setInterval(function(){dfx.post(self.url,params,function(data){if(data==='completed'){clearInterval(i);callback.call(this);}else if(data!=='processing'){clearInterval(i);callback.call(this);}});},3000);},_getUploadParams:function()
{return{widget:'MovieCreateWizardWidget',action:'uploadFile',fileid:this._fileid};},_fileUploadCompleted:function(idx,status,form,callback)
{status=dfx.getHtml(status);if(status.length>0){var widget=WidgetStore.get('movieThumb');if(widget){widget.setError(status);callback.call(this,false);}}else{callback.call(this,true);}},appendFields:function(formEl)
{var input=document.createElement('input');input.type='hidden';input.name='moviefileUpload';input.value=true;formEl.appendChild(input);}};dfx.inherits('MovieCreateWizard','FileCreateWizard');function MySourceMatrixIFrameWidgetType(id,source)
{IFrameWidgetType.call(this,id,unescape(source));this.widgetType='MySourceMatrixIFrame';this.init();}
MySourceMatrixIFrameWidgetType.prototype={init:function()
{var source=this.source;var self=this;setTimeout(function(){var div=dfx.getId('_disabledDiv');if(div){self.removeDisabledDiv();}},10000);this._adjustStyles();var self=this;WidgetStore.addDataChangeListener('MySourceMatrixIFrameModeListener','activeMode',function(newMode,prevMode){self.modeChanged(newMode,prevMode);});},modeChanged:function(newMode,prevMode)
{if(!newMode||newMode.id!=='EditEditingMode'){var c=this.getClass();dfx.removeClass(document.body,c+'-bodyOverride');dfx.removeClass(document.body.parentNode,c+'-bodyOverride');var toolbar=dfx.getClass('ToolbarWidgetType')[0];toolbar.style.width='100%';dfx.removeEvent(window,'resize.'+this.getClass());}},_adjustStyles:function()
{var c=this.getClass();dfx.addClass(document.body,c+'-bodyOverride');dfx.addClass(document.body.parentNode,c+'-bodyOverride');var scrollWidth=dfx.getScrollbarWidth();var toolbar=dfx.getClass('ToolbarWidgetType')[0];var win=dfx.getWindowDimensions();var newWidth=(win.width-scrollWidth);dfx.setStyle(toolbar,'width',newWidth+'px');dfx.addEvent(window,'resize.'+this.getClass(),function(){var win=dfx.getWindowDimensions();var newWidth=(win.width-scrollWidth);dfx.setStyle(toolbar,'width',newWidth+'px');});var source=this.source;var self=this;var saveBtn=dfx.getId('EditingSaveButton');var cmd=escape('window.parent.frames[0].EasyEditScreens.saveCurrentScreen(function(){});');this.setSaveButton(function(){self.sendEESCommand(source,cmd);},function(){self.ready();});},sendEESCommand:function(url,cmd)
{url=url.replace('&mode=embedded','');url+='&mode=script&script='+cmd;var iframe=document.createElement('iframe');dfx.addClass(iframe,this.getClass()+'-commandIframe');document.body.appendChild(iframe);iframe.src=url;iframe.onload=function(){setTimeout(function(){dfx.remove(iframe);},100);};}};dfx.inherits('MySourceMatrixIFrame','IFrame');function MetadataAdminNumberSettingWidgetType(id)
{MetadataAdminSettingWidgetType.call(this,id);this.widgetType='MetadataAdminNumberSetting';}
MetadataAdminNumberSettingWidgetType.prototype={create:function(callback)
{var c=this.getClass();var main=document.createElement('div');var content='<div class="'+c+'-bottom">';content+='<div class="'+c+'-defValLabel">Default Value</div>';content+='<div class="'+c+'-defVal"></div>';content+='</div>';dfx.setHtml(main,content);var defValCont=dfx.getClass(c+'-defVal',main)[0];var self=this;this.includeWidgets(['ToggleButton','TextField'],function(){var defVal=self.createWidget(null,'TextField');if(dfx.isset(self.settingValues.defaultValue)===true){defVal.setValue(self.settingValues.defaultValue);}
self.settings.defaultValue=defVal;defVal.create(function(el){defVal.addOnChangeEvent(function(){self.setModified(true);});defValCont.appendChild(el);var validValue=defVal.getValue();dfx.addEvent(defVal.input,'keydown',function(e){if((e.metaKey===true||e.ctrlKey===true||e.shiftKey===true)||(e.keyCode>=48&&e.keyCode<=57)||e.keyCode===8||e.keyCode===37||e.keyCode===39||e.keyCode===46){return;}
dfx.preventDefault(e);return;});dfx.addEvent(defVal.input,'focus',function(e){validValue=defVal.getValue();});dfx.addEvent(defVal.input,'blur',function(e){if(value.length>0&&value.match(/^[-+]?[ \d]+$/)===null){defVal.setValue(validValue);}});dfx.addEvent(defVal.input,'keyup',function(e){var value=defVal.getValue();if(value.length>0&&value.match(/^[-+]?[ \d]+$/)===null){defVal.setValue(validValue);}else{validValue=value;}});});self.createMain(function(parentElem){callback.call(self,parentElem);return;},main);});},check:function()
{var result=true;var value=self.settingValues.defaultValue.getValue();if(value.length>0&&value.match(/^[-+]?[ \d]+$/)===null){result='Invalid number';}
return result;}};dfx.inherits('MetadataAdminNumberSetting','MetadataAdminSetting');function MetadataAdminSelectionSettingWidgetType(id)
{MetadataAdminSettingWidgetType.call(this,id);this.widgetType='MetadataAdminSelectionSetting';}
MetadataAdminSelectionSettingWidgetType.prototype={create:function(callback)
{var c=this.getClass();var main=document.createElement('div');var content='<div class="'+c+'-top"><div style="overflow:hidden;">';content+='<div class="'+c+'-left">Allow Multiple Selection</div>';content+='<div class="'+c+'-multiple"></div></div>';content+='<div style="overflow:hidden;"><div class="'+c+'-left">Size</div>';content+='<div class="'+c+'-size"></div></div>';content+='</div>';content+='<div class="'+c+'-bottom">';content+='<div class="'+c+'-options"></div>';content+='</div>';dfx.setHtml(main,content);var multipleCont=dfx.getClass(c+'-multiple',main)[0];var optionsCont=dfx.getClass(c+'-options',main)[0];var sizeCont=dfx.getClass(c+'-size',main)[0];var self=this;this.includeWidgets(['Options','ToggleButton','SpinButton'],function(){var multi=self.createWidget(null,'ToggleButton',false,'slider',(self.settingValues.multiple||false),'Yes','No');var options=self.createWidget(null,'Options');var size=self.createWidget(null,'SpinButton',0);var req=self.settingValues.reqElem;multi.addToggleEvent(function(val){options.setMulti(val);self.setModified(true);self.toggleAllowEmpty(multi);});dfx.addEvent(self.reqElem,'click',function(){setTimeout(function(){self.toggleAllowEmpty(multi);},300);});options.setAddNewOptionBoxValue('Add new value ...');if(self.settingValues.options){var op=self.settingValues.options;options.setOptions(op.options);options.setAllowEmpty(op.allowEmpty,op.allowEmptyText);}else{options.setDefaultOptions();}
options.addOnChangeEvent(function(){self.setModified(true);});size.create(function(sizeEl){sizeCont.appendChild(sizeEl);if(self.settingValues.size){size.setValue(self.settingValues.size);}});size.addOnChangeEvent(function(){self.setModified(true);});multi.create(function(multiEl){options.create(function(optionsEl){multipleCont.appendChild(multiEl);optionsCont.appendChild(optionsEl);options.setMulti((self.settingValues.multiple||false));self.settings.multiple=multi;self.settings.options=options;self.settings.size=size;self.createMain(function(parentElem){self.toggleAllowEmpty(multi);callback.call(this,parentElem);return;},main,c);});});});},toggleAllowEmpty:function(multi)
{if(multi.getValue()===false&&dfx.hasClass(this.reqElem,'required')===false){this.settings.options.setAllowEmpty(true);}else{this.settings.options.setAllowEmpty(false);}}};dfx.inherits('MetadataAdminSelectionSetting','MetadataAdminSetting');function MetadataAdminTextSettingWidgetType(id)
{MetadataAdminSettingWidgetType.call(this,id);this.widgetType='MetadataAdminTextSetting';this.reqElem=null;}
MetadataAdminTextSettingWidgetType.prototype={create:function(callback)
{var c=this.getClass();var main=document.createElement('div');var content='<div class="'+c+'-top">';content+='<div class="'+c+'-left">Use Multiple Lines</div>';content+='<div class="'+c+'-multiLine"></div>';content+='</div>';content+='<div class="'+c+'-bottom">';content+='<div class="'+c+'-defValLabel">Default Value</div>';content+='<div class="'+c+'-defVal"></div>';content+='</div>';dfx.setHtml(main,content);var multipleCont=dfx.getClass(c+'-multiLine',main)[0];var defValCont=dfx.getClass(c+'-defVal',main)[0];var self=this;this.includeWidgets(['ToggleButton','TextField'],function(){var multi=self.createWidget(null,'ToggleButton',false,'slider',(self.settingValues.multiple||false),'Yes','No');var defVal=self.createWidget(null,'TextField');if(dfx.isset(self.settingValues.defaultValue)===true){defVal.setValue(self.settingValues.defaultValue);}
multi.addToggleEvent(function(){self.setModified(true);});self.settings.defaultValue=defVal;self.settings.multiple=multi;multi.create(function(el){multipleCont.appendChild(el);});defVal.create(function(el){defVal.addOnChangeEvent(function(){self.setModified(true);});defValCont.appendChild(el);});self.createMain(function(parentElem){callback.call(self,parentElem);return;},main);});}};dfx.inherits('MetadataAdminTextSetting','MetadataAdminSetting');function RuleTypeAssetTypeLevelSelectorWidgetType(id)
{RuleTypeWidgetType.call(this,id);this.widgetType='RuleTypeAssetTypeLevelSelectorWidgetType';}
RuleTypeAssetTypeLevelSelectorWidgetType.prototype={setValue:function(arg)
{this.value=arg;},validate:function()
{var valid=true;if(this.value.value===''){valid=false;}else if(this.value.alternateFolder===''){valid=false;}
return valid;}};dfx.inherits('RuleTypeAssetTypeLevelSelector','RuleType');function RuleTypeChannelWidgetType(id,system,action,args)
{RuleType.call(this,id);this.widgetType='RuleTypeChannelWidgetType';this.system=null;this.action=null;this.args=null;this.widgetid='';if(dfx.isset(system)===true){this.setSystem(system);}
if(dfx.isset(action)===true){this.setAction(action);}
if(dfx.isset(args)===true){this.setArgs(args);}}
RuleTypeChannelWidgetType.prototype={setSystem:function(sys)
{this.system=sys;},setAction:function(act)
{this.act=act;},setWidgetid:function(wid)
{this.widgetid=wid;},setArgs:function(args)
{this.args=args;},validateRule:function()
{return true;}};dfx.inherits('RuleTypeChannel','RuleType');function RuleTypeDateWidgetType(id)
{RuleType.call(this,id);this.widgetType='RuleTypeDateWidgetType';}
RuleTypeDateWidgetType.prototype={};dfx.inherits('RuleTypeDate','RuleType');function RuleTypeFileUploadWidgetType(id)
{RuleTypeWidgetType.call(this,id);this.widgetType='RuleTypeFileUploadWidgetType';}
RuleTypeFileUploadWidgetType.prototype={validate:function()
{var widget=WidgetStore.get(this.widgetid);var allowedTypes=widget.getAllowedExtensions();var ext=dfx.getFileExtension(this.value);if(allowedTypes.length>0&&dfx.inArray(ext,allowedTypes)===false){return false;}
return true;}};dfx.inherits('RuleTypeFileUpload','RuleType');function RuleTypeFileWidgetType(id)
{RuleType.call(this,id);this.widgetType='RuleTypeFileWidgetType';}
RuleTypeFileWidgetType.prototype={};dfx.inherits('RuleTypeFile','RuleType');function RuleTypeRootNodeListWidgetType(id)
{RuleTypeWidgetType.call(this,id);this.widgetType='RuleTypeRootNodeListWidgetType';}
RuleTypeRootNodeListWidgetType.prototype={validate:function()
{if(dfx.isArray(this.value)===false){return false;}
var len=this.value.length;if(len===0){return false;}
var valid=false;for(var i=0;i<len;i++){if(this.value[i].deleted===false){valid=true;break;}}
return valid;}};dfx.inherits('RuleTypeRootNodeList','RuleType');function RuleTypeStringWidgetType(id)
{RuleTypeWidgetType.call(this,id);this.widgetType='RuleTypeStringWidgetType';}
RuleTypeStringWidgetType.prototype={};dfx.inherits('RuleTypeString','RuleType');function DynamicTabPaneWidgetType(id,orientation,tabChangeInfo)
{TabPaneWidgetType.call(this,id,orientation);this.loadedTabs={};this.requestParams={};this.blockedTabs={};this.currentScreen=null;this.currentScreenWidget=null;this.currentScreenMode=null;this.tabChangeInfo=tabChangeInfo||null;this.initHandlers={};this.tabLoader=null;}
DynamicTabPaneWidgetType.prototype={blockTabClick:function(idx)
{this.blockedTabs[idx]=true;},unblockTabClick:function(idx)
{this.blockedTabs[idx]=false;},setRequestParamData:function(key,val)
{this.requestParams[key]=val;},getRequestParamData:function()
{return this.requestParams;},addOnInitHandler:function(idx,callback)
{this.initHandlers[idx]=callback;},displayTabLoader:function()
{var id=this.id+'_tabLoader';this.tabLoader=dfx.getId(id);if(dfx.isset(this.tabLoader)===false){var d=document.createElement('div');d.id=id;dfx.setStyle(d,'height','100%');dfx.setStyle(d,'width','100%');dfx.setStyle(d,'backgroundColor','#eee');dfx.setStyle(d,'zIndex','800');dfx.setStyle(d,'visibility','visible');dfx.setOpacity(d,'0.8');var cId=this.id+'-containers';var c=dfx.getId(cId);c.appendChild(d);this.tabLoader=d;}
var loader=document.createElement('div');this.tabLoader.appendChild(loader);dfx.addClass(loader,'ajax-loader');return this.tabLoader;},removeTabLoader:function()
{dfx.setStyle(this.tabLoader,'display','none');dfx.setStyle(this.tabLoader,'z-index','1000');},switchToScreen:function(id,callback,forceReload,reqData)
{if(forceReload===true){this.loadedTabs[id]=false;}
if(this.loadedTabs[id]===true){if(dfx.isset(callback)===true){callback.call(this);}}else{this.disable(id);this.currentScreen=id;var screenDivWidgetId=this.id+'-'+id;var screenDivWidget=WidgetStore.get(screenDivWidgetId);screenDivWidget.url=window.location.href;var self=this;if(reqData){dfx.foreach(reqData,function(index){self.setRequestParamData(index,reqData[index]);return true;});}
var params=this.getRequestParamData();params.screen=this.tabChangeInfo[id]['widget'];params.assetid=WidgetStore.getData('editingAssetid');screenDivWidget.changeContent(params,function(data){if(data===''){return;}
data=dfx.jsonDecode(data);self.loadedTabs[id]=true;self.initHandlers[id](data,function(){self.enable(id);});if(dfx.isFn(callback)===true){callback.call(self);}
if(reqData){dfx.foreach(self.requestParams,function(index){if(reqData.hasOwnProperty(index)===true){delete self.requestParams[index];}});}});}},updateScreen:function(index,elem)
{var screenDivWidgetId=this.id+'-'+index;if(elem){var tabPaneDiv=dfx.getId(screenDivWidgetId);dfx.setHtml(tabPaneDiv,'');tabPaneDiv.appendChild(elem);dfx.showElement(tabPaneDiv);}else{var screenDivWidget=WidgetStore.get(screenDivWidgetId);screenDivWidget.url=window.location.href;var params=this.getRequestParamData();screenDivWidget.changeContent(params);}},disable:function(id)
{var dnmDiv=dfx.getId(this.id+'-'+id);dfx.setStyle(dnmDiv,'display','none');dfx.setStyle(dnmDiv,'visibility','hidden');},enable:function(id)
{var dnmDiv=dfx.getId(this.id+'-'+id);dfx.setStyle(dnmDiv,'display','block');dfx.setStyle(dnmDiv,'visibility','visible');},_addTabClickEvent:function(tab,index)
{var self=this;dfx.addEvent(tab,'click',function(){self.showTab(index);});},showTab:function(index,data,force)
{if(dfx.isset(this.blockedTabs[index])&&this.blockedTabs[index]===true){return;}
var self=this;var cardLayout=WidgetStore.get(this.id+'-cardLayout');if(force!==true&&index===self.selectedIndex){}
if(self.fireTabSelectedEvent(index,self.selectedIndex)===false){return;}
var tabSelClass=self.getClass()+'-tab-selected';dfx.removeClass(self.tabElements[self.selectedIndex],tabSelClass);var prevIndex=self.selectedIndex;self.selectedIndex=index;cardLayout.hide(prevIndex);cardLayout.show(index);dfx.addClass(self.tabElements[index],tabSelClass);self.switchToScreen(index,function(){self.fireTabChangedEvent(index,prevIndex);},true,data);},setSelected:function(index,selected)
{var tabSelClass=this.getClass()+'-tab-selected';if(selected===false){dfx.removeClass(this.tabElements[index],tabSelClass);}else{dfx.addClass(this.tabElements[index],tabSelClass);}}};dfx.inherits('DynamicTabPane','TabPane');function SettingsTabPaneWidgetType(id)
{TabPaneWidgetType.call(this,id);this.widgetType='SettingsTabPane';this.bugState=1;this.settingsPane=null;var self=this;WidgetStore.addDataChangeListener(id+'-bugStatelst','bugState',function(info){self.bugState=info.state;self.settingsPane=info.widget;});}
SettingsTabPaneWidgetType.prototype={selectTab:function(index)
{if(this.settingsPane!==null){this.settingsPane.open();}else{var settingsPane=WidgetStore.get('EditEditingModeWidgetType-assetSettings');if(settingsPane){settingsPane.open();}}
if(index===this.selectedIndex){return;}
if(this.selectedIndex===-1){this.selectedIndex=0;}
WidgetStore.setData('activeTabid',this.tabElements[index].id);this.fireTabSelectedEvent(index,this.selectedIndex);if(this.stopSelection===true){this.stopSelection=false;return;}
var prevIndex=this.selectedIndex;this.selectedIndex=index;dfx.removeClass(this.tabElements[prevIndex],'active');dfx.addClass(this.tabElements[index],'active');dfx.removeClass(dfx.getId(this.id+'-tabcont:'+prevIndex),'active');dfx.addClass(dfx.getId(this.id+'-tabcont:'+index),'active');this.fireTabChangedEvent(index,prevIndex);}};dfx.inherits('SettingsTabPane','TabPane');function AssetTreeWidgetType(id)
{TreeWidgetType.call(this,id);this.assets={};this.assetChildrenExpandedEvents=[];this.assetChildrenCollapsedEvents=[];this.selectedAssets=[];this.assetHoverEvents=[];var self=this;this.addNodeControlClickedEvent(function(nodeid,li,expanding){self.expandChildren(nodeid,li,expanding);if(expanding===false){this.fireAssetChildrenCollapsedEvents(nodeid,li);}});}
AssetTreeWidgetType.prototype={setRootAsset:function(assetid,hidden,callback)
{if(hidden===true){this.rootHidden=true;}
this.rootNode=null;this.nodes={};this.assets={};dfx.empty(this.treeElement);this.addNode(assetid,'',null);var self=this;this.includeWidget('ToggleButton',function(){this.getChildAssets(assetid,function(children){if(dfx.isset(children)===true){var cLen=children.length;for(var i=0;i<cLen;i++){self.addAsset(children[i]);self.addAssetLineage(children[i],assetid+':'+children[i]);AssetManager.getAsset(children[i],function(info){var hasKids=false;if(info.children.length>0){hasKids=true;}
self._createAssetElement(info,children[i],function(assetEl){self.addNode(children[i],assetEl,assetid,hasKids,info.iconUrl);});});}}
self._addNodeElement(assetid,null,self.treeElement,'last',false,[]);if(hidden===true){if(dfx.isset(self.nodes[assetid])===true){var divEl=self.nodes[assetid].elements[0].firstChild;dfx.setStyle(divEl,'display','none');dfx.setStyle(self.nodes[assetid].elements[0].childNodes[1],'display','block');}}
if(dfx.isFn(callback)===true){callback.call(this);}});});},_getAssetToggleButton:function(assetid)
{var widgetId=this.id+'-button:'+assetid;var toggleButton=WidgetStore.get(widgetId);return toggleButton;},_createAssetElement:function(assetInfo,itemid,callback)
{var self=this;this.includeWidget('ToggleButton',function(){var widgetId=self.id+'-button:'+itemid;var toggleButton=self.createWidget(widgetId,'ToggleButton');var div=document.createElement('div');var title=document.createElement('div');dfx.setStyle(title,'float','left');dfx.setHtml(title,assetInfo.name);div.appendChild(title);toggleButton.create(function(el){div.appendChild(el);if(dfx.isFn(callback)===true){callback.call(self,div);}});self.addToggleButtonEvent(toggleButton,assetInfo);});},addToggleButtonEvent:function(toggleButton,assetInfo)
{var self=this;toggleButton.addToggleEvent(function(selected){if(selected===true){if(self.selectedAssets.inArray(assetInfo.id)===false){self.selectedAssets.push(assetInfo.id);}}else{var index=self.selectedAssets.find(assetInfo.id);if(index!==1){self.selectedAssets.splice(index,1);}}});},getChildAssets:function(assetid,callback)
{AssetManager.getAsset(assetid,function(asset){var children=asset.children;AssetManager.getAssets(children,function(){callback.call(this,children);});});},getAssetidFromLineage:function(lineage)
{lineage=lineage.toString().split(':');var assetid=parseInt(lineage[(lineage.length-1)]);return assetid;},expandChildren:function(lineage,li)
{var assetid=this.getAssetidFromLineage(lineage);if(dfx.isset(this.assets[assetid])===false){return;}
if(this.assets[assetid].linChildrenAdded[lineage]!==true){var self=this;this.includeWidget('ToggleButton',function(){this.getChildAssets(assetid,function(children){if(dfx.isset(children)===true){var cLen=children.length;for(var i=0;i<cLen;i++){self.addAsset(children[i]);self.addAssetLineage(children[i],lineage+':'+children[i]);AssetManager.getAsset(children[i],function(info){var hasKids=false;if(info.children.length>0){hasKids=true;}
self._createAssetElement(info,lineage+':'+children[i],function(assetEl){self.addNode(lineage+':'+children[i],assetEl,lineage,hasKids,info.iconUrl);});});}
self._addChildElements(lineage,li);self.assets[assetid].linChildrenAdded[lineage]=true;self.setSelectedAssets(self.selectedAssets);self.fireAssetChildrenExpandedEvents(assetid,li);}});});}},addAsset:function(assetid)
{if(assetid in this.assets){return;}
this.assets[assetid]={lineages:[],linChildrenAdded:{}};},addAssetLineage:function(assetid,lineage)
{this.assets[assetid].lineages.push(lineage);},removeAsset:function(assetid)
{var lineages=this.assets[assetid].lineages;var len=lineages.length;for(var i=0;i<len;i++){this.removeNode(lineages[i]);}
delete this.assets[assetid];},getAssetParents:function(assetid)
{var parentids=[];var lineages=this.assets[assetid].lineages;var len=lineages.length;for(var i=0;i<len;i++){var lineage=lineages[i].toString().split(':');parentids.push(parseInt(lineage[(lineage.length-2)]));}},fireNodeDblClickEvents:function(assetid)
{this.setRootAsset(assetid,true);TreeWidgetType.prototype.fireNodeDblClickEvents.call(this,assetid);},addAssetChildrenExpandedEvent:function(fn)
{this.assetChildrenExpandedEvents.push(fn);},fireAssetChildrenExpandedEvents:function(assetid,el)
{var ln=this.assetChildrenExpandedEvents.length;for(var i=0;i<ln;i++){this.assetChildrenExpandedEvents[i].call(this,assetid,el);}},addAssetChildrenCollapsedEvent:function(fn)
{this.addNodeControlClickedEvent(fn);},fireAssetChildrenCollapsedEvents:function(nodeid,li)
{var ln=this.assetChildrenCollapsedEvents.length;for(var i=0;i<ln;i++){this.assetChildrenCollapsedEvents[i].call(this,nodeid,li);}},getSelectedAssetids:function()
{return this.selectedAssets;},setSelectedAssets:function(assetids)
{var ln=this.selectedAssets.length;var len=assetids.length;var self=this;for(var i=0;i<ln;i++){if(len===0||assetids.inArray(this.selectedAssets[i])===false){var widget=this._getAssetToggleButton(this.selectedAssets[i]);if(dfx.isset(widget)===true){widget.toggleOff();}}}
this.selectedAssets=assetids;for(var i=0;i<len;i++){var widget=this._getAssetToggleButton(assetids[i]);if(dfx.isset(widget)===true){widget.toggleOn();}}}};dfx.inherits('AssetTree','Tree');function AssetPickerThumbViewWidgetType(id,picker)
{AssetPickerListViewWidgetType.call(this,id,picker);this.widgetType='AssetPickerThumbView';this.domElem=null;this.wrapper=null;this.currentThumbSize='small';this.createid=null;this.thumbSizes={small:80,large:260};}
AssetPickerThumbViewWidgetType.prototype={create:function(callback)
{var c=this.getClass()+'-main';var main=document.createElement('div');dfx.addClass(main,c);this.domElem=main;var wrapper=document.createElement('div');dfx.addClass(wrapper,c+'-wrapper');main.appendChild(wrapper);this.wrapper=wrapper;callback.call(this,main);},update:function(callback)
{if(this.active===true){this.startLoading();}
this.createid=dfx.getUniqueId();var self=this;if(this.currentAssetid===this.picker.projectid){dfx.empty(this.wrapper);this._createProjectAssetElements(this.picker.projectFoldersFiltered,function(){if(self.active===true){self.endLoading();}
if(callback){callback.call(self);}});}else{this.getChildrenInfo(this.currentAssetid,function(assets){dfx.empty(self.wrapper);self._createAssetElements(assets,function(){if(self.active===true){self.endLoading();}
if(callback){callback.call(self);}});});}},_createProjectAssetElements:function(assets,callback,index)
{var self=this;dfx.foreach(assets,function(idx){var url='';var size='medium';switch(assets[idx].name){case'Designs':url=AssetManager.getAssetTypeIconUrl('design',size);break;case'Documents':url=AssetManager.getAssetTypeIconUrl('file',size);break;case'Images':url=AssetManager.getAssetTypeIconUrl('image',size);break;case'Movies':url=AssetManager.getAssetTypeIconUrl('movie',size);break;case'Roles':url=AssetManager.getAssetTypeIconUrl('role',size);break;case'Users':url=AssetManager.getAssetTypeIconUrl('user',size);break;case'Workflows':url=AssetManager.getAssetTypeIconUrl('workflowSchema',size);break;default:url=AssetManager.getAssetTypeIconUrl('site',size);break;}
assets[idx].iconMediumUrl=url;return true;});self._createAssetElements(assets,callback,index);},_createAssetElements:function(assets,callback,index,createid)
{index=index||0;if(index===0){createid=this.createid;dfx.empty(this.wrapper);}
if(index>=assets.length){callback.call(this);return;}
var self=this;this._createAssetElement(assets[index],function(el){if(self.createid!==createid){return;}
self.wrapper.appendChild(el);self._createAssetElements(assets,callback,++index,createid);});},_createAssetElement:function(asset,callback)
{if(asset.iconMediumUrl){var url=asset.iconMediumUrl;}else{var url=Widget.BASE_URL+'/?a='+asset.id;}
var width=asset.width;var height=asset.height;var main=document.createElement('div');var c=this.getClass();dfx.addClass(main,c+'-item');main.setAttribute('title',asset.name+' [#'+asset.id+']');main.setAttribute('assetid',asset.id);if(this.selectedAssets.find(asset.id)!==-1){dfx.addClass(main,'selected');}
var hasKids=(asset.children&&(asset.children.length>0));if(hasKids>0){var childCount=document.createElement('div');dfx.addClass(childCount,this.getClass()+'-item-childCount');dfx.setHtml(childCount,asset.children.length);main.appendChild(childCount);}
var isImg=dfx.isset(width);var self=this;var addDetails=function(imageEl){main.appendChild(imageEl);var name=document.createElement('div');dfx.setHtml(name,dfx.ellipsize(asset.name,15));main.appendChild(name);if(isImg===true){var sizeInf=document.createElement('div');dfx.addClass(sizeInf,c+'-sizeInf');main.appendChild(sizeInf);dfx.setHtml(sizeInf,width+' x '+height);}
if(hasKids!==true){dfx.addEvent(main,'click',function(e){if(self.picker.uniqueSelect===false&&e.ctrlKey===true||e.metaKey===true){var index=self.selectedAssets.find(asset.id);if(index===-1){self.selectedAssets.push(asset.id);}else{self.selectedAssets.splice(index,1);}}else{dfx.removeClass(dfx.getClass('selected',self.wrapper),'selected');self.selectedAssets=[asset.id];}
dfx.toggleClass(main,'selected');self.fireAssetSelected(asset);});}else{dfx.safedblclick(main,function(e){if(self.picker.uniqueSelect===false&&e.ctrlKey===true||e.metaKey===true){var index=self.selectedAssets.find(asset.id);if(index===-1){self.selectedAssets.push(asset.id);}else{self.selectedAssets.splice(index,1);}}else{dfx.removeClass(dfx.getClass('selected',self.wrapper),'selected');self.selectedAssets=[asset.id];}
dfx.toggleClass(main,'selected');self.fireAssetSelected(asset);},function(){dfx.removeClass(dfx.getClass('selected',self.wrapper),'selected');if(hasKids===true){self.fireAssetDoubleClicked(asset);self.setRoot(asset.id,true);if(self.lineage.inArray(asset.id)===true){var lLn=self.lineage.length;while(lLn>0){if(self.lineage[(self.lineage.length-1)]===asset.id){break;}
self.lineage.pop();}}else{self.lineage.push(asset.id);}
self.selectedAssets=[asset.id];self.fireAssetSelected(asset);self.fireLineageUpdatedActions();}});}
callback.call(self,main);};var size=this.thumbSizes[this.currentThumbSize];if(asset.iconMediumUrl){dfx.getImage(url,function(imgEl){if(imgEl!==false){dfx.setStyle(imgEl,'border','none');imgEl=dfx.resizeImage(imgEl,size);addDetails(imgEl);}});}else if(isImg===false){url+='&astPicker='+asset.id;dfx.getImage(url,function(imgEl){if(imgEl!==false){dfx.setStyle(imgEl,'border','none');imgEl=dfx.resizeImage(imgEl,size);addDetails(imgEl);}});}else{url+='&tb=1';dfx.getImage(url,function(imgEl){if(imgEl!==false){imgEl=dfx.resizeImage(imgEl,size);addDetails(imgEl);}});}
return main;},setRoot:function(assetid,setCurrent,callback)
{if(this.lineage.length===0){this.lineage.push(assetid);}
this.rootAssetid=assetid;if(setCurrent===true){this.setCurrentAsset(assetid,callback);}else{this.update(true,callback);}},getButtons:function()
{var small=document.createElement('div');small.title='Small Thumbs View';dfx.addClass(small,this.getClass()+'-listButtonSmall');var large=document.createElement('div');large.title='Large Thumbs View';dfx.addClass(large,this.getClass()+'-listButtonLarge');return{small:small,large:large};},show:function(size)
{this.changeThumbSize(size);},changeThumbSize:function(size)
{this.currentThumbSize=size;var wrapper=this.wrapper;var thumbSizes=this.thumbSizes;dfx.foreach(thumbSizes,function(i){dfx.removeClass(wrapper,'imgSize-'+i);});dfx.addClass(wrapper,'imgSize-'+size);var imgElems=dfx.getTag('img',this.domElem);var imgLen=imgElems.length;for(var i=0;i<imgLen;i++){var s=dfx.resizeImage(imgElems[i],this.thumbSizes[size],true);imgElems[i].setAttribute('width',s.width);imgElems[i].setAttribute('height',s.height);}},setCurrentAsset:function(assetid,callback)
{this.currentAssetid=assetid;var ln=this.lineage.length;var idx=null;for(var i=0;i<ln;i++){if(this.lineage[i]===this.currentAssetid){idx=i;break;}}
if(idx===null){this.lineage.push(assetid);}else{for(var i=(ln-1);i>idx;i--){this.lineage.pop();}}
var self=this;var lin=this.lineage.concat([]);this.update(function(){self.lineage=lin;});if(callback){callback.call(self);}},setSelectedAssets:function(assets)
{if(!assets){return;}
this.selectedAssets=[];if((assets instanceof Array)===true){var aln=assets.length;for(var i=0;i<aln;i++){this.selectedAssets.push(assets[i]);}}else if(typeof assets==='number'){this.selectedAssets=[assets];}
this._selectAssets(this.selectedAssets);},_selectAssets:function(assetids)
{var items=dfx.getClass(this.getClass()+'-item',this.wrapper);var len=items.length;var id=0;for(var i=0;i<len;i++){id=items[i].getAttribute('assetid');if(assetids.find(id)!==-1){dfx.addClass(items[i],'selected');}else{dfx.removeClass(items[i],'selected');}}},setLineage:function(lineage)
{this.lineage=lineage;this.setCurrentAsset(this.lineage[(this.lineage.length-1)]);}};dfx.inherits('AssetPickerThumbView','AssetPickerListView');function FileAttributeEditorWidgetType(id)
{this.id=id;this.editContentsWidget=WidgetStore.get('CMSEditor');this.editContentsWidget.setAttributeTypeEditor('file',this);this.modified=false;this.addCloseEditorAction();}
FileAttributeEditorWidgetType.prototype={createEditor:function()
{var id=this.id+'_fileUpload';var fileUpload=dfx.getId(id);if(fileUpload){dom.remove(fileUpload);fileUpload=null;}
if(!fileUpload){var fileUpload=document.createElement('input');fileUpload.setAttribute('id',id);fileUpload.setAttribute('type','file');fileUpload.setAttribute('name',id);this.applyStyles(fileUpload);dfx.setStyle(fileUpload,'display','none');document.body.appendChild(fileUpload);fileUploadJS=new FileUploadWidget(id);}
return fileUpload;},addMouseClickAction:function(ph,target,attr)
{var self=this;var clickAction=function(e){self.editContentsWidget.showOptionsMenu();self.modified=true;self.show(ph,target,attr);if(self.activeAttribute){self.toggleAttrModified(self.activeAttribute,true);}
event.preventDefault(e);};event.addEvent(ph,'click',clickAction);},revertAllChanges:function()
{this.modified=false;if(this.activeAttribute){this.toggleAttrModified(this.activeAttribute,false);}},isModified:function()
{return this.modified;},setText:function(text){}};dfx.inherits('FileAttributeEditor','TextAttributeEditor');function WYSIWYGEditorWidgetType(id)
{TextAttributeEditorWidgetType.call(this,id);this.attrType='long_text';}
WYSIWYGEditorWidgetType.prototype={addViperPlugins:function(callback)
{var plugins=['ViperToolbarPlugin','ViperSubToolbarPlugin','ViperCopyPastePlugin','ViperCoreStylesPlugin','ViperFormatPlugin','ViperImagePlugin','ViperImageGalleryPlugin','ViperMoviePlugin','ViperKeyboardEditorPlugin','ViperLinkPlugin','ViperListPlugin','ViperRedoPlugin','ViperTableEditorPlugin','ViperKeywordPlugin','ViperContentSharingPlugin','ViperTrackChangesPlugin','ViperSourceViewPlugin'];ViperPluginManager.addPluginSet('all',plugins,true,callback);},setViperPlugins:function()
{ViperPluginManager.usePluginSet('all');this.viper.removeCallback('viperDisabled','WYSIWYGEditorWidgetType');this.viper.registerCallback('viperDisabled','WYSIWYGEditorWidgetType',function(){if(ViperPluginManager.activePluginSet==='all'){ViperPluginManager.usePluginSet('none');}});}};dfx.inherits('WYSIWYGEditor','TextAttributeEditor');function AbstractEditingScreenModeWidgetType(id,screens,assetid,editableAssets,initialScreen)
{AbstractEditingModeWidgetType.call(this,id);this.screens=screens;this.tabPaneWidget=WidgetStore.get(this.id+'-tab_pane');this.activeScreen='';this.currentScreenIndex=0;this.screenid='';this.noPermission=false;this.lockToken=null;this.assetid=null;if(dfx.isset(assetid)===true){this.assetid=assetid;}
var systemName='';if(this.mode==='AdminScreenMode'||this.mode==='EditScreenMode'||this.mode==='SystemConfigScreenMode'){systemName=this.mode+'Widget';}
this.splashScreenInfo={baseSystem:'Editing',id:'editingSplash',system:this.id.replace(/ScreenModeWidgetType/,'Splash'),title:'Splash Screen',obj:this};this.mode=this.id.substr(0,(this.id.length-10));this.tabPaneWidget.setRequestParamData('mode',this.mode);this.tabPaneWidget.setRequestParamData('action','paintScreen');this.showSplash=false;switch(this.mode){case'AdminScreenMode':case'EditScreenMode':case'SystemConfigScreenMode':if(dfx.isset(initialScreen)===false||initialScreen===''){this.showSplash=true;}
break;default:break;}
this.initialScreen=initialScreen;var cssUrl=Widget.WEB_URL+'/Skins/'+Widget.ACTIVE_SKIN+'/';cssUrl+='AbstractSettingsScreenWidget/AbstractSettingsScreenWidgetType.css';dfx.includeCss(cssUrl);var screenPerms=[];var scrnLen=this.screens.length;for(var i=0;i<scrnLen;i++){screenPerms.push('asset.edit.'+this.screens[i].id);}
var self=this;this.permissions={};var widgets=['MenuTabPane','AbstractSplashScreen','AdminSplashScreen','EditSplashScreen','SystemConfigSplashScreen'];this.includeWidgets(widgets,function(){AssetManager.getPermissions(self.assetid,screenPerms,null,function(perms){if(Widget.IS_REMOTE_ASSET===true){perms['asset.edit.design']=false;perms['asset.edit.lookup']=false;perms['asset.edit.metadata']=false;perms['asset.edit.permission']=false;perms['asset.edit.publishing']=false;perms['asset.edit.usage']=false;perms['asset.edit.workflow']=false;}
self.initializePermScreens(perms);});});WidgetStore.addDataChangeListener('AbsEditingModeScr','activeMode',function(){WidgetStore.setData('activeScreen',null);});if(dfx.isset(WidgetStore.get('EditingAutoSave'))===true){WidgetStore.get('EditingAutoSave').registerWidget(this);}}
AbstractEditingScreenModeWidgetType.prototype={_ready:function(){},initializePermScreens:function(perms)
{var self=this;if(self.mode==='EditScreenMode'){self.setNoPermissionMask(perms);}
self.permissions[self.assetid]=perms;if(this.showSplash===true){WidgetStore.setData('activeScreen',self.splashScreenInfo);}
var scrnLen=self.screens.length;for(var i=0;i<scrnLen;i++){self.tabPaneWidget.addOnInitHandler(i,function(data,callback){var widgetid=data.widgetid.replace('EditScreen','');self.screenid=widgetid.toLowerCase();if(self.mode==='EditScreenMode'){var pid='asset.edit.'+self.screenid;if(self.permissions[self.assetid][pid]===true){self.initializeScreen(data,callback);}}else{self.initializeScreen(data,callback);}});}
self.tabPaneWidget.addOnChangeHandler(function(index,prevIndex){self.swapScreens(index,prevIndex);});self.tabPaneWidget.addOnSelectHandler(function(index,prevIndex){if(prevIndex!==-1){var screenid=self.screens[prevIndex]['id'];var prevTabWdgId=self.id+'-tab_widget-'+dfx.ucFirst(screenid);var prevWidget=WidgetStore.get(prevTabWdgId);if(prevWidget){if(prevWidget.canSwitchOffScreen&&prevWidget.canSwitchOffScreen()===false){return false;}}}
return true;});switch(self.mode){case'AdminScreenMode':case'EditScreenMode':case'SystemConfigScreenMode':if(this.showSplash===true){self.displaySplashScreen();}else{self.displayScreen(self.initialScreen);}
break;default:self.tabPaneWidget.switchToScreen(0);break;}
self._ready();},initializeScreen:function(data,callback)
{var widgetid=data.widgetid;var screenWidgetName=widgetid;var screenid=widgetid.replace((this.modeType+'Screen'),'').toLowerCase();var title=dfx.ucWords(screenid);var system=widgetid;var assetid=WidgetStore.getData('editingAssetid');if(dfx.isset(assetid)===false){assetid=this.assetid;}
var self=this;var resourceid='';var _init=function(){self.lockInfo={resource:resourceid,token:null};Locking.acquire(resourceid,function(lock){var readOnly=false;if(lock===true){var token=Locking.getToken(resourceid);self.lockInfo.token=token;}else{var errors=Locking.getError(lock);readOnly=true;}
self.readOnly=readOnly;var widget=self.createWidget(widgetid,screenWidgetName,screenid,widgetid,title,self,assetid,readOnly);widget.lockInfo=errors;widget.init(data);var tabWdgId=self.id+'-tab_widget-'+dfx.ucFirst(screenid);WidgetStore.add(tabWdgId,widget);self._switchOnScreen(widget,screenid);if(dfx.isFn(callback)===true){callback();}},false);};if(this.mode==='AdminScreenMode'||this.mode==='SystemConfigScreenMode'){AssetManager.getProject(function(projectInfo){resourceid=self.mode+':'+screenid+':'+projectInfo.id;_init();});}else{resourceid=this.mode+':'+screenid+':'+assetid;_init();}},getLockResourceid:function(callback)
{var self=this;var screenid=WidgetStore.getData('activeScreen');if(this.mode==='AdminScreenMode'||this.mode==='SystemConfigScreenMode'){AssetManager.getProject(function(projectInfo){var resourceid=self.mode+':'+screenid.id+':'+projectInfo.id;callback.call(self,resourceid);});}else{var resourceid=this.mode+':'+screenid.id+':'+this.assetid;callback.call(this,resourceid);}},swapScreens:function(index,prevIndex)
{this.disableSaveButton();if(prevIndex!==-1){var screenid=this.screens[prevIndex]['id'];var prevTabWdgId=this.id+'-tab_widget-'+dfx.ucFirst(screenid);var prevWidget=WidgetStore.get(prevTabWdgId);if(dfx.isset(prevWidget)===true){this._switchOffScreen(prevWidget);}
if(index!==prevIndex){dfx.empty(dfx.getId(this.id+'-tab_pane-'+prevIndex));}}
var switchOn=true;var screen=this.screens[index];screenid=this.screens[index]['id'];selectedScrnWdgId=this.id+'-tab_widget-'+dfx.ucFirst(screenid);screen.screenWdgtid=selectedScrnWdgId;var self=this;screen.obj=self;WidgetStore.setData('activeScreen',screen);this.currentScreenIndex=index;if(this.mode==='EditScreenMode'){if(this.permissions[this.assetid]['asset.edit.'+this.screenid]===false){this.tabPaneWidget.setRequestParamData('mode',this.mode);this.tabPaneWidget.setRequestParamData('action','paintScreen');if(this.mode==='AdminScreenMode'||this.mode==='EditScreenMode'){var self=this;this.createScreenWarningMessage({id:index,leftTitle:'No Access',mainMessage:'You do not have access to edit the screen.',colour:'red',buttonTitle:null},function(elem){self.tabPaneWidget.updateScreen(index,elem);});switchOn=false;}}}
if(switchOn===true){var currTabWdgId=this.id+'-tab_widget-'+dfx.ucFirst(this.screenid);if(WidgetStore.exists(currTabWdgId)===true){var title=this.screens[index]['title'];var currWidget=WidgetStore.get(currTabWdgId);this._switchOnScreen(currWidget,this.screenid);}}},displaySplashScreen:function()
{this.tabPaneWidget.setSelected(0,false);this.tabPaneWidget.setRequestParamData('screen','splashScreen');this.tabPaneWidget.setRequestParamData('assetid',this.assetid);this.tabPaneWidget.updateScreen(0);this.screenid='editingSplash';},displayScreen:function(screen)
{var num=this.screens.length;for(var i=0;i<num;i++){if(this.screens[i].system===screen){var info=this.screens[i];this.tabPaneWidget.showTab(i);this.swapScreens(i,-1);break;}}},displayNoAccessScreen:function(index)
{this.tabPaneWidget.setSelected(index,false);this.tabPaneWidget.setRequestParamData('screen','noAccessScreen');this.tabPaneWidget.updateScreen(index);this.tabPaneWidget.enable(index);},updateScreen:function(callback,forceReload)
{var idx=0;var scrnLen=this.screens.length;for(var i=0;i<scrnLen;i++){if(this.screens[i].system===this.processingScreen){idx=i;break;}}
this.tabPaneWidget.switchToScreen(idx,callback,forceReload);},refreshScreen:function(screenid,callback)
{screenid=screenid||this.screenid;var screenIdx=this._getScreenIndex(screenid);if(screenIdx===null){screenIdx=0;}
this.tabPaneWidget.switchToScreen(screenIdx,callback,true);},_getScreenIndex:function(screenid)
{var num=this.screens.length;for(var i=0;i<num;i++){if(this.screens[i].id===screenid){return i;}}
return null;},processScreen:function(params,callback,isSaveProcess,timeout)
{params.action='processScreen';params.mode=this.id.replace(/WidgetType/,'');if(this.lockInfo&&this.lockInfo.resource){this.lockInfo.token=Locking.getToken(this.lockInfo.resource);}
var nameLockToken=Locking.getToken('attr-name:'+params.assetid);if(nameLockToken){var id=this.id+'-input-assetName';var input=dfx.getId(id);if(input){params._nameLockToken=nameLockToken;params._assetName=input.value;}}
params.lockInfo=dfx.jsonEncode(this.lockInfo);this.processingScreen=params.screen;var self=this;dfx.post(window.location.href,params,function(data){if(isSaveProcess===true){self.processSaveResponse(data,params,callback);return;}
callback.call(self,data);},function(xhr,status){var errorMsg=null;if(status==='timeout'){errorMsg='Connection Failed';}
self._showSaveError(params,callback,errorMsg);},timeout);},getScreenData:function(params,callback)
{params.action='getScreenData';params.mode=this.id.replace(/WidgetType/,'');this.processingScreen=params.screen;var self=this;dfx.post(window.location.href,params,function(data){callback.call(self,data);});},switchedOff:function()
{var widget=null;var widgetId=null;var scrnLen=this.screens.length;for(var i=0;i<scrnLen;i++){widgetId=this.id+'-tab_widget-'+dfx.ucFirst(this.screens[i]['id']);widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){this._switchOffScreen(widget);}}},_switchOffScreen:function(widget)
{widget.switchOffScreen();this.activeScreen=null;},_switchOnScreen:function(widget,screenid)
{widget.switchOnScreen();this.activeScreen=screenid;},getActiveScreenid:function()
{return this.activeScreen;},disable:function()
{Widget.prototype.disable.call(this);this.displayDisabledDiv(true);},enable:function()
{Widget.prototype.enable.call(this);this.removeDisabledDiv();},getAutoSaveContents:function()
{return{tabIndex:this.tabPaneWidget.getCurrentTabIndex(),assetid:WidgetStore.getData('editingAssetid')};},loadAutoSaveContents:function(content,callback)
{var infoBoxElem=dfx.getId('content_'+content.assetid);if(infoBoxElem){dfx.trigger(infoBoxElem,'click');var self=this;WidgetStore.addDataChangeListener('AbsEditingScrAutoLoad','editingAssetid',function(){WidgetStore.removeDataChangeListener('AbsEditingScrAutoLoad','editingAssetid');self._loadAutoSaveContents(content.tabIndex);});}else if(content.tabIndex){this._loadAutoSaveContents(content.tabIndex);}},_loadAutoSaveContents:function(tabIndex)
{var self=this;tabIndex=parseInt(tabIndex);self.tabPaneWidget.switchToScreen(tabIndex,function(){self.tabPaneWidget.selectTab(tabIndex);});},getTabid:function(screenid)
{return this.id+'-tab_pane-tab-'+screenid;},hasPermission:function(screenid)
{var hasPerm=false;if(this.permissions[this.assetid]['asset.edit.'+screenid]===true){hasPerm=true;}
return hasPerm;}};dfx.inherits('AbstractEditingScreenMode','AbstractEditingMode');function EditEditingModeWidgetType(id,showLayer,paintingWidget)
{if(paintingWidget&&paintingWidget==='MySourceMatrixIFrameWidgetType'){return;}
AbstractEditingModeWidgetType.call(this,id);this.widgetType='EditEditingMode';this.url=Widget.CURRENT_URL+'/'+Widget.CURRENT_SUFFIX;this.inEditMode=false;this.attributes={};this.editableAssets=null;this.inAssetView=false;this.placeHoldersCont=null;this.setCurrentAsset(null);this.lockingHelper=null;this.setBackgroundColor();this.attrPlaceHolders=new Util.ObjectHash();this.assetPlaceHolders=new Util.ObjectHash();var self=this;var idleSec=150;WidgetStore.add("contentSharing",new EditingContentSharingWidgetType('contentSharing'));EditingEditorManager.clearCallbacks();this.includeWidgets(['WYSIWYGEditor','TextAttributeEditor'],function(){var text=self.createWidget('textAttributeEditor','TextAttributeEditor');var longText=self.createWidget('longTextAttributeEditor','WYSIWYGEditor');EditingEditorManager.setAttributeEditor('text',text,function(){EditingEditorManager.setAttributeEditor('long_text',longText,function(){self.editables=self.findEditables();self.ready();self.updatePlaceHolderPositions();});});});var autoSaveWidget=WidgetStore.get('EditingAutoSave');if(autoSaveWidget){autoSaveWidget.registerWidget(this);}
if(!showLayer){this.setSaveButton(function(){self.displayDisabledDiv(true);self.saveModifiedAttributeValues();},function(){var modeSwitcher=WidgetStore.get('EditingModeSwitcher');modeSwitcher.switchMode(dfx.getId('EditingModeSwitcher-EditEditingMode'),null,null,null,true);});}else if(showLayer==='assetView'){this.inAssetView=true;this.showAssetLayer();}
window.onbeforeunload=function(e){if(EditingEditorManager.hasModifiedAttributes()===true){return"You have unsaved changes!!!";}else{Locking.release();}};this.includeWidget(this.widgetType+'Locking',function(){self.lockingHelper=self.createWidget(null,self.widgetType+'Locking');});var links=dfx.getId('EditingContents').getElementsByTagName('a');dfx.addEvent(links,'click',function(e){var tar=dfx.getMouseEventTarget(e);if(tar.href&&tar.href.indexOf('javascript:')===0){setTimeout(function(){self.updatePlaceHolderPositions();},150);return;}
return false;});this.addLayerButtons();clearTimeout(EditEditingModeWidgetType.locatorTimer);var updateCaretLocator=function(){if(self.inAssetView===true){return;}
self.hideCaretLocator();if(EditEditingModeWidgetType.locatorTimer){clearTimeout(EditEditingModeWidgetType.locatorTimer);}
EditEditingModeWidgetType.locatorTimer=setTimeout(function(){EditEditingModeWidgetType.locatorTimer=null;self.showCaretLocator();},(idleSec*1000));};EditingEditorManager.registerCallback('editorDisabled',function(data){self.updatePlaceHolderPositions();self.showPlaceHolders();updateCaretLocator();});EditingEditorManager.registerCallback('editorEnabled',function(){updateCaretLocator();});var updatePlaceHolders=true;EditingEditorManager.registerCallback('contentChanged',function(data,changeInfo){self.setModified(true);self.toggleAttrModified(data.attribute,data.attribute.isModified());if(updatePlaceHolders===true){updatePlaceHolders=false;dfx.addEvent(document,'mousemove.EditEditingMode',function(){updatePlaceHolders=true;self.updatePlaceHolderPositions();dfx.removeEvent(document,'mousemove.EditEditingMode');});}
updateCaretLocator();});EditingEditorManager.registerCallback('caretPositioned',function(){updateCaretLocator();});}
EditEditingModeWidgetType.locatorTimer=null;EditEditingModeWidgetType.prototype={hideCaretLocator:function()
{var locatorid=this.id+'-caretLocator';var caretLoc=dfx.getId(locatorid);if(caretLoc){dfx.remove(caretLoc);}},showCaretLocator:function()
{var locatorid=this.id+'-caretLocator';var caretLoc=dfx.getId(locatorid);if(!caretLoc){var caretLoc=document.createElement('div');caretLoc.id=locatorid;dfx.addClass(caretLoc,'EditEditingModeWidgetType-caretLocator');document.body.appendChild(caretLoc);}
var coords=EditingEditorManager.getCaretCoords();if(!coords||coords.x===0||coords.y===0){return;}
dfx.setStyle(caretLoc,'left',(coords.x-24)+'px');dfx.setStyle(caretLoc,'top',(coords.y-61)+'px');dfx.setStyle(caretLoc,'display','block');if(/MSIE/.test(navigator.userAgent)!==true){var bounce=function(){if(!caretLoc.parentNode){return;}
dfx.bounce(caretLoc,4,20,function(){setTimeout(function(){bounce();},50);});};bounce();}},addLayerButtons:function()
{var self=this;if(dfx.isset(dfx.getId(this.id+'-layerBtnWrapper'))===true){var attrViewBtn=dfx.getId(this.id+'-attributeViewBtn');var astViewBtn=dfx.getId(this.id+'-assetViewBtn');if(this.inAssetView===true){dfx.swapClass(astViewBtn,'unselected','selected');dfx.swapClass(attrViewBtn,'selected','unselected');}else{dfx.swapClass(attrViewBtn,'unselected','selected');dfx.swapClass(astViewBtn,'selected','unselected');}
return;}
var layerBtnWrapper=document.createElement('div');var assetViewBtn=document.createElement('div');var attributeViewBtn=document.createElement('div');var coords=dfx.getElementCoords(dfx.getId('expander'));dfx.setStyle(layerBtnWrapper,'position','fixed');dfx.setStyle(layerBtnWrapper,'left',coords.x+26);layerBtnWrapper.setAttribute('id',this.id+'-layerBtnWrapper');assetViewBtn.setAttribute('id',this.id+'-assetViewBtn');dfx.attr(assetViewBtn,'title','Click to configure complex page types');attributeViewBtn.setAttribute('id',this.id+'-attributeViewBtn');dfx.attr(attributeViewBtn,'title','Click to edit page names and content');if(this.inAssetView===true){dfx.swapClass(assetViewBtn,'EditEditingModeLayerButton unselected','EditEditingModeLayerButton selected');dfx.swapClass(attributeViewBtn,'EditEditingModeLayerButton selected','EditEditingModeLayerButton unselected');}else{dfx.swapClass(assetViewBtn,'EditEditingModeLayerButton selected','EditEditingModeLayerButton unselected');dfx.swapClass(attributeViewBtn,'EditEditingModeLayerButton unselected','EditEditingModeLayerButton selected');}
layerBtnWrapper.appendChild(attributeViewBtn);layerBtnWrapper.appendChild(assetViewBtn);var toolbar=WidgetStore.get('Toolbar');toolbar.addScreenTool(layerBtnWrapper);dfx.addEvent(attributeViewBtn,'click',function(evt){var attrViewBtn=dfx.getId(self.id+'-attributeViewBtn');if(dfx.hasClass(attrViewBtn,'unselected')===true){var astViewBtn=dfx.getId(self.id+'-assetViewBtn');var modeSwitcher=WidgetStore.get('EditingModeSwitcher');modeSwitcher.switchMode(dfx.getId('EditingModeSwitcher-EditEditingMode'));dfx.removeClass(attrViewBtn,'hover');dfx.swapClass(attrViewBtn,'unselected','selected');dfx.swapClass(astViewBtn,'selected','unselected');}});dfx.addEvent(assetViewBtn,'click',function(evt){var astViewBtn=dfx.getId(self.id+'-assetViewBtn');self.switchToAssetView();var attrViewBtn=dfx.getId(self.id+'-attributeViewBtn');dfx.removeClass(astViewBtn,'hover');dfx.swapClass(astViewBtn,'unselected','selected');dfx.swapClass(attrViewBtn,'selected','unselected');});dfx.hover(assetViewBtn,function(){if(dfx.hasClass(assetViewBtn,'unselected')===true){dfx.addClass(assetViewBtn,'hover');}},function(){if(dfx.hasClass(assetViewBtn,'hover')===true){dfx.removeClass(assetViewBtn,'hover');}});dfx.hover(attributeViewBtn,function(){if(dfx.hasClass(attributeViewBtn,'unselected')===true){dfx.addClass(attributeViewBtn,'hover');}},function(){if(dfx.hasClass(attributeViewBtn,'hover')===true){dfx.removeClass(attributeViewBtn,'hover');}});},modeSwitchedOn:function(data)
{if(dfx.isset(data)===true&&data.hasAutosave===true){var contents=null;var autoSaveWidget=WidgetStore.get('EditingAutoSave');if(dfx.isset(autoSaveWidget)===true){contents=autoSaveWidget.getSavedContents(this.id);}
if(dfx.isset(contents.inAssetView)===true){if(contents.inAssetView===true){if(dfx.isset(contents.showAssetEditor)===true){var self=this;this.showAssetEditor(contents.showAssetEditor,function(){autoSaveWidget.continueLoadContents(self.id);});}}}}},switchToAssetView:function(extraData)
{var self=this;var modeSwitcher=WidgetStore.get('EditingModeSwitcher');var mode=dfx.getId('EditingModeSwitcher-EditEditingMode');modeSwitcher.switchMode(mode,{show:'assetView'},function(data){if(dfx.isset(extraData)===true&&extraData.hasAutosave===true){WidgetStore.get(self.id).modeSwitchedOn(extraData);}},extraData);},showAssetLayer:function()
{this.editableAssets=this.findEditableAssets();},switchedOff:function()
{var locatorid=this.id+'-caretLocator';var caretLoc=dfx.getId(locatorid);if(caretLoc){dfx.remove(caretLoc);}
this.removePlaceHolders();EditingEditorManager.removeEditors();dfx.remove(dfx.getId('ViperToolbar'));var settingsPane=WidgetStore.get(this.id+'-assetSettings');if(dfx.isset(settingsPane)===true){settingsPane.remove();}
dfx.remove(dfx.getId(this.id+'-assetSettings'));this.removeToolbarButton('save_button');this.removeEditingAssetStyle();var autoSaveWidget=WidgetStore.get('EditingAutoSave');if(autoSaveWidget){autoSaveWidget.unregisterWidget(this);}},modeSwitchedOff:function()
{if(this.lockingHelper&&this.lockingHelper.popup!==null){this.lockingHelper.close();}},findEditables:function()
{var editableCont=dfx.getClass('editable_attribute');var len=editableCont.length;var placeHolder=document.createElement('div');var phContent='<div class="left"><div class="top">';phContent+='<div class="right"><div class="bottom"></div></div></div><div>';phContent+='<div class="state" title="You do not have access to edit this content"></div>';dfx.setHtml(placeHolder,phContent);var editables=[];for(var i=0;i<len;i++){var ed=editableCont[i];dfx.setStyle(ed,'position','relative');if(ed.parentNode){var styles=getStyles(ed.parentNode);dfx.setStyle(ed,'color',styles.color);}
for(var child=ed.firstChild;child;child=child.nextSibling){if(dfx.isBlockElement(child)===true){dfx.setStyle(ed,'display','block');}}
editables.push(ed);var attrType=ed.getAttribute('attr_type');var editor=EditingEditorManager.getEditor(attrType);if(editor){var attrid=ed.getAttribute('attrid');var assetid=ed.getAttribute('assetid');var attr=editor.addAttribute(attrid,assetid,ed);this.attributes[assetid+':'+attrid]=attrType;this.createAttributePlaceHolder(ed,attr,placeHolder.cloneNode(true));}}
return editables;},findEditableAssets:function()
{var editableAssets=dfx.getClass('editable_asset');var len=editableAssets.length;var editables=[];for(var i=0;i<len;i++){var ed=editableAssets[i];editables.push(ed);this.createAssetPlaceHolder(ed);}
return editables;},saveModifiedAttributeValues:function()
{this.saveAttributeValues();},escapeAttributeValues:function(val)
{if(val){val=val.replace(/\+/g,'%2B');}
return val;},saveAttributeValues:function()
{var self=this;var attributes=EditingEditorManager.getModifiedValues();var param={widget:'EditEditingModeWidget',action:'updateAttributeValues',attributes:dfx.jsonEncode(attributes)};dfx.post(this.url,param,function(data){if(data){data=dfx.jsonDecode(data);var errorMsgs=[];dfx.foreach(data.success,function(i){var s=data.success[i];var attribute=self.getAttribute(s.assetid,s.attrid);if(attribute){self.toggleAttrModified(attribute,false);}});dfx.foreach(data.errors,function(i){errorMsgs.push(data.errors[i].msg);});self.showError(errorMsgs,function(){});if(errorMsgs.length===0){self._showSaveSuccess();var modeSwitcher=WidgetStore.get('EditingModeSwitcher');setTimeout(function(){modeSwitcher.switchMode(dfx.getId('EditingModeSwitcher-EditEditingMode'),null,null,null,true);},1000);}else{self.setModified(true);}}});},createAttributePlaceHolder:function(el,attribute,ph)
{if(dfx.hasClass(el,'disabled')===true){dfx.addClass(dfx.getClass('state',ph),'disabled');}else if(dfx.hasClass(el,'locked')===true){dfx.addClass(dfx.getClass('state',ph),'locked');}
var phInner=document.createElement('div');dfx.addClass(ph,'EditEditingModeWidgetType-ph');dfx.addClass(phInner,'EditEditingModeWidgetType-ph-inner');ph.appendChild(phInner);this.setPlaceHolderPosition(ph,el);this.attrPlaceHolders.put(ph,el);if(dfx.hasClass(el,'disabled')===false){this.addPlaceHolderMouseAction(ph,el,attribute);}
if(this.placeHoldersCont===null){this.placeHoldersCont=document.createElement('div');document.body.appendChild(this.placeHoldersCont);}
this.placeHoldersCont.appendChild(ph);},createAssetPlaceHolder:function(el)
{var ph=document.createElement('div');var phContent='<div class="left"><div class="top">';phContent+='<div class="right"><div class="bottom"></div></div></div><div>';phContent+='<div class="state" title="You do not have access to edit this content"></div>';dfx.setHtml(ph,phContent);if(dfx.hasClass(el,'disabled')===true){dfx.addClass(dfx.getClass('state',ph),'disabled');}else if(dfx.hasClass(el,'locked')===true){dfx.addClass(dfx.getClass('state',ph),'locked');}
var phInner=document.createElement('div');dfx.addClass(ph,'EditEditingModeWidgetType-ph');dfx.addClass(phInner,'EditEditingModeWidgetType-ph-inner');ph.appendChild(phInner);this.setPlaceHolderPosition(ph,el);if(dfx.hasClass(el,'disabled')===false){this.addPlaceHolderMouseOverAction(ph,el);this.addPlaceHolderMouseOutAction(ph,el);}
this.assetPlaceHolders.put(ph,el);if(this.placeHoldersCont===null){this.placeHoldersCont=document.createElement('div');document.body.appendChild(this.placeHoldersCont);}
this.placeHoldersCont.appendChild(ph);var self=this;var assetid=el.getAttribute('assetid');var resource='asset:'+assetid;if(dfx.hasClass(el,'disabled')===false){dfx.addEvent(ph,'click',function(e){Locking.acquire(resource,function(result){var readOnly=false;if(result!==true){var errInfo=Locking.getError(result);errInfo.element=el;errInfo.modified=true;readOnly=true;self.lockingHelper.showMessage(errInfo);}
self.showAssetEditor(assetid,null,readOnly);});});}},showAssetEditor:function(assetid,callback,readOnly,settingsPaneCallback)
{this.setCurrentAsset(assetid);dfx.remove(dfx.getId(this.id+'-assetEditor'));var self=this;this.includeWidgets(['SettingsPane','DynamicDiv'],function(){var settingsPane=self.createWidget(self.id+'-assetSettings','SettingsPane');settingsPane.create(function(el){if(settingsPaneCallback){settingsPaneCallback.call(self,settingsPane);}
if(readOnly===true){settingsPane.close();}
self.removeAssetPlaceHolders();self._loadAssetEditContent(assetid,callback,readOnly);});});},setCurrentAsset:function(assetid)
{this.currentAsset=assetid;},_loadAssetEditContent:function(assetid,callback,readOnly)
{var settingsPane=WidgetStore.get(this.id+'-assetSettings');var self=this;settingsPane.changeContent({widget:'EditingAssetWidget',__action:'getSettings',assetid:assetid,widgetid:this.id+'-assetEditor'},function(data){if(dfx.isset(data)===false){return;}
data=dfx.jsonDecode(data);setTimeout(function(){if(dfx.isset(self.editableAssets)===false||self.editableAssets.length===0){self.showAssetLayer();}
var widget=WidgetStore.get(data.widgetid);if(dfx.isset(widget)===true){widget.setReadOnly(readOnly);if(dfx.isFn(widget.init)===true){widget.init(data,assetid,self.editableAssets);}
if(dfx.isFn(callback)===true){callback.call(self,widget);}}},1000);});},updatePlaceHolderPositions:function(posOnly)
{var phs=this.attrPlaceHolders.objects;var values=this.attrPlaceHolders.values;var ln=phs.length;for(var i=0;i<ln;i++){this.setPlaceHolderPosition(phs[i],values[i],posOnly);}},setPlaceHolderPosition:function(ph,el,posOnly)
{var loc=dfx.getElementCoords(el);if(!loc.x||!loc.y){loc.x=-9999;loc.y=-9999;}
dfx.setStyle(ph,'left',(loc.x-8)+'px');dfx.setStyle(ph,'top',(loc.y-1)+'px');if(!posOnly){var height=0;if(dfx.isTag(el,'span')===true&&dfx.getStyle(el,'display')==='block'){var heightDiv=document.createElement('div');dfx.setStyle(heightDiv,'clear','both');dfx.setStyle(heightDiv,'border','1px solid');el.appendChild(heightDiv);height=dfx.getElementHeight(el);dfx.remove(heightDiv);heightDiv=null;}else{height=dfx.getElementHeight(el);}
if(!height){var clone=el.cloneNode(true);dfx.setStyle(clone,'overflow','hidden');dfx.setStyle(clone,'position','fixed');dfx.setStyle(clone,'top','-9999px');dfx.setStyle(clone,'left','-9999px');document.body.appendChild(clone);height=dfx.getElementHeight(clone);dfx.remove(clone);}
dfx.setStyle(ph,'height',height+2+'px');dfx.setStyle(ph,'width',dfx.getElementWidth(el)+15+'px');}},addPlaceHolderMouseClickAction:function(ph,target,attr)
{var editor=this.getAttributeEditorFromPlaceHolder(ph);if(editor){var self=this;var resource='attr-'+attr.attrid+':'+attr.assetid;var clickAction=function(e){if(self.lockingHelper.isActive()===true){return;}
Locking.acquire(resource,function(result){if(result!==true){self.setAttributeState(attr,'locked');var errInfo=Locking.getError(result);errInfo.element=target;errInfo.modified=false;var attributes=EditingEditorManager.getModifiedValues();var attrLen=attributes.length;for(var i=0;i<attrLen;i++){if(attributes[i].assetid===attr.assetid&&attributes[i].attrid===attr.attrid){errInfo.modified=true;}}
errInfo.callback=function(btype){if(btype==='revert'){EditingEditorManager.revertAttributeValue(attr);self.toggleAttrModified(attr,false);}else if(btype===true){var el=dfx.getClass('state',ph)[0];dfx.removeClass(el,'locked');}};if(errInfo.modified===true||EditingEditorManager.activeEditorData.placeHolder===ph){self.lockingHelper.showMessage(errInfo);if(EditingEditorManager.isEditorActive()){EditingEditorManager.disableActiveEditor();}}}else{self.setAttributeState(attr,'');}});var data={placeHolder:ph,target:target,attribute:attr,e:e};EditingEditorManager.setActiveEditor(attr.type,data);self.hidePlaceHolders();dfx.preventDefault(e);};dfx.addEvent(ph,'click',clickAction);}},addPlaceHolderMouseOverAction:function(ph,target,attr)
{var self=this;dfx.addEvent(ph,'mouseover',function(e){self.updatePlaceHolderPositions();dfx.addClass(ph,'mouseover');});},addPlaceHolderMouseOutAction:function(ph,target,attr)
{dfx.addEvent(ph,'mouseout',function(e){dfx.removeClass(ph,'mouseover');});},addPlaceHolderMouseAction:function(ph,el,attribute)
{var editor=this.getAttributeEditorFromPlaceHolder(ph);if(editor){if(editor.placeHolderMouseClickAction){editor.placeHolderMouseClickAction.call(this,ph,el,attribute);}else{this.addPlaceHolderMouseClickAction(ph,el,attribute);}
if(editor.placeHolderMouseOverAction){editor.placeHolderMouseOverAction.call(this,ph,el,attribute);}else{this.addPlaceHolderMouseOverAction(ph,el,attribute);}
if(editor.placeHolderMouseOutAction){editor.placeHolderMouseOutAction.call(this,ph,el,attribute);}else{this.addPlaceHolderMouseOutAction(ph,el,attribute);}}},hidePlaceHolders:function()
{var phs=this.attrPlaceHolders.objects;dfx.addClass(phs,'hidden');},showPlaceHolders:function(ph,attr_type)
{var phs=this.attrPlaceHolders.objects;var phsln=phs.length;for(var i=0;i<phsln;i++){if(ph&&ph!==phs[i]){continue;}else if(attr_type&&this.attrPlaceHolders.values[i].getAttribute('attr_type')!==attr_type){continue;}
dfx.removeClass(phs,'hidden');dfx.setStyle(phs[i],'visibility','visible');dfx.setStyle(phs[i],'display','block');}
this.updatePlaceHolderPositions();},removePlaceHolders:function()
{dfx.remove(this.placeHoldersCont);this.placeHoldersCont=null;this.attrPlaceHolders=new Util.ObjectHash();},removeAssetPlaceHolders:function()
{var phs=this.assetPlaceHolders.objects;var pln=phs.length;for(var i=0;i<pln;i++){dfx.remove(this.assetPlaceHolders.objects[i]);}
this.assetPlaceHolders=new Util.ObjectHash();},getAttributeTypeFromPlaceHolder:function(ph)
{var attrType=null;var el=this.attrPlaceHolders.get(ph);if(el){attrType=el.getAttribute('attr_type');}
return attrType;},getAttributeEditorFromPlaceHolder:function(ph)
{var attrType=this.getAttributeTypeFromPlaceHolder(ph);var editor=null;if(attrType){var editor=EditingEditorManager.getEditor(attrType);}
return editor;},getAttributeElement:function(attr)
{var phs=this.attrPlaceHolders.values;var len=phs.length;for(var i=0;i<len;i++){var p=phs[i];if(attr.attrid===p.getAttribute('attrid')&&attr.assetid===p.getAttribute('assetid')){return p;}}
return null;},getPlaceHolderForAttribute:function(attr)
{var phs=this.attrPlaceHolders.values;var len=phs.length;for(var i=0;i<len;i++){var p=phs[i];if(attr.attrid===p.getAttribute('attrid')&&attr.assetid===p.getAttribute('assetid')){return this.attrPlaceHolders.objects[i];}}
return null;},getAttribute:function(assetid,attrid)
{var editor=this.getAttributeEditor(assetid,attrid);if(editor){return editor.getAttribute(attrid,assetid);}
return null;},getAttributeEditor:function(assetid,attrid)
{if(this.attributes[assetid+':'+attrid]){return EditingEditorManager.getEditor(this.attributes[assetid+':'+attrid]);}
return null;},getAutoSaveContents:function()
{var contents={};if(this.inAssetView===true&&this.currentAsset!==null){contents.inAssetView=this.inAssetView;contents.showAssetEditor=this.currentAsset;}else{var attributes=EditingEditorManager.getModifiedAttributes();var values=[];dfx.foreach(attributes,function(i){values.push({assetid:attributes[i].assetid,attrid:attributes[i].attrid,value:dfx.getHtml(attributes[i].nodes[0])});});contents.attributeVals=dfx.jsonEncode(values);}
return contents;},loadAutoSaveContents:function(contents,callback)
{if(dfx.isset(contents.inAssetView)===true){if(contents.inAssetView===true){this.switchToAssetView({hasAutosave:true});return;}}else{var self=this;autoSaveCont=dfx.jsonDecode(contents.attributeVals);dfx.foreach(autoSaveCont,function(i){var attribute=self.getAttribute(autoSaveCont[i].assetid,autoSaveCont[i].attrid);EditingEditorManager.setAttributeValue(attribute,autoSaveCont[i].value);self.toggleAttrModified(attribute,true);});}},toggleAttrModified:function(attr,modified)
{if(attr){var aln=attr.nodes.length;for(var i=0;i<aln;i++){var oln=this.attrPlaceHolders.objects.length;for(var j=0;j<oln;j++){if(attr.nodes[i]===this.attrPlaceHolders.values[j]){if(modified){dfx.addClass(this.attrPlaceHolders.objects[j],'EditEditingModeWidgetType-ph-modified');}else{dfx.removeClass(this.attrPlaceHolders.objects[j],'EditEditingModeWidgetType-ph-modified');}
break;}}}
if(modified===true){this.enableSaveButton();}}},setAttributeState:function(attr,state)
{var states='locked disabled';var nodesLen=attr.nodes.length;for(var i=0;i<nodesLen;i++){var objLen=this.attrPlaceHolders.objects.length;for(var j=0;j<objLen;j++){if(attr.nodes[i]===this.attrPlaceHolders.values[j]){var el=dfx.getClass('state',this.attrPlaceHolders.objects[j])[0];dfx.removeClass(el,states);dfx.addClass(el,state);break;}}}},contentModified:function()
{return EditingEditorManager.hasModifiedAttributes();}};dfx.inherits('EditEditingMode','AbstractEditingMode');var EditingEditorManager=new function()
{this.activeEditor=null;this.editors={};this.callbacks={};this.activeEditorData=null;this.setActiveEditor=function(type,data){if(this.activeEditor){this.editors[type].deactivate();}
this.activeEditor=type;this.editors[type].activate(data);this.activeEditorData=data;if(this.callbacks.editorEnabled){var ln=this.callbacks.editorEnabled.length;for(var i=0;i<ln;i++){this.callbacks.editorEnabled[i].call(this);}}};this.setAttributeEditor=function(attrType,editor,callback){if(!this.editors[attrType]){this.editors[attrType]=editor;editor.load(function(){editor.init();if(dfx.isFn(callback)===true){callback.call(this);}});}else{throw'setAttributeEditor: Editor for '+attrType+' exists!';}};this.getEditor=function(type){return this.editors[type];};this.getCaretCoords=function(){var coords=null;if(this.editors[this.activeEditor]){coords=this.editors[this.activeEditor].getCaretCoords();}
return coords;};this.removeEditors=function(){for(var type in this.editors){this.editors[type].remove();}
this.editors={};};this.isEditorActive=function(){if(this.activeEditor!==null){return true;}
return false;};this.disableActiveEditor=function(){if(this.editors[this.activeEditor]){this.editors[this.activeEditor].deactivate();}
this.activeEditor=null;if(this.callbacks.editorDisabled){var ln=this.callbacks.editorDisabled.length;for(var i=0;i<ln;i++){this.callbacks.editorDisabled[i].call(this);}}};this.registerCallback=function(type,callback){if(dfx.isFn(callback)===false){return;}
if(!this.callbacks[type]){this.callbacks[type]=[];}
this.callbacks[type].push(callback);};this.contentChanged=function(data,info){if(this.callbacks.contentChanged){var ln=this.callbacks.contentChanged.length;for(var i=0;i<ln;i++){this.callbacks.contentChanged[i].call(this,data,info);}}};this.caretPositioned=function(){if(this.callbacks.caretPositioned){var ln=this.callbacks.caretPositioned.length;for(var i=0;i<ln;i++){this.callbacks.caretPositioned[i].call(this);}}};this.hasModifiedAttributes=function(type){if(type){if(this.editors[type]){return this.editors[type].isModified();}}else{for(var type in this.editors){if(this.editors[type].isModified()===true){return true;}}}};this.getModifiedValues=function(){var values=[];for(var type in this.editors){values=values.concat(this.editors[type].getModifiedValues());}
return values;};this.getModifiedAttributes=function(){var attrs=[];for(var type in this.editors){attrs=attrs.concat(this.editors[type].getModifiedAttributes());}
return attrs;};this.revertAttributeValue=function(attr){this.editors[attr.type].revertAttributeValue(attr.attrid,attr.assetid);};this.setAttributeValue=function(attr,value){this.editors[attr.type].setAttributeValue(attr.attrid,attr.assetid,value);};this.clearCallbacks=function(){this.callbacks={};};};function getStyles(el)
{var strValue="";if(document.defaultView&&document.defaultView.getComputedStyle){return document.defaultView.getComputedStyle(el,'');}else if(el.currentStyle){return el.currentStyle;}}
function PreviewEditingModeWidgetType(id)
{AbstractEditingModeWidgetType.call(this,id);this.widgetType='PreviewEditingMode';this.setBackgroundColor();this.addLinkEvents();this.ready();}
PreviewEditingModeWidgetType.prototype={addLinkEvents:function()
{var self=this;var onClick=function(evt){var target=dfx.getMouseEventTarget(evt);var href=null;if(target.nodeName.toLowerCase()!=='a'){var parents=dfx.getParents(target,'a');if(parents.length>0){var a=parents[0];href=a.getAttribute('href');href=href+'/';}}else{href=target.getAttribute('href');href=href+'/';}
if(href!==null){if(href.indexOf('javascript:')===0){return;}
href=href.replace(/\/$/,'');var re=new RegExp(Widget.CURRENT_SUFFIX);var dest=href;target.removeAttribute('href');if(!href.match(re)){var assetid=href.match(/\?a=.*/gi,'');if(assetid!==null){dest=href.replace(assetid[0],'');dest+='/'+Widget.CURRENT_SUFFIX+assetid[0];}else{dest+='/'+Widget.CURRENT_SUFFIX;}}
var loc=Widget.EDIT_URL+'?widget=PreviewEditingModeWidget'+'&action=loadurl&url='+dfx.jsonEncode(dest);window.location.href=loc;return false;}};links=document.body.getElementsByTagName('a');dfx.removeEvent(links,'click');dfx.addEvent(links,'click',onClick);},switchedOff:function()
{this.removeEditingAssetStyle();}};dfx.inherits('PreviewEditingMode','AbstractEditingMode');function ProfileScreenModeWidgetType(id)
{this.modeType='Profile';AbstractEditingModeWidgetType.call(this,id);this.widgetType='ProfileScreenMode';}
ProfileScreenModeWidgetType.prototype={switchedOff:function()
{var icon=WidgetStore.get('ProfileEditingToolbarIcon');if(icon){icon.toggleState('inactive');}
Locking.release(WidgetStore.get('ProfileScreenWidgetType').resourceid);},reset:function(callback)
{WidgetStore.get('ProfileScreenWidgetType').reset(callback);},setReadOnly:function(readOnly)
{WidgetStore.get('ProfileScreenWidgetType').setReadOnly(readOnly);}};dfx.inherits('ProfileScreenMode','AbstractEditingMode');function TrashEditingModeWidgetType(id,assets)
{AbstractEditingModeWidgetType.call(this,id);this.widgetType='TrashEditingMode';var self=this;this.projects=assets.projects;this.parentsLin=assets.parents;this.assets=assets.assets;this.selectedid=null;this.activeProject=0;this.leftDiv=dfx.getId(this.id+'-left');this.middleDiv=dfx.getId(this.id+'-middle');this.rightDiv=dfx.getId(this.id+'-right');this.lockInfo=null;this.readOnly=false;this.resourceid='TrashScreenMode:0';this.blockToggleOff=false;this.parents={};this.buttonStatus=[];this.alternateParents=[];Locking.acquire(this.resourceid,function(lock){if(lock===true){var token=Locking.getToken(self.resourceid);self.lockInfo={resource:self.resourceid,token:token};}else{var errors=Locking.getError(lock);self.readOnly=true;self.lockInfo=errors;}
if(self.readOnly===true){self.includeWidgets(['AbstractSettingsScreen','AbstractEditingScreenMode'],function(){AbstractSettingsScreenWidgetType.prototype.displayScreenReadOnlyWarning.call(self,function(el){dfx.insertBefore(self.leftDiv,el);self.init();self.initSaveButton();},function(){self.disableSaveButton();},self.resourceid);});}else{self.includeWidgets(['AbstractEditingScreenMode'],function(){self.init();if(self.assets!==null){self.initSaveButton();}});}});}
TrashEditingModeWidgetType.prototype={forceEdit:function(callback)
{var self=this;dfx.removeClass(this.middleDiv,'readOnly');self.includeWidgets(['AbstractSettingsScreen'],function(){AbstractSettingsScreenWidgetType.prototype.forceEdit.call(this,function(){if(callback){callback.call(self);}},this.resourceid);});},screenModified:function(modified)
{var self=this;var modified=false;dfx.foreach(this.assets,function(aid){var row=dfx.getId(self.id+'-asset-'+aid);if(dfx.hasClass(row,'deleted')===true){modified=true;return false;}
return true;});this.setModified(modified);},initSaveButton:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveTrash();},function(){self.displayDisabledDiv();self.reset(function(){self.removeDisabledDiv();});});}},init:function(callback)
{var self=this;var trashHeader=document.createElement('div');dfx.addClass(trashHeader,this.widgetType+'-trashHeader');this.leftDiv.appendChild(trashHeader);dfx.setHtml(trashHeader,'Trash');var iconWrap=document.createElement('div');var purgeWrap=document.createElement('div');purgeWrap.id=this.widgetType+'-purgeWrap-0';dfx.addClass(iconWrap,this.widgetType+'-iconWrap');dfx.addClass(purgeWrap,this.widgetType+'-purgeWrap');this.leftDiv.appendChild(iconWrap);dfx.setHtml(iconWrap,'&nbsp;');dfx.setHtml(purgeWrap,'&nbsp;');var infoWrap=document.createElement('div');this.rightDiv.appendChild(infoWrap);if(this.readOnly===true){dfx.addClass(this.middleDiv,'readOnly');}
if(this.assets===null){dfx.addClass(iconWrap,'empty');var noneDiv=document.createElement('div');dfx.addClass(noneDiv,self.widgetType+'-emptyTrash');dfx.setHtml(noneDiv,'The Trash is currently empty.');this.middleDiv.appendChild(noneDiv);if(callback){callback.call(self);}}else{this.middleDiv.appendChild(purgeWrap);var assetInfoBox=document.createElement('div');assetInfoBox.id=this.id+'-assetInfoBox';dfx.hideElement(assetInfoBox);dfx.addClass(assetInfoBox,self.widgetType+'-assetInfoBox');var c='<div class="'+self.widgetType+'-assetInfoBox-label asset-info">Asset Information:</div>';c+='<div id="'+this.id+'-assetInfoBox-name" class="'+self.widgetType+'-assetInfoBox-name">Asset Name</div>';c+='<div id="'+this.id+'-assetInfoBox-typeid" class="'+self.widgetType+'-assetInfoBox-typeid">Page 23</div>';c+='<div id="'+this.id+'-assetInfoBox-date" class="'+self.widgetType+'-assetInfoBox-date">Deleted: 12 Dec 2008</div>';c+='<div id="'+this.id+'-assetInfoBox-by" class="'+self.widgetType+'-assetInfoBox-by">By:</div>';c+='<div class="'+self.widgetType+'-assetInfoBox-ss"><img id="'+this.id+'-assetInfoBox-ss" src="" width="220" height="150" /></div>';c+='<div id="'+this.id+'-assetInfoBox-restoreWrap" class="'+self.widgetType+'-assetInfoBox-restoreWrap">&nbsp;</div>';dfx.setHtml(assetInfoBox,c);this.rightDiv.appendChild(assetInfoBox);dfx.addClass(iconWrap,'full');this.includeWidgets(['Button','ToggleButton'],function(){var restoreBtn=self.createWidget(self.id+'-newRedirect','Button','ButtonWidgetType');restoreBtn.setButtonColour('black');restoreBtn.setMinWidth(80);restoreBtn.setName('Restore');restoreBtn.addClickEvent(function(){self.recoverAsset();});restoreBtn.create(function(rel){var btnWrap=dfx.getClass(self.widgetType+'-assetInfoBox-restoreWrap',assetInfoBox)[0];btnWrap.appendChild(rel);var purgeToggle=self.createWidget(self.id+'-activeToggle','ToggleButton',false,'slider',false,'Yes','No');var purgeLabel=document.createElement('div');dfx.setHtml(purgeLabel,'Purge all assets in the trash?');dfx.addClass(purgeLabel,self.widgetType+'-purgeLabel');purgeWrap.appendChild(purgeLabel);dfx.swapClass(purgeWrap,'purgeToggle-project','purgeToggle-all');purgeToggle.create(function(tel){purgeWrap.appendChild(tel);purgeToggle.addToggleOnEvent(function(){for(var assetid in self.assets){if(self.assets.hasOwnProperty(assetid)===true){var row=dfx.getId(self.id+'-asset-'+assetid);dfx.removeClass(row,'selected');dfx.addClass(row,'deleted');var delBtn=dfx.getClass(self.widgetType+'-assetPurge',row)[0];dfx.addClass(delBtn,'recover');}}
WidgetStore.get(self.id+'-newRedirect').disable();self.screenModified();});purgeToggle.addToggleOffEvent(function(){if(self.blockToggleOff===false){for(var assetid in self.assets){if(self.assets.hasOwnProperty(assetid)===true){var row=dfx.getId(self.id+'-asset-'+assetid);dfx.removeClass(row,'deleted');dfx.removeClass(row,'selected');if(parseInt(assetid)===self.selectedid){dfx.addClass(row,'selected');}
var delBtn=dfx.getClass(self.widgetType+'-assetPurge',row)[0];dfx.removeClass(delBtn,'recover');}}
dfx.addClass(dfx.getId(self.id+'-asset-'+self.selectedid),'selected');WidgetStore.get(self.id+'-newRedirect').enable();self.screenModified();}});var firstAsset=null;for(var assetid in self.assets){if(self.assets.hasOwnProperty(assetid)===true){if(firstAsset===null){firstAsset=assetid;}
self.addRow(assetid);}}
self.selectedid=firstAsset;self.showLineage(firstAsset,dfx.getId(self.id+'-asset-'+firstAsset));self.loadAssetInfo(self.selectedid);dfx.addClass(dfx.getId(self.id+'-asset-'+self.selectedid),'selected');if(callback){callback.call(self);}});});});var tabs=WidgetStore.get(this.id+'-tabs');if(tabs){tabs.addOnSelectHandler(function(index,prevIndex){self.switchProjectTab(index);});}}
this.ready();},addRow:function(aid)
{var self=this;var assetName=self.assets[aid].name;var iconUrl=self.assets[aid].icon;var row=document.createElement('div');row.id=self.id+'-asset-'+aid;dfx.addClass(row,self.widgetType+'-assetRow');var content='<div class="'+self.widgetType+'-assetIcon"><img src="'+iconUrl+'" /></div>';content+='<div class="'+self.widgetType+'-assetName">'+assetName+'</div>';content+='<div class="'+self.widgetType+'-assetPurge">&nbsp;</div>';dfx.setHtml(row,content);self.middleDiv.appendChild(row);var lineage=document.createElement('div');dfx.addClass(lineage,this.widgetType+'-assetLineageWrap');dfx.attr(lineage,'id','assetLineageWrap-'+aid);dfx.insertAfter(row,lineage);dfx.hideElement(lineage);var restoreBtn=WidgetStore.get(self.id+'-newRedirect');var purgeToggle=WidgetStore.get(self.id+'-activeToggle');dfx.addEvent(row,'click',function(e){var target=dfx.getMouseEventTarget(e);var assetid=null;var row=null;var deleted=false;var loadAssetInfo=false;if(dfx.hasClass(target,self.widgetType+'-assetName')===true||dfx.hasClass(target,self.widgetType+'-assetIcon')===true){row=target.parentNode;}else if(dfx.hasClass(target,self.widgetType+'-assetRow')===true){row=target;}else if(dfx.hasClass(target,self.widgetType+'-assetPurge')===true){deleted=true;row=target.parentNode;}else{var targetParent=dfx.getParents(target)[0];if(dfx.isset(targetParent)===true){if(dfx.hasClass(targetParent,'ButtonWidgetType-black')===true){return;}else if(dfx.hasClass(targetParent,'ButtonWidgetType-black-middle')===true){return;}}}
var assetid=parseInt(row.id.substring((self.widgetType+'WidgetType-asset-').length));var prevRow=null;if(self.selectedid!==assetid){prevRow=dfx.getId(self.id+'-asset-'+self.selectedid);}
if(deleted===true){var tabToggle=WidgetStore.get(self.id+'-activeToggle-'+self.activeProject);var deletedDiv=dfx.getClass(self.widgetType+'-assetPurge',row)[0];if(self.selectedid===assetid){if(dfx.hasClass(row,'deleted')===true){dfx.removeClass(row,'deleted');dfx.removeClass(deletedDiv,'recover');self.enableRestoreButton(restoreBtn,assetid);dfx.addClass(row,'selected');if(purgeToggle.isOn()===true){self.blockToggleOff=true;purgeToggle.toggleSlideOff(null,true,false,false);self.blockToggleOff=false;if(dfx.isset(tabToggle)===true){tabToggle.setValue(false);}}}else{dfx.removeClass(row,'selected');dfx.addClass(deletedDiv,'recover');dfx.addClass(row,'deleted');restoreBtn.disable();if(self.isAllPurge()===true&&self.activeProject===0){purgeToggle.setValue(true);}}}else{if(dfx.hasClass(prevRow,'selected')===true){dfx.removeClass(prevRow,'selected');}
if(dfx.hasClass(row,'deleted')===true){dfx.removeClass(row,'deleted');dfx.removeClass(deletedDiv,'recover');self.enableRestoreButton(restoreBtn,assetid);dfx.addClass(row,'selected');if(purgeToggle.isOn()===true){self.blockToggleOff=true;purgeToggle.toggleSlideOff(null,true,false,false);self.blockToggleOff=false;if(dfx.isset(tabToggle)===true){tabToggle.setValue(false);}}}else{dfx.removeClass(row,'selected');dfx.addClass(row,'deleted');dfx.addClass(deletedDiv,'recover');restoreBtn.disable();if(self.isAllPurge()===true&&self.activeProject===0){purgeToggle.setValue(true);}}
loadAssetInfo=true;}}else{if(dfx.hasClass(prevRow,'selected')===true){dfx.removeClass(prevRow,'selected');}
if(dfx.hasClass(row,'deleted')===true){}else{dfx.addClass(row,'selected');self.enableRestoreButton(restoreBtn,assetid);}
loadAssetInfo=true;}
if(loadAssetInfo===true){self.selectedid=assetid;self.showLineage(assetid,dfx.getId(self.id+'-asset-'+assetid));self.loadAssetInfo(self.selectedid);}
self.screenModified();});},showLineage:function(assetid,row)
{var old=dfx.getClass(this.widgetType+'-assetLineageWrap');var restore=dfx.getClass(this.widgetType+'-assetInfoBox-restoreWrap')[0];dfx.hideElement(old);dfx.setStyle(restore,'display','none');if(dfx.isset(assetid)===true){var delBtn=dfx.getClass(this.widgetType+'-assetPurge',row)[0];dfx.insertAfter(delBtn,restore);dfx.setStyle(restore,'display','inline');dfx.setStyle(restore,'visibility','visible');if(dfx.hasClass(row,'deleted')===true){WidgetStore.get(this.id+'-newRedirect').disable();}else{WidgetStore.get(this.id+'-newRedirect').enable();}
var current=dfx.getId('assetLineageWrap-'+assetid);dfx.setHtml(current,'');dfx.showElement(current);}},createLineageHtml:function(lineage,container)
{var parts=lineage;var len=parts.length;var items=[];for(var i=0;i<len;i++){if(i===0){if(parts[i]==='(trash)'){items.push('<span class="lineagePart top">'+parts[i]+'</span>');}else{items.push('<span class="lineagePart project">'+parts[i]+'</span>');}}else if(parts[i]==='(top level)'){items.push('<span class="lineagePart top">'+parts[i]+'</span>');}else{items.push('<span class="lineagePart">'+parts[i]+'</span>');}}
var separator='  <span class="lineageSeparator"> </span>';var content=items.join(separator);var locDiv=document.createElement('div');dfx.addClass(locDiv,'lineageLookup');dfx.addClass(locDiv,'valid');dfx.setHtml(locDiv,content);container.appendChild(locDiv);},loadAssetInfo:function(assetid)
{var self=this;var assetInfoBox=dfx.getId(this.id+'-assetInfoBox');var name=dfx.getId(this.id+'-assetInfoBox-name');var typeid=dfx.getId(this.id+'-assetInfoBox-typeid');var date=dfx.getId(this.id+'-assetInfoBox-date');var by=dfx.getId(this.id+'-assetInfoBox-by');var ss=dfx.getId(this.id+'-assetInfoBox-ss');var container=dfx.getId('assetLineageWrap-'+assetid);this.buttonStatus[assetid]='restore';var restoreBtn=WidgetStore.get(self.id+'-newRedirect');if(dfx.hasClass(dfx.getId(this.id+'-asset-'+assetid),'deleted')===true){restoreBtn.disable();}else{this.enableRestoreButton(restoreBtn,assetid);}
dfx.setHtml(name,this.assets[assetid].name);dfx.setHtml(typeid,dfx.ucWords(this.assets[assetid].type)+' #'+assetid);dfx.setHtml(date,'Deleted: '+this.assets[assetid].date);dfx.setHtml(by,'By: '+this.assets[assetid].username);ss.src=Widget.CURRENT_URL+'?tb=1&a='+assetid;var pids=this.assets[assetid].parents;var pLen=pids.length;var noParent=true;for(var i=0;i<pLen;i++){var lineage=this.parentsLin[pids[i]];if(dfx.isset(lineage)===true){var lLen=lineage.length;for(var j=0;j<lLen;j++){this.createLineageHtml(lineage[j],container);noParent=false;}}}
if(noParent===true){this.showRestoreWarning(assetid);}
dfx.showElement(assetInfoBox);},showRestoreWarning:function(assetid)
{this.buttonStatus[assetid]='alternate';var self=this;var container=dfx.getId('assetLineageWrap-'+this.selectedid);var warning=document.createElement('div');var restoreBtn=WidgetStore.get(this.id+'-newRedirect');restoreBtn.disable();var msg='The assets previous location no longer exists. ';msg+='Select an alternative location to restore the asset to.';dfx.addClass(warning,this.id+'-restore-warning');dfx.setHtml(warning,'<div class="msg">'+msg+'</div>');container.appendChild(warning);this.includeWidgets(['AssetPicker'],function(){var pickerid=self.id+'-altParent-'+self.selectedid;var altParentPicker=self.createWidget(pickerid,'AssetPicker');altParentPicker.create(function(altP){var pickerFolder=self.assets[assetid].pickerFolder;var blackList=['Documents','Images','Movies','Designs','Roles','Users','Workflows'];if(pickerFolder==='Documents'||pickerFolder==='Images'||pickerFolder==='Movies'||pickerFolder==='Users'){altParentPicker.setProjectFolderWhiteList([pickerFolder]);altParentPicker.setHideSite(true);}
altParentPicker.setProjectFolderBlackList(blackList);warning.appendChild(altP);if(dfx.isset(self.alternateParents[self.selectedid])===true){altParentPicker.setSelectedAsset(self.alternateParents[self.selectedid]);}
altParentPicker.addSelectedCallback(function(altId){self.alternateParents[self.selectedid]=parseInt(altId,10);self.buttonStatus[assetid]='restore';self.enableRestoreButton(restoreBtn,assetid);});altParentPicker.addClearAssetidCallback(function(){restoreBtn.disable();});});});},enableRestoreButton:function(restoreBtn,assetid)
{if(this.buttonStatus[assetid]==='restore'){restoreBtn.enable();}else{restoreBtn.disable();}},recoverAsset:function()
{var self=this;var params={widget:'TrashEditingModeWidget',mode:'TrashEditingMode',op:'recoverAsset',assetid:parseInt(this.selectedid),alternateParent:null};if(dfx.isset(this.alternateParents[this.selectedid])===true){params.alternateParent=this.alternateParents[this.selectedid];}
this.displayDisabledDiv();AbstractEditingScreenModeWidgetType.prototype.processScreen.call(self,params,function(data){self.reset(function(){self.removeDisabledDiv();});},true);},isAllPurge:function()
{var allPurge=true;if(this.activeProject===0){for(var assetid in this.assets){if(this.assets.hasOwnProperty(assetid)===true){var row=dfx.getId(this.id+'-asset-'+assetid);if(dfx.hasClass(row,'deleted')===false){allPurge=false;break;}}}}else{var assets=this.projects[this.activeProject];var aLen=assets.length;for(var x=0;x<aLen;x++){var row=dfx.getId(this.id+'-asset-'+assets[x]);if(dfx.hasClass(row,'deleted')===false){allPurge=false;break;}}
var tabToggle=WidgetStore.get(this.id+'-activeToggle-'+this.activeProject);if(dfx.isset(tabToggle)===true){if(allPurge===true){tabToggle.toggleSlideOn(null,true,false,false);}else{tabToggle.toggleSlideOff(null,true,false,false);}}}
return allPurge;},saveTrash:function(callback)
{var self=this;var params={widget:'TrashEditingModeWidget',mode:'TrashEditingMode'};var purgeToggle=WidgetStore.get(this.id+'-activeToggle');var isPurge=purgeToggle.isOn();if(isPurge===true){params.op='purgeTrash';params.pid=this.activeProject;self.displayDisabledDiv();AbstractEditingScreenModeWidgetType.prototype.processScreen.call(self,params,function(data){self.reset(function(){self.removeDisabledDiv();});},true,200);}else{var assetsToPurge=[];for(var assetid in this.assets){if(this.assets.hasOwnProperty(assetid)===true){var row=dfx.getId(this.id+'-asset-'+assetid);if(dfx.hasClass(row,'deleted')===true){assetsToPurge.push(assetid);}}}
params.op='purgeAssets';params.assetsToPurge=dfx.jsonEncode(assetsToPurge);self.displayDisabledDiv();AbstractEditingScreenModeWidgetType.prototype.processScreen.call(self,params,function(data){self.reset(function(){self.removeDisabledDiv();});},true,200);}},switchProjectTab:function(index)
{var i=0;var projectid=0;for(var pid in this.projects){i++;if(i===index){projectid=pid;}}
var container=dfx.getId(this.id+'-tabWrap');var middle=dfx.getId(this.id+'-middle');var right=dfx.getId(this.id+'-right');var rows=dfx.getClass(this.widgetType+'-assetRow');var lins=dfx.getClass(this.widgetType+'-assetLineageWrap');var selected=0;dfx.hideElement(rows);dfx.hideElement(lins);dfx.hideElement(dfx.getClass(this.widgetType+'-purgeWrap'));if(projectid!==0){container=dfx.getId(this.id+'-tabWrap-'+projectid);var assets=this.projects[projectid];var aLen=assets.length;selected=this.selectedid;if(dfx.inArray(this.selectedid,assets)===false){selected=assets[0];}
for(var x=0;x<aLen;x++){dfx.showElement(dfx.getId(this.id+'-asset-'+assets[x]));}
this.activeProject=projectid;var tabToggle=WidgetStore.get(this.id+'-activeToggle-'+projectid);if(dfx.isset(tabToggle)===false){var tabs=WidgetStore.get(this.id+'-tabs').getTabs();var id=tabs[index].id.split(':');var pName=id[1];this._initTabToggle(projectid,pName);}else{this.isAllPurge();}}else{dfx.showElement(rows);selected=this.selectedid;this.activeProject=0;var purgeToggle=WidgetStore.get(this.id+'-activeToggle');if(this.isAllPurge()===true){purgeToggle.toggleSlideOn(null,true,false,false);}else{purgeToggle.toggleSlideOff(null,true,false,false);}}
container.appendChild(middle);container.appendChild(right);var toggleWrap=dfx.getId(this.widgetType+'-purgeWrap-'+this.activeProject);dfx.showElement(toggleWrap);if(selected!==0){dfx.trigger(dfx.getId(this.id+'-asset-'+selected),'click');}},_initTabToggle:function(pid,pName)
{var self=this;var purgeWrap=document.createElement('div');purgeWrap.id=this.widgetType+'-purgeWrap-'+pid;dfx.addClass(purgeWrap,this.widgetType+'-purgeWrap');dfx.setHtml(purgeWrap,'&nbsp;');dfx.insertAfter(dfx.getId(this.widgetType+'-purgeWrap-0'),purgeWrap);dfx.swapClass(purgeWrap,'purgeToggle-all','purgeToggle-project');var purgeToggle=self.createWidget(self.id+'-activeToggle-'+pid,'ToggleButton',false,'slider',false,'Yes','No');var purgeLabel=document.createElement('div');dfx.setHtml(purgeLabel,'Purge the trash for the <strong>'+pName+'</strong> project?');dfx.addClass(purgeLabel,self.widgetType+'-purgeLabel');purgeWrap.appendChild(purgeLabel);purgeToggle.create(function(tel){purgeWrap.appendChild(tel);purgeToggle.addToggleOnEvent(function(){var assets=self.projects[self.activeProject];if(assets){var aLen=assets.length;for(var x=0;x<aLen;x++){var row=dfx.getId(self.id+'-asset-'+assets[x]);dfx.removeClass(row,'selected');dfx.addClass(row,'deleted');var delBtn=dfx.getClass(self.widgetType+'-assetPurge',row)[0];dfx.addClass(delBtn,'recover');}}
WidgetStore.get(self.id+'-newRedirect').disable();self.screenModified();});purgeToggle.addToggleOffEvent(function(){var assets=self.projects[self.activeProject];if(assets){var aLen=assets.length;for(var x=0;x<aLen;x++){var row=dfx.getId(self.id+'-asset-'+assets[x]);dfx.removeClass(row,'deleted');dfx.removeClass(row,'selected');if(parseInt(assets[x])===self.selectedid){dfx.addClass(row,'selected');}
var delBtn=dfx.getClass(self.widgetType+'-assetPurge',row)[0];dfx.removeClass(delBtn,'recover');}}
dfx.addClass(dfx.getId(self.id+'-asset-'+self.selectedid),'selected');WidgetStore.get(self.id+'-newRedirect').enable();self.screenModified();});self.isAllPurge();});},reset:function(callback)
{var self=this;var params={widget:'TrashEditingModeWidget',mode:'TrashEditingMode',op:'getScreenData'};var header=dfx.getClass(this.widgetType+'-trashHeader')[0];var restore=dfx.getClass(this.widgetType+'-assetInfoBox-restoreWrap')[0];dfx.setStyle(restore,'display','none');dfx.insertAfter(header,restore);self.parents={};self.alternateParents=[];AbstractEditingScreenModeWidgetType.prototype.getScreenData.call(self,params,function(data){var data=dfx.jsonDecode(data);if(data.hasOwnProperty('projects')===true){if(data.projects!==null){if(self.activeProject!==0&&data.projects.hasOwnProperty(self.activeProject)===false){var modeSwitcher=WidgetStore.get('EditingModeSwitcher');modeSwitcher._switchMode('TrashEditingMode');return;}}else{var modeSwitcher=WidgetStore.get('EditingModeSwitcher');modeSwitcher._switchMode('TrashEditingMode');return;}}
var newAssets=data.assets;if(newAssets!==null){var purgeWrap=dfx.getClass(self.widgetType+'-purgeWrap',self.leftDiv)[0];var assetInfo=dfx.getId(self.id+'-assetInfoBox');dfx.showElement(purgeWrap);dfx.showElement(assetInfo);var icon=dfx.getClass(self.widgetType+'-iconWrap',self.leftDiv)[0];dfx.addClass(icon,'full');dfx.removeClass(icon,'empty');var rows=dfx.getClass(self.widgetType+'-assetRow',self.middleDiv);dfx.foreach(rows,function(i){dfx.removeClass(rows[i],'selected');dfx.removeClass(rows[i],'deleted');return true;});dfx.foreach(self.assets,function(aid){if(dfx.isset(newAssets[aid])===false){dfx.remove(dfx.getId(self.id+'-asset-'+aid));}
return true;});var firstAsset=null;dfx.foreach(newAssets,function(aid){if(firstAsset===null){firstAsset=aid;}
if(dfx.isset(self.assets[aid])===false){self.addRow(aid);}
return true;});WidgetStore.get(self.id+'-activeToggle').setValue(false);WidgetStore.get(self.id+'-newRedirect').enable();self.selectedid=firstAsset;self.showLineage(firstAsset,dfx.getId(self.id+'-asset-'+firstAsset));self.loadAssetInfo(firstAsset);self.projects=dfx.clone(data.projects);self.parentsLin=dfx.clone(data.parents);self.assets=dfx.clone(data.assets);}
if(self.assets!==null){self.initSaveButton();}
if(callback){callback.call(self);}});},switchedOff:function()
{var icon=WidgetStore.get('TrashEditingToolbarIcon');if(icon){icon.toggleState('inactive');}}};dfx.inherits('TrashEditingMode','AbstractEditingMode');function VersioningEditingModeWidgetType(id,markers,baseYear,baseTime,versionCount,assetid,isFileAsset,assetType)
{AbstractEditingModeWidgetType.call(this,id);this.widgetType='VersioningEditingMode';var self=this;this.settingsPane=WidgetStore.get((this.id+'-sp'));this.markers=markers||[];this.baseTime=baseTime;this.baseYear=baseYear;this.versionCount=parseInt(versionCount);this.editContents=dfx.getId('EditingScreenModes');this.versionImages=[];this.container=null;this.currentVersion=null;this.timeLine=null;this.navigation=null;this.navButtons={};this.elemHeight=58;this.dynamicDiv=null;this.versionContents=[];this.assetid=assetid;this.isFileAsset=isFileAsset;this.assetType=assetType;this.msgOverlay=null;this.msgDialog=null;dfx.addClass(document.body,'VersioningEditingModeWidgetType-body');this.init();}
VersioningEditingModeWidgetType.prototype={init:function()
{this.container=document.createElement('div');dfx.getId('EditingScreenModes').appendChild(this.container);if(this.versionCount===0){this.removeDisabledDiv();return;}
var year=null;var month=null;if(dfx.isset(this.markers[(this.versionCount-1)])===true){var date=new Date((this.markers[(this.versionCount-1)].date*1000));var year=date.getFullYear();var month=date.getMonth();}
var self=this;this.includeWidgets(['TimeLine','DynamicDiv'],function(){self.dynamicDiv=self.createWidget((self.id+'-dynamicDiv'),'DynamicDiv');self.timeLine=self.createWidget((self.id+'-timeLine'),'TimeLine',self.markers,self.baseYear,self.baseTime,year,month,'point');self.timeLine.showMonth(year,month);self.timeLine.addNoMarkerBeforeTimeEvent(function(){self.showVersion(-1);});self.timeLine.addMarkerSelectedEvent(function(markerIndex,timestamp){self.showVersion((parseInt(markerIndex)+1),false);});var elem=self.timeLine.getElement();dfx.addClass(elem,(self.getClass()+'-timeLine'));dfx.getId((self.id+'-sp')).appendChild(elem);self.settingsPane.setHeight(self.elemHeight,true);self.createVersionNav();self.showVersion(self.versionCount,true);self.ready();});},createImageHolder:function()
{var imgHolder=dfx.getId((this.id+'-versionImage'));dfx.addClass(imgHolder,(this.getClass()+'-imgHolder'));var x=document.createElement('div');dfx.addClass(x,(this.getClass()+'-imgHolder-x'));imgHolder.appendChild(x);var holder=document.createElement('div');dfx.addClass(holder,(this.getClass()+'-imgHolder-holder'));x.appendChild(holder);this.container=holder;dfx.setStyle(this.editContents,'background-color','#3F3F3F');},createVersionNav:function()
{var self=this;var c=this.getClass()+'-version-nav';var wrapper=document.createElement('div');wrapper.id=(this.id+'-versionNav');dfx.addClass(wrapper,c);var left=document.createElement('div');dfx.addClass(left,c+'-left');var mid=document.createElement('div');dfx.addClass(mid,c+'-mid');var right=document.createElement('div');dfx.addClass(right,c+'-right');wrapper.appendChild(left);wrapper.appendChild(mid);wrapper.appendChild(right);var midWrap=document.createElement('div');var firstWrap=document.createElement('div');var midNavWrap=document.createElement('div');var todayWrap=document.createElement('div');dfx.addClass(midWrap,c+'-mid-wrapper');dfx.addClass(firstWrap,c+'-mid-wrapper-first');dfx.addClass(midNavWrap,c+'-mid-wrapper-midNav');dfx.addClass(todayWrap,c+'-mid-wrapper-today');midWrap.appendChild(firstWrap);midWrap.appendChild(midNavWrap);midWrap.appendChild(todayWrap);var firstBtnWdget=self.createWidget(this.id+'-versionNav-first','Button','ButtonWidgetType-black');firstBtnWdget.setName('First Version');firstBtnWdget.addClickEvent(function(){self.showVersion(1,true);},true);var todayBtnWdget=self.createWidget(this.id+'-versionNav-today','Button','ButtonWidgetType-black');todayBtnWdget.setName('Latest Version');todayBtnWdget.addClickEvent(function(){self.showVersion(self.versionCount,true);},true);firstBtnWdget.create(function(fel){todayBtnWdget.create(function(tel){firstWrap.appendChild(fel);todayWrap.appendChild(tel);var prev=document.createElement('div');dfx.addClass(prev,c+'-mid-wrapper-prev');var prevLeft=document.createElement('div');var prevMid=document.createElement('div');var prevRight=document.createElement('div');dfx.addClass(prevLeft,c+'-mid-wrapper-prev-left');dfx.addClass(prevMid,c+'-mid-wrapper-prev-mid');dfx.addClass(prevRight,c+'-mid-wrapper-prev-right');var prevMidInner=document.createElement('div');dfx.addClass(prevMidInner,c+'-mid-wrapper-prev-mid-inner')
dfx.setHtml(prevMidInner,'Prev');prevMid.appendChild(prevMidInner);prev.appendChild(prevLeft);prev.appendChild(prevMid);prev.appendChild(prevRight);dfx.addEvent(prevMid,'click',function(e){if(self.currentVersion>1){var ver=(self.currentVersion-1);self.showVersion(ver,true);}});var datetime=document.createElement('div');dfx.addClass(datetime,c+'-mid-wrapper-datetime');datetime.id=(wrapper.id+'-content');dfx.attr(datetime,'title','Date and time of the version you are currently viewing');var next=document.createElement('div');dfx.addClass(next,c+'-mid-wrapper-next');var nextLeft=document.createElement('div');var nextMid=document.createElement('div');var nextRight=document.createElement('div');dfx.addClass(nextLeft,c+'-mid-wrapper-next-left');dfx.addClass(nextMid,c+'-mid-wrapper-next-mid');dfx.addClass(nextRight,c+'-mid-wrapper-next-right');var nextMidInner=document.createElement('div');dfx.addClass(nextMidInner,c+'-mid-wrapper-next-mid-inner')
dfx.setHtml(nextMidInner,'Next');nextMid.appendChild(nextMidInner);next.appendChild(nextLeft);next.appendChild(nextMid);next.appendChild(nextRight);dfx.addEvent(nextMid,'click',function(e){self.showVersion((self.currentVersion+1),true);});self.navButtons.prev=prevMidInner;self.navButtons.next=nextMidInner;self.navButtons.oldest=firstBtnWdget;self.navButtons.newest=todayBtnWdget;midNavWrap.appendChild(prev);midNavWrap.appendChild(datetime);midNavWrap.appendChild(next);mid.appendChild(midWrap);self.navigation=wrapper;wrapper.id=(this.id+'-versionNav');self.editContents.appendChild(wrapper);});});},updateNavButtons:function()
{if(this.versionCount===1){dfx.addClass(this.navButtons.prev,'dark');dfx.addClass(this.navButtons.next,'dark');this.navButtons.oldest.disable();this.navButtons.newest.disable();}else if(this.currentVersion===1){dfx.addClass(this.navButtons.prev,'dark');dfx.removeClass(this.navButtons.next,'dark');this.navButtons.oldest.disable();this.navButtons.newest.enable();}else if(this.currentVersion===this.versionCount){dfx.removeClass(this.navButtons.prev,'dark');dfx.addClass(this.navButtons.next,'dark');this.navButtons.oldest.enable();this.navButtons.newest.disable();}else{dfx.removeClass(this.navButtons.prev,'dark');dfx.removeClass(this.navButtons.next,'dark');this.navButtons.oldest.enable();this.navButtons.newest.enable();}},loadVersionContent:function(version,callback)
{if(dfx.isset(this.versionContents[version])===true){dfx.setStyle(this.versionContents[this.currentVersion],'display','none');dfx.setStyle(this.versionContents[version],'display','block');callback.call(this,this.versionContents[version]);}else{var content=document.createElement('div');this.versionContents[version]=content;var prevVersion=this.currentVersion;dfx.setStyle(this.versionContents[prevVersion],'visibility','hidden');this.container.appendChild(content);var params={widget:'VersioningEditingModeWidget',action:'getVersionContent',version:version,assetid:this.assetid,isFileAsset:this.isFileAsset,wid:this.id,assetType:this.assetType};this.dynamicDiv.setElement(content);var self=this;this.dynamicDiv.changeContent(params,function(){dfx.setStyle(self.versionContents[prevVersion],'display','none');dfx.setStyle(self.versionContents[prevVersion],'visibility','visible');callback.call(this,content);});}},showVersion:function(version,moveSlider,force)
{if(force!==true&&version===this.currentVersion){return;}
var overlay=null;if(dfx.isset(this.markers[(version-1)])===true){var time=dfx.date('l F dS Y h:ia',(this.markers[(version-1)].date*1000));this.setVersionNavContent(time);var self=this;this.loadVersionContent(version,function(content){});this.currentVersion=version;this.updateNavButtons();if(moveSlider===true){this.timeLine.selectMarker((version-1),true);}}else if(version<1){if(this.versionCount===0){this.showMessageOverlay('no_versions','Asset does not have any versions','notice');}else{var slider=dfx.getId('VersioningEditingModeWidgetType-timeLine-slider');if(this.msgDialog){this.msgDialog.show(slider);return;}
var self=this;self.includeWidget('Intervention',function(){var msg='Asset did not exist at this point in time. Click OK to view the first version';var iw=self.createWidget(null,'Intervention',null,function(){if(self.versionCount>0){self.showVersion(1,true,true);}});self.msgDialog=iw;iw.cancelText=null;iw.confirmText='OK';iw.create(function(){iw.setMessage(msg);iw.setSize('255px','61px');iw.show(slider);});});}}},showMessageOverlay:function(id,msg,type)
{MessageDialog.prepare(id,msg,type,function(){MessageDialog.show();});},closeMessageOverlay:function()
{dfx.setStyle(this.msgOverlay,'display','none');dfx.setStyle(this.navigation,'display','block');},setVersionNavContent:function(content)
{dfx.setHtml(dfx.getId((this.id+'-versionNav-content')),content);},switchedOff:function()
{if(this.settingsPane){this.settingsPane.remove();}
dfx.removeClass(document.body,'VersioningEditingModeWidgetType-body');}};dfx.inherits('VersioningEditingMode','AbstractEditingMode');function AssetTypeAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='AssetTypeAdminScreen';}
AssetTypeAdminScreenWidgetType.prototype={init:function(data)
{var self=this;},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},switchOnScreen:function(){},switchOffScreen:function()
{this.removeToolbarButton('save_assetType');}};dfx.inherits('AssetTypeAdminScreen','AbstractSettingsScreen');function AuthenticationSystemConfigScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='AuthenticationSystemConfigScreen';this.id=id;this.parent=parent;this.screenid=screenid;this.system=system;this.title=title;this.parent=parent;this.hashing=true;this.auths=[];}
AuthenticationSystemConfigScreenWidgetType.prototype={screenModified:function()
{var self=this;var saveOn=false;var hashingToggle=WidgetStore.get(this.id+'-encryptButton');if(this.hashing!==hashingToggle.getValue()){saveOn=true;}
var authList=WidgetStore.get(this.id+'-authList');var currList=authList.getListItems();if(saveOn===false){if(this.auths.length!==currList.length){saveOn=true;}else{var len=this.auths.length;for(var i=0;i<len;i++){if(this.auths[i].type==='_default_'){if(this.auths[i].type!==currList[i]){saveOn=true;break;}}else{if(this.auths[i].type+'-'+this.auths[i].id!==currList[i]){saveOn=true;break;}}}}}
if(saveOn===false){dfx.foreach(currList,function(idx){if(authList.itemIsRemoved(currList[idx])===true){saveOn=true;return false;}
return true;});}
this.setModified(saveOn);return saveOn;},init:function(data)
{var self=this;this.hashing=data.hashing;this.auths=data.auths;this.authNames=data.authNames;var passSecDiv=dfx.getId(this.widgetType+'-passwordSecurity-items');var authSecDiv=dfx.getId(this.widgetType+'-authSystems-items');var childLen=passSecDiv.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(passSecDiv.childNodes[i]);}
childLen=authSecDiv.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(authSecDiv.childNodes[i]);}
this.create(function(){self.setReadOnly(this.readOnly);if(self.readOnly===true){self.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('AuthenticationSystemConfigScreen-passwordSecurity'),el);},function(){});}
self.ready();});},create:function(callback)
{var self=this;var passSecDiv=dfx.getId(this.widgetType+'-passwordSecurity-items');var authSecDiv=dfx.getId(this.widgetType+'-authSystems-items');var desc=document.createElement('div');var descC='Note: It is highly recommended that Password Encryption be active at all times. ';descC+='There are, however, some circumstances where it must be disabled, ';descC+='such as when SSL is used in conjunction with an LDAP authentication method.';dfx.setHtml(desc,descC);dfx.addClass(desc,this.widgetType+'-passwordDesc');passSecDiv.appendChild(desc);this.includeWidgets(['Intervention','PlainList','Button','ToggleButton'],function(){var toggWidget=self.createWidget(self.id+'-encryptButton','ToggleButton',false,'slider',self.hashing,'Yes','No');toggWidget.create(function(el){var hashingClass='granted';var hashingColor='Green';var hashingLeftText='Password Encryption Active';if(self.hashing===false){hashingClass='denied';hashingColor='Red';hashingLeftText='Password Encryption Inactive';}
var hashingSwitchDiv=document.createElement('div');var hashingSwitchContent='<div class="AuthenticationSystemConfigScreen-publicSection">';hashingSwitchContent+='    <div class="AuthenticationSystemConfigScreen-publicPermissionLeftCorner '+hashingClass+'"></div>';hashingSwitchContent+='    <div class="AuthenticationSystemConfigScreen-PublicState-'+hashingColor+'-Left">';hashingSwitchContent+='        <div class="AuthenticationSystemConfigScreen-publicPermissionText">';hashingSwitchContent+='            <span class="AuthenticationSystemConfigScreen-publicCurrentPermission">'+hashingLeftText+'</span>';hashingSwitchContent+='        </div>';hashingSwitchContent+='    </div>';hashingSwitchContent+='    <div class="AuthenticationSystemConfigScreen-publicPermissionSwitch">';hashingSwitchContent+='        <div class="AuthenticationSystemConfigScreen-publicPermissionSelect">';hashingSwitchContent+='            <div class="AuthenticationSystemConfigScreen-publicGrantedPublicAccessText">';hashingSwitchContent+='                <label class="AuthenticationSystemConfigScreen-publicPermissionSwitchLabel">Encrypt passwords</label>';hashingSwitchContent+='            </div>';hashingSwitchContent+='            <div class="AuthenticationSystemConfigScreen-publicPermissionSwitchButtonWrapper">';hashingSwitchContent+='            </div>';hashingSwitchContent+='        </div>';hashingSwitchContent+='    </div>';hashingSwitchContent+='    <div class="AuthenticationSystemConfigScreen-publicPermissionRightCorner override"></div>';hashingSwitchContent+='</div>';dfx.setHtml(hashingSwitchDiv,hashingSwitchContent);var btnWrapper=dfx.getClass('AuthenticationSystemConfigScreen-publicPermissionSwitchButtonWrapper',hashingSwitchDiv)[0];var leftCornerDiv=dfx.getClass('AuthenticationSystemConfigScreen-publicPermissionLeftCorner',hashingSwitchDiv)[0];var stateDiv=dfx.getClass('AuthenticationSystemConfigScreen-PublicState-'+hashingColor+'-Left',hashingSwitchDiv)[0];var hashingTexDiv=dfx.getClass('AuthenticationSystemConfigScreen-publicCurrentPermission',hashingSwitchDiv)[0];btnWrapper.appendChild(el);passSecDiv.appendChild(hashingSwitchDiv);toggWidget.addToggleOnEvent(function(){dfx.removeClass(leftCornerDiv,'denied');dfx.addClass(leftCornerDiv,'granted');dfx.removeClass(stateDiv,'AuthenticationSystemConfigScreen-PublicState-Red-Left');dfx.addClass(stateDiv,'AuthenticationSystemConfigScreen-PublicState-Green-Left');dfx.setHtml(hashingTexDiv,'Password Encryption Active');self.screenModified();});toggWidget.addToggleOffEvent(function(){dfx.removeClass(leftCornerDiv,'granted');dfx.addClass(leftCornerDiv,'denied');dfx.removeClass(stateDiv,'AuthenticationSystemConfigScreen-PublicState-Green-Left');dfx.addClass(stateDiv,'AuthenticationSystemConfigScreen-PublicState-Red-Left');dfx.setHtml(hashingTexDiv,'Password Encryption Inactive');self.screenModified();});var authDescWrap=document.createElement('div');authDescWrapC='<div class="AuthenticationSystemConfigScreen-desc-content">Systems are evaluated from top to bottom and can be re-ordered as required</div>';authDescWrapC+='<div class="AuthenticationSystemConfigScreen-addAuthBtn-wrap"></div>';dfx.addClass(authDescWrap,'AuthenticationSystemConfigScreen-descWrap');dfx.setHtml(authDescWrap,authDescWrapC);var authAddBtnWrap=dfx.getClass('AuthenticationSystemConfigScreen-addAuthBtn-wrap',authDescWrap)[0];var addAuthBtn=self.createWidget(self.id+'-authAddBtn','Button','ButtonWidgetType');addAuthBtn.create(function(btnEl){authAddBtnWrap.appendChild(btnEl);addAuthBtn.setName('Add Authentication System');var items=[];dfx.foreach(self.auths,function(idx){var authItemId=null;var authItemLeftDiv=document.createElement('div');var authRemoveBtn=true;dfx.addClass(authItemLeftDiv,self.widgetType+'-'+self.auths[idx].type);if(self.auths[idx].type==='_default_'){authItemId='_default_';authRemoveBtn=false;dfx.setHtml(authItemLeftDiv,'<strong>MySource Mini</strong> (system default)');}else{authItemId=self.auths[idx].type+'-'+self.auths[idx].id;dfx.setHtml(authItemLeftDiv,self.authNames[self.auths[idx].id]);}
items.push({id:authItemId,left:authItemLeftDiv,right:null,showRemoveButton:authRemoveBtn});return true;});var list=self.createWidget(self.id+'-authList','PlainList','761',true,true,true,items,self.getClass()+'-listItem');list.create(function(listEl){authSecDiv.appendChild(authDescWrap);authSecDiv.appendChild(listEl);jQuery(dfx.getClass('PlainListWidgetType',listEl)[0]).sortable({axis:'y',handle:'span.PlainListWidgetType-dragIcon',stop:function(event,ui){self.screenModified();},tolerance:'pointer'});list.addItemRemovedCallback(function(){self.screenModified();});var newAuthPickerid=self.id+'-newAuthPicker';var newAuthPicker=WidgetStore.get('EditingAssetPicker');newAuthPicker.setScreen(newAuthPickerid);newAuthPicker.setUniqueSelect(true);newAuthPicker.resetProjectFolderList(newAuthPickerid);newAuthPicker.setForceShowRoots(newAuthPickerid,true);newAuthPicker.setHideSite(newAuthPickerid,true);var folders=['Users'];var fLen=folders.length;for(var i=0;i<fLen;i++){newAuthPicker.addProjectFolderWhiteList(newAuthPickerid,folders[i]);}
newAuthPicker.addAssetsSelectedAction(function(assets){var selectedid=(new String(assets[0])).valueOf();var params={attributes:['name'],type:true,typeIcon:true,linking:[],urls:false};AssetManager.getAsset(selectedid,function(ast){if(ast.type!=='ldapConnection'){var ipopup=self.createWidget('AuthIntervention','Intervention',function(){},function(){});ipopup.confirmText='Ok';ipopup.cancelText=null;ipopup.create(function(){ipopup.setSize('200px','80px');ipopup.setMessage('The selected asset can not be added to the authentication list.');ipopup.show(dfx.getId(addAuthBtn.id));});}else{var authItemId=null;var newItemLeftDiv=document.createElement('div');var authRemoveBtn=true;dfx.addClass(newItemLeftDiv,self.widgetType+'-'+ast.type);dfx.setHtml(newItemLeftDiv,ast.name);list.addItem({id:ast.type+'-'+ast.id,left:newItemLeftDiv,right:null,showRemoveButton:true});self.screenModified();}},false,params);},true,newAuthPickerid);addAuthBtn.addClickEvent(function(){addAuthBtn.disable();self.displayDisabledDiv(true);var pickerid=self.id+'-newAuthPicker';newAuthPicker.init(pickerid,function(){newAuthPicker.dialog.open();});},true);newAuthPicker.addCloseAction(function(){addAuthBtn.enable();});if(callback){callback.call(self);}
return;});});});});},forceEdit:function()
{var self=this;AbstractSettingsScreenWidgetType.prototype.forceEdit.call(this,function(){self.setModified(false);self.reload();});},reload:function()
{var title=dfx.getId('SystemConfigScreenModeWidgetType-tab_pane-tab-authentication-title');dfx.trigger(title,'click');},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){self._processEdit(function(){self.reload();});},function(){self.reload();});},switchOffScreen:function(){},_processEdit:function(callback)
{var self=this;self.displayDisabledDiv(true);var hashingToggle=WidgetStore.get(this.id+'-encryptButton');var authList=WidgetStore.get(this.id+'-authList');self.parent.processScreen({screen:self.id+'Widget',hashing:hashingToggle.getValue(),auths:dfx.jsonEncode(authList.getListItems()),deletedAuths:dfx.jsonEncode(authList.getListDisabledItems()),op:'updateAuth'},function(){if(dfx.isFn(callback)===true){callback.call(self);}});}};dfx.inherits('AuthenticationSystemConfigScreen','AbstractSettingsScreen');function BackupSystemConfigScreenWidgetType(id,screenid,system,title,parent)
{AbstractSettingsScreenWidgetType.call(this,id);this.widgetType='BackupSystemConfigScreen';this.screenid=screenid;this.system=system;this.title=title;this.parent=parent;}
BackupSystemConfigScreenWidgetType.prototype={init:function(data)
{this.setModified(false);var restores=dfx.getClass('Restore');var len=restores.length;for(var i=0;i<len;i++){this.addRestoreButtonEvent(restores[i].id);this.children.push(restores[i].id);}
var downloads=dfx.getClass('Download');var dlen=downloads.length;for(var j=0;j<dlen;j++){this.addDownloadButtonEvent(downloads[j].id);this.children.push(downloads[j].id);}
if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('BackupSystemConfigScreen-backupSectionsectionHeader').parentNode,el);},function(){});}
this.getOffsiteInfo();if(data.hasOwnProperty('notify')===true){var params={screen:this.id+'Widget',op:'notifyRestore'};this.parent.processScreen(params,function(){},false,200);}
this.ready();},addRestoreButtonEvent:function(id)
{var self=this;var button=WidgetStore.get(id);var elem=dfx.getId(id);var date=elem.getAttribute('date');var time=elem.getAttribute('time');button.setReadOnly(this.readOnly);button.addClickEvent(function(){self.showPop(id,date,time);});},addDownloadButtonEvent:function(id)
{var self=this;var button=WidgetStore.get(id);var params={name:id,screen:this.id+'Widget',op:'downloadBackup'};button.setReadOnly(this.readOnly);button.addClickEvent(function(){var url=self.url+'?widget='+self.widgetType+'WidgetType';url+='&action=processScreen&op=downloadBackup';url+='&name='+id;window.location.href=url;});},showPop:function(name,date,time)
{var saveButton=WidgetStore.get('EditingAutoSave');saveButton.stop();var self=this;var wrapper=document.createElement('div');var top=document.createElement('div');var middle=document.createElement('div');var bottom=document.createElement('div');this.prefix=this.id+'-pop';wrapper.id=this.prefix;bottom.id=this.prefix+'-bottom';dfx.addClass(wrapper,this.prefix);dfx.addClass(top,this.prefix+'-top');dfx.addClass(middle,this.prefix+'-middle');dfx.addClass(bottom,this.prefix+'-bottom');var headerText=document.createElement('div');headerText.id=this.prefix+'-top-headerText';dfx.setHtml(headerText,'Restore Backup');dfx.addClass(headerText,this.prefix+'-top-headerText');top.appendChild(headerText);var headerSubText=document.createElement('div');dfx.setHtml(headerSubText,'('+date+' - '+time+')');dfx.addClass(headerSubText,this.prefix+'-top-headerSubText');top.appendChild(headerSubText);var middleText=document.createElement('div');middleText.id=this.prefix+'-middle-text';var desc='You have chosen to restore a system backup from<br />';desc+='<strong>'+date+'</strong>. If you continue with';desc+=' this action, all your content and settings will be';desc+=' restored to the way they were at this particular';desc+=' point in time. However, all existing backups';desc+=' will still be available.';dfx.setHtml(middleText,desc);dfx.addClass(middleText,this.prefix+'-middle-text');middle.appendChild(middleText);var middleLoader=document.createElement('div');middleLoader.id=this.prefix+'-middle-loader';dfx.setHtml(middleLoader,'&nbsp;');dfx.addClass(middleLoader,this.prefix+'-middle-loader');middle.appendChild(middleLoader);wrapper.appendChild(top);wrapper.appendChild(middle);wrapper.appendChild(bottom);this.includeWidgets('Button',function(){var cancel=self.createWidget(self.prefix+'-cancel-button','Button','ButtonWidgetType-black',false,'Cancel');var ok=self.createWidget(self.prefix+'-ok-button','Button','ButtonWidgetType-black',false,'Restore Backup');cancel.create(function(cancelBtn){ok.create(function(okBtn){bottom.appendChild(cancelBtn);bottom.appendChild(okBtn);cancel.addClickEvent(function(){var middleText=dfx.getId(self.prefix+'-middle-text');var middleLoader=dfx.getId(self.prefix+'-middle-loader');var bottom=dfx.getId(self.prefix+'-bottom');dfx.hideElement(middleText);dfx.showElement(middleLoader);dfx.setHtml(bottom,'<span class="bottom-text">Cancelling ...</span>');var url=document.location;url+='/?initialMode=SystemConfigScreenMode&initialScreen=BackupSystemConfigScreenWidget';window.location=url;});ok.addClickEvent(function(){self.showStep2(name,date,time);});dfx.setStyle(wrapper,'visibility','hidden');dfx.setHtml(document.body,'');dfx.setStyle(document.body,'backgroundColor','#404040');document.body.appendChild(wrapper);var posStyles=dfx.getElemPositionStyles(wrapper);for(var property in posStyles){dfx.setStyle(wrapper,property,posStyles[property]);}
dfx.setStyle(wrapper,'visibility','visible');});});});},showStep2:function(name,date,time)
{var headerText=dfx.getId(this.prefix+'-top-headerText');var middleText=dfx.getId(this.prefix+'-middle-text');var middleLoader=dfx.getId(this.prefix+'-middle-loader');var bottom=dfx.getId(this.prefix+'-bottom');dfx.setHtml(headerText,'Restoration in Progress');dfx.hideElement(middleText);dfx.showElement(middleLoader);dfx.setHtml(bottom,'<span class="bottom-text">This procedure may take a few minutes</span>');this.restoreBackup(name);},restoreBackup:function(name)
{var params={name:name,screen:this.id+'Widget',op:'restoreBackup'};var self=this;this.parent.processScreen(params,function(){});this.checkProgress(name);},getOffsiteInfo:function()
{var params={screen:this.id+'Widget',op:'getOffsiteInfo'};var self=this;this.parent.processScreen(params,function(backups){var backups=dfx.jsonDecode(backups);var bLen=backups.length;for(var i=0;i<bLen;i++){self.markOffsiteBackup(backups[i]);}},false,200);},markOffsiteBackup:function(name)
{var restoreButton=dfx.getId('BackupSystemConfigScreen-restore-'+name);if(restoreButton){var tr=dfx.getParents(restoreButton)[1];if(tr){dfx.addClass(tr,'offsite');}}},checkProgress:function(name)
{var params={name:name,screen:this.id+'Widget',op:'checkProgress'};var self=this;var checkAgain=true;var intervalInSec=5;this.interval=setInterval(function(){if(checkAgain===true){checkAgain=false;var timeoutInSec=4;self.parent.processScreen(params,function(data){checkAgain=true;if(data.length!==0&&data.search('Fatal error')===-1){clearInterval(self.interval);window.location=data;}},null,timeoutInSec,function(xhr,status){checkAgain=true;});}},(intervalInSec*1000));},switchOnScreen:function(){},switchOffScreen:function(){}};dfx.inherits('BackupSystemConfigScreen','AbstractSettingsScreen');function CacheAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='CacheAdminScreen';this.paths=[];this.mode='';this.settings=[];this.timeLine=null;this.config={};this.hasChanges={};this.expiryValue=0;this.expiryUnit=0;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen('cache');this.assetPicker.addProjectFolderWhiteList('cache','Documents');this.assetPicker.addProjectFolderWhiteList('cache','Images');this.assetPicker.addProjectFolderWhiteList('cache','Movies');this.assetPicker.setUniqueSelect(false);}
CacheAdminScreenWidgetType.prototype={init:function(data)
{var self=this;this.config=data.config;this.setupClearCacheAction();this.setupTimeLine(this.config.firstDate);if(this.config.collect&&!this.config.status){this.toggleWarning('collect',false);this.toggleWarning('nodata',false);this.toggleWarning('cacheMustBeOn',true);}else{this.toggleWarning('collect',!this.config.collect);this.toggleWarning('nodata',this.config.collect);}
var statusToggle=WidgetStore.get('cacheConfig-status');var expiryValue=WidgetStore.get('cacheConfig-expiryValue');var expiryUnit=WidgetStore.get('cacheConfig-expiryUnit');var collectToggle=WidgetStore.get('cacheConfig-collect');this.expiryValue=expiryValue.getValue();this.expiryUnit=expiryUnit.getValue();statusToggle.addToggleEvent(function(t){if(t!==self.config.status){self.hasChanges.status=true;}else{delete self.hasChanges.status;}
self._checkChanges();if(collectToggle.isOn()===true&&t===false){self.toggleWarning('collect',false);self.toggleWarning('nodata',false);self.toggleWarning('cacheMustBeOn',true);}else if(t===true){self.toggleWarning('cacheMustBeOn',false);self.toggleWarning('collect',!collectToggle.isOn());self.toggleWarning('nodata',collectToggle.isOn());}});expiryValue.addOnChangeEvent(function(){var value=parseInt(this.getValue(),10);var unit=parseInt(expiryUnit.getValue(),10);var expiry=(value*unit);if(expiry!==self.config.expiry){self.hasChanges.expiry=true;}else{delete self.hasChanges.expiry;}
self._checkChanges();});expiryUnit.addItemSelectedEvent(function(){var value=parseInt(expiryValue.getValue(),10);var unit=parseInt(this.getValue(),10);var expiry=(value*unit);if(expiry!==self.config.expiry){self.hasChanges.expiry=true;}else{delete self.hasChanges.expiry;}
self._checkChanges();});collectToggle.addToggleEvent(function(t){if(t!==self.config.collect){self.hasChanges.collect=true;}else{delete self.hasChanges.collect;}
self._checkChanges();if(statusToggle.isOn()===false&&t===true){self.toggleWarning('collect',false);self.toggleWarning('nodata',false);self.toggleWarning('cacheMustBeOn',true);}else{self.toggleWarning('cacheMustBeOn',false);self.toggleWarning('collect',!t);self.toggleWarning('nodata',t);}});if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId(self.id+'-container'),el);var clearCache=dfx.getId(this.id+'-infobox_section_clear');dfx.hideElement(clearCache);},function(){self.forceEdit();});}
this.ready();},forceEdit:function(callback)
{var self=this;AbstractSettingsScreenWidgetType.prototype.forceEdit.call(this,function(){self._forceEdit();if(callback){callback.call(self);}});},_forceEdit:function()
{var statusToggle=WidgetStore.get('cacheConfig-status');var expiryValue=WidgetStore.get('cacheConfig-expiryValue');var expiryUnit=WidgetStore.get('cacheConfig-expiryUnit');var collectToggle=WidgetStore.get('cacheConfig-collect');var clearCache=dfx.getId(this.id+'-infobox_section_clear');statusToggle.setReadOnly(false);expiryValue.setReadOnly(false);expiryUnit.setReadOnly(false);collectToggle.setReadOnly(false);dfx.showElement(clearCache);this._checkChanges();this.removeDisabledDiv();},_checkChanges:function()
{var noChange=true;for(var id in this.hasChanges){if(this.hasChanges[id]===true){this.setModified(true);noChange=false;break;}}
if(noChange===true){this.setModified(false);}},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},revert:function()
{WidgetStore.get('cacheConfig-status').setValue(this.config.status);WidgetStore.get('cacheConfig-expiryValue').setValue(this.expiryValue,true);WidgetStore.get('cacheConfig-expiryUnit').setValue(this.expiryUnit,true);WidgetStore.get('cacheConfig-collect').setValue(this.config.collect);WidgetStore.get('clearCache-settings:rootNodes').clear();WidgetStore.get('clearCache-option').uncheckAll();var rootNodeDiv=dfx.getId('clearCache-rootnode');var buttonDiv=dfx.getId('clearCache-button');dfx.hideElement(rootNodeDiv);dfx.hideElement(buttonDiv);this.hasChanges={};this.setModified(false);this.removeDisabledDiv();},saveCacheConfig:function()
{var expiryValue=WidgetStore.get('cacheConfig-expiryValue');var expiryUnit=WidgetStore.get('cacheConfig-expiryUnit');var params={status:WidgetStore.get('cacheConfig-status').getValue(),collect:WidgetStore.get('cacheConfig-collect').getValue(),expiryValue:expiryValue.getValue(),expiryUnit:expiryUnit.getValue(),screen:this.id+'Widget'};var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){self.config=data;self.expiryValue=expiryValue.getValue();self.expiryUnit=expiryUnit.getValue();self.hasChanges={};self.setModified(false);self.removeDisabledDiv(null,true);var help=WidgetStore.get('Help');help.refresh();},true);},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){self.saveCacheConfig();},function(){self.revert();});if(dfx.isset(this.timeLine)===true){var date=new Date();var year=date.getFullYear();var month=date.getMonth();self.timeLine.displayMonth(year,month);}},switchOffScreen:function(){},switchClearCacheStatus:function(status)
{var buttonDiv=dfx.getId('clearCache-button');var rootNodeDiv=dfx.getId('clearCache-rootnode');var addButton=WidgetStore.get('clearCache-add');var confirmButton=WidgetStore.get('clearCache-confirm');dfx.showElement(buttonDiv);if(status==='specific'){dfx.setStyle(buttonDiv,'margin-left','25px');dfx.showElement(rootNodeDiv);addButton.show();confirmButton.show();var rootNodeWidget=WidgetStore.get('clearCache-settings:rootNodes');var selectedAssets=rootNodeWidget.getValue();var count=selectedAssets.length;var warning=dfx.getId('clearCache-rootnode_warning');if(count===0){dfx.showElement(warning);rootNodeWidget.hide();confirmButton.disable();}else{dfx.hideElement(warning);rootNodeWidget.show();}}else if(status==='all'){dfx.setStyle(buttonDiv,'margin-left','30%');dfx.hideElement(rootNodeDiv);addButton.hide();confirmButton.show();confirmButton.enable();}},toggleWarning:function(id,show)
{var infobox=WidgetStore.get('CacheAdminScreen-infobox');if(show===false){infobox.hideWarning(id);}else{infobox.showWarning(id);}},setupClearCacheAction:function()
{var self=this;var warning=dfx.getId('clearCache-rootnode_warning');var rootNodeWidget=WidgetStore.get('clearCache-settings:rootNodes');var addButton=WidgetStore.get('clearCache-add');var confirmButton=WidgetStore.get('clearCache-confirm');if(dfx.isset(addButton)===true){addButton.hide();addButton.addClickEvent(function(){addButton.disable();self.displayDisabledDiv(true);self.assetPicker.init('cache',function(){self.assetPicker.dialog.open();});});}
self.assetPicker.addAssetsSelectedAction(function(selectedAssets){var sLen=selectedAssets.length;if(sLen>0){for(var i=0;i<sLen;i++){rootNodeWidget.addAsset(selectedAssets[i]);}
dfx.hideElement(warning);if(dfx.isset(confirmButton)===true){confirmButton.enable();}}});self.assetPicker.addCloseAction(function(){addButton.enable();});if(dfx.isset(confirmButton)===true){confirmButton.addClickEvent(function(){self.displayDisabledDiv(true,'CacheAdminScreen-infobox_clear_item0','black','absolute');var disabledDiv=dfx.getId('CacheAdminScreen-infobox_clear_item0_disabledDiv');dfx.setStyle(disabledDiv,'opacity','0.15');var params={option:WidgetStore.get('clearCache-option').getValue(),clear:'clear',rootNode:rootNodeWidget.getValue().join(','),screen:self.id+'Widget'};self.parent.processScreen(params,function(data){confirmButton.disable();rootNodeWidget.clear();var clearCacheOption=WidgetStore.get('clearCache-option');var buttonDiv=dfx.getId('clearCache-button');var rootNodeDiv=dfx.getId('clearCache-rootnode');clearCacheOption.uncheckAll();dfx.hideElement(buttonDiv);dfx.hideElement(rootNodeDiv);self.removeDisabledDiv('CacheAdminScreen-infobox_clear_item0');});});}
var clearCacheOption=WidgetStore.get('clearCache-option');if(dfx.isset(clearCacheOption)===true){clearCacheOption.addOnChangeEvent(function(status){self.switchClearCacheStatus(status);});}},setupTimeLine:function(firstDate)
{var date=new Date();var year=date.getFullYear();var month=date.getMonth();var self=this;this.includeWidget('TimeLine',function(){var pane=dfx.getId('timelinePane');if(dfx.isset(pane)===true){var baseDate=new Date(firstDate*1000);var baseTime=baseDate.getTime();var baseYear=baseDate.getFullYear();self.timeLine=this.createWidget(self.id+'-timeLine','TimeLine',[],baseYear,baseTime,year,month,'range',339);var elem=self.timeLine.getElement();dfx.addClass(elem,self.getClass()+'-timeLine');pane.appendChild(elem);var spark=dfx.getId('sparklineContainer');dfx.insertBefore(elem,spark);self.timeLine.disableMonth();self.timeLine.disableDay();self.timeLine.showYear(year);self.timeLine.setSliderActive();self.timeLine.displayMonth(year,month);var content=dfx.getId('TimeLineWidgetType-nav-content');dfx.setStyle(content,'width','136px');self.timeLine.addRangeSliderDraggedEvent(function(start,end){self.refreshChart(start,end,year);});self.timeLine.addPreviousEvent(function(yr){self.refreshSparkline(yr);});self.timeLine.addNextEvent(function(yr){self.refreshSparkline(yr);});}});},refreshChart:function(start,end,year)
{var self=this;var params={start:start,end:end,refresh:'refreshChart',screen:this.id+'Widget'};this.parent.getScreenData(params,function(data){var chart=dfx.getId('cacheReport-barChart');if(dfx.isset(chart)===true){dfx.setHtml(chart,data);}
self.refreshTable(start,end);});},refreshTable:function(start,end)
{var self=this;var params={start:start,end:end,refresh:'refreshTable',screen:this.id+'Widget'};this.parent.getScreenData(params,function(data){var wrapper=dfx.getId('cacheReport-tableContainer');if(dfx.isset(wrapper)===true){dfx.setHtml(wrapper,data);}});},refreshSparkline:function(year,displayMonth)
{var self=this;var params={year:year,refresh:'refreshSparkline',screen:this.id+'Widget'};var display=true;if(dfx.isset(displayMonth)===true&&displayMonth===false){display=false;}
this.parent.getScreenData(params,function(data){var spark=dfx.getId('sparklineContainer');if(dfx.isset(spark)===true){dfx.setHtml(spark,data);}
if(display===true){var date=new Date();var yr=date.getFullYear();if(yr===year){self.timeLine.displayMonth(year,date.getMonth());}else{self.timeLine.displayMonth(year,0);}}});}};dfx.inherits('CacheAdminScreen','AbstractSettingsScreen');function ContentSharingAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='ContentSharingAdminScreen';this.paths=[];this.mode='';this.settings=[];this.keywords={};this.titleField=null;this.valueCont=null;this.selected=null;this.editableElem=null;this.editor=null;this.domElem=dfx.getId(this.id);this.modified={};this.removed={};this.reloadInfo=null;this.readOnlyMsg=null;}
ContentSharingAdminScreenWidgetType.prototype={init:function(data)
{var infobox=WidgetStore.get(this.id+'-infobox');infobox.setUlClassPrefix('Blue');infobox.addSection('contents',null);var self=this;var keywords=data.keywords;this.keywords=keywords;this.reloadInfo=keywords;var firstKey=null;for(var key in keywords){if(keywords.hasOwnProperty(key)===true){self._addInfoboxItem(key,keywords[key]);if(firstKey===null){firstKey=key;}}}
this._createContents(function(){if(self.readOnly===true){var wrapper=self.wrapperElem;self.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(wrapper,el);},function(){var widget=WidgetStore.get('AdminScreenModeWidgetType-tab_pane');if(widget){self.clean();self.setModified(false);widget.showScreen('contentsharing',null,true);}});}
if(firstKey!==null){self.showContent(firstKey);}
self.ready();});},showReadOnlyMessage:function()
{if(!this.readOnlyMsg){var wrapper=this.wrapperElem;var self=this;this.createScreenWarningMessage({id:this.id+'-readOnlyMsg',leftTitle:'Read Only',mainMessage:'This screen is <strong>Read only</strong> because snippet is <strong>marked for deletion</strong>',colour:'red',buttonTitle:null},function(el){dfx.insertBefore(wrapper.firstChild,el);self.readOnlyMsg=el;});}else{dfx.setStyle(this.readOnlyMsg,'display','block');}},removeReadOnlyMessage:function()
{if(this.readOnlyMsg){dfx.setStyle(this.readOnlyMsg,'display','none');}},_addInfoboxItem:function(key,keyword)
{var c=this.getClass()+'-infobox';var main=document.createElement('div');dfx.addClass(main,c+'-wrapper');var content='<span class="'+c+'-title">';content+=keyword.display_name+'</span>';content+='<div class="'+c+'-error"></div>';var readOnlyClass='';if(this.readOnly===true){readOnlyClass='readOnly';}
content+='<div class="'+c+'-delete '+readOnlyClass+'"></div>';content+='<div class="'+c+'-removedLayer"></div>';dfx.setHtml(main,content);var self=this;var infobox=WidgetStore.get(this.id+'-infobox');infobox.addItem('contents',this._getInfoboxItemid(key),main,function(id){return self.showContent(self._getKeyFromInfoboxid(id));});if(this.readOnly!==true){var deleteElem=dfx.getClass(c+'-delete',main)[0];this._addDeleteIconEvent(deleteElem);}},_getInfoboxItemid:function(key)
{return this.id+'_item-'+key;},_getKeyFromInfoboxid:function(id)
{if(id){var s=id.split(this.id+'_item-');if(s.length>0){return s[(s.length-1)];}}
return null;},_addDeleteIconEvent:function(el)
{var self=this;dfx.addEvent(el,'click',function(e){var et=dfx.getMouseEventTarget(e);while(et.nodeName.toLowerCase()!=="li"){et=et.parentNode;}
keyword=self._getKeyFromInfoboxid(et.id);if(!self.removed[keyword]){dfx.addClass(el.parentNode,'removed');self.removed[keyword]=true;self.showReadOnlyMessage();}else{self.removeReadOnlyMessage();dfx.removeClass(el.parentNode,'removed');delete self.removed[keyword];}
self._activateSave();});},_getInfoboxItemElem:function(key)
{var item=dfx.getId(this._getInfoboxItemid(key));var title=dfx.getClass(this.getClass()+'-infobox-title',item)[0];return title;},_createContents:function(callback)
{var container=dfx.getId(this.id+'-container');if(this.hasKeywords()===false){dfx.addClass(container,'noContent');}
var c=this.getClass();var content='<div class="'+c+'-wrapper">';content+='<div class="'+c+'-title">Name</div>';content+='<div class="'+c+'-title-value"></div>';content+='<div class="'+c+'-content">Content<div class="'+c+'-editBtn"></div></div>';content+='<div class="'+c+'-content-value"></div>';content+='<div class="'+c+'-editor">';content+='<div class="'+c+'-editor-toolbar"></div>';content+='<div class="'+c+'-editor-content"></div></div>';content+='</div>';content+='<div class="'+c+'-noContentMsg">There are no snippets.</div>';dfx.setHtml(container,content);var textFieldCont=dfx.getClass(c+'-title-value',container)[0];var valueCont=dfx.getClass(c+'-content-value',container)[0];this.valueCont=valueCont;var toolbarCont=dfx.getClass(c+'-editor-toolbar',container)[0];var editableElem=dfx.getClass(c+'-editor-content',container)[0];this.editableElem=editableElem;this.wrapperElem=dfx.getClass(c+'-wrapper',container)[0];var self=this;this.includeWidgets(['WYSIWYG','TextField'],function(){var editor=self.createWidget(null,'WYSIWYG');self.editor=editor;self._setupEditor(editor,toolbarCont,function(){var title=self.createWidget(null,'TextField');self.titleField=title;title.create(function(el){textFieldCont.appendChild(el);var prevSelected=null;var elem=null;dfx.addEvent(title.inputBox,'keyup',function(){if(prevSelected!==self.selected){elem=self._getInfoboxItemElem(self.selected);prevSelected=self.selected;}
dfx.setHtml(elem,title.getValue());self.updateValues(self.selected);});callback.call(self);});});});},keywordExists:function(index,displayName)
{for(var idx in this.keywords){if(this.keywords.hasOwnProperty(idx)===true){if(parseInt(index)!==parseInt(idx)&&this.keywords[idx].display_name===displayName){return true;}}}
return false;},hasKeywords:function()
{for(var i in this.keywords){if(this.keywords.hasOwnProperty(i)===true){return true;}}
return false;},_setupEditor:function(editor,toolbarCont,callback)
{var self=this;var elem=dfx.getId(self.id+'-formats-editor');editor.setPluginSettings('ViperToolbarPlugin',{parent:toolbarCont});editor.setContentChangedCallback(function(){self._setKeywordModified(self.selected);});editor.load(callback);},addNew:function(newGroupName,value,dispVal)
{var container=dfx.getId(this.id+'-container');dfx.removeClass(container,'noContent');var id=dfx.getUniqueId();var keyword={value:value||'New snippet',display_name:(newGroupName||this._getNewKeywordName()),dispVal:dispVal||'New snippet'};this.keywords[id]=keyword;this._addInfoboxItem(id,keyword);this._setKeywordModified(id);this.showContent(id);},_getNewKeywordName:function(index)
{index=index||1;var keyword='New Keyword '+index;if(this.keywordExists(-1,keyword)===true){return this._getNewKeywordName(index+1);}
return keyword;},removeSnippet:function(key)
{var elem=dfx.getId(this.id+'_item-'+key);if(elem){var removeButton=dfx.getClass(this.getClass()+'-infobox-delete',elem)[0];if(removeButton){dfx.trigger(removeButton,'click');}}},showContent:function(key,noUpdate)
{if(!this.keywords[key]){return false;}
this.displayDisabledDiv(true);if(this.selected!==null&&noUpdate!==false){var self=this;this.updateValues(this.selected,function(){self.showContent(key,false);});return;}
var keyword=this.keywords[key];this.titleField.setValue(keyword.display_name);this.selected=key;if(this.readOnly===true||this.removed[key]===true){dfx.setHtml(this.valueCont,keyword.dispVal);this.setChildrenReadOnly(true);this.removeDisabledDiv(null,true);if(this.removed[key]===true){this.showReadOnlyMessage();}}else{this.showEditContents();this.setChildrenReadOnly(false);this.removeReadOnlyMessage();}
var infobox=WidgetStore.get(this.id+'-infobox');infobox.setSelected(key);infobox.setItem(this._getInfoboxItemid(key));},updateValues:function(key,callback)
{if(!this.keywords[key]){if(callback){callback.call(this);}
return;}
var requestid=dfx.getUniqueId();this.requestid=requestid;var value=this.titleField.getValue();if(this.keywords[key].display_name!==value){this.keywords[key].display_name=value;this._setKeywordModified(key);}
if(dfx.hasClass(dfx.getClass(this.getClass()+'-wrapper',this.domElem),'editing')===true){var html=this.editor.getHtml();if(this.keywords[key].value!==html){this.keywords[key].value=html;}}
if(callback){callback.call(self);}},_setKeywordModified:function(key)
{if(key){this._activateSave();this.modified[key]=true;}},_activateSave:function()
{this.setModified(true);},showEditContents:function()
{var self=this;dfx.addClass(dfx.getClass(self.getClass()+'-wrapper',self.domElem),'editing');try{self.editor.setElement(self.editableElem,'inline');}catch(e){}
try{self.editor.setHtml(self.keywords[self.selected].value,function(){self.editor.enable();self.removeDisabledDiv(null,true);});}catch(e){}},hideEditContents:function()
{dfx.removeClass(dfx.getClass(this.getClass()+'-wrapper',this.domElem),'editing');},saveSettings:function()
{this.updateValues(this.selected);var mln=this.modified.length;var keywords={};var self=this;dfx.foreach(this.modified,function(key){keywords[key]=self.keywords[key];});var params={screen:this.id+'Widget',keywords:dfx.jsonEncode(keywords),removed:dfx.jsonEncode(this.removed)};this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){self._processSaveResult(data);},true);},_processSaveResult:function(result)
{if(!result){return;}
var changes=null;if(!result.errors){changes=result;}else if(result.changes){changes=result.changes;}
if(changes){var self=this;if(changes.removed){dfx.foreach(changes.removed,function(key){self._removeKeyword(changes.removed[key]);delete self.removed[changes.removed[key]];});}
if(changes.added){dfx.foreach(changes.added,function(key){var newKey=changes.added[key];self.keywords[newKey]=self.keywords[key];delete self.keywords[key];delete self.modified[key];var infobox=WidgetStore.get(self.id+'-infobox');infobox.changeItemid(self._getInfoboxItemid(key),self._getInfoboxItemid(newKey));if(self.selected===key){self.selected=newKey;}});}
if(this.hasKeywords()===false){var container=dfx.getId(this.id+'-container');dfx.addClass(container,'noContent');}else{if(this.keywords.hasOwnProperty(this.selected)===false){var self=this;for(var k in this.keywords){setTimeout(function(){self.showContent(k);},1000);break;}}else if(!result.errors){this.removeDisabledDiv(null,true);this.setModified(false);return;}}}
if(!result.errors){this.removeDisabledDiv(null,true);this.setModified(false);}else{this._activateSave();}},_removeKeyword:function(key)
{if(this.keywords[key]){var elem=dfx.getId(this._getInfoboxItemid(key));if(elem){dfx.remove(elem);delete this.keywords[key];}}},setChildrenReadOnly:function(readOnly)
{this.titleField.setReadOnly(readOnly);if(readOnly===true){this.hideEditContents();}},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var infobox=WidgetStore.get(this.id+'-infobox');infobox.setReadOnly(readOnly);if(readOnly!==true){var self=this;infobox.addNewButton(function(newGroupName){self.addNew(newGroupName);});if(this.readOnly!==true){var elem=dfx.getId(this.id+'-infobox');if(elem){dfx.removeClass(dfx.getClass(this.getClass()+'-infobox-delete',elem),'readOnly');}}}},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){self.saveSettings();},function(){var widget=WidgetStore.get('AdminScreenModeWidgetType-tab_pane');if(widget){self.clean();widget.showScreen('contentsharing',null,true);}});},switchOffScreen:function()
{this.disableSaveButton();},getAutoSaveContents:function()
{this.updateValues(this.selected);var mln=this.modified.length;var keywords={};var self=this;dfx.foreach(this.modified,function(key){keywords[key]=self.keywords[key];});var saveData={keywords:keywords,removed:this.removed};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(!content){return;}
var self=this;if(content.keywords){dfx.foreach(content.keywords,function(i){var keyword=content.keywords[i];self._removeKeyword(i);self.addNew(keyword.display_name,keyword.value,keyword.dispVal);});}
if(content.removed){dfx.foreach(content.removed,function(i){self.removeSnippet(i);});}},clean:function()
{this.keywords=null;this.titleField=null;this.valueCont=null;this.selected=null;this.editableElem=null;this.editor=null;this.domElem=null;this.modified=null;this.removed=null;this.reloadInfo=null;this.readOnlyMsg=null;dfx.empty(dfx.getId(this.id+'-container'));dfx.empty(dfx.getId(this.id+'-infobox'));}};dfx.inherits('ContentSharingAdminScreen','AbstractSettingsScreen');function ContextSystemConfigScreenWidgetType(id,screenid,system,title,parent)
{AbstractSettingsScreenWidgetType.call(this,id);this.widgetType='ContextSystemConfigScreen';this.screenid=screenid;this.system=system;this.title=title;this.parent=parent;this._removedContexts={};this._updatedContexts={};this._restoredContexts={};}
ContextSystemConfigScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);if(readOnly===true){var contEl=dfx.getId('ContextSystemConfigScreen');if(!contEl){return;}
dfx.addClass(contEl,'readOnly');this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('ContextSystemConfigScreen-info'),el);},function(){dfx.removeClass(contEl,'readOnly');});}},init:function(data)
{var self=this;this.includeWidgets(['TextField','Button'],function(){self._initContexts(dfx.jsonDecode(data.contexts));self.ready();});},_initContexts:function(contexts,update)
{this._removedContexts={};this._updatedContexts={};this._restoredContexts={};var self=this;var c=this.getClass();for(var lvl in contexts){if(contexts.hasOwnProperty(lvl)===false){continue;}
var container=dfx.getId(this.id+'-lvl'+lvl);var removedCont=dfx.getId(this.id+'-lvl'+lvl+'-removed');var ln=contexts[lvl].length;dfx.empty(container);dfx.empty(removedCont);if(ln===0){var emptyContents='<p class="'+c+'-noContext" style="padding: 10px;">';emptyContents+='No Contexts have been defined for this level</p>';dfx.setHtml(container,emptyContents);}
for(var i=0;i<ln;i++){if(contexts[lvl][i].removed===true){this._createRecoverItem(lvl+'-'+contexts[lvl][i].id,contexts[lvl][i].name,removedCont);}else{this._createContextItem(lvl+'-'+contexts[lvl][i].id,contexts[lvl][i].name,contexts[lvl][i].abbr,container,contexts[lvl][i]);}}
if(update!==true){jQuery(container).sortable({axis:'y',containment:'parent',handle:'div.'+c+'-handle',tolerance:'pointer',stop:function(){self.setModified(true);}});var buttonCont=dfx.getClass(c+'-contextList-button',dfx.getId(this.id+'-level'+lvl))[0];var button=this.createWidget(null,'Button');button.setName('Add New');(function(level){button.addClickEvent(function(){self.addNew(level);})}).call(this,lvl);button.create(function(el){buttonCont.appendChild(el);});}}},addNew:function(lvl)
{var id='new-'+dfx.getUniqueId();var container=dfx.getId(this.id+'-lvl'+lvl);var obj={id:id,name:'',abbr:'',level:lvl};if(dfx.getTag('p',container).length!==0){dfx.empty(container);}
this._createContextItem(id,'','',container,obj);this.setModified(true);},_createContextItem:function(id,name,abbr,parentCont,context)
{var c=this.getClass();var main=document.createElement('div');main.id=id;dfx.addClass(main,c+'-itemWrapper');var content='<div class="'+c+'-handle" ></div>';content+='<div class="'+c+'-nameCont" ></div>';content+='<div class="'+c+'-abbrCont" ></div>';content+='<div class="'+c+'-deleteOverlay" ></div>';content+='<div class="'+c+'-delete" ></div>';dfx.setHtml(main,content);var nameWidget=this.createWidget(id+'-name','TextField');var abbrWidget=this.createWidget(id+'-abbr','TextField');nameWidget.setDefaultText('Name');abbrWidget.setDefaultText('Abbr.');var abbrSet=false;if(abbr!==''){abbrSet=true;}
nameWidget.create(function(el){nameWidget.setValue(name);nameWidget.setWidth(162);dfx.getClass(c+'-nameCont',main)[0].appendChild(el);});var self=this;nameWidget.addOnChangeEvent(function(val){self.setModified(true);context.name=val;self._updatedContexts[id]=context;if(abbrSet!==true){abbrWidget.setValue(val.substr(0,6));context.abbr=val.substr(0,6);}});abbrWidget.create(function(el){abbrWidget.setValue(abbr);abbrWidget.setWidth(50);abbrWidget.input.setAttribute('maxlength',6);dfx.getClass(c+'-abbrCont',main)[0].appendChild(el);});abbrWidget.addOnChangeEvent(function(val){abbrSet=true;self.setModified(true);context.abbr=val;self._updatedContexts[id]=context;if(val===''||val==='Abbr.'){abbrSet=false;}});dfx.addEvent(dfx.getClass(c+'-delete',main),'click',function(){if(dfx.hasClass(main,'removed')===true){self.recoverDeleted(id);}else{self.markForDeletion(id);}});if(parentCont){parentCont.appendChild(main);}},recoverDeleted:function(id)
{if(this._removedContexts[id]){delete this._removedContexts[id];this.setModified(true);var elem=dfx.getId(id);if(elem){dfx.removeClass(elem,'removed');}}},markForDeletion:function(id)
{this._removedContexts[id]=true;this.setModified(true);var elem=dfx.getId(id);if(elem){dfx.addClass(elem,'removed');}},_createRecoverItem:function(id,name,parentCont)
{var c=this.getClass();var main=document.createElement('div');main.id=id;dfx.addClass(main,c+'-itemWrapper recover');var content='<div class="'+c+'-name">'+name+'</div>';content+='<div class="'+c+'-restoreBtnCont"></div>';content+='<div class="'+c+'-recover">Press Save...</div>';dfx.setHtml(main,content);var cont=dfx.getClass(c+'-restoreBtnCont',main)[0];var button=this.createWidget(null,'Button','ButtonWidgetType-black');button.setName('Restore');var self=this;button.addClickEvent(function(){dfx.removeClass(main,'recover');dfx.addClass(main,'restore');dfx.remove(cont);self._restoredContexts[id]=true;self.setModified(true);},true);button.create(function(el){if(cont){cont.appendChild(el);}});parentCont.appendChild(main);},saveConfig:function()
{var sortOrders={};var c=this.getClass();for(var lvl=1;lvl<4;lvl++){var items=dfx.getClass(c+'-itemWrapper',dfx.getId(this.id+'-lvl'+lvl));var ln=items.length;var order=1;for(var i=0;i<ln;i++){if(dfx.hasClass(items[i],'removed')===true){continue;}
sortOrders[items[i].id]=order++;}}
var self=this;var params={screen:this.id+'Widget',op:'save',sortOrders:dfx.jsonEncode(sortOrders),updated:dfx.jsonEncode(this._updatedContexts),removed:dfx.jsonEncode(this._removedContexts),restored:dfx.jsonEncode(this._restoredContexts)};this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){self._initContexts(data,true);self.setModified(false);var toolbarContextWidget=WidgetStore.get('ContextSwitcherEditingToolbarIcon');if(toolbarContextWidget){toolbarContextWidget.createButton();}else{self.includeWidget('ContextSwitcherEditingToolbarIcon',function(){var toolbarContextWidget=self.createWidget('ContextSwitcherEditingToolbarIcon','ContextSwitcherEditingToolbarIcon',true);toolbarContextWidget.createButton();});}
self.removeDisabledDiv(null,true);},true);},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){self.saveConfig();},function(){self.revert();});},switchOffScreen:function(){}};dfx.inherits('ContextSystemConfigScreen','AbstractSettingsScreen');function CronSystemConfigScreenWidgetType(id,screenid,system,title,parent)
{AbstractSettingsScreenWidgetType.call(this,id);this.widgetType='CronSystemConfigScreen';this.screenid=screenid;this.system=system;this.title=title;this.parent=parent;this.scriptsWdgt=null;this.intervals={};this.hasChanges={};this.scriptsDynamicDiv=WidgetStore.get(this.id+'-scripts-dynamicDiv');this.children.push(this.id+'-freq-frequent');this.children.push(this.id+'-freq-hourly');this.children.push(this.id+'-freq-daily-hour');this.children.push(this.id+'-freq-daily');}
CronSystemConfigScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var scriptsWdgt=WidgetStore.get('CronScripts');if(scriptsWdgt){scriptsWdgt.setReadOnly(readOnly);}},init:function(data)
{var self=this;this.scriptsDynamicDiv.changeContent({action:'paintScreen',mode:'SystemConfigScreenMode',screen:'CronSystemConfigScreenWidget',type:'scriptsDynamicDiv'},function(data){self.scriptsWdgt=WidgetStore.get('CronScripts');self.scriptsWdgt.hasChanges=self.hasChanges;self.scriptsWdgt.setReadOnly(self.readOnly);});if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('CronScripts-cronScripts').parentNode,el);},function(){});}
this.intervals=data.intervals;this.addEvents();this.ready();},addEvents:function()
{var self=this;var f=WidgetStore.get(this.id+'-freq-frequent');var h=WidgetStore.get(this.id+'-freq-hourly');var dh=WidgetStore.get(this.id+'-freq-daily-hour');var d=WidgetStore.get(this.id+'-freq-daily');f.addOnChangeEvent(function(){var val=parseInt(this.getValue(),10);if(val!==self.intervals.frequent){self.hasChanges.frequent=true;}else{delete self.hasChanges.frequent;}
self._checkChanges();});h.addOnChangeEvent(function(){var val=parseInt(this.getValue(),10);if(val!==self.intervals.hourly){self.hasChanges.hourly=true;}else{delete self.hasChanges.hourly;}
self._checkChanges();});dh.addOnChangeEvent(function(){var val=parseInt(this.getValue(),10);if(val!==self.intervals.dailyh){self.hasChanges.dailyh=true;}else{delete self.hasChanges.dailyh;}
self._checkChanges();});d.addOnChangeEvent(function(){var val=parseInt(this.getValue(),10);if(val!==self.intervals.dailym){self.hasChanges.dailym=true;}else{delete self.hasChanges.dailym;}
self._checkChanges();});},_checkChanges:function()
{var noChange=true;for(var id in this.hasChanges){if(this.hasChanges[id]===true){this.setModified(true);noChange=false;break;}}
if(noChange===true){this.setModified(false);}},saveCronConfig:function()
{this.removeToolbarButton('save_cron');var changes=this.getStatusChanges();var params={frequency:dfx.jsonEncode(changes),interval:dfx.jsonEncode(this.scriptsWdgt.getChanges('interval')),enabled:dfx.jsonEncode(this.scriptsWdgt.getChanges('enabled')),screen:this.id+'Widget',op:'saveCron'};var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){WidgetStore.remove('CronScripts');self.scriptsDynamicDiv.changeContent({action:'paintScreen',mode:'SystemConfigScreenMode',screen:'CronSystemConfigScreenWidget',type:'scriptsDynamicDiv'},function(data){delete self.scriptsWdgt;self.scriptsWdgt=WidgetStore.get('CronScripts');self.switchOnScreen();self.removeDisabledDiv();});self.hasChanges={};self.setModified(false);self.intervals={frequent:parseInt(changes[0].min,10),hourly:parseInt(changes[1].min,10),dailyh:parseInt(changes[2].hour,10),dailym:parseInt(changes[2].min,10)};},true);},getStatusChanges:function()
{var changes=[];changes.push({type:'frequent',min:WidgetStore.get(this.id+'-freq-frequent').getValue()});changes.push({type:'hourly',min:WidgetStore.get(this.id+'-freq-hourly').getValue()});changes.push({type:'daily',hour:WidgetStore.get(this.id+'-freq-daily-hour').getValue(),min:WidgetStore.get(this.id+'-freq-daily').getValue()});return changes;},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){self.saveCronConfig();},function(){self.revert();self.scriptsWdgt.revert();});},revert:function()
{this.hasChanges={};this.setModified(false);var f=WidgetStore.get(this.id+'-freq-frequent');var h=WidgetStore.get(this.id+'-freq-hourly');var dh=WidgetStore.get(this.id+'-freq-daily-hour');var d=WidgetStore.get(this.id+'-freq-daily');f.setValue(this.intervals.frequent);h.setValue(this.intervals.hourly);dh.setValue(this.intervals.dailyh);d.setValue(this.intervals.dailym);this.removeDisabledDiv();},switchOffScreen:function(){}};dfx.inherits('CronSystemConfigScreen','AbstractSettingsScreen');function DesignAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='DesignAdminScreen';this.designid=null;this.lastDesignid=null;this.isDesign=true;this.newDesignCount=0;this.currentTabIndex=0;this.tabsWidget=WidgetStore.get((this.id+'-designTabs'));this.parseTextAreaWidget=WidgetStore.get((this.id+'-parseFile'));this.cssTextAreaWidget=WidgetStore.get((this.id+'-cssFile'));this.jsTextAreaWidget=WidgetStore.get((this.id+'-jsFile'));this.parseTextUpdated=false;this.cssTextUpdated=false;this.jsTextUpdated=false;this.assocFilesHidden=false;this.designInfo=WidgetStore.get(this.id+'-infobox');this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen('designAdmin');this.assetPicker.addProjectFolderWhiteList('designAdmin','Documents');this.assetPicker.addProjectFolderWhiteList('designAdmin','Images');this.assetPicker.addProjectFolderWhiteList('designAdmin','Movies');var self=this;Widget.registerWindowResize(function(e){self.resizeTextAreas();});this.designTabsWdgt=WidgetStore.get(this.id+'-designTabs');this.interventionOpened={};}
DesignAdminScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);this.designInfo.setReadOnly(readOnly);var designRmBtns=dfx.getClass(this.id+'-InfoBoxDesignRemove',dfx.getId(this.designInfo.id+'_body'));var btnLn=designRmBtns.length;for(var i=0;i<btnLn;i++){if(readOnly){dfx.hideElement(designRmBtns[i]);}else{dfx.showElement(designRmBtns[i]);}}
var nameTextField=WidgetStore.get(this.id+'-detailsNameField');nameTextField.setReadOnly(readOnly);this.parseTextAreaWidget.setReadOnly(readOnly);this.cssTextAreaWidget.setReadOnly(readOnly);this.jsTextAreaWidget.setReadOnly(readOnly);},screenModified:function()
{var self=this;var modified=false;dfx.foreach(this.changes,function(id){if(self.changes[id]===true){modified=true;return false;}
return true;});this.setModified(modified);},init:function(data)
{var self=this;this.includeWidgets(['Intervention','TextField','AssetPicker','AssociatedFileUpload','TextField','Select','ToggleButton','AssetPicker','MenuDesignAreaParentSelector','Button','ProgressBar'],function(){var _gatherDesignList=function(customisations,lvl,pid){var level=lvl||0;var pid=pid||null;for(var id in customisations){if(customisations.hasOwnProperty(id)){self.designs.push({id:id,name:customisations[id].name,lvl:level,pid:pid});if(customisations[id].customs){_gatherDesignList(customisations[id].customs,(level+1),id);}}}};if(this.lastDesignid!==null){this.designid=this.lastDesignid;}else{this.designid=data.designid;}
this.customisations=dfx.jsonDecode(data.customisations);this.usageInfo=dfx.jsonDecode(data.usageInfo);this.designs=[];_gatherDesignList(this.customisations);this.changes={};this.designData={};this.designDataOri={};this.designAreas=dfx.jsonDecode(data.designAreas);this.assocFiles=dfx.jsonDecode(data.assocFiles);var dLen=this.designs.length;for(var i=0;i<dLen;i++){var did=this.designs[i].id;this.designData[did]={details:{},html:null,css:null,javascript:null,designAreas:{},deletion:false,lastTab:null};if(this.designs[i].lvl===0){this.designData[did].type='design';}else{this.designData[did].type='customisation';}
this.designData[did].pid=this.designs[i].pid;this.designData[did].details.name=this.designs[i].name;this.designData[did].details.customisations=[];if(this.customisations[did]&&this.customisations[did].customs){for(var custid in this.customisations[did].customs){if(this.customisations[did].customs.hasOwnProperty(custid)){this.designData[did].details.customisations.push({id:custid,name:this.customisations[did].customs[custid].name,markForDeletion:false});}}}
this.designData[did].details.usages=[];this.designData[did].details.remap=0;this.designData[did].parseFileLoaded=false;this.designData[did].html=null;this.designData[did].css=null;this.designData[did].javascript=null;this.designData[did].designAreas={};if(this.designAreas[did]&&this.designAreas[did]!==null){this.designData[did].designAreas=dfx.clone(this.designAreas[did]);}
this.designData[did].associatedFileUpload=WidgetStore.get(this.id+'-associatedFileUpload-'+did)||null;this.designData[did].associatedFiles=dfx.clone(this.assocFiles[did]);this.designDataOri[did]={};this.designDataOri[did].details=dfx.clone(this.designData[did].details);this.designDataOri[did].html=dfx.clone(this.designData[did].html);this.designDataOri[did].css=dfx.clone(this.designData[did].css);this.designDataOri[did].javascript=dfx.clone(this.designData[did].javascript);this.designDataOri[did].designAreas=dfx.clone(this.designData[did].designAreas);}
this.designInfo.reset();this.designInfo.setTitle('Design Manager');this.designInfo.setUlClassPrefix('Blue');this.designInfo.addSection('designs',null);this.designInfo.setSelected(this.designid);this.createDesignInfoBox(data.designs,data.designsInUse);if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('DesignAdminScreen-designTabs'),el);},function(){self.resizeTextAreas();});}
this.setDetailsData(this.designid,this.readOnly);this.setParseFilesData(this.designid,this.readOnly,function(){self.setAssociatedFilesData(self.designid,self.readOnly,function(){self.setDesignAreasData(self.designid,self.readOnly,function(){dfx.addClass(self.parseTextAreaWidget.getTextAreaElement(),'whiteOnBlack');dfx.addClass(self.cssTextAreaWidget.getTextAreaElement(),'whiteOnBlack');dfx.addClass(self.jsTextAreaWidget.getTextAreaElement(),'whiteOnBlack');self.resizeTextAreas(self.readOnly);var nameTextField=WidgetStore.get(self.id+'-detailsNameField');dfx.addEvent(nameTextField.input,'keyup',function(e){var infoLabel=dfx.getClass(self.id+'-InfoBoxDesignTitle',dfx.getId(self.designid))[0];var newVal=nameTextField.input.value;if(infoLabel){infoLabel.innerHTML=newVal+'&nbsp;[#'+self.designid+']';}else{var infoCustomLabel=dfx.getClass(self.id+'-InfoBoxCustomTitle',dfx.getId(self.designid))[0];infoCustomLabel.innerHTML=newVal+'&nbsp;[#'+self.designid+']';}
if(newVal!==self.designDataOri[self.designid].details.name){self.changes[self.designid+':name']=true;}else{self.changes[self.designid+':name']=false;}
self.screenModified();});dfx.addEvent(dfx.getId(self.id+'-parseFile'),'keyup',function(e){if(dfx.isset(self.designDataOri[self.designid].html)&&self.designDataOri[self.designid].html!==self.parseTextAreaWidget.getValue()){self.changes[self.designid+':parseFile']=true;}else{self.changes[self.designid+':parseFile']=false;}
self.screenModified();});dfx.addEvent(dfx.getId(self.id+'-cssFile'),'keyup',function(e){if(dfx.isset(self.designDataOri[self.designid].css)&&self.designDataOri[self.designid].css!==self.cssTextAreaWidget.getValue()){self.changes[self.designid+':css']=true;}else{self.changes[self.designid+':css']=false;}
self.screenModified();});dfx.addEvent(dfx.getId(self.id+'-jsFile'),'keyup',function(e){if(dfx.isset(self.designDataOri[self.designid].javascript)&&self.designDataOri[self.designid].javascript!==self.jsTextAreaWidget.getValue()){self.changes[self.designid+':javascript']=true;}else{self.changes[self.designid+':javascript']=false;}
self.screenModified();});});});});});this.ready();},resizeTextAreas:function()
{var dim=dfx.getWindowDimensions();var offset=337;var rod=dfx.getId(this.id+'-readOnlyMsg');if(rod){offset+=37;}
if(dim.height<514){var newHeight=200;}else if(dim.height>=514){var newHeight=(dim.height-offset);}
var width=0;if(dim.width>1500){if(this.assocFilesHidden===true){width=1099;}else{width=757;}}else if(dim.width<=1120){if(this.assocFilesHidden===true){width=710;}else{width=368;}}else{if(this.assocFilesHidden===true){width=(dim.width-400);}else{width=(dim.width-752);}}
dfx.setStyle(dfx.getId('DesignAdminScreen-associatedFiles'),'left',(width+10)+'px');var ids=['-parseFile','-cssFile','-jsFile','-parseFile-readOnly','-cssFile-readOnly','-jsFile-readOnly'];idsLen=ids.length;for(var j=0;j<idsLen;j++){dfx.setStyle(dfx.getId(this.id+ids[j]),'height',newHeight+'px');dfx.setStyle(dfx.getId(this.id+ids[j]),'width',width+'px');}},displayIntervention:function(elem,text,type)
{this.removeDisabledDiv(true);if(dfx.isset(this.interventionOpened[type])===false||(dfx.isset(this.interventionOpened[type])===true&&this.interventionOpened[type]===false)){var self=this;var iw=self.createWidget('inter','Intervention',null,function(){self.interventionOpened[type]=false;});iw.setCancelText(null);iw.setConfirmText('Close');iw.create(function(){iw.setSize('200px','61px');iw.setMessage(text);iw.show(elem,'fixed');self.interventionOpened[type]=true;});}},createDesignInfoBox:function(designs,designsInUse)
{var self=this;var _batchCustomisations=function(designid,callback,lastCallback){if(self.customisations[designid].customs){for(var id in self.customisations[designid].customs){if(self.customisations[designid].customs.hasOwnProperty(id)){callback.call(self,id);}}
if(dfx.isFn(lastCallback)){lastCallback.call(self,id);}}};var _showCustomisations=function(designid){_batchCustomisations(designid,function(id){self.designInfo.showItem(id);});};var _hideCustomisations=function(designid){_batchCustomisations(designid,function(id){self.designInfo.hideItem(id);});};var _groupCustomisations=function(designid){if(self.customisations[designid].customs){_batchCustomisations(designid,function(cid){var li=dfx.getId(cid);if(dfx.hasClass(li,'deleted')===false){dfx.addClass(li,self.widgetType+'-InfoBoxDesignCustomGrouped');}},function(cid){var li=dfx.getId(cid);if(dfx.hasClass(li,'deleted')===false){dfx.addClass(dfx.getId(cid),self.widgetType+'-InfoBoxDesignCustomGrouped-last');}});}};var _groupCustomisationsGrey=function(designid,custid){var li=dfx.getId(designid);dfx.addClass(li,self.widgetType+'-InfoBoxDesignCustomGroupedGrey');if(self.customisations[designid].customs){_batchCustomisations(designid,function(cid){if(cid!==custid){var li=dfx.getId(cid);if(dfx.hasClass(li,'deleted')===false){dfx.addClass(li,self.widgetType+'-InfoBoxDesignCustomGroupedGrey');}}},function(cid){var li=dfx.getId(cid);if(dfx.hasClass(li,'deleted')===false){dfx.addClass(li,self.widgetType+'-InfoBoxDesignCustomGroupedGrey-last');}});}};var _createNewDesignCustomisationItem=function(isCustom,did,title){var content=[];var infoBoxCustomWrap=document.createElement('div');var infoBoxCustomTitle=document.createElement('div');var infoBoxCustomNotInUse=document.createElement('div');var classType='Design';if(isCustom){classType='Custom';}
dfx.addClass(infoBoxCustomWrap,self.widgetType+'-InfoBox'+classType+'Wrapper');dfx.addClass(infoBoxCustomTitle,self.widgetType+'-InfoBox'+classType+'Title');if(typeof title==='string'){dfx.setHtml(infoBoxCustomTitle,dfx.ellipsize(title,24));}else{infoBoxCustomTitle.appendChild(title);}
infoBoxCustomTitle.setAttribute('title',title+' [#'+did+']');infoBoxCustomWrap.appendChild(infoBoxCustomTitle);if(dfx.inArray(parseInt(did),designsInUse)===false){dfx.addClass(infoBoxCustomNotInUse,self.widgetType+'-InfoBoxCustomNotInUse');dfx.setHtml(infoBoxCustomNotInUse,'&nbsp;');infoBoxCustomWrap.appendChild(infoBoxCustomNotInUse);}
var infoBoxCustomRemove=document.createElement('div');if(isCustom){dfx.addClass(infoBoxCustomRemove,self.widgetType+'-InfoBoxCustomRemove');}else{dfx.addClass(infoBoxCustomRemove,self.widgetType+'-InfoBoxDesignRemove');}
dfx.setHtml(infoBoxCustomRemove,'&nbsp;');if(self.readOnly===true){dfx.hideElement(infoBoxCustomRemove);}
infoBoxCustomWrap.appendChild(infoBoxCustomRemove);return infoBoxCustomWrap;};var _designCustomisationOnclickCallback=function(id,e){self.displayDisabledDiv(true);for(var designid in self.customisations){if(self.customisations.hasOwnProperty(designid)){dfx.removeClass(dfx.getId(designid),self.widgetType+'-InfoBoxDesignCustomGroupedGrey');_batchCustomisations(designid,function(cid){dfx.removeClass(dfx.getId(cid),self.widgetType+'-InfoBoxDesignCustomGroupedGrey');dfx.removeClass(dfx.getId(cid),self.widgetType+'-InfoBoxDesignCustomGroupedGrey-last');dfx.removeClass(dfx.getId(cid),self.widgetType+'-InfoBoxDesignCustomGrouped');dfx.removeClass(dfx.getId(cid),self.widgetType+'-InfoBoxDesignCustomGrouped-last');});}}
var readOnly=false;var et=dfx.getMouseEventTarget(e);var remove=dfx.hasClass(et,self.widgetType+'-InfoBoxDesignRemove');var customRemove=dfx.hasClass(et,self.widgetType+'-InfoBoxCustomRemove');self.isDesign=dfx.hasClass(et,self.widgetType+'-InfoBoxDesignTitle')||dfx.hasClass(et,self.widgetType+'-InfoBoxDesignNotInUse');if(dfx.getMouseEventTarget(e).tagName.toLowerCase()==='li'){if(self.designData[parseInt(dfx.getMouseEventTarget(e).id)].pid===null){self.isDesign=true;}else{self.isDesign=false;}}
if(remove||self.isDesign){self.isDesign=true;for(var designid in self.customisations){if(designid!==id){_hideCustomisations(designid);}}
_showCustomisations(id);_groupCustomisations(id);if(remove&&self.designData[id].deletion===false){var canRemove=true;var c=0;for(var did in self.designData){if(self.designData.hasOwnProperty(did)===true){if(self.designData[did].pid===null&&self.designData[did].deletion===false){c++;}}}
if(c===1){var btn=dfx.getClass('DesignAdminScreen-InfoBoxDesignRemove',dfx.getId(id))[0];self.displayIntervention(btn,'Please remap this customisation before deletion.',1);canRemove=false;}
if(self.usageInfo[id]&&self.usageInfo[id].length>0){self.designData[id].details.remap=WidgetStore.get(self.id+'-remap-assetPicker').getValue();}
if(canRemove){for(var did in self.designData){if(self.designData.hasOwnProperty(did)===true){if(self.designData[did].details.remap===id){canRemove=false;break;}}}
if(!canRemove){var btn=dfx.getClass('DesignAdminScreen-InfoBoxDesignRemove',dfx.getId(id))[0];self.displayIntervention(btn,'Design is remapped to by other design or customisation.',2);return;}else{if(dfx.inArray(parseInt(id),designsInUse)===true){if(parseInt(self.designData[id].details.remap)===0){canRemove=false;var btn=dfx.getClass('DesignAdminScreen-InfoBoxDesignRemove',dfx.getId(id))[0];self.displayIntervention(btn,'Please remap this design before deletion.',3);return;}else{var remappingid=self.designData[id].details.remap;if(self.designData[remappingid].deletion===true){canRemove=false;self.errorDialog('Remapping design is scheduled for deletion.<br />Please select other design.','Design Remap Required',function(){});return;}}}}}
if(canRemove){self.designData[id].deletion=true;self.changes[id+':delete']=true;dfx.addClass(et,'recover');self.designInfo.addCustomiseSelectedClassName(id,'deleted',true,true);var cln=self.designData[id].details.customisations.length;for(var i=0;i<cln;i++){var cid=self.designData[id].details.customisations[i].id;if(i===(cln-1)){self._setCustomisationForDeletion(cid,false,true,true);}else{self._setCustomisationForDeletion(cid,false,false,true);}}
self.screenModified();}}else if(remove&&self.designData[id].deletion===true){self.designData[id].deletion=false;self.changes[id+':delete']=false;dfx.removeClass(et,'recover');dfx.removeClass(dfx.getId(id),'deleted');self.designInfo.addCustomiseSelectedClassName(id,'selected',false,true);var cln=self.designData[id].details.customisations.length;for(var i=0;i<cln;i++){var cid=self.designData[id].details.customisations[i].id;if(i===(cln-1)){self._setCustomisationForDeletion(cid,true,true);}else{self._setCustomisationForDeletion(cid,true);}}
self.screenModified();}}else{var parentDesignid=null;for(var j=0;j<dlen;j++){if(self.designs[j].id===id){parentDesignid=self.designs[j].pid;}}
_groupCustomisationsGrey(parentDesignid,id);if(customRemove){var customMarkForDel=null;if(self.designData[parseInt(id)].deletion===true){self._setCustomisationForDeletion(id,true);self.designData[parseInt(id)].deletion=false;customMarkForDel=false;}else{if(self.usageInfo[id]&&parseInt(self.designData[id].details.remap)===0){var btn=dfx.getClass('DesignAdminScreen-InfoBoxCustomRemove',dfx.getId(id))[0];self.displayIntervention(btn,'Please remap this customisation before deletion.',4);}else{self._setCustomisationForDeletion(id,false);self.designData[parseInt(id)].deletion=true;customMarkForDel=true;}}
if(customMarkForDel!==null){var parentid=self.designData[id].pid;var cln=self.designData[parentid].details.customisations.length;for(var i=0;i<cln;i++){if(id===self.designData[parentid].details.customisations[i].id){self.designData[parentid].details.customisations[i].markForDeletion=customMarkForDel;break;}}}}}
self.getDetailsData(self.designid);self.getParseFilesData(self.designid);self.getDesignAreasData(self.designid);self.getAssociatedFilesData(self.designid);self.designid=id;readOnly=false;if(self.designData[id].pid===null){if(self.designData[id].deletion===true){readOnly=true;}}else{var parentid=self.designData[id].pid;if(self.designData[parentid].deletion===true){readOnly=true;}else{if(self.designData[id].deletion===true){readOnly=true;}
var cln=self.designData[parentid].details.customisations.length;for(var i=0;i<cln;i++){if(id===self.designData[parentid].details.customisations[i].id&&self.designData[parentid].details.customisations[i].markForDeletion===true){readOnly=true;break;}}}}
if(self.designData[id].pid===null){self.designTabsWdgt.showTab(1);self.designTabsWdgt.showTab(3);if(self.designData[id].lastTab!==null){self.designTabsWdgt.selectTab(self.designData[id].lastTab);self.designData[id].lastTab=null;}}else{var currTabIdx=self.designTabsWdgt.getCurrentTabIndex();if(dfx.inArray(currTabIdx,[1,3])===true){self.designTabsWdgt.selectTab(0);self.designData[self.designData[id].pid].lastTab=currTabIdx;}
self.designTabsWdgt.hideTab(1);self.designTabsWdgt.hideTab(3);}
var setAll=function(){if(self.readOnly===true){readOnly=true;}
self.setDetailsData(self.designid,readOnly);self.setParseFilesData(self.designid,readOnly,function(){self.setAssociatedFilesData(self.designid,readOnly,function(){self.setDesignAreasData(self.designid,readOnly,function(){self.resizeTextAreas();self.removeDisabledDiv();});});});};var readOnlyMsg=dfx.getId(self.id+'-readOnlyMsg');if(readOnlyMsg){dfx.remove(readOnlyMsg);}
if(readOnly){wrnOps={id:self.id+'-readOnlyMsg',leftTitle:'Read Only',mainMessage:'This screen is <strong>Read Only</strong> because the design is <strong>Marked for Deletion</strong>.',colour:'red',buttonTitle:null};if(self.designData[self.designid].pid!==null){wrnOps.mainMessage='This screen is <strong>Read Only</strong> because the customisation is <strong>Marked for Deletion</strong>.';}
self.createScreenWarningMessage(wrnOps,function(el){dfx.insertBefore(dfx.getId('DesignAdminScreen-designTabs'),el);setAll();});}else{setAll();}};var dlen=this.designs.length;var content=[];for(var i=0;i<dlen;i++){var did=this.designs[i].id;var title=this.designs[i].name;var isCustomisation=false;if(this.designs[i].lvl>0){isCustomisation=true;}
content=_createNewDesignCustomisationItem(isCustomisation,did,title);this.designInfo.addItem('designs',parseInt(did),content,function(id,e){_designCustomisationOnclickCallback(id,e);},false,isCustomisation);}
this.designInfo.addNewButton(function(nDesignN){var params={mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',action:'processScreen',op:'createNewDesign',name:nDesignN};self.displayDisabledDiv(true);self.parent.processScreen(params,function(result){var newDesignid=result.designid;var content=_createNewDesignCustomisationItem(false,newDesignid,nDesignN);self.newDesignCount++;self.designData[newDesignid]={details:{customisations:[],name:nDesignN,remap:null,usages:[]},lastTab:null,designAreas:{},html:null,css:null,javascript:null,parseFileLoaded:false,pid:null,type:'design',deletion:false,associatedFileUpload:null,associatedFiles:{files:[],missingFiles:[],unusedFiles:{}}};self.designDataOri[newDesignid]={};self.designDataOri[newDesignid].html='';self.designDataOri[newDesignid].css='';self.designDataOri[newDesignid].javascript='';self.designDataOri[newDesignid].details={};var reserved='name';self.designDataOri[newDesignid].details[reserved]=nDesignN;self.customisations[newDesignid]={};self.designInfo.addItem('designs',newDesignid,content,function(id,e){_designCustomisationOnclickCallback(id,e);},false,false);self.getDetailsData(self.designid);self.getParseFilesData(self.designid);self.getDesignAreasData(self.designid);self.getAssociatedFilesData(self.designid);self.designid=parseInt(newDesignid);self.designTabsWdgt.showTab(1);self.designTabsWdgt.showTab(2);self.designTabsWdgt.showTab(3);if(self.designData[newDesignid].lastTab!==null){self.designTabsWdgt.selectTab(self.designData[newDesignid].lastTab);self.designData[newDesignid].lastTab=null;}
var setAll=function(){var readOnly=false;if(self.readOnly===true){readOnly=true;}
self.setDetailsData(self.designid,readOnly);self.setParseFilesData(self.designid,readOnly,function(){self.setAssociatedFilesData(self.designid,readOnly,function(){self.setDesignAreasData(self.designid,readOnly,function(){self.resizeTextAreas();self.removeDisabledDiv();});});});};var readOnlyMsg=dfx.getId(self.id+'-readOnlyMsg');if(readOnlyMsg){dfx.remove(readOnlyMsg);}
setAll();for(var did in self.designData){if(self.designData.hasOwnProperty(did)===true){if(self.designData[did].pid!==null){dfx.hideElement(dfx.getId(did));}}}
self.designInfo.setItem(parseInt(newDesignid));},true);});if(dfx.isset(this.designData[this.lastDesignid])===false){this.lastDesignid=null;this.designid=designs[0];dfx.remove(dfx.getId(this.id+'-readOnlyMsg'));}
if(this.lastDesignid===null){_showCustomisations(this.designid);_groupCustomisations(this.designid);}else{if(this.designData[this.lastDesignid].pid){_showCustomisations(this.designData[this.designid].pid);_groupCustomisationsGrey(this.designData[this.designid].pid,this.designid);}else{_showCustomisations(this.designid);_groupCustomisations(this.designid);}}
this.designInfo.setItem(this.designid);},setDetailsData:function(designid,readOnly)
{var self=this;var designName=this.designData[designid].details.name;var nameTextField=WidgetStore.get(this.id+'-detailsNameField');nameTextField.setValue(designName);nameTextField.setReadOnly(readOnly);var img=dfx.getId(this.id+'-detailsPreviewImg');img.src=Widget.BASE_URL+'/?tb=1&a='+designid;var custSection=dfx.getId(this.id+'-detailsCustomSection');if(!this.isDesign){dfx.setStyle(custSection,'visibility','hidden');}else{dfx.setStyle(custSection,'visibility','visible');}
var items=dfx.getId(this.id+'-detailsCustomSection-items');var childLen=items.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(items.childNodes[i]);}
var _addCustomisation=function(idx){var cid=self.designData[designid].details.customisations[idx].id;var cname=self.designData[designid].details.customisations[idx].name;var markForDeletion=self.designData[designid].details.customisations[idx].markForDeletion;var custWrap=document.createElement('div');custWrap.id=self.id+'-detailsCustom-'+cid;dfx.addClass(custWrap,self.id+'-detailsCustomWrap');if(markForDeletion){dfx.addClass(custWrap,self.id+'-detailsCustomWrap-delete');}
var custNameWrap=document.createElement('div');custNameWrap.id=self.id+'-detailsCustomNameWrap-'+cid;dfx.addClass(custNameWrap,self.id+'-detailsCustomNameWrap');var custDelete=document.createElement('div');custDelete.id=self.id+'-detailsCustom-delete-'+cid;custDelete.innerHTML='&nbsp;';dfx.addClass(custDelete,self.id+'-detailsCustomRemove');if(markForDeletion){dfx.addClass(custDelete,'recover');}
if(readOnly){dfx.hideElement(custDelete);}
var textfield=self.createWidget(self.id+'-detailsCustom-input-'+cid,'TextField');textfield.setReadOnly(readOnly);textfield.setWidgetAttribute('id',cid);textfield.setWidgetAttribute('name',cname);textfield.setValue(cname);textfield.create(function(el){custNameWrap.appendChild(el);custWrap.appendChild(custNameWrap);custWrap.appendChild(custDelete);items.appendChild(custWrap);if(markForDeletion){textfield.disable();}
dfx.addEvent(custDelete,'click',function(e){if(self.usageInfo[cid]&&parseInt(self.designData[cid].details.remap)===0){self.displayIntervention(custDelete,'Please remap this customisation before deletion.',5);}else{self._setCustomisationForDeletion(cid);}});});};var custNum=this.designData[designid].details.customisations.length;if(custNum===0){var custMsgDiv=document.createElement('div');custMsgDiv.id=this.id+'-detailsCustomMsg';custMsgDiv.innerHTML='This design has no customisations.';dfx.addClass(custMsgDiv,this.id+'-text');items.appendChild(custMsgDiv);}else{for(var i=0;i<custNum;i++){(function(idx){_addCustomisation(idx);})(i);}
var lastCid=self.designData[designid].details.customisations[(custNum-1)].id;dfx.addClass(dfx.getId(self.id+'-detailsCustom-'+lastCid),self.id+'-detailsCustomWrapLast');}
var custAddNew=WidgetStore.get(this.id+'-detailsCustomSection-Button-AddNew');custAddNew.enable();if(self.designData[designid].pid!==null){dfx.hideElement(dfx.getId(this.id+'-detailsCustomSection-Button-AddNew'));}else{custAddNew.setReadOnly(readOnly);custAddNew.addClickEvent(function(e){if(self.isDesign){var numCust=self.designData[self.designid].details.customisations.length;self.designData[self.designid].details.customisations.push({id:'newCust_'+numCust,markForDeletion:false,name:''});if(numCust===0){var items=dfx.getId(self.id+'-detailsCustomSection-items');var childLen=items.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(items.childNodes[i]);}}else{var lastCid=self.designData[self.designid].details.customisations[(numCust-1)].id;dfx.removeClass(dfx.getId(self.id+'-detailsCustom-'+lastCid),self.id+'-detailsCustomWrapLast');}
_addCustomisation(numCust);lastCid=self.designData[self.designid].details.customisations[numCust].id;dfx.addClass(dfx.getId(self.id+'-detailsCustom-'+lastCid),self.id+'-detailsCustomWrapLast');dfx.getId(self.id+'-detailsCustom-input-'+lastCid).focus();if(numCust===4){custAddNew.disable();}
self.changes[self.designid+':cust:new'+numCust]=true;self.screenModified();}},true);}
var usageDiv=dfx.getId(this.id+'-detailsUsageSection-items');var childLen=usageDiv.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(usageDiv.childNodes[i]);}
var usageMsgDiv=document.createElement('div');usageMsgDiv.id=this.id+'-detailsUsageMsg';dfx.addClass(usageMsgDiv,this.id+'-text');if(this.usageInfo[designid]){usageMsgDiv.innerHTML='This design is directly applied to the following assets:';usageDiv.appendChild(usageMsgDiv);var usageLen=this.usageInfo[designid].length;for(i=0;i<usageLen;i++){var wrap=document.createElement('div');dfx.addClass(wrap,this.widgetType+'-usageInfo-wrap');var content='<div class="'+this.widgetType+'-usageInfo-icon"><img src="'+this.usageInfo[designid][i].iconUrl+'"/></div>';content+='<div class="'+this.widgetType+'-usageInfo-assetid">#'+this.usageInfo[designid][i].assetid+'</div>';content+='<div class="'+this.widgetType+'-usageInfo-name">'+this.usageInfo[designid][i].name+'</div>';wrap.innerHTML=content;usageDiv.appendChild(wrap);}}else{usageMsgDiv.innerHTML='This design is not applied to any assets.';usageDiv.appendChild(usageMsgDiv);}
var remapDiv=dfx.getId(this.id+'-detailsRemapSection-items');childLen=remapDiv.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(remapDiv.childNodes[i]);}
var remapMsgDiv=document.createElement('div');remapMsgDiv.id=this.id+'-detailsRemapMsg';dfx.addClass(remapMsgDiv,this.id+'-text');if(this.usageInfo[designid]){remapMsgDiv.innerHTML='Remapping will remove this design from the assets currently using it and apply another design of your choice.';remapDiv.appendChild(remapMsgDiv);var picker=self.createWidget(self.id+'-remap-assetPicker','Select');var options={};var dlen=self.designs.length;options[0]='-- Not selected --';for(var i=0;i<dlen;i++){var did=self.designs[i].id;var title=self.designs[i].name;var isCustomisation=false;if(self.designs[i].lvl>0){isCustomisation=true;}
if(isCustomisation===true){options[did]='--  '+dfx.ucWords(title);}else{options[did]=dfx.ucWords(title);}}
picker.addItems(options);picker.addItemSelectedEvent(function(aid){self.designData[designid].details.remap=aid;if(aid===0){self.changes[designid+':remap']=false;}else{self.changes[designid+':remap']=true;}
self.screenModified();});picker.setReadOnly(readOnly);picker.create(function(el){remapDiv.appendChild(el);picker.setValue(self.designData[designid].details.remap,true);});}else{remapMsgDiv.innerHTML='This design is not applied to any assets.';remapDiv.appendChild(remapMsgDiv);}},_setCustomisationForDeletion:function(cid,del,last,parentDeleted)
{var deleteClass=this.id+'-detailsCustomWrap-delete';var custWrap=dfx.getId(this.id+'-detailsCustom-'+cid);if(dfx.isset(del)===false){del=dfx.hasClass(custWrap,deleteClass);}
last=last||false;var textfield=WidgetStore.get(this.id+'-detailsCustom-input-'+cid);var custDelete=dfx.getId(this.id+'-detailsCustom-delete-'+cid);var custInfoDel=dfx.getClass(this.id+'-InfoBoxCustomRemove',dfx.getId(cid))[0];if(del){dfx.setStyle(custInfoDel,'display','block');dfx.removeClass(custWrap,deleteClass);dfx.removeClass(custDelete,'recover');dfx.removeClass(custInfoDel,'recover');dfx.removeClass(dfx.getId(cid),'deleted');if(this.designid===cid){dfx.addClass(dfx.getId(cid),'selected');}
this.designInfo.addCustomiseSelectedClassName(cid,'selected',false,false);dfx.addClass(dfx.getId(cid),'DesignAdminScreen-InfoBoxDesignCustomGrouped');if(last){dfx.addClass(dfx.getId(cid),'DesignAdminScreen-InfoBoxDesignCustomGrouped-last');}
this.changes[cid+':delete']=false;textfield.enable();}else{if(parentDeleted===true){dfx.setStyle(custInfoDel,'display','none');}
dfx.addClass(custWrap,deleteClass);dfx.addClass(custDelete,'recover');dfx.addClass(custInfoDel,'recover');this.designInfo.addCustomiseSelectedClassName(cid,'deleted',true,true);dfx.removeClass(dfx.getId(cid),'DesignAdminScreen-InfoBoxDesignCustomGrouped');if(last){dfx.removeClass(dfx.getId(cid),'DesignAdminScreen-InfoBoxDesignCustomGrouped-last');}
this.changes[cid+':delete']=true;textfield.disable();}
this.screenModified();},setParseFilesData:function(designid,readOnly,callback)
{var self=this;if(this.designData[parseInt(designid)]){var _setParseFilesData=function(){if(self.designData[designid].html!==null){self.parseTextAreaWidget.setReadOnly(readOnly);self.parseTextAreaWidget.setValue(self.designData[designid].html);}
if(self.designData[designid].css!==null){self.cssTextAreaWidget.setReadOnly(readOnly);self.cssTextAreaWidget.setValue(self.designData[designid].css);}
if(self.designData[designid].javascript!==null){self.jsTextAreaWidget.setReadOnly(readOnly);self.jsTextAreaWidget.setValue(self.designData[designid].javascript);}};if(this.designData[designid].parseFileLoaded===false){var params={mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',op:'getParseFiles',designId:designid};this.parent.getScreenData(params,function(parseFilesData){var decoded=dfx.jsonDecode(parseFilesData);self.designData[designid].html=decoded[designid].parseFile;self.designData[designid].css=decoded[designid].cssFile;self.designData[designid].javascript=decoded[designid].jsFile;self.designDataOri[designid].html=decoded[designid].parseFile;self.designDataOri[designid].css=decoded[designid].cssFile;self.designDataOri[designid].javascript=decoded[designid].jsFile;_setParseFilesData();self.designData[designid].parseFileLoaded=true;if(callback){callback.call(self,designid,readOnly);}});}else{_setParseFilesData();if(callback){callback.call(self,designid,readOnly);}}}else{if(callback){callback.call(self,designid,readOnly);}}},setDesignAreasData:function(designid,readOnly,callback)
{var self=this;var content='';var daTabDiv=dfx.getId(self.id+'-designAreaTab');var childLen=daTabDiv.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(daTabDiv.childNodes[i]);}
for(var id in this.designData[designid].designAreas){if(this.designData[designid].designAreas.hasOwnProperty(id)){content+='<div class="'+this.id+'-designAreaWrap '+this.id+'-'+this.designData[designid].designAreas[id].type+'">';content+='  <div id="'+this.id+'-designAreaHeader-'+id+'" class="'+this.id+'-designAreaHeader">';content+='    <div id="'+this.id+'-designAreaHeader-title-'+id+'" class="'+this.id+'-designArea-title"><span class="'+this.id+'-designArea-id">'+id+'</span>';content+='      <span class="'+this.id+'-designArea-type">[&nbsp;'+dfx.ucWords(this.designData[designid].designAreas[id].type.replace(/_/,' '))+'&nbsp;]</span>';content+='    </div>';content+='  </div>';content+='  <div id="'+this.id+'-designAreaBody-'+id+'" class="'+this.id+'-designAreaBody">';content+='    <div class="'+this.id+'-designAreaWrap-left">';if(readOnly){content+='<div id="'+this.id+'-'+id+'-designArea-use-parent" class="'+this.id+'-designArea-use-parent" style="visibility: hidden;">Use Parent Settings</div>';}else{content+='<div id="'+this.id+'-'+id+'-designArea-use-parent" class="'+this.id+'-designArea-use-parent">Use Parent Settings</div>';}
content+='    </div>';content+='    <div id="'+this.id+'-'+id+'-designArea-right" class="'+this.id+'-designAreaWrap-right">';content+='    </div>';content+='  </div>';content+='</div>';}}
if(content.length===0){content='<div class="'+this.id+'-designArea-none">This design has no design areas</div>';daTabDiv.innerHTML=content;if(callback){callback.call(self,designid,readOnly);}
return;}
daTabDiv.innerHTML=content;dfx.foreach(this.designData[designid].designAreas,function(daid){var headerDiv=dfx.getId(self.id+'-designAreaHeader-'+daid);dfx.addEvent(headerDiv,'click',function(e){var titleDiv=dfx.getId(self.id+'-designAreaHeader-title-'+daid);var bodyDiv=dfx.getId(self.id+'-designAreaBody-'+daid);if(dfx.hasClass(titleDiv,'collapsed')){dfx.removeClass(titleDiv,'collapsed');dfx.showElement(bodyDiv);}else{dfx.addClass(titleDiv,'collapsed');dfx.hideElement(bodyDiv);}});var useParentDiv=dfx.getId(self.id+'-'+daid+'-designArea-use-parent');if(self.designData[designid].type==='design'){dfx.setStyles(useParentDiv,'visibility','hidden');}else{dfx.addEvent(useParentDiv,'click',function(e){if(dfx.hasClass(useParentDiv,'active')){dfx.removeClass(useParentDiv,'active');dfx.foreach(self.designData[designid].designAreas[daid].attrInfo,function(attrid){var attrWidgetid=self.id+'-'+daid+'-'+attrid;WidgetStore.get(attrWidgetid).enable();return true;});var newValue=false;}else{dfx.addClass(useParentDiv,'active');var pid=self.designData[designid].pid;dfx.foreach(self.designData[designid].designAreas[daid].attrInfo,function(attrid){var attrWidgetid=self.id+'-'+daid+'-'+attrid;var widget=WidgetStore.get(attrWidgetid);var pValue=self.designData[pid].designAreas[daid][attrid];self.designData[designid].designAreas[daid][attrid]=pValue;widget.setValue(pValue);widget.disable();return true;});var newValue=true;}
if(dfx.isset(self.designDataOri[designid].designAreas[daid].use_parent)===false){var oriValue=true;}else{var oriValue=self.designDataOri[designid].designAreas[daid].use_parent;}
if(oriValue!==newValue){self.changes[designid+':'+daid+':useParent']=true;}else{self.changes[designid+':'+daid+':useParent']=false;}
self.designData[designid].designAreas[daid].use_parent=newValue;self.screenModified();});}
return true;});dfx.foreach(this.designData[designid].designAreas,function(daid){var rightDiv=dfx.getId(self.id+'-'+daid+'-designArea-right');var attrs=[];dfx.foreach(self.designData[designid].designAreas[daid].attrInfo,function(attrid){attrs.push(attrid);return true;});var _createDaAttr=function(attrid,index,cb){var isCustom=(self.designData[designid].type==='customisation');if(isCustom===true){var pid=self.designData[designid].pid;var pValue=self.designData[pid].designAreas[daid][attrid];if(dfx.isset(self.designData[designid].designAreas[daid].use_parent)===false){var useParent=true;self.designData[designid].designAreas[daid].use_parent=true;}else{var useParent=self.designData[designid].designAreas[daid].use_parent;}}
var attrInfo=self.designData[designid].designAreas[daid].attrInfo[attrid];var widgetType='';var attrWidgetid=self.id+'-'+daid+'-'+attrid;var attrWidget=null;switch(attrInfo.type){case'text':attrWidget=self.createWidget(attrWidgetid,'TextField');if(isCustom&&useParent===true){if(pValue){attrWidget.setValue(pValue);}else{attrWidget.setValue(attrInfo.defaultVal);}}else{if(self.designData[designid].designAreas[daid][attrid]){attrWidget.setValue(self.designData[designid].designAreas[daid][attrid]);}else{attrWidget.setValue(attrInfo.defaultVal);}}
break;case'select':attrWidget=self.createWidget(attrWidgetid,'Select');var opLen=attrInfo.options.length;var opts={};for(var i=0;i<opLen;i++){opts[attrInfo.options[i]]=dfx.ucWords(attrInfo.options[i]);}
attrWidget.addItems(opts);break;case'boolean':var val=false;attrWidget=self.createWidget(attrWidgetid,'ToggleButton',false,'slider',val,'Yes','No');break;case'assetid':attrWidget=self.createWidget(attrWidgetid,'AssetPicker');break;case'parentAsset':attrWidget=self.createWidget(attrWidgetid,'MenuDesignAreaParentSelector');if(isCustom&&useParent===true){if(pValue){attrWidget.setValue(pValue);}else{attrWidget.setValue(attrInfo.defaultVal);}}else{if(self.designData[designid].designAreas[daid][attrid]){attrWidget.setValue(self.designData[designid].designAreas[daid][attrid]);}else{attrWidget.setValue(attrInfo.defaultVal);}}
break;default:break;}
attrWidget.setReadOnly(readOnly);attrWidget.create(function(el){var attrWrap=document.createElement('div');dfx.addClass(attrWrap,self.id+'-designArea-attributeWrap');dfx.addClass(attrWrap,self.id+'-designArea-attribute-'+attrid);if(index===(attrs.length-1)){dfx.addClass(attrWrap,'last');}
var attrName=document.createElement('div');dfx.addClass(attrName,self.id+'-designArea-attributeName');attrName.innerHTML=dfx.ucWords(attrid.replace(/_/,' '));var attrForm=document.createElement('div');dfx.addClass(attrForm,self.id+'-designArea-attributeForm');attrForm.appendChild(el);attrWrap.appendChild(attrName);attrWrap.appendChild(attrForm);rightDiv.appendChild(attrWrap);var widgetUpdatedid=self.designid+':da:'+daid+':'+attrid;var _valueUpdated=function(){if(!self.designDataOri[self.designid].designAreas[daid]){return;}
if(attrWidget.getValue()!==self.designDataOri[self.designid].designAreas[daid][attrid]){self.changes[widgetUpdatedid]=true;}else{self.changes[widgetUpdatedid]=false;}
self.screenModified();};switch(attrInfo.type){case'text':dfx.addEvent(dfx.getId(attrWidgetid),'keyup',function(e){var oriVal='';if(dfx.isset(self.designDataOri[self.designid].designAreas[daid][attrid])===true){oriVal=self.designDataOri[self.designid].designAreas[daid][attrid];}
if(dfx.getId(attrWidgetid).value!==oriVal){self.changes[widgetUpdatedid]=true;}else{self.changes[widgetUpdatedid]=false;}
self.screenModified();});break;case'select':if(isCustom&&useParent===true){if(pValue){attrWidget.setValue(pValue,true);}else{attrWidget.setValue(attrInfo.defaultVal,true);}}else{if(self.designData[designid].designAreas[daid][attrid]){attrWidget.setValue(self.designData[designid].designAreas[daid][attrid],true);}else{attrWidget.setValue(attrInfo.defaultVal,true);}}
dfx.addEvent(dfx.getId(attrWidgetid),'change',function(e){_valueUpdated();});break;case'boolean':if(isCustom&&useParent===true){var booleanVal=pValue;}else{var booleanVal=self.designData[designid].designAreas[daid][attrid];}
if(typeof booleanVal==='string'){if(booleanVal.toLowerCase()==='true'){val=true;}}else if(booleanVal===true){val=true;}else{val=false;}
attrWidget.setValue(val);attrWidget.addToggleOnEvent(function(){_valueUpdated();});attrWidget.addToggleOffEvent(function(){_valueUpdated();});break;case'assetid':if(isCustom&&useParent===true){if(pValue){attrWidget.setValue(pValue,true);}else{attrWidget.setValue(attrInfo.defaultVal,true);}}else{if(self.designData[designid].designAreas[daid][attrid]){attrWidget.setValue(self.designData[designid].designAreas[daid][attrid],true);}else{attrWidget.setValue(attrInfo.defaultVal,true);}}
attrWidget.setProjectFolderBlackList(['Documents','Images','Movies','Designs','Roles','Users','Workflows']);attrWidget.addSelectedCallback(function(){_valueUpdated();});attrWidget.addClearAssetidCallback(function(){_valueUpdated();});break;case'parentAsset':dfx.addEvent(dfx.getId(attrWidgetid+'-select'),'change',function(e){_valueUpdated();});var pWdgt=WidgetStore.get(attrWidgetid+'-asset-picker');pWdgt.addSelectedCallback(function(){_valueUpdated();});pWdgt.addClearAssetidCallback(function(){_valueUpdated();});break;default:break;}
if(dfx.isFn(cb)){cb.call(self);}});};var _createDaAttrs=function(index){index=index||0;if(index>=attrs.length){if(self.designData[designid].type==='customisation'){if(self.designData[designid].designAreas[daid].use_parent===true){var useParentDiv=dfx.getId(self.id+'-'+daid+'-designArea-use-parent');dfx.addClass(useParentDiv,'active');dfx.foreach(self.designData[designid].designAreas[daid].attrInfo,function(attrid){var attrWidgetid=self.id+'-'+daid+'-'+attrid;WidgetStore.get(attrWidgetid).disable();return true;});}}
return;}
_createDaAttr(attrs[index],index,function(){_createDaAttrs(++index);});};_createDaAttrs();return true;});if(callback){callback.call(self,designid,readOnly);}},setAssociatedFilesData:function(designid,readOnly,callback)
{var self=this;var assocDiv=dfx.getId(this.id+'-associatedFiles');if(assocDiv===null){this.assocDiv=document.createElement('div');this.assocDiv.id=this.id+'-associatedFiles';dfx.addClass(this.assocDiv,this.id+'-associatedFiles');this.showAssocBtn=document.createElement('div');this.showAssocBtn.id=this.id+'-assocShowBtn';dfx.addClass(this.showAssocBtn,'AssociatedFileUpload-associatedHeaderHide collapsed');dfx.setHtml(this.showAssocBtn,'&nbsp;');dfx.hideElement(this.showAssocBtn);dfx.addEvent(this.showAssocBtn,'click',function(){if(self.assocFilesHidden===true){var showBtn=dfx.getId(self.id+'-assocShowBtn');dfx.hideElement(showBtn);dfx.showElement(dfx.getId(self.id+'-associatedFileUpload-'+self.designid));self.assocFilesHidden=false;self.resizeTextAreas();}});this.assocDiv.appendChild(this.showAssocBtn);dfx.getId(this.id+'-designTabs-cardLayout').appendChild(this.assocDiv);dfx.hideElement(self.assocDiv);this.tabsWidget.addOnChangeHandler(function(index,prev){var hideAssocIndexes=[0,4];var indexHide=dfx.inArray(index,hideAssocIndexes);var prevHide=dfx.inArray(prev,hideAssocIndexes);if(prev===-1){prevHide=true;}
if(indexHide&&!prevHide){dfx.hideElement(self.assocDiv);}else if(!indexHide&&!prevHide){var tab=dfx.getId(self.id+'-designTabs-cardLayout').childNodes[index];}else if(!indexHide&&prevHide){dfx.showElement(self.assocDiv);var tab=dfx.getId(self.id+'-designTabs-cardLayout').childNodes[index];}
self.currentTabIndex=index;});}
if(this.isDesign===false){designid=this.designData[designid].pid;}
for(var did in this.designData){if(this.designData.hasOwnProperty(did)){if(this.designData[did].associatedFileUpload!==null&&did!==designid){dfx.hideElement(dfx.getId(this.id+'-associatedFileUpload-'+did));}}}
if(this.designData[designid]&&this.designData[designid].associatedFileUpload===null){var params={mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',op:'getAssocFileData',designId:designid};self.parent.getScreenData(params,function(assocFilesData){var decoded=dfx.jsonDecode(assocFilesData);self.designData[designid].associatedFiles=dfx.clone(decoded[designid]);self.displayDisabledDiv(true,assocDiv);var missingFiles=[];if(self.designData[designid].associatedFiles.missingFiles!==null){missingFiles=self.designData[designid].associatedFiles.missingFiles;}
var associd=self.id+'-associatedFileUpload-'+designid;self.designData[designid].associatedFileUpload=self.createWidget(associd,'AssociatedFileUpload',designid,self.designData[designid].associatedFiles.files,missingFiles,self.designData[designid].associatedFiles.unusedFiles);self.designData[designid].associatedFileUpload.create(function(el){if(self.assocFilesHidden===true){dfx.hideElement(el);}
self.assocDiv.appendChild(el);self.designData[designid].associatedFileUpload.init();if(self.isDesign===false){self.designData[designid].associatedFileUpload.setReadOnly(true);}else{self.designData[designid].associatedFileUpload.setReadOnly(readOnly);}
var hideBtn=dfx.getId(associd+'-AssociatedHeaderHide');dfx.addEvent(hideBtn,'click',function(e){if(self.assocFilesHidden===false){var showBtn=dfx.getId(self.id+'-assocShowBtn');dfx.showElement(showBtn);dfx.hideElement(dfx.getId(self.id+'-associatedFileUpload-'+self.designid));self.assocFilesHidden=true;self.resizeTextAreas();}});self.removeDisabledDiv(assocDiv);if(callback){callback.call(self,designid,readOnly);}});});}else{if(this.designData[designid]&&this.designData[designid].associatedFileUpload!==null){if(self.isDesign===false){this.designData[designid].associatedFileUpload.setReadOnly(true);}else{this.designData[designid].associatedFileUpload.setReadOnly(readOnly);}
this.designData[designid].associatedFileUpload.refreshMissingFileNotice(function(){if(self.assocFilesHidden===false){dfx.setStyle(dfx.getId(self.id+'-associatedFileUpload-'+designid),'display','block');dfx.setStyle(dfx.getId(self.id+'-associatedFileUpload-'+designid),'visibility','visible');}
if(callback){callback.call(self,designid,readOnly);}});}else{if(this.assocFilesHidden===false){dfx.setStyle(dfx.getId(this.id+'-associatedFileUpload-'+designid),'display','block');dfx.setStyle(dfx.getId(this.id+'-associatedFileUpload-'+designid),'visibility','visible');}
if(callback){callback.call(self,designid,readOnly);}}}},getDetailsData:function(designid)
{var details=this.designData[designid].details;details.name=WidgetStore.get(this.id+'-detailsNameField').getValue();var custItems=dfx.getId(this.id+'-detailsCustomSection-items');var custLen=custItems.childNodes.length;if(custLen===1&&custItems.childNodes[0].id===(this.id+'-detailsCustomMsg')){this.designData[designid].details.customisations=[];}else{this.designData[designid].details.customisations=[];for(var i=0;i<custLen;i++){var cid=custItems.childNodes[i].id.replace(/DesignAdminScreen-detailsCustom-/,'');var textField=WidgetStore.get(this.id+'-detailsCustom-input-'+cid);var cname=textField.getValue();this.designData[designid].details.customisations.push({id:cid,name:cname,markForDeletion:dfx.hasClass(dfx.getId(this.id+'-detailsCustom-'+cid),this.id+'-detailsCustomWrap-delete')});}}
if(this.usageInfo[designid]&&this.usageInfo[designid].length>0){details.remap=WidgetStore.get(this.id+'-remap-assetPicker').getValue();}},getParseFilesData:function(designid)
{if(this.designData[designid].html!==null){this.designData[designid].html=this.parseTextAreaWidget.getValue();}
if(this.designData[designid].css!==null){this.designData[designid].css=this.cssTextAreaWidget.getValue();}
if(this.designData[designid].javascript!==null){this.designData[designid].javascript=this.jsTextAreaWidget.getValue();}},getDesignAreasData:function(designid)
{var self=this;if(this.designData[designid].designAreas!==null){dfx.foreach(self.designData[designid].designAreas,function(daid){dfx.foreach(self.designData[designid].designAreas[daid].attrInfo,function(attrid){var attrWidgetid=self.id+'-'+daid+'-'+attrid;var val=WidgetStore.get(attrWidgetid).getValue();self.designData[designid].designAreas[daid][attrid]=val;return true;});return true;});}},getAssociatedFilesData:function(designid)
{if(this.designData[designid].associatedFileUpload){this.designData[designid].deletedFiles=dfx.clone(this.designData[designid].associatedFileUpload.getDeletedFiles());}else{this.designData[designid].deletedFiles=[];}},getAutoSaveContents:function()
{return this.designid;},loadAutoSaveContents:function(content,callBack)
{this.designid=parseInt(content);},save:function()
{var self=this;this.settings={designId:this.designid,parseFile:this.parseTextAreaWidget.getValue(),cssFile:this.cssTextAreaWidget.getValue(),jsFile:this.jsTextAreaWidget.getValue()};this.request({action:'processScreen'},function(data){self.switchOffScreen();self.parent.refreshScreen('design');});},getRequestParams:function()
{var params={keys:['mode','ooop','screen'],vals:['AdminScreenMode','saveDesign','DesignAdminScreenWidget']};return params;},saveDesignConfig:function()
{var self=this;this.getDetailsData(this.designid);this.getParseFilesData(this.designid);this.getDesignAreasData(this.designid);this.getAssociatedFilesData(this.designid);var assocFilesResetList=[];for(var did in this.designData){if(this.designData.hasOwnProperty(did)){if(this.designData[did].deletedFiles&&this.designData[did].deletedFiles.length>0){assocFilesResetList.push(this.designData[did].associatedFileUpload);}}}
for(var did in this.designData){if(this.designData.hasOwnProperty(did)){this.designData[did].associatedFileUpload=null;this.designData[did].parseFileLoaded=false;}}
var params={screen:this.id+'Widget',op:'saveDesign',designData:dfx.jsonEncode(this.designData)};this.displayDisabledDiv();this.parent.processScreen(params,function(data){var afrln=assocFilesResetList.length;if(afrln>0){var resetAssocFiles=function(idx){if(idx===afrln){self.lastDesignid=self.designid;self.reset(function(){self.switchOnScreen();self.removeDisabledDiv();});}else{assocFilesResetList[idx].resetAssocFileList(function(){resetAssocFiles(idx+1);});}};resetAssocFiles(0);}else{self.lastDesignid=self.designid;self.reset(function(){self.switchOnScreen();self.removeDisabledDiv();});}},true);},reset:function(callback)
{var self=this;var params={action:'paintScreen',mode:'AdminScreenMode',screen:'DesignAdminScreenWidget',type:'getDesignData'};dfx.post(window.location.href,params,function(designData){designData=dfx.jsonDecode(designData);self.init(designData);callback.call(self);});},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveDesignConfig();},function(){self.displayDisabledDiv();self.reset(function(){self.removeDisabledDiv();});});}},switchOffScreen:function()
{var dLen=this.designs.length;for(var i=0;i<dLen;i++){var did=this.designs[i].id;this.designData[did].associatedFileUpload=null;WidgetStore.remove(this.id+'-associatedFileUpload-'+did);}}};dfx.inherits('DesignAdminScreen','AbstractSettingsScreen');function DesignEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='DesignEditScreen';this.rowC=this.widgetType+'-row';this.parentSSWrapC=this.widgetType+'-parentSSWrap';this.childSSWrapC=this.widgetType+'-childSSWrap';this.ssC=this.widgetType+'-screenShot';this.settingsWrap=this.widgetType+'-settingsWrap';this.settingsWrapHeader=this.widgetType+'-settingsWrap-header';this.settingsWrapBody=this.widgetType+'-settingsWrap-body';this.settingsWrapBodyCell=this.widgetType+'-settingsWrap-body-cell';this.settingsWrapPageDesignCell=this.widgetType+'-settingsWrap-body-pageDesignCell';this.settingsWrapCascadeCell=this.widgetType+'-settingsWrap-body-cascadeCell';this.settingsWrapChildDesignCell=this.widgetType+'-settingsWrap-body-childDesignCell';this.labelC=this.widgetType;this.selectC=this.widgetType+'-select';this.helpClassDefaultPageDesignSS=this.widgetType+'-defaultPageDesignSS';this.helpClassDefaultPageSelect=this.widgetType+'-defaultPageSelect';this.helpClassDefaultCascade=this.widgetType+'-defaultCascade';this.helpClassDefaultChildSelect=this.widgetType+'-defaultChildSelect';this.helpClassDefaultChildDesignSS=this.widgetType+'-defaultChildDesignSS'
this.helpClassURLPageDesignSS=this.widgetType+'-URLPageDesignSS';this.helpClassURLPageSelect=this.widgetType+'-URLPageSelect';this.helpClassURLCascade=this.widgetType+'-URLCascade';this.helpClassURLChildSelect=this.widgetType+'-URLChildSelect';this.helpClassURLChildDesignSS=this.widgetType+'-URLChildDesignSS';this.urlPage={};this.urlCascade={};this.urlChild={};this.urlPageWrap={};this.urlSettingsWrap={};this.urlChildWrap={};this.urlPageSS={};this.urlChildSS={};this.changes={};}
DesignEditScreenWidgetType.prototype={screenModified:function()
{var self=this;var modified=false;dfx.foreach(this.changes,function(id){if(self.changes[id]===true){modified=true;return false;}
return true;});this.setModified(modified);},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var self=this;if(readOnly===false){if(this.defaultCascade){if(this.defaultCascade.getValue()===true){dfx.hideElement(this.defaultChild.select);}else{dfx.showElement(this.defaultChild.select);}}
dfx.foreach(this.urlPage,function(idx){if(self.urlCascade[idx].getValue()===true){var childCell=dfx.getClass(self.settingsWrapChildDesignCell,self.urlSettingsWrap[idx])[0];dfx.addClass(self.urlSettingsWrap[idx],'stretch');dfx.addClass(self.urlChildWrap[idx],'hidden');dfx.addClass(childCell,'hidden');dfx.hideElement(self.urlChild[idx].select);}else{var childCell=dfx.getClass(self.settingsWrapChildDesignCell,self.urlSettingsWrap[idx])[0];dfx.removeClass(self.urlSettingsWrap[idx],'stretch');dfx.removeClass(self.urlChildWrap[idx],'hidden');dfx.removeClass(childCell,'hidden');dfx.showElement(self.urlChild[idx].select);}
return true;});}},init:function(data)
{var self=this;this.designSettings=dfx.clone(data);this.isSite=data.isSite;this.defaultDesignid=this.designSettings.defaultSetting.designid;this.defaultCascadeVal=this.designSettings.defaultSetting.cascade;this.defaultChildid=this.designSettings.defaultSetting.childid;this.defaultSettingsExist=true;if(this.defaultDesignid===null&&this.defaultCascadeVal===true&&this.defaultChildid===null){this.defaultSettingsExist=false;}
dfx.foreach(this.designSettings.lookups,function(idx){if(self.defaultSettingsExist===true){if(self.designSettings.lookups[idx].designSettings.pageid!==self.defaultDesignid||self.designSettings.lookups[idx].designSettings.cascade!==self.defaultCascadeVal||self.designSettings.lookups[idx].designSettings.childid!==self.defaultChildid){self.designSettings.lookups[idx].customised=true;}else{self.designSettings.lookups[idx].customised=false;}}else{if(self.designSettings.lookups[idx].designSettings.pageid!==null||self.designSettings.lookups[idx].designSettings.cascade!==true||self.designSettings.lookups[idx].designSettings.childid!==null){self.designSettings.lookups[idx].customised=true;}else{self.designSettings.lookups[idx].customised=false;}}
return true;});this.designSettingsOri=dfx.clone(this.designSettings);if(this.defaultDesignid===null){this.defaultDesignid=0;this.designSettingsOri.designid=0;}
if(this.defaultChildid===null){this.defaultChildid=0;this.designSettingsOri.childid=0;}
this.defaultSettingsWrap=null;this.defaultChildWrap=null;if(this.readOnly===true){this.linksRemoved=false;this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('DesignEditScreen-defaultDesign'),el);},function(){});}
var wrapper=dfx.getId(this.id+'-defaultDesign-items');var childLen=wrapper.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(wrapper.childNodes[i]);}
wrapper=dfx.getId(this.id+'-override-items');childLen=wrapper.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(wrapper.childNodes[i]);}
this.customisationNames={};this.designSelectList={};dfx.foreach(this.designSettings.designs,function(designid){self.designSelectList[designid]=self.designSettings.designs[designid].name;if(self.designSettings.designs[designid].customisations!==[]){dfx.foreach(self.designSettings.designs[designid].customisations,function(custid){self.designSelectList[custid]='&nbsp;--&nbsp;'+self.designSettings.designs[designid].customisations[custid].name;self.customisationNames[custid]=self.designSettings.designs[designid].customisations[custid].name;return true;});}
return true;});if(this.isSite===true){this.defaultPageSelectItemList=this.designSelectList;this.urlPageSelectItemList=this.designSelectList;this.childSelectItemList=this.createDesignSelectItemsList('child');}else{this.defaultPageSelectItemList=this.createDesignSelectItemsList('defaultPage');this.urlPageSelectItemList=this.createDesignSelectItemsList('urlPage');this.childSelectItemList=this.createDesignSelectItemsList('child');}
this.defaultDesignDiv=dfx.getId(this.id+'-defaultDesign-items');this.overridesDiv=dfx.getId(this.id+'-override-items');this.includeWidgets(['Select','ToggleButton'],function(){self.createDefaultDesignSettings(function(){self.createURLOverrides()
self.ready();});});},createDesignSelectItemsList:function(type)
{var result={};switch(type){case'defaultPage':result[0]='Inheriting';break;case'child':if(this.isSite===false){result[0]='Inheriting from Parent Child Design';}
break;case'urlPage':result[0]='Use Default Page Design - ';break;default:break;}
var self=this;dfx.foreach(this.designSelectList,function(designid){result[designid]=self.designSelectList[designid];return true;});return result;},createDefaultDesignSettings:function(callback)
{var self=this;this.defaultDesignDiv.appendChild(this._createDesignRow('defaultSetting'));this.defaultPage=this.createWidget(this.id+'-defaultPage','Select');this.defaultCascade=this.createWidget(this.id+'-cascade','ToggleButton',false,'slider',this.defaultCascadeVal,'Yes','No');this.defaultChild=this.createWidget(this.id+'-childPage','Select');this.defaultSettingsWrap=dfx.getClass(this.settingsWrap,this.defaultDesignDiv)[0];this.defaultChildWrap=dfx.getClass(this.childSSWrapC,this.defaultDesignDiv)[0];this.defaultPageSS=dfx.getClass(this.ssC,this.defaultPageWrap)[0];this.defaultChildSS=dfx.getClass(this.ssC,this.defaultChildWrap)[0];dfx.addClass(this.defaultPageSS,this.helpClassDefaultPageDesignSS);dfx.addClass(this.defaultChildSS,this.helpClassDefaultChildDesignSS);this.defaultPage.addItems(this.defaultPageSelectItemList);this.defaultChild.addItems(this.childSelectItemList);var rowHeader=dfx.getClass(this.settingsWrapHeader,this.defaultDesignDiv)[0];dfx.setHtml(rowHeader,'Default for all URL\'s');var pageCell=dfx.getClass(this.settingsWrapPageDesignCell,this.defaultDesignDiv)[0];var cascadeCell=dfx.getClass(this.settingsWrapCascadeCell,this.defaultDesignDiv)[0];var childCell=dfx.getClass(this.settingsWrapChildDesignCell,this.defaultDesignDiv)[0];if(this.defaultCascadeVal===true){dfx.addClass(this.defaultSettingsWrap,'stretch');dfx.addClass(this.defaultChildWrap,'hidden');dfx.addClass(childCell,'hidden');}
this.defaultPage.create(function(dsEl){self.defaultCascade.create(function(dcEl){self.defaultChild.create(function(dcdEl){var pageDeisgnLabel=document.createElement('label');var cascadeLabel=document.createElement('label');var chidlDesignLabel=document.createElement('label');dfx.addClass(pageDeisgnLabel,self.labelC);dfx.addClass(cascadeLabel,self.labelC);dfx.addClass(chidlDesignLabel,self.labelC);dfx.addClass(pageDeisgnLabel,self.helpClassDefaultPageSelect);dfx.addClass(cascadeLabel,self.helpClassDefaultCascade);dfx.addClass(chidlDesignLabel,self.helpClassDefaultChildSelect);dfx.addClass(self.defaultPage.select,self.selectC);dfx.addClass(self.defaultChild.select,self.selectC);dfx.setHtml(pageDeisgnLabel,'Page Design');dfx.setHtml(cascadeLabel,'Use For Children');dfx.setHtml(chidlDesignLabel,'Child Design');pageCell.appendChild(pageDeisgnLabel);cascadeCell.appendChild(cascadeLabel);childCell.appendChild(chidlDesignLabel);pageCell.appendChild(dsEl);cascadeCell.appendChild(dcEl);childCell.appendChild(dcdEl);self._setDefaultPageDesign(self.defaultDesignid);self._filterChildDesignSelection(self.defaultChild,self.defaultDesignid);if(self.defaultDesignid===0&&self.defaultCascadeVal){dfx.foreach(self.childSelectItemList,function(designid){designid=parseInt(designid,10);if(designid!==0){self.defaultChildid=designid;return false;}
return true;});}
self._setDefaultChildDesign(self.defaultChildid);self.defaultPage.addItemSelectedEvent(function(){var val=parseInt(self.defaultPage.getValue(),10);self._setDefaultPageDesign(val);var currChildVal=parseInt(self.defaultChild.getValue(false,false),10);self._filterChildDesignSelection(self.defaultChild,val);if(val===currChildVal){if(val===0){var childItems=self.defaultChild.getItems();self._setDefaultChildDesign(childItems[0]);}else{self._setDefaultChildDesign(0);}
self.defaultCascade.setValue(true);}else{self._setDefaultChildDesign(currChildVal);}
var oriVal=self.designSettingsOri.defaultSetting.designid;if(oriVal===null){oriVal=0;}
if(parseInt(val,10)!==oriVal){self.changes.DefaultPageDesignUpdated=true;}else{self.changes.DefaultPageDesignUpdated=false;}
self.screenModified();});self.defaultChild.addItemSelectedEvent(function(){var val=parseInt(self.defaultChild.getValue(),10);self._setDefaultChildDesign(val);if(val!==self.designSettingsOri.defaultSetting.childid){self.changes.DefaultChildDesignUpdated=true;}else{self.changes.DefaultChildDesignUpdated=false;}
self.screenModified();});self.defaultCascade.addToggleOnEvent(function(isOn){dfx.addClass(self.defaultSettingsWrap,'stretch');dfx.addClass(self.defaultChildWrap,'hidden');dfx.addClass(childCell,'hidden');dfx.hideElement(self.defaultChild.select);if(self.defaultCascadeVal===isOn){self.changes.DefaultCascade=false;if(isOn===true){self.changes.DefaultChildDesignUpdated=false;}}else{self.changes.DefaultCascade=true;}
self.screenModified();});self.defaultCascade.addToggleOffEvent(function(isOn){dfx.removeClass(self.defaultSettingsWrap,'stretch');dfx.removeClass(self.defaultChildWrap,'hidden');dfx.removeClass(childCell,'hidden');dfx.showElement(self.defaultChild.select);if(self.defaultCascadeVal===isOn){self.changes.DefaultCascade=false;}else{self.changes.DefaultCascade=true;}
self.screenModified();});if(callback){callback.call(self);}});});});},_setDefaultPageDesign:function(designid)
{var self=this;this.defaultPage.setValue(designid+'',true);var inheriting=false;if(designid===0||designid==='0'){inheriting=true;dfx.foreach(this.designSettings.lookups,function(idx){if(window.location.href.search(self.designSettings.lookups[idx].domain)===0){designid=self.designSettings.lookups[idx].parentDesign.id;return false;}
return true;});}
self._setDefaultPageDesignSS(designid);var designName='';if(dfx.isset(this.designSettings.designs[designid])===true){designName=this.designSettings.designs[designid].name;}else{designName=this.customisationNames[designid];}
dfx.foreach(this.urlPage,function(idx){var urlPageid=parseInt(self.urlPage[idx].getValue(false,false),10);if(urlPageid!==0&&urlPageid===parseInt(designid,10)){self._setUrlPageDesign(idx,0);}else{if(self.urlPage[idx].getValue(false,false)==='0'){if(self.defaultPage.getValue(false,false)==='0'){self._setUrlPageDesignSS(idx,self.designSettings.lookups[idx].parentDesign.id);}else{self._setUrlPageDesignSS(idx,designid);}}}
if(self.isSite===true){self._filterChildDesignSelection(self.urlPage[idx],designid,self.createDesignSelectItemsList('defaultPage'));}else{self._filterChildDesignSelection(self.urlPage[idx],designid);}
if(urlPageid!==0){self._setUrlPageDesign(idx,urlPageid);}
if(self.defaultPage.getValue(false,false)==='0'){self.urlPage[idx].setTextContent(0,'Use Default Page Design');}else{self.urlPage[idx].setTextContent(0,'Use Default Page Design - '+designName);}
return true;});},_setDefaultChildDesign:function(designid)
{var self=this;this.defaultChild.setValue(designid+'',true);self._setDefaultChildDesignSS(designid);},_setDefaultPageDesignSS:function(designid)
{var self=this;this.defaultPageSS.src=Widget.BASE_URL+'/?tb=1&a='+designid;},_setDefaultChildDesignSS:function(designid)
{var self=this;if(designid===0||designid==='0'){dfx.foreach(this.designSettings.lookups,function(idx){if(window.location.href.search(self.designSettings.lookups[idx].domain)===0){designid=self.designSettings.lookups[idx].parentDesign.id;return false;}
return true;});}
this.defaultChildSS.src=Widget.BASE_URL+'/?tb=1&a='+designid;},_filterChildDesignSelection:function(childSelect,pageValue,altSelect)
{var self=this;pageValue=parseInt(pageValue,10);childSelect.removeAllOptions();var selectList=this.childSelectItemList;if(altSelect){selectList=altSelect;}
dfx.foreach(selectList,function(designid){designid=parseInt(designid,10);if(designid===0||designid!==pageValue){if(pageValue===0&&designid===0){return true;}
childSelect.addOption(selectList[designid].replace(/&nbsp;/,' ').replace(/&nbsp;/,' '),parseInt(designid,10));}
return true;});},createURLOverrides:function(callback)
{var self=this;dfx.foreach(this.designSettings.lookups,function(idx){var urlRow=self._createDesignRow(idx);self.overridesDiv.appendChild(urlRow);var customised=self.designSettings.lookups[idx].customised;var cascade=null;if(customised===true){cascade=self.designSettings.lookups[idx].designSettings.cascade;}else{cascade=true;}
self.designSettingsOri.lookups[idx].designSettings.cascade=cascade;self.urlPage[idx]=self.createWidget(self.id+'-defaultPage-'+idx,'Select');self.urlCascade[idx]=self.createWidget(self.id+'-cascade-'+idx,'ToggleButton',false,'slider',cascade,'Yes','No');self.urlChild[idx]=self.createWidget(self.id+'-childPage-'+idx,'Select');self.urlPageWrap[idx]=dfx.getClass(self.parentSSWrapC,urlRow)[0];self.urlSettingsWrap[idx]=dfx.getClass(self.settingsWrap,urlRow)[0];self.urlChildWrap[idx]=dfx.getClass(self.childSSWrapC,urlRow)[0];self.urlPageSS[idx]=dfx.getClass(self.ssC,self.urlPageWrap[idx])[0];self.urlChildSS[idx]=dfx.getClass(self.ssC,self.urlChildWrap[idx])[0];dfx.addClass(self.urlPageSS[idx],self.helpClassURLPageDesignSS);dfx.addClass(self.urlChildSS[idx],self.helpClassURLChildDesignSS);if(self.isSite===true){self.urlPage[idx].addItems(self.createDesignSelectItemsList('defaultPage'));}else{self.urlPage[idx].addItems(self.defaultPageSelectItemList);}
self.urlChild[idx].addItems(self.childSelectItemList);var rowHeader=dfx.getClass(self.settingsWrapHeader,urlRow)[0];dfx.setHtml(rowHeader,self.designSettings.lookups[idx].url);var pageCell=dfx.getClass(self.settingsWrapPageDesignCell,urlRow)[0];var cascadeCell=dfx.getClass(self.settingsWrapCascadeCell,urlRow)[0];var childCell=dfx.getClass(self.settingsWrapChildDesignCell,urlRow)[0];if(cascade===true){dfx.addClass(self.urlSettingsWrap[idx],'stretch');dfx.addClass(self.urlChildWrap[idx],'hidden');dfx.addClass(childCell,'hidden');}
self.urlPage[idx].create(function(dsEl){self.urlCascade[idx].create(function(dcEl){self.urlChild[idx].create(function(dcdEl){var pageDeisgnLabel=document.createElement('label');var cascadeLabel=document.createElement('label');var chidlDesignLabel=document.createElement('label');dfx.addClass(pageDeisgnLabel,self.labelC);dfx.addClass(cascadeLabel,self.labelC);dfx.addClass(chidlDesignLabel,self.labelC);dfx.addClass(pageDeisgnLabel,self.helpClassURLPageSelect);dfx.addClass(cascadeLabel,self.helpClassURLCascade);dfx.addClass(chidlDesignLabel,self.helpClassURLChildSelect);dfx.addClass(self.urlPage[idx].select,self.selectC);dfx.addClass(self.urlChild[idx].select,self.selectC);dfx.setHtml(pageDeisgnLabel,'Page Design');dfx.setHtml(cascadeLabel,'Use For Children');dfx.setHtml(chidlDesignLabel,'Child Design');pageCell.appendChild(pageDeisgnLabel);cascadeCell.appendChild(cascadeLabel);childCell.appendChild(chidlDesignLabel);pageCell.appendChild(dsEl);cascadeCell.appendChild(dcEl);childCell.appendChild(dcdEl);if(customised===false){if(self.isSite===true){self._setUrlPageDesign(idx,self.designSettings.lookups[idx].designSettings.pageid);self._filterChildDesignSelection(self.urlChild[idx],self.designSettings.lookups[idx].designSettings.pageid);}else{self._setUrlPageDesign(idx,0);self._filterChildDesignSelection(self.urlChild[idx],0);}}else{self._setUrlPageDesign(idx,self.designSettings.lookups[idx].designSettings.pageid);if(self.designSettings.lookups[idx].designSettings.pageid===null){self._filterChildDesignSelection(self.urlChild[idx],0);}else{self._filterChildDesignSelection(self.urlChild[idx],self.designSettings.lookups[idx].designSettings.pageid);}}
self._setUrlChildDesign(idx,self.designSettings.lookups[idx].designSettings.childid);if(self.defaultDesignid===null&&self.defaultCascadeVal){dfx.foreach(self.childSelectItemList,function(designid){designid=parseInt(designid,10);if(designid!==0){self.defaultChildid=designid;return false;}
return true;});}
self.urlPage[idx].addItemSelectedEvent(function(){var val=parseInt(self.urlPage[idx].getValue(),10);self._setUrlPageDesign(idx,val);var currChildVal=parseInt(self.urlChild[idx].getValue(false,false),10);self._filterChildDesignSelection(self.urlChild[idx],val);if(val===currChildVal){if(val===0){var childItems=self.urlChild[idx].getItems();self._setUrlChildDesign(idx,childItems[0]);}else{self._setUrlChildDesign(idx,0);}
self.urlCascade[idx].setValue(true);}else{self._setUrlChildDesign(idx,currChildVal);}
var oriVal=self.designSettingsOri.lookups[idx].designSettings.pageid;if(oriVal===null){oriVal=0;}
if(parseInt(val,10)!==oriVal){self.changes['URLPageDesign'+idx]=true;}else{self.changes['URLPageDesign'+idx]=false;}
self.screenModified();});self.urlChild[idx].addItemSelectedEvent(function(){var val=parseInt(self.urlChild[idx].getValue(),10);self._setUrlChildDesign(idx,val);var oriVal=self.designSettingsOri.lookups[idx].designSettings.childid;if(oriVal===null){oriVal=0;}
if(parseInt(val,10)!==oriVal){self.changes['URLChildDesign'+idx]=true;}else{self.changes['URLChildDesign'+idx]=false;}
self.screenModified();});self.urlCascade[idx].addToggleOnEvent(function(isOn){dfx.addClass(self.urlSettingsWrap[idx],'stretch');dfx.addClass(self.urlChildWrap[idx],'hidden');dfx.addClass(childCell,'hidden');dfx.hideElement(self.urlChild[idx].select);if(self.designSettingsOri.lookups[idx].designSettings.cascade===isOn){self.changes['URLCascade'+idx]=false;if(isOn===true){self.changes['URLChildDesign'+idx]=false;}}else{self.changes['URLCascade'+idx]=true;}
self.screenModified();});self.urlCascade[idx].addToggleOffEvent(function(isOn){dfx.removeClass(self.urlSettingsWrap[idx],'stretch');dfx.removeClass(self.urlChildWrap[idx],'hidden');dfx.removeClass(childCell,'hidden');dfx.showElement(self.urlChild[idx].select);if(self.designSettingsOri.lookups[idx].designSettings.cascade===isOn){self.changes['URLCascade'+idx]=false;}else{self.changes['URLCascade'+idx]=true;}
self.screenModified();self._setUrlChildDesignSS(idx,self.urlChild[idx].getValue(false,false));});if(callback){callback.call(self);}});});});return true;});},_setUrlPageDesign:function(idx,designid)
{var self=this;if(designid===null){designid=0;}
var defaultPageid=parseInt(this.defaultPage.getValue(false,false),10);if(defaultPageid===0){this.urlPage[idx].setTextContent(0,'Use Default Page Design');this.urlPage[idx].setValue(designid+'',true);}else{var designName='';if(dfx.isset(this.designSettings.designs[defaultPageid])===true){designName=this.designSettings.designs[defaultPageid].name;}else{designName=this.customisationNames[defaultPageid];}
this.urlPage[idx].setTextContent(0,'Use Default Page Design - '+designName);if(defaultPageid.toString()===designid.toString()){if(this.isSite===true){this._filterChildDesignSelection(this.urlPage[idx],designid,this.createDesignSelectItemsList('defaultPage'));}else{this._filterChildDesignSelection(this.urlPage[idx],designid);}
this.urlPage[idx].setTextContent(0,'Use Default Page Design - '+designName);this.urlPage[idx].setValue(0+'',true);}else{this.urlPage[idx].setValue(designid+'',true);}}
self._setUrlPageDesignSS(idx,designid);},_setUrlChildDesign:function(idx,designid)
{var self=this;if(designid===null){designid=0;}
this.urlChild[idx].setValue(designid+'',true);self._setUrlChildDesignSS(idx,designid);},_setUrlPageDesignSS:function(idx,designid)
{var self=this;if(designid===0||designid==='0'){var defaultDesignid=this.defaultPage.getValue(false,false);if(defaultDesignid==='0'){designid=this.designSettings.lookups[idx].parentDesign.id;}else{designid=defaultDesignid;}}
this.urlPageSS[idx].src=Widget.BASE_URL+'/?tb=1&a='+designid;},_setUrlChildDesignSS:function(idx,designid)
{var self=this;if(designid===0||designid==='0'){designid=this.designSettings.lookups[idx].parentDesign.id;}
this.urlChildSS[idx].src=Widget.BASE_URL+'/?tb=1&a='+designid;},_createDesignRow:function(id)
{var self=this;var rowid=this.id+'-'+id;var rowdiv=document.createElement('div');rowdiv.id=rowid;dfx.addClass(rowdiv,this.rowC);var c='<div class="'+this.parentSSWrapC+'"><img class="'+this.ssC+'" width="146" height="100" src="" /></div>';c+='<div class="'+this.settingsWrap+'">';c+='  <div class="'+this.settingsWrapHeader+'">&nbsp;</div>';c+='  <div class="'+this.settingsWrapBody+'">';c+='    <div class="'+this.settingsWrapBodyCell+' '+this.settingsWrapPageDesignCell+'">&nbsp;</div>';c+='    <div class="'+this.settingsWrapBodyCell+' '+this.settingsWrapCascadeCell+'">&nbsp;</div>';c+='    <div class="'+this.settingsWrapBodyCell+' '+this.settingsWrapChildDesignCell+'">&nbsp;</div>';c+='  </div>';c+='</div>';c+='<div class="'+this.childSSWrapC+'"><img class="'+this.ssC+'" width="146" height="100" src="" /></div>';dfx.setHtml(rowdiv,c);return rowdiv;},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},saveScreenSettings:function()
{var self=this;var params={screen:this.id+'Widget',assetid:this.assetid,defaultPageDesign:this.defaultPage.getValue(false,false),defaultCascade:this.defaultCascade.getValue(),defaultChildDesign:this.defaultChild.getValue(false,false),urlLookups:[]};dfx.foreach(this.designSettings.lookups,function(idx){params.urlLookups.push({url:self.designSettings.lookups[idx].url,pageid:self.urlPage[idx].getValue(false,false),cascade:self.urlCascade[idx].getValue(),childid:self.urlChild[idx].getValue(false,false)});return true;});params.urlLookups=dfx.jsonEncode(params.urlLookups);this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){self.reset(function(){self.switchOnScreen();self.removeDisabledDiv();});},true);},revertScreenSettings:function()
{var self=this;this.displayDisabledDiv(true);this.reset(function(){self.removeDisabledDiv();});},reset:function(callback)
{var self=this;var params={mode:'EditScreenMode',screen:'DesignEditScreenWidget',type:'getDesignData',assetid:this.assetid};this.parent.getScreenData(params,function(data){var designData=dfx.jsonDecode(data);self.init(designData);callback.call(self);});},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},switchOffScreen:function(){}};dfx.inherits('DesignEditScreen','AbstractSettingsScreen');function KeywordAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='KeywordAdminScreen';this.formats=[];this.infobox=WidgetStore.get('KeywordAdminScreen-infobox');this.oldId='';this.predef=0;this.custom=0;}
KeywordAdminScreenWidgetType.prototype={init:function(data)
{var self=this;var className='KeywordFormatScreen-preview';var outputArea=dfx.getId(className+'-output');var previewButton=WidgetStore.get(className+'-button');if(dfx.isset(previewButton)===true){previewButton.addClickEvent(function(e){self.refreshOutput();},true);}
this.formats=dfx.jsonDecode(data.formats);this.initInfobox();this.displayItem(false);var deleteB=WidgetStore.get('KeywordFormatScreen-properties-delete');if(dfx.isset(deleteB)===true){deleteB.addClickEvent(function(){self.confirmDialog('Are you sure you want to delete this keyword format?','Delete Keyword Format',function(){self.deleteItem();});});}},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},refreshOutput:function()
{var className='KeywordFormatScreen-preview';var syntax=dfx.getId(className+'-syntax').value;var sample=dfx.getId(className+'-sample').value;var outputArea=dfx.getId(className+'-output');this.request({action:'processScreen',syntax:syntax,sample:sample,option:'preview',mode:'AdminScreenMode',screen:'KeywordAdminScreenWidget'},function(data){if(dfx.isset(outputArea)===true){dfx.setHtml(outputArea,data);}});},initInfobox:function()
{var self=this;var callback=function(){self.displayItem();};if(dfx.isset(this.infobox)===true){this.infobox.addSection('predefined','Pre-defined Formats');this.infobox.addSection('custom','Custom Formats');this.custom=0;this.predef=0;var formatSection='';var firstItem=false;for(var formatid in this.formats){var formatName=this.formats[formatid][0]['format_name'];if(firstItem===false){firstItem=true;if(this.infobox.hasSelection()===false){this.infobox.setSelected(formatName);}}
var format=this.formats[formatid][0];var formatTitle=format.friendly_name;if(format.custom===false){formatSection='Pre-defined Formats';self.predef++;this.infobox.addItem('predefined',formatName,formatTitle,callback);}else{formatSection='Custom Formats';self.custom++;this.infobox.addItem('custom',formatName,formatTitle,callback);}}
this.infobox.setTitle('Keyword Formats');var subtitle='Pre-defined ('+this.predef+'), Custom ('+this.custom+')';this.infobox.setSubtitle(subtitle);this.infobox.addButton('add','Add New','right');this.infobox.addButtonClickEvent('right',function(){self.displayItem(true);});}},displayItem:function(addNew)
{this.switchOffScreen();if(addNew===true){var self=this;this.infobox.reset();this.infobox.setSelected('untitled');this.initInfobox();this.infobox.addItem('custom','untitled','Untitled',function(){self.displayItem(false);});this.disablePreview();}else{var name=this.infobox.getClickedId();var formatid=this.getFormatidByName(name);if(name==='untitled'){this.infobox.reset();this.initInfobox();this.displayItem(true);return;}else{this.enablePreview();if(dfx.isset(this.formats[formatid])===true){var format=this.formats[formatid][0];}else{this.infobox.reset();this.infobox.setSelected('toupper');this.initInfobox();this.displayItem(false);return;}}}
var fText=dfx.getId('KeywordFormatScreen-properties-friendlyText');var uText=dfx.getId('KeywordFormatScreen-properties-usageText');var dText=dfx.getId('KeywordFormatScreen-properties-descText');var dButton=WidgetStore.get('KeywordFormatScreen-properties-delete');var fid=WidgetStore.get('KeywordFormatScreen-properties-fid');var fInput=WidgetStore.get('KeywordFormatScreen-properties-friendlyInput');var uInput=WidgetStore.get('KeywordFormatScreen-properties-usageInput');var dInput=WidgetStore.get('KeywordFormatScreen-properties-descInput');var cWrap=dfx.getId('KeywordFormatScreen-properties-code');var cInput=WidgetStore.get('KeywordFormatScreen-properties-codeInput');if(addNew===true){fid.setValue('');fInput.setValue('');uInput.setValue('');dInput.setValue('');cInput.setValue('');fInput.show();uInput.show();dInput.show();dfx.swapClass(cWrap,'hiding','showing');dfx.swapClass(fText,'showing','hiding');dfx.swapClass(uText,'showing','hiding');dfx.swapClass(dText,'showing','hiding');dButton.disable();this.switchOnScreen();}else{if(format.custom===true){fid.setValue(formatid);uInput.setValue(format.format_name);fInput.setValue(format.friendly_name);dInput.setValue(format.description);cInput.setValue(format.php_code);fInput.show();uInput.show();dInput.show();dfx.swapClass(cWrap,'hiding','showing');dfx.swapClass(fText,'showing','hiding');dfx.swapClass(uText,'showing','hiding');dfx.swapClass(dText,'showing','hiding');dButton.enable();this.switchOnScreen();}else if(format.custom===false){fid.setValue(formatid);dfx.setHtml(fText,format.friendly_name);dfx.setHtml(uText,format.format_name);dfx.setHtml(dText,format.description);dfx.swapClass(fText,'hiding','showing');dfx.swapClass(uText,'hiding','showing');dfx.swapClass(dText,'hiding','showing');fInput.hide();uInput.hide();dInput.hide();dfx.swapClass(cWrap,'showing','hiding');dButton.disable();}}
var syntax=WidgetStore.get('KeywordFormatScreen-preview-syntax');if(dfx.isset(syntax)===true){syntax.setValue('string~'+name);}
this.refreshOutput();},getFormatidByName:function(name)
{for(var formatid in this.formats){var formatName=this.formats[formatid][0]['format_name'];if(formatName===name){return formatid;}}
return-1;},deleteItem:function()
{var pid=this.infobox.getPrevClickedId();var id=this.infobox.getClickedId();var self=this;this.request({action:'processScreen',uid:id,option:'delete',mode:'AdminScreenMode',screen:'KeywordAdminScreenWidget'},function(data){self.formats=dfx.jsonDecode(data);self.infobox.reset();self.infobox.setSelected(pid);self.initInfobox();self.displayItem(false);});},saveKeywordFormat:function()
{var fid=WidgetStore.get('KeywordFormatScreen-properties-fid').getValue();var fInput=WidgetStore.get('KeywordFormatScreen-properties-friendlyInput');var uText=dfx.getId('KeywordFormatScreen-properties-usageText');var uInput=WidgetStore.get('KeywordFormatScreen-properties-usageInput');var dInput=WidgetStore.get('KeywordFormatScreen-properties-descInput');var cInput=WidgetStore.get('KeywordFormatScreen-properties-codeInput');var uid=uInput.getValue();if(uid===''){return;}
var params={fid:fid,uid:uid,friendly:fInput.getValue(),desc:dInput.getValue(),code:cInput.getValue(),option:'save',action:'processScreen',mode:'AdminScreenMode',screen:'KeywordAdminScreenWidget'};if(dfx.isset(this.formats[fid])===true){var self=this;var currentUsageName=this.formats[fid][0]['format_name'];var newUsageName=uInput.getValue();if(newUsageName!==currentUsageName){this.confirmDialog('Are you sure you want to rename this keyword format?<br /> All existing keyword replacements that are using this keyword format will no longer work.','Rename Keyword Format',function(){self.save(params);});}else{this.save(params);}
return;}else{this.save(params);}},save:function(params)
{for(var formatid in this.formats){var formatName=this.formats[formatid][0]['format_name'];if(formatName===params.uid&&formatid!==params.fid){var friendly=this.formats[formatid][0]['friendly_name'];var msg='The usage name "'+formatName+'"  is being used by the "'+friendly+'" keyword format. Please enter a different usage name';this.confirmDialog(msg,'Invalid Usage Name');return;}}
var self=this;this.request(params,function(data){if(data==='Invalid code'){self.confirmDialog('There is a parse error in the PHP code that you have entered into the code field. Please fix this error before saving your changes.','Invalid Code');}else{self.formats=dfx.jsonDecode(data);self.infobox.reset();self.infobox.setSelected(params.uid);self.enablePreview();self.initInfobox();self.displayItem(false);}});},disablePreview:function()
{var preview=dfx.getId('KeywordFormatScreen-preview-container');dfx.hideElement(preview);},enablePreview:function()
{var preview=dfx.getId('KeywordFormatScreen-preview-container');dfx.showElement(preview);},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveKeywordFormat();},function(){});}},switchOffScreen:function(){}};dfx.inherits('KeywordAdminScreen','AbstractSettingsScreen');function LinkingEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='LinkingEditScreen';this.parents=null;this.webPath='';this.changeStack=[];this.purging=false;this.contextClassname='dependency-usageContext';this.contextDescClassname='dependency-usageContextDesc';this.contextTagClassname='dependency-usageContextTag';this.contextCurvesClassname='dependency-usageContextCurves';this.contextTypeClassname='dependency-usageContextType';this.referenceExists=false;}
LinkingEditScreenWidgetType.prototype={screenModified:function()
{var self=this;var saveOn=false;dfx.foreach(this.parentInfo,function(pid){if(self.parentInfo[pid].newLink===true){saveOn=true;return false;}
if(self.parentInfo[pid].newLink===false){if(self.parentInfo[pid].showMenu!==self.parentInfoOri[pid].showMenu){saveOn=true;return false;}}
if(self.parentInfo[pid].deleted===true&&self.parentInfo[pid].newLink===false){saveOn=true;return false;}
if(self.parentInfo[pid].deleted===false&&self.parentInfo[pid].newLink===true){saveOn=true;return false;}
return true;});if(self.changeStack.length>1){saveOn=true;}
this.setModified(saveOn);return saveOn;},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);if(readOnly===false){for(var pid in this.parentInfo){if(this.parentInfo.hasOwnProperty(pid)===true){var deleteBtn=dfx.getId(this.id+'-row-delete-'+pid);dfx.removeClass(deleteBtn,'hide');}}}
for(var pid in this.parentInfo){if(this.parentInfo.hasOwnProperty(pid)===true){var toggleSlider=WidgetStore.get(this.id+'-showMenu-'+pid);toggleSlider.setReadOnly(this.readOnly);}}
var holder=dfx.getId(this.id+'-currentLinksSectionsectionHeader-buttonHolder');if(readOnly===true){dfx.hideElement(holder);}else{dfx.showElement(holder);}
var newLinkWdgt=WidgetStore.get(this.id+'-currentLinksSection-Button-NewLink');newLinkWdgt.setReadOnly(readOnly);if(readOnly===true){var readOnlyMask=document.createElement('div');dfx.addClass(readOnlyMask,this.widgetType+'-directChildren-readOnlyMask');dfx.showElement(readOnlyMask);dfx.setHtml(readOnlyMask,'&nbsp;');var wrapper=dfx.getId(this.id+'-directChildren-wrap');if(wrapper!==null){wrapper.appendChild(readOnlyMask);dfx.showElement(childrenMask);}}else{var childrenMask=dfx.getClass(this.widgetType+'-directChildren-readOnlyMask',dfx.getId(this.id+'-directChildren-wrap'))[0];if(childrenMask){dfx.remove(childrenMask);}}},init:function(data)
{var self=this;this.createLastLinkWarning();if(data.inTrash===true){dfx.hideElement(dfx.getId(this.id+'-currentLinksSectionsectionHeader'));dfx.hideElement(dfx.getId(this.id+'-directChildrenSectionsectionHeader'));this.showLastLinkWarning(data.inTrash);this.ready();return;}
if(dfx.isset(data.parentInfo)===false){this.parentInfo={};this.parentInfoOri={};}else{this.parentInfo=dfx.clone(data.parentInfo);this.parentInfoOri=dfx.clone(data.parentInfo);}
this.isSite=data.isSite;this.isProjectFolder=data.isProjectFolder||false;this.webPath=data.webPath;this.linksRemoved=data.linksRemoved;this.directChildren=data.children;this.deps=data.references;this.tagLineData=data.tagLineData;this.withSortOrder=data.withSortOrder;if(this.readOnly===true){this.linksRemoved=false;this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('LinkingEditScreen-currentLinksSection'),el);},function(){});}
var wrapper=dfx.getId(this.id+'-linksWrapper');var childLen=wrapper.childNodes.length;for(var i=(childLen-1);i>=0;i--){dfx.remove(wrapper.childNodes[i]);}
if(this.isSite===true||this.isProjectFolder===true){dfx.hideElement(dfx.getId(this.id+'-currentLinksSection'));}
if(this.isSite===false){var header=dfx.getId(this.id+'-currentLinksSectionsectionHeader');dfx.showElement(header);this.createLinksTable();}
this.createReferences(function(){self.createDirectChildren();if(self.isSite===false){var newLinkBtn=WidgetStore.get(self.id+'-currentLinksSection-Button-NewLink');var newLinkPickerid=self.id+'-newLinkPicker';var newLinkPicker=WidgetStore.get('EditingAssetPicker');newLinkPicker.setScreen(newLinkPickerid);newLinkPicker.setUniqueSelect(true);newLinkPicker.resetProjectFolderList(newLinkPickerid);newLinkPicker.setForceShowRoots(newLinkPickerid,true);if(data.type!==''){if(data.type==='*'){var folders=['Documents','Images','Movies','Users'];var fLen=folders.length;for(var i=0;i<fLen;i++){newLinkPicker.addProjectFolderWhiteList(newLinkPickerid,folders[i]);}}else if(data.type!=='*'){newLinkPicker.addProjectFolderWhiteList(newLinkPickerid,data.type);newLinkPicker.setHideSite(newLinkPickerid);}else if(data.type==='folder'){var folders=['Documents','Images','Movies'];var fLen=folders.length;for(var i=0;i<fLen;i++){newLinkPicker.addProjectFolderWhiteList(newLinkPickerid,folders[i]);}
newLinkPicker.setHideSite(newLinkPickerid);}}else{var folders=['Documents','Images','Movies','Designs','Roles','Users','Workflows'];var fLen=folders.length;for(var i=0;i<fLen;i++){newLinkPicker.addProjectFolderBlackList(newLinkPickerid,folders[i]);}}
newLinkPicker.addAssetsSelectedAction(function(assets){var selectedid=(new String(assets[0])).valueOf();var target=dfx.getId(self.id+'-currentLinksSection-Button-NewLink');if(dfx.isset(self.parentInfo[selectedid])===true&&Widget.IS_REMOTE_ASSET===false){var msg='self link already exists';self.showInterventionPopup(msg,null,'OK',target);return;}else if(selectedid===self.assetid){var msg='You cannot link an asset to itself';self.showInterventionPopup(msg,null,'OK',target);return;}else{var params={mode:'EditScreenMode',screen:'LinkingEditScreenWidget',type:'getParentUrlInfo',parentid:selectedid,assetid:self.assetid};self.parent.getScreenData(params,function(parentUrlInfo){parentUrlInfo=dfx.jsonDecode(parentUrlInfo);if(dfx.isset(parentUrlInfo.typeError)===true){var type=parentUrlInfo.typeError;var msg='You cannot link an asset under '+type+' asset';self.showInterventionPopup(msg,null,'OK',target);return;}else if(dfx.isset(parentUrlInfo.childLoop)===true){var msg='You cannot link an asset to it\'s children';self.showInterventionPopup(msg,null,'OK',target);return;}else if(dfx.isset(parentUrlInfo.parentSubGroup)===true){var msg='You cannot link a user group to sub user group';self.showInterventionPopup(msg,null,'OK',target);return;}else{self.parentInfo[selectedid]={deleted:false,showMenu:true,lookups:dfx.clone(parentUrlInfo),newLink:true};self.linksRemoved=false;self.createLinkRow(selectedid);self.setLastRowClassName();self.hideLastLinkWarning();}});}},true,newLinkPickerid);newLinkBtn.addClickEvent(function(){newLinkBtn.disable();self.displayDisabledDiv(true);var pickerid=self.id+'-newLinkPicker';newLinkPicker.init(pickerid,function(){newLinkPicker.dialog.open();});},true);newLinkPicker.addCloseAction(function(){newLinkBtn.enable();});}
self.ready();});},markAllForDeletion:function()
{var self=this;var changed=false;var lastLink=true;dfx.foreach(this.parentInfo,function(pid){if(self.parentInfo[pid].deleted===false){var status=self.markLinkDeleted(pid);if(status===true){changed=true;}else{lastLink=false;}}
return true;});if(changed===true){self.screenModified();}
if(lastLink===true){self.showLastLinkWarning();}},markLinkDeleted:function(pid)
{var row=dfx.getId(this.id+'-row-'+pid);var delCell=dfx.getClass('delete',row)[0];var showMenuSlider=WidgetStore.get(this.id+'-showMenu-'+pid);if(this.parentInfo[pid].isExt===true){var msg='External connection link cannot be deleted';this.showInterventionPopup(msg,null,'OK',delCell);return false;}
dfx.addClass(row,'deleted');this.parentInfo[pid].deleted=true;showMenuSlider.disable();dfx.addClass(delCell,'recover');this.screenModified();return true;},showInterventionPopup:function(msg,confirm,cancel,target)
{var self=this;this.includeWidget('Intervention',function(){var ok=dfx.getId('LinkingIntervention-cancelButton');if(ok){dfx.trigger(ok,'click');}
var ipopup=self.createWidget('LinkingIntervention','Intervention',function(){},function(){});ipopup.confirmText=confirm;ipopup.cancelText=cancel;ipopup.create(function(){ipopup.setSize('200px','60px');ipopup.setMessage(msg);ipopup.show(target);});});},createLinksTable:function()
{var self=this;var wrapper=dfx.getId(this.id+'-linksWrapper');var header=document.createElement('div');var content='<div class="'+this.widgetType+'-headerCell locations websiteloc">Website Locations</div>';content+='<div class="'+this.widgetType+'-headerCell show">Show in Menu</div>';content+='<div class="'+this.widgetType+'-headerCell delete">&nbsp;</div>';dfx.addClass(header,this.widgetType+'-headerRow');dfx.setHtml(header,content);wrapper.appendChild(header);self.includeWidgets(['ToggleButton'],function(){for(var parentid in this.parentInfo){if(this.parentInfo.hasOwnProperty(parentid)===true){(function(pid){self.createLinkRow(pid);})(parentid);}}
var childLen=wrapper.childNodes.length;dfx.addClass(wrapper.childNodes[(childLen-1)],'last');});},createLinkRow:function(pid)
{var self=this;var wrapper=dfx.getId(this.id+'-linksWrapper');var row=document.createElement('div');row.id=self.id+'-row-'+pid;var lookupParts=[];var lookupLen=self.parentInfo[pid].lookups.length;if(lookupLen===0){var lineage='<div class="LinkingEditScreen-lookup last"><span class="warning">Lookup information is missing. Please contact administrator for fix.</span></div>';}else{for(var i=0;i<lookupLen;i++){var lookup='';var urlPartsLen=self.parentInfo[pid].lookups[i].urlParts.length;var project=self.parentInfo[pid].lookups[i].project;var pStr='';if(project!==''){pStr='<span class="lineagePart project">'+project+'</span>';pStr+='<span class="lineageSeparator"> </span>';}
if(urlPartsLen===0){lookupStr='<span class="top">(top level)</span>';}else if(urlPartsLen>0){var parts=[];var separator='<span class="lineageSeparator"> </span>';for(var j=0;j<urlPartsLen;j++){var c='lineagePart';if(j===(urlPartsLen-1)){c+=' last';}
parts.push('<span class="'+c+'">'+self.parentInfo[pid].lookups[i].urlParts[j]+'</span>');}
lookupStr=parts.join(separator);}
var lc=self.widgetType+'-lookup';if(i===(lookupLen-1)){lc+=' last';}
if(pStr!==''){lookupStr=pStr+lookupStr;}
lookupStr='<div class="'+lc+'">'+lookupStr+'</div>';lookupParts.push(lookupStr);}
var lineage=lookupParts.join('');}
var smC=' showMenu';if(self.parentInfo[pid].showMenu===false){smC=' hideMenu';}
var content='<div class="showMenuBorder">&nbsp;</div>';content+='<div class="'+self.widgetType+'-rowCell locations'+smC+' menuIcon">'+lineage+'</div>';content+='<div class="'+self.widgetType+'-rowCell show"> </div>';if(this.readOnly===true){content+='<div class="'+self.widgetType+'-rowCell delete hide">&nbsp;</div>';}else{content+='<div class="'+self.widgetType+'-rowCell delete" title="Delete a link">&nbsp;</div>';}
dfx.addClass(row,self.widgetType+'-row');dfx.setHtml(row,content);var toggleCell=dfx.getClass('show',row)[0];var showMenuSlider=self.createWidget(self.id+'-showMenu-'+pid,'ToggleButton',false,'slider',self.parentInfo[pid].showMenu,'Yes','No');var locCell=dfx.getClass('locations',row)[0];if(self.parentInfo[pid].isExt===true){showMenuSlider.setReadOnly(true);}else{showMenuSlider.addToggleOnEvent(function(){dfx.swapClass(locCell,'hideMenu','showMenu');self.parentInfo[pid].showMenu=true;self.screenModified();});showMenuSlider.addToggleOffEvent(function(){dfx.swapClass(locCell,'showMenu','hideMenu');self.parentInfo[pid].showMenu=false;self.screenModified();});}
var delCell=dfx.getClass('delete',row)[0];delCell.id=self.id+'-row-delete-'+pid;dfx.addEvent(delCell,'click',function(e){if(self.parentInfo[pid].deleted===true){dfx.removeClass(row,'deleted');self.parentInfo[pid].deleted=false;showMenuSlider.enable();dfx.removeClass(delCell,'recover');self.hideLastLinkWarning();self.screenModified();}else if(self.parentInfo[pid].deleted===false){if(self.isLastLink(pid)===true){if(self.referenceExists===true){self.includeWidget('Intervention',function(){var ok=dfx.getId('LinkingIntervention-cancelButton');if(ok){dfx.trigger(ok,'click');}
var ipopup=self.createWidget('LinkingIntervention','Intervention',function(){},function(){});ipopup.confirmText=null;ipopup.cancelText='Ok';ipopup.create(function(){ipopup.setSize('200px','85px');ipopup.setMessage('This asset cannot be deleted as it is used by other assets');ipopup.show(delCell);});});}else{var block=false;var aid=parseInt(self.assetid);if(Widget.CURRENT_USERID===aid){block=true;}else{dfx.foreach(Widget.CURRENT_USER_GROUPS,function(idx){if(aid===Widget.CURRENT_USER_GROUPS[idx]){block=true;return false;}
return true;});}
if(block===true){var msg='You can not delete yourself or your group.';self.showInterventionPopup(msg,null,'OK',delCell);}else{var status=self.markLinkDeleted(pid);if(status===true){self.showLastLinkWarning();}}}}else{var status=self.markLinkDeleted(pid);}}});showMenuSlider.create(function(el){showMenuSlider.setValue(self.parentInfo[pid].showMenu);toggleCell.appendChild(el);wrapper.appendChild(row);if(self.linksRemoved===true){self.markAllForDeletion();}});},createReferences:function(callback)
{var self=this;var wrapper=dfx.getId(this.widgetType+'-referencesSection-items');var desc='This section lists the parts of the system that are using the current asset. ';desc+='This may be in the content of the page, in the settings of a design or as a keyword. ';desc+='Deleting this asset may result in missing content or broken hyperlinks for these assets.';var descDiv=document.createElement('div');dfx.setHtml(descDiv,desc);dfx.addClass(descDiv,this.widgetType+'-deps-description');wrapper.appendChild(descDiv);this.includeWidgets(['PlainList','AssetTagLine','ToggleButton'],function(){if(self.deps.length===0){var rows=[];var noref=document.createElement('span');dfx.setHtml(noref,'There are no references to this asset.');rows.push({id:self.id+'-noref-row',left:noref,right:null});var list=self.createWidget(self.id+'-ref-list','PlainList','710',false,false,false,rows);list.create(function(el){wrapper.appendChild(el);if(callback){callback.call(self);}});}else{var sectionsTitles={'embedded_media':'Embedded Media','content_references':'Content References','general_references':'General References','design_related':'Design Related'};var tagLines=[];var tagLinesElem={};var lists=[];var warnings={};var warningElems={};var depPubExists=false;dfx.foreach(self.deps,function(sectionid){var listWrapper=document.createElement('div');dfx.addClass(listWrapper,self.widgetType+'-pubDepsListWrap');var subHeader=document.createElement('h2');dfx.setHtml(subHeader,sectionsTitles[sectionid]);dfx.addClass(subHeader,'dependency');listWrapper.appendChild(subHeader);var listW=document.createElement('div');listWrapper.appendChild(listW);dfx.addClass(listW,self.widgetType+'-pubDepsList');wrapper.appendChild(listWrapper);dfx.foreach(self.deps[sectionid],function(idx){self.referenceExists=true;var consumerid=self.deps[sectionid][idx].consumerId;var widgetid=self.id+'-'+sectionid+'-'+consumerid+'-'+idx;var astTagLine=self.createWidget(widgetid,'AssetTagLine');astTagLine.setCustomData({id:consumerid,name:self.tagLineData[consumerid].name,iconUrl:self.tagLineData[consumerid].typeIconUrl,assetType:self.tagLineData[consumerid].type,url:self.tagLineData[consumerid].url});tagLines.push({wdgt:astTagLine,sectionid:sectionid,idx:idx});return true;});lists.push({id:sectionid,elem:listW});return true;});var _createDependencyLists=function(idx){var sectionid=lists[idx].id;var rows=[];dfx.foreach(self.deps[sectionid],function(idx){var consumerid=self.deps[sectionid][idx].consumerId;var widgetid=self.id+'-'+sectionid+'-'+consumerid+'-'+idx;var context=document.createElement('div');var contextDesc=document.createElement('div');var contextTag=document.createElement('div');var contextCurves=document.createElement('span');var contextType=document.createElement('span');dfx.addClass(context,self.contextClassname);dfx.addClass(contextDesc,self.contextDescClassname);dfx.addClass(contextTag,self.contextTagClassname);dfx.addClass(contextCurves,self.contextCurvesClassname);dfx.addClass(contextType,self.contextTypeClassname);dfx.setHtml(contextDesc,self.deps[sectionid][idx].resourceUsedAs);dfx.setHtml(contextType,self.deps[sectionid][idx].resourceString);contextCurves.appendChild(contextType);contextTag.appendChild(contextCurves);context.appendChild(contextDesc);;context.appendChild(contextTag);rows.push({id:widgetid+'-row',left:tagLinesElem[widgetid],right:context});return true;});var list=self.createWidget(self.id+'-'+sectionid+'-list','PlainList','710',false,false,false,rows);list.create(function(el){lists[idx].elem.appendChild(el);if(idx<(lists.length-1)){_createDependencyLists(idx+1);}else{if(callback){callback.call(self);}}});};var tagLinesLen=tagLines.length;var _createAstTagLines=function(idx){tagLines[idx].wdgt.create(function(elem){tagLinesElem[tagLines[idx].wdgt.id]=elem;if(idx<(tagLinesLen-1)){_createAstTagLines(idx+1);}else{if(lists.length>0){_createDependencyLists(0);}}});};if(tagLinesLen>0){_createAstTagLines(0);}else{if(callback){callback.call(self);}}}});},createDirectChildren:function()
{var self=this;var sectionBody=dfx.getId(this.id+'-directChildrenSection-items');var sectionDesc=document.createElement('div');if(this.directChildren===null){var desc='There are no direct children.';}else{var desc='The following list of assets are direct children of this page. Use this list to change the order in which they appear in menus and listings.';}
sectionDesc.id=this.id+'-directChildren-desc';dfx.addClass(sectionDesc,this.widgetType+'-directChildren-desc');dfx.setHtml(sectionBody,'');dfx.setHtml(sectionDesc,desc);sectionBody.appendChild(sectionDesc);if(this.directChildren!==null){var childrenWrap=document.createElement('div');childrenWrap.id=this.id+'-directChildren-wrap';dfx.addClass(childrenWrap,this.widgetType+'-directChildren-wrap');sectionBody.appendChild(childrenWrap);var count=0;self.positionMap=[];self.includeWidgets(['Button'],function(){var initialStackid='';dfx.foreach(this.directChildren,function(sortOrder){var assetid=self.directChildren[sortOrder].id;var name=self.directChildren[sortOrder].name;var typeIcon=self.directChildren[sortOrder].typeIcon;var childRow=document.createElement('div');childRow.id=self.id+'-directChildren-child-'+assetid;childRow.setAttribute('assetid',assetid);dfx.addClass(childRow,self.widgetType+'-directChildren-child');if(self.withSortOrder===true){var content='<div id="handle_'+assetid+'" class="'+self.widgetType+'-directChildren-dragHandle">&nbsp;</div>';}else{var content='';}
content+='<div class="'+self.widgetType+'-directChildren-typeIcon"><img src="'+typeIcon+'" /></div>';content+='<div class="'+self.widgetType+'-directChildren-assetName">'+name;content+=' <span class="'+self.widgetType+'-directChildren-assetid" title="#'+assetid+'">[#'+dfx.ellipsize(assetid,30)+']</span></div>';content+='<div class="'+self.widgetType+'-directChildren-btnWrap"> </div>';dfx.setHtml(childRow,content);var gotoBtn=self.createWidget(self.id+'-directChildren-goto-'+assetid,'Button');gotoBtn.setName('Go to Linking Screen');gotoBtn.create(function(el){var btnWrap=dfx.getClass(self.widgetType+'-directChildren-btnWrap',childRow)[0];btnWrap.appendChild(el);childrenWrap.appendChild(childRow);initialStackid+=assetid+':';self.positionMap.push({assetid:assetid,rowid:self.id+'-directChildren-child-'+assetid,sortOrder:sortOrder});count++;return true;});gotoBtn.addClickEvent(function(e){var _redirect=function(){self.displayDisabledDiv(true);AssetManager.getAsset(assetid,function(assets){var url=assets.getUrl();var qs=dfx.queryString(url);var questionIdx=url.search(/\?/);if(questionIdx===-1){url+='/_edit?initialMode=EditScreenMode&initialScreen=LinkingEditScreenWidget';}else{url.substr(0,questionIdx);url=url.replace('?','/_edit?')+'&initialMode=EditScreenMode&initialScreen=LinkingEditScreenWidget';}
var loaderMsg=dfx.getId('_disabledDiv_loaderMsg');if(loaderMsg){dfx.setHtml(loaderMsg,'Currently re-directing...');}
window.location=url;return false;});};var saveBtn=WidgetStore.get('EditingSaveButton');if(saveBtn.isEnabled()===true){var answer=confirm(WidgetStore.getUnsavedChangesStr());if(!answer){return;}}
_redirect();});});if(self.readOnly===true){var readOnlyMask=document.createElement('div');dfx.addClass(readOnlyMask,this.widgetType+'-directChildren-readOnlyMask');dfx.showElement(readOnlyMask);dfx.setHtml(readOnlyMask,'&nbsp;');childrenWrap.appendChild(readOnlyMask);}
self.changeStack.push({stackid:initialStackid,move:null});var recordMovement=function(event,ui){var handle=dfx.getMouseEventTarget(event.originalEvent);var handleid=handle.id;var rowid=handle.parentNode.id;var aid=handleid.substring(7);var prevIdx=0;var prevLen=self.positionMap.length;for(var i=0;i<prevLen;i++){if(self.positionMap[i].rowid===rowid){var fromSortOrder=self.positionMap[i].sortOrder;}}
var currIdx=0;var currChildren=jQuery(childrenWrap).sortable('toArray');var currLen=currChildren.length;for(var i=0;i<currLen;i++){if(currChildren[i]===rowid){var toSortOrder=self.positionMap[i].sortOrder;break;}}
var stackid='';for(var i=0;i<currLen;i++){self.positionMap[i].rowid=currChildren[i];stackid+=self.positionMap[i].rowid.substring((self.id+'-directChildren-child-').length)+':';}
var stackSize=self.changeStack.length;if(self.changeStack[(stackSize-1)].stackid!==stackid){var redundant=false;for(var i=0;i<stackSize;i++){if(self.changeStack[i].stackid===stackid){if(i===0){self.changeStack=self.changeStack.slice(0,1);}else{self.changeStack=self.changeStack.slice(0,i+1);}
redundant=true;break;}}
if(redundant===false){self.changeStack.push({stackid:stackid,move:{assetid:aid,from:fromSortOrder,to:toSortOrder}});}}};if(self.withSortOrder===true){jQuery(childrenWrap).sortable({axis:'y',handle:'div.'+self.widgetType+'-directChildren-dragHandle',stop:function(event,ui){recordMovement(event,ui);self.screenModified();},tolerance:'pointer'});}});}},showLastLinkWarning:function(inTrash)
{var warning=dfx.getId('LinkingEditScreen-lastLinkWarning');var content='<span class="warningTitle">Warning</span>';if(inTrash&&inTrash===true){content+='This asset is currently in the trash. Any hyperlinks or';content+=' references to this asset will not work when the';content+=' asset is in the trash.';}else{content+='This asset will be moved to the trash when you click the save button as all links';content+=' have been marked for deletion. Any hyperlinks or';content+=' references to this asset will not work when the';content+=' asset is in the trash.';}
dfx.setHtml(warning,content);dfx.showElement(warning);this.purging=true;},hideLastLinkWarning:function()
{dfx.hideElement(dfx.getId('LinkingEditScreen-lastLinkWarning'));this.purging=false;},createLastLinkWarning:function()
{var warning=dfx.getId('LinkingEditScreen-lastLinkWarning');if(dfx.isset(warning)===false){warning=document.createElement('div');warning.id='LinkingEditScreen-lastLinkWarning';var section=dfx.getId(this.id+'-currentLinksSection');dfx.addClass(warning,this.widgetType+'-lastLinkWarning');section.insertBefore(warning,section.childNodes[0]);}
dfx.hideElement(warning);},isLastLink:function(parentid)
{var self=this;var isLast=true;var notDeletedC=0;var lastid=null;var count=0;dfx.foreach(this.parentInfo,function(pid){count++;if(self.parentInfo[pid].deleted===false){notDeletedC++;lastid=pid;}
if(notDeletedC>1){isLast=false;return false;}
return true;});if(isLast===false){return false;}
if(lastid===parentid||notDeletedC===0){return true;}
return false;},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},setLastRowClassName:function()
{var wrap=dfx.getId(this.id+'-linksWrapper');var childLen=wrap.childNodes.length;for(var i=1;i<childLen;i++){dfx.removeClass(wrap.childNodes[i],'last');}
dfx.addClass(wrap.childNodes[(wrap.childNodes.length-1)],'last');},saveScreenSettings:function()
{var self=this;this.removeToolbarButton('save_linkEdit');var params={screen:this.id+'Widget',assetid:this.assetid,purging:this.purging,sortOrder:dfx.jsonEncode(this.changeStack),withSortOrder:this.withSortOrder,op:'saveLinkEdit'};if(this.isSite===false){params.parentInfo=dfx.jsonEncode(this.parentInfo);}
this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){if(self.isSite===false){var deletedLen=data.deleted.length;var redirect=false;var skip=false;for(var pid in self.parentInfo){if(self.parentInfo[pid].isExt===true){var strip=window.location.href.replace(/\?a=.*/gi,'');if(strip!==window.location.href){skip=true;}}}
for(var i=0;i<deletedLen;i++){var deletedid=data.deleted[i];dfx.remove(dfx.getId(self.id+'-row-'+deletedid));dfx.remove(self.parentInfoOri[deletedid]);var lookupLen=self.parentInfo[deletedid].lookups.length;if(skip===false){for(var j=0;j<lookupLen;j++){if(self.parentInfo[deletedid].newLink===false){if(window.location.href.search(self.parentInfo[deletedid].lookups[j].url)===0){self.deletedParentUrl=self.parentInfo[deletedid].lookups[j].url;redirect=true;}}}}
delete self.parentInfo[deletedid];}
if(data.added.length>0){var options={attributes:[],type:false,typeIcon:false,linking:[],urls:true};if(Widget.IS_REMOTE_ASSET===true){AssetManager.getShadowidFromRemoteid(self.assetid,function(shadowid){AssetManager.getAsset(shadowid,function(ast){window.location.href=ast.getUrl()+'/_edit';},true,options);});return;}else if(Widget.IS_SHADOW_ASSET===true){AssetManager.getAsset(self.assetid,function(ast){window.location.href=ast.getUrl()+'/_edit';},true,options);return;}}
if(redirect===true){var saveDiv=dfx.getClass('saveCompleted-msg',document.body)[0];dfx.setHtml(saveDiv,'Currently re-directing...');self.redirectUrl();}else{dfx.foreach(data.showMenu,function(pid){self.parentInfoOri[pid].showMenu=data.showMenu[pid];});self.setLastRowClassName();var addedLen=data.added.length;for(var i=0;i<addedLen;i++){var addedid=data.added[i];self.parentInfo[addedid].newLink=false;self.parentInfoOri[addedid]=dfx.clone(self.parentInfo[addedid]);}}}
self.changeStack=[];self.positionMap=[];self.directChildren=dfx.clone(data.children);var initialStackid='';dfx.foreach(self.directChildren,function(sortOrder){var assetid=self.directChildren[sortOrder].id;initialStackid+=assetid+':';self.positionMap.push({assetid:assetid,rowid:self.id+'-directChildren-child-'+assetid,sortOrder:sortOrder});return true;});self.changeStack.push({stackid:initialStackid,move:null});self.switchOnScreen();self.removeDisabledDiv(null,true);},true);},revertScreenSettings:function()
{var self=this;this.changeStack=[];this.positionMap=[];this.displayDisabledDiv();this.hideLastLinkWarning();this.reset(function(){self.removeDisabledDiv();});},redirectUrl:function()
{var prjFldUrl=false;var prjFldWebPathsLen=Widget.PROJECT_FOLDER_WEBPATHS.length;for(var i=0;i<prjFldWebPathsLen;i++){if(window.location.href.search('/'+Widget.PROJECT_FOLDER_WEBPATHS[i]+'/')!==-1){prjFldUrl=true;break;}}
var destUrl='';if(prjFldUrl===false){for(var pid in this.parentInfo){if(this.parentInfo.hasOwnProperty(pid)===true){var lookupLen=this.parentInfo[pid].lookups.length;for(var i=0;i<lookupLen;i++){if(this.parentInfo[pid].lookups[i].url.search(Widget.BASE_URL)===0){destUrl=this.parentInfo[pid].lookups[i].url;}}
window.location.href=destUrl+'/'+this.webPath+'/_edit';return;}}
if(destUrl.length===0){destUrl=this.deletedParentUrl;}
window.location.href=destUrl+'/_edit';}else{destUrl=Widget.EDIT_URL;for(var pid in this.parentInfo){if(this.parentInfo[pid].isExt===true){var lookupLen=this.parentInfo[pid].lookups.length;for(var i=0;i<lookupLen;i++){if(this.parentInfo[pid].lookups[i].url.search(Widget.BASE_URL)===0){destUrl=this.parentInfo[pid].lookups[i].url+'/_edit?a='+this.assetid;break;}}
break;}}
window.location.href=destUrl;}},reset:function(callback)
{var self=this;var params={mode:'EditScreenMode',screen:'LinkingEditScreenWidget',type:'getLinkingData',assetid:this.assetid};this.parent.getScreenData(params,function(data){var linkingData=dfx.jsonDecode(data);self.init(linkingData);callback.call(self);});},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();},true);}},switchOffScreen:function(){}};dfx.inherits('LinkingEditScreen','AbstractSettingsScreen');function LogEditScreenWidgetType(id,screenid,system,title,parent,assetid)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid);this.widgetType='LogEditScreen';this.selectWidgetid=this.id+'-select';this.tableDivid=this.id+'-tableDiv';}
LogEditScreenWidgetType.prototype={init:function(data)
{var selectWidget=WidgetStore.get(this.selectWidgetid);if(selectWidget){var self=this;selectWidget.addItemSelectedEvent(function(){self.loadLogType(selectWidget.getValue());});}},loadLogType:function(type)
{if(type){var params={logType:dfx.jsonEncode(type),screen:this.id+'Widget'};var self=this;this.parent.processScreen(params,function(data){var elem=dfx.getId(self.tableDivid);if(elem){dfx.setHtml(elem,data);}});}},switchOnScreen:function(){},switchOffScreen:function(){}};dfx.inherits('LogEditScreen','AbstractSettingsScreen');function LookupEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='LookupEditScreen';this.paths=[];this.webPathsManager=null;this.webPathsManagerDynamicDiv=WidgetStore.get(this.id+'-webPathsManager');}
LookupEditScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);if(this.webPathsManager){this.webPathsManager.setReadOnly(readOnly);}},init:function(data)
{var self=this;if(this.readOnly){self.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('LookupEditScreen-webPathsManager-wrapper'),el);},function(){self.webPathsManager.forceEdit();});}
this.webPathsManagerDynamicDiv.changeContent({action:'paintScreen',mode:'EditScreenMode',screen:'LookupEditScreenWidget',type:'webPathsDynamicDiv',assetid:this.assetid},function(data){self.webPathsManager=WidgetStore.get('WebPathsManager');self.webPathsManager.assetid=self.assetid;self.webPathsManager.setReadOnly(self.readOnly);self.ready();});},reload:function()
{var self=this;delete this.webPathsManager;this.webPathsManagerDynamicDiv.changeContent({action:'paintScreen',mode:'EditScreenMode',screen:'LookupEditScreenWidget',type:'webPathsDynamicDiv',assetid:this.assetid},function(data){self.webPathsManager=WidgetStore.get('WebPathsManager');self.webPathsManager.assetid=self.assetid;self.webPathsManager.setReadOnly(self.readOnly);});},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},switchOnScreen:function(){},switchOffScreen:function(){}};dfx.inherits('LookupEditScreen','AbstractSettingsScreen');function MetadataAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='MetadataAdminScreen';this.fields={};this.fieldsElem=null;this.fieldStates=[];this.originalData=null;this._isAutoSave=false;}
MetadataAdminScreenWidgetType.prototype={init:function(data)
{var self=this;var fields={};if(data&&data.fields){fields=dfx.jsonDecode(data.fields);this.originalData=dfx.clone(fields);}
if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){var containerEl=dfx.getId(this.id+'-fieldList-wrapper');dfx.insertBefore(containerEl,el);},function(){self.reload(self.originalData);});}
this._createFields(dfx.clone(fields),function(){self._addScreenAddButtonEvent();var fieldsElem=dfx.getId(self.id+'-fields');if(fieldsElem){self.fieldsElem=fieldsElem;jQuery(self.fieldsElem).sortable({axis:'y',handle:'div.'+self.getClass()+'-field-move',stop:function(){self.updateFieldNumbers();self.setModified(true);}});}
self.ready();});},_createFields:function(fields,callback)
{var self=this;var c=false;for(var fieldid in fields){if(fields.hasOwnProperty(fieldid)===true){c=true;var field=fields[fieldid];self.createField(field.type,field,true,function(){delete fields[fieldid];self._createFields(fields,callback);});break;}}
if(c===false&&callback){callback.call(this);return;}},_addScreenAddButtonEvent:function()
{var addButton=WidgetStore.get(this.id+'-screenAdd');if(addButton){var self=this;addButton.addClickEvent(function(){var type='text';var typeWidget=WidgetStore.get(self.id+'-screenFieldType');if(typeWidget){type=typeWidget.getValue();}
var collapsed=false;var cNum=parseInt(WidgetStore.get(self.id+'-numFields').getValue(),10);while(cNum-->0){self.createField(type,null,false);}
self.setModified(true);});}},getAutoSaveContents:function()
{this._isAutoSave=true;var settings=this.getSettings(true);this._isAutoSave=false;return settings;},loadAutoSaveContents:function(content,callBack)
{this.reload(content);},createField:function(type,fieldSettings,collapsed,callback)
{type=type||'text';fieldSettings=fieldSettings||{};if(dfx.isset(collapsed)===true){collapsed=collapsed;}else{collapsed=true;}
var id=dfx.getUniqueId();var c=this.getClass()+'-field';var main=document.createElement('div');main.id=id;dfx.addClass(main,c);var content='';content+='<div class="'+c+'-top">';if(collapsed===true){content+='<div class="'+c+'-exp closed" title="Expand"></div>';}else{content+='<div class="'+c+'-exp" title="Collapse"></div>';}
content+='<div class="'+c+'-num">1.</div>';if(this.readOnly!==true){content+='<div class="'+c+'-move"></div>';}
content+='<div class="'+c+'-name">';content+='<div class="'+c+'-name-txt"></div>';content+='<div class="'+c+'-name-input"></div>';content+='</div>';var isRequiredTitles={on:'Click to make this an optional metadata field',off:'Click to make this a required metadata field'};if(fieldSettings.isRequired===true){content+='<div class="'+c+'-req required" title="'+isRequiredTitles.on+'"></div>';}else{content+='<div class="'+c+'-req" title="'+isRequiredTitles.off+'"></div>';}
var isLockedTitltes={on:'Click to unlock this metadata field and allow the value to be changed',off:'Click to lock this metadata field and ensure the default value is always used'};if(fieldSettings.isEditable!==false){content+='<div class="'+c+'-edit editable" title="'+isLockedTitltes.off+'"></div>';}else{content+='<div class="'+c+'-edit" title="'+isLockedTitltes.on+'"></div>';}
content+='<div class="'+c+'-type">';content+='<div class="'+c+'-type-txt"></div>';content+='<div class="'+c+'-type-input"></div>';content+='</div>';content+='<div class="'+c+'-remove"></div>';content+='</div>';if(collapsed!==true){content+='<div class="'+c+'-bot">';}else{content+='<div class="'+c+'-bot closed">';}
content+='</div>';content+='<div class="'+c+'-disabled"></div>';dfx.setHtml(main,content);var fieldNameCont=dfx.getClass(c+'-name-input',main)[0];var fieldNameText=dfx.getClass(c+'-name-txt',main)[0];var typeSelectCont=dfx.getClass(c+'-type-input',main)[0];var typeSelectText=dfx.getClass(c+'-type-txt',main)[0];var settingsCont=dfx.getClass(c+'-bot',main)[0];var selectItmes={text:'Text Field',number:'Numeric Field',selection:'Select Field'};var top=dfx.getClass(c+'-top',main)[0];var expander=dfx.getClass(c+'-exp',main)[0];var requiredControl=dfx.getClass(c+'-req',main)[0];var settingWidgetName='MetadataAdmin'+dfx.ucFirst(type)+'Setting';var self=this;this.includeWidgets(['TextField','TextArea','Select','MetadataAdminSetting',settingWidgetName],function(){var fieldName=self.createWidget(id+'-name','TextField');if(dfx.isset(fieldSettings.name)===true){fieldName.setValue(fieldSettings.name);}else{fieldName.setValue('');}
var typeSelect=self.createWidget(id+'-type','Select');typeSelect.addItems(selectItmes);var fieldOrigName=self.createWidget(id+'-origName','TextField');fieldOrigName.setValue(fieldSettings.origName);fieldName.create(function(fieldNameEl){fieldName.addOnChangeEvent(function(){var val=this.getValue();this.setValue(val.replace(/~/g,''));self.setModified(true);});fieldNameCont.appendChild(fieldNameEl);dfx.addEvent(fieldName.input,'blur',function(){var dupeErrEl=dfx.getId(self.id+'_dupeError');if(dupeErrEl){dfx.remove(dupeErrEl);}
var settings=self.getSettings(false);var sln=settings.length;var fcount=0;for(var i=0;i<sln;i++){if(dfx.trim(settings[i].name)!==''&&settings[i].name===fieldName.getValue()){fcount++;}
if(fcount>=2){self.createScreenWarningMessage({id:self.id+'_dupeError',leftTitle:'Duplicate Field Name',mainMessage:'You must enter a unique value for each metadata field name',colour:'red',buttonTitle:null},function(dupeErrEl){dfx.insertBefore(dfx.getId(self.id+'-fieldList-wrapper'),dupeErrEl);});break;}}});typeSelect.create(function(typeSelectEl){typeSelect.addItemSelectedEvent(function(){self.setModified(true);});typeSelect.setValue(type,true);typeSelectCont.appendChild(typeSelectEl);});var settingWidget=self.createWidget(null,settingWidgetName);if(settingWidget){settingWidget.reqElem=requiredControl;settingWidget.setSttings(fieldSettings.settings);self.fields[id]=settingWidget;settingWidget.create(function(settingsElem){if(settingsElem){settingsCont.appendChild(settingsElem);}
if(collapsed===true){self.collapseField(main);}
var el=dfx.getId(self.id+'-fields');if(el){el.appendChild(main);self.updateFieldNumbers();jQuery(self.fieldsElem).sortable('refresh');}
if(callback){callback.call(this);}});}});});dfx.addEvent(top,'click',function(e){if(dfx.getMouseEventTarget(e)===top){if(dfx.hasClass(expander,'closed')===true){self.expandField(main);}else{self.collapseField(main);}}});dfx.addEvent(expander,'safedblclick',function(e){if(dfx.hasClass(expander,'closed')===true){self.expandField(main);}else{self.collapseField(main);}},function(e){if(dfx.hasClass(expander,'closed')===true){self.expandAllFields();}else{self.collapseAllFields();}
dfx.stopPropagation(e);});dfx.addEvent(requiredControl,'click',function(e){if(self.readOnly===true){return;}
dfx.toggleClass(requiredControl,'required');if(dfx.hasClass(requiredControl,'required')===true){requiredControl.title=isRequiredTitles.on;}else{requiredControl.title=isRequiredTitles.off;}
self.setModified(true);dfx.stopPropagation(e);});var editableControl=dfx.getClass(c+'-edit',main)[0];dfx.addEvent(editableControl,'click',function(e){if(self.readOnly===true){return;}
dfx.toggleClass(editableControl,'editable');if(dfx.hasClass(editableControl,'editable')===true){editableControl.title=isLockedTitltes.off;}else{editableControl.title=isLockedTitltes.on;}
self.setModified(true);dfx.stopPropagation(e);});var deleteControl=dfx.getClass(c+'-remove',main)[0];if(this.readOnly===true){dfx.setStyle(deleteControl,'display','none');}
dfx.addEvent(deleteControl,'click',function(e){if(self.readOnly===true){return;}
dfx.toggleClass(main,'removed');self.collapseField(main);self.setModified(true);dfx.stopPropagation(e);});if(fieldSettings.isRemoved===true){dfx.trigger(deleteControl,'click');}},expandField:function(field)
{var c=this.getClass()+'-field';var expander=dfx.getClass(c+'-exp',field)[0];var settingsCont=dfx.getClass(c+'-bot',field)[0];var fieldNameCont=dfx.getClass(c+'-name-input',field)[0];var fieldNameText=dfx.getClass(c+'-name-txt',field)[0];var typeSelectCont=dfx.getClass(c+'-type-input',field)[0];var typeSelectText=dfx.getClass(c+'-type-txt',field)[0];dfx.removeClass(expander,'closed');expander.title='Collapse';dfx.removeClass(settingsCont,'closed');dfx.setStyle(fieldNameCont,'display','block');dfx.setStyle(fieldNameText,'display','none');dfx.setStyle(typeSelectCont,'display','block');dfx.setStyle(typeSelectText,'display','none');},collapseField:function(field)
{var c=this.getClass()+'-field';var expander=dfx.getClass(c+'-exp',field)[0];var settingsCont=dfx.getClass(c+'-bot',field)[0];var fieldNameCont=dfx.getClass(c+'-name-input',field)[0];var fieldNameText=dfx.getClass(c+'-name-txt',field)[0];var typeSelectCont=dfx.getClass(c+'-type-input',field)[0];var typeSelectText=dfx.getClass(c+'-type-txt',field)[0];dfx.addClass(expander,'closed');expander.title='Expand';dfx.addClass(settingsCont,'closed');dfx.setStyle(fieldNameCont,'display','none');dfx.setHtml(fieldNameText,WidgetStore.get(field.id+'-name').getValue());dfx.setStyle(fieldNameText,'display','block');dfx.setHtml(typeSelectText,WidgetStore.get(field.id+'-type').getValue(false,true));dfx.setStyle(typeSelectCont,'display','none');dfx.setStyle(typeSelectText,'display','block');},expandAllFields:function()
{var c=this.getClass()+'-field';var elems=dfx.getClass(c,dfx.getId(this.id+'-fields'));var elemln=elems.length;for(var i=0;i<elemln;i++){this.expandField(elems[i]);}},collapseAllFields:function()
{var c=this.getClass()+'-field';var elems=dfx.getClass(c,dfx.getId(this.id+'-fields'));var elemln=elems.length;for(var i=0;i<elemln;i++){this.collapseField(elems[i]);}},getSettings:function(forSave)
{var settings=[];this.fieldStates=[];var fieldElems=dfx.getId(this.getClass()+'-fields');var fields=dfx.getClass(this.getClass()+'-field',fields);var ln=fields.length;for(var i=0;i<ln;i++){var isRemoved=false;var id=fields[i].id;if(this.fields.hasOwnProperty(id)!==true){continue;}
if(dfx.hasClass(fields[i],'removed')===true){isRemoved=true;}
var bottomDiv=dfx.getClass(this.getClass()+'-field-bot',fields[i])[0];this.fieldStates.push(dfx.hasClass(bottomDiv,'closed'));var fieldSettings={};fieldSettings.settings=this.fields[id].getSettings();fieldSettings.isRemoved=isRemoved;fieldSettings.isEditable=this.fieldIsEditable(id);fieldSettings.isRequired=this.fieldIsRequired(id);fieldSettings.name=WidgetStore.get(id+'-name').getValue();fieldSettings.origName=WidgetStore.get(id+'-origName').getValue();fieldSettings.type=WidgetStore.get(id+'-type').getValue();if(fieldSettings.type==='selection'&&forSave===true){if(this.fields[id].settings.options){this.fields[id].settings.options.prune();fieldSettings.settings.defaultValue=this.fields[id].settings.options.getDefaultValue(true);}}
if(dfx.isset(fieldSettings.settings.defaultValue)===true){fieldSettings.defaultValue=fieldSettings.settings.defaultValue;}
settings.push(fieldSettings);}
return settings;},fieldIsRequired:function(fieldid)
{return dfx.hasClass(dfx.getClass(this.getClass()+'-field-req',dfx.getId(fieldid))[0],'required');},fieldIsEditable:function(fieldid)
{return dfx.hasClass(dfx.getClass(this.getClass()+'-field-edit',dfx.getId(fieldid))[0],'editable');},save:function()
{var settings=this.getSettings(true);this.displayDisabledDiv(true);var params={screen:this.id+'Widget',settings:dfx.jsonEncode(settings)};var self=this;this.parent.processScreen(params,function(data){if(data&&!data.errors&&data.fields){self.reload(data.fields);self.removeDisabledDiv(null,true);self.originalData=dfx.clone(data.fields);}
self.switchOnScreen();},true);},reload:function(fields)
{dfx.empty(dfx.getId(this.id+'-fields'));var self=this;var count=0;for(var fieldid in fields){if(fields.hasOwnProperty(fieldid)===true){var field=fields[fieldid];self.createField(field.type,field,this.fieldStates[count]);count++;}}},updateFieldNumbers:function()
{var fields=dfx.getClass(this.getClass()+'-field-num',dfx.getId(this.id+'-fields'));var ln=fields.length;for(var i=0;i<ln;i++){dfx.setHtml(fields[i],(i+1)+'.');}},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){self.save();},function(){self.reload(self.originalData);self.removeDisabledDiv(null,true);});},switchOffScreen:function()
{this.fields=null;this.fieldsElem=null;this.fieldStates=null;this.originalData=null;dfx.empty(dfx.getId(this.id+'-fields'));},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var numFieldsText=dfx.getId(this.id+'-screenText');if(numFieldsText){if(readOnly===true){dfx.setStyle(numFieldsText,'display','none');}}
var numFieldsWidget=WidgetStore.get('MetadataAdminScreen-numFields');if(numFieldsWidget){numFieldsWidget.setReadOnly(readOnly);var numFieldsCont=dfx.getId(this.id+'-numFields-container');if(readOnly===true){dfx.setStyle(numFieldsCont,'display','none');}else{dfx.setStyle(numFieldsCont,'display','block');}}
var addButton=WidgetStore.get(this.id+'-screenAdd');if(addButton){addButton.setReadOnly(readOnly);}
var fieldTypeWidget=WidgetStore.get(this.id+'-screenFieldType');if(fieldTypeWidget){fieldTypeWidget.setReadOnly(readOnly);}
var mainCont=dfx.getId(this.id+'-container');var itemRemoveIcons=dfx.getClass(this.getClass()+'-field-remove',mainCont);if(readOnly===true){dfx.setStyle(itemRemoveIcons,'display','none');}else{dfx.setStyle(itemRemoveIcons,'display','block');}}};dfx.inherits('MetadataAdminScreen','AbstractSettingsScreen');function MetadataEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='MetadataEditScreen';this.fields={};}
MetadataEditScreenWidgetType.prototype={init:function(data)
{if(dfx.isset(data.isSite)===true&&data.isSite===true){this.ready();}else{this.fields=data.fields||{};if(this.readOnly){this.setReadOnly(this.readOnly);var self=this;this.displayScreenReadOnlyWarning(function(warnEl){var elem=dfx.getId('MetadataEditScreen-container');if(elem){elem=elem.firstChild;dfx.insertBefore(elem,warnEl);}},function(){self.setModified(false);var widget=WidgetStore.get('EditScreenModeWidgetType-tab_pane');if(widget){self.clean();widget.showScreen('metadata',null,true);}});}
this.ready();}},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);for(var fieldName in this.fields){if(this.fields.hasOwnProperty(fieldName)===false){continue;}
var field=this.getFieldWidget(fieldName);if(field){field.setReadOnly(readOnly);}}},getAutoSaveContents:function()
{var saveData=this._getSaveData(true);return saveData;},loadAutoSaveContents:function(content,callBack)
{var self=this;dfx.foreach(content,function(fieldName){if(content[fieldName].value&&self.fields[fieldName]){var field=self.getFieldWidget(fieldName);if(field){field.setValue(content[fieldName].value);}}});},getFieldWidget:function(fieldName)
{var widget=WidgetStore.get(this.id+'-field-'+fieldName);return widget;},_getSaveData:function(autoSave)
{var saveObj={};var valid=true;for(var fieldName in this.fields){if(this.fields.hasOwnProperty(fieldName)===false){continue;}
var field=this.getFieldWidget(fieldName);if(field){var obj={};if(this.fields[fieldName].isEditable===true){var value=field.getValue();var warning=dfx.getId(this.id+'-field-'+fieldName+'-warning');if(warning){dfx.hideElement(warning);}
var errorMsg=dfx.getId(this.id+'-field-'+fieldName+'-errorMsg');if(errorMsg){dfx.hideElement(errorMsg);}
if(autoSave!==true&&this.fields[fieldName].isRequired&&((value.length&&value.length===0)||value==='')){valid=false;if(warning){dfx.showElement(warning);}
this.setModified(true);}else if(field.isUsingDefault()===false){var check=field.check();if(check===true){obj.value=value;}else if(autoSave!==true){valid=false;if(errorMsg){dfx.setHtml(errorMsg,check);dfx.showElement(errorMsg);}}}}}
saveObj[fieldName]=obj;}
if(valid===false){return false;}
return saveObj;},saveScreenSettings:function()
{var saveObj=this._getSaveData();if(saveObj===false){this.switchOnScreen();return;}
var params={assetid:this.assetid,screen:this.id+'Widget',metadata:dfx.jsonEncode(saveObj)};var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){var esmw=WidgetStore.get('EditScreenModeWidgetType');esmw.updateSubInfoBox(self.assetid,function(){self.removeDisabledDiv(null,true);self.switchOnScreen();});},true);},revertScreenSettings:function()
{var self=this;var widget=WidgetStore.get('EditScreenModeWidgetType-tab_pane');if(widget){self.clean();widget.showScreen('metadata',null,true);}},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},switchOffScreen:function(){},clean:function()
{this.fields=null;var elem=dfx.getId(this.id+'-container');if(elem){dfx.empty(elem);}}};dfx.inherits('MetadataEditScreen','AbstractSettingsScreen');function PatchingSystemConfigScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='PatchingSystemConfigScreen';this.id=id;this.parent=parent;this.config={};this.patches={};this.unscheduled=0;this.unpatched=0;this.installed=0;this.hasChanges={};this.isDemo=false;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setHideSite('patching');this.assetPicker.setScreen('patching');this.assetPicker.addProjectFolderWhiteList('patching','Users');this.assetPicker.setUniqueSelect(false);this.children.push(this.id+'-enableToggle');this.children.push(this.id+'-idButton');this.children.push(this.id+'-notify');this.children.push(this.id+'-userList');this.children.push(this.id+'-addUser');this.children.push(this.id+'-enableToggle');this.children.push(this.id+'-date');this.children.push(this.id+'-timeHour');this.children.push(this.id+'-timeMin');this.children.push(this.id+'-asap');}
PatchingSystemConfigScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var items=dfx.getClass('ListItemWidgetType-remove-col',dfx.getId(this.id+'-userList-list'));dfx.foreach(items,function(idx){if(readOnly===true){dfx.hideElement(items[idx]);}else{dfx.showElement(items[idx]);}
return true;});},init:function(data)
{this.config=data.config;if(this.config.systemid==='sales_demo'){this.isDemo=true;}
var self=this;var toggle=WidgetStore.get(this.id+'-enableToggle');var date=dfx.getId(this.id+'-date');var time=dfx.getId(this.id+'-time');toggle.addToggleEvent(function(t){if(t===false){dfx.hideElement(date);dfx.hideElement(time);}else{dfx.showElement(date);dfx.showElement(time);}
if(t!==self.config.schedule){self.hasChanges.schedule=true;}else{delete self.hasChanges.schedule;}
self._checkChanges();});var change=WidgetStore.get(this.id+'-idButton');change.addClickEvent(function(){var item0=dfx.getId(self.id+'-infobox_systemid_item0');var item1=dfx.getId(self.id+'-infobox_systemid_item1');dfx.hideElement(item0);dfx.showElement(item1);self.includeWidgets(['TextField'],function(){var systemidElem=dfx.getId(self.id+'-systemid');if(dfx.isset(systemidElem)===false){systemid=self.createWidget(self.id+'-systemid','TextField');systemid.setWidth(120);systemid.create(function(elem){var title1=dfx.getId(self.id+'-infobox_systemid_item_title1');title1.appendChild(elem);systemid.addOnChangeEvent(function(){self.setModified(true);});});}
var val=self.config.systemid;if(self.isDemo===true){val='';}
systemid.setValue(val);});});var cancel=WidgetStore.get(this.id+'-cancelIdButton');cancel.addClickEvent(function(){var item0=dfx.getId(self.id+'-infobox_systemid_item0');var item1=dfx.getId(self.id+'-infobox_systemid_item1');dfx.hideElement(item1);dfx.showElement(item0);var systemid=WidgetStore.get(self.id+'-systemid');systemid.setValue('');});if(this.isDemo===false){this._initNonDemo();}
this.setModified(false);if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId(self.id+'-tabs'),el);},function(){});}
this.ready();},_initNonDemo:function()
{var self=this;var notify=WidgetStore.get(this.id+'-notify');var noUser=dfx.getId(this.id+'-infobox_notification_item1');var userList=dfx.getId(this.id+'-infobox_notification_item2');var addUser=dfx.getId(this.id+'-infobox_notification_item3');dfx.hideElement(noUser);dfx.hideElement(userList);dfx.hideElement(addUser);notify.addToggleEvent(function(t){if(t===false){dfx.hideElement(noUser);dfx.hideElement(userList);dfx.hideElement(addUser);}else{var len=self.config.recipient.length;if(len===0){dfx.showElement(noUser);}
dfx.showElement(userList);dfx.showElement(addUser);}
if(t!==self.config.notify){self.hasChanges.notify=true;}else{delete self.hasChanges.notify;}
self._checkChanges();});var addUserButton=WidgetStore.get(this.id+'-addUser');if(dfx.isset(addUserButton)===true){addUserButton.addClickEvent(function(){addUserButton.disable();self.displayDisabledDiv(true);self.assetPicker.init('patching',function(){self.assetPicker.dialog.open();});});}
this.assetPicker.addAssetsSelectedAction(function(selectedAssets){dfx.hideElement(noUser);self._addUsersToList(selectedAssets);});this.assetPicker.addCloseAction(function(){addUserButton.enable();});var list=WidgetStore.get(this.id+'-userList');list.addRemovedEvent(function(){self.hasChanges.recipient=true;self._checkChanges();});var dateWidget=WidgetStore.get(this.id+'-date');dateWidget.addOnchangeEvent(function(){self.hasChanges.time=true;self._checkChanges();});var hourWidget=WidgetStore.get(this.id+'-timeHour');if(dfx.isset(hourWidget)===true){hourWidget.addItemSelectedEvent(function(){self.hasChanges.time=true;self._checkChanges();});}
var minWidget=WidgetStore.get(this.id+'-timeMin');if(dfx.isset(minWidget)===true){minWidget.addItemSelectedEvent(function(){self.hasChanges.time=true;self._checkChanges();});}
this.addExpandCollapseEvent();this.addCheckAsapEvent();this.updateSubscriptionInfo();},_checkChanges:function()
{var noChange=true;for(var id in this.hasChanges){if(this.hasChanges[id]===true){this.setModified(true);noChange=false;break;}}
if(noChange===true){this.setModified(false);}},_addUsersToList:function(uids)
{var len=uids.length;var list=WidgetStore.get(this.id+'-userList');for(var i=0;i<len;i++){list.addAsset(uids[i]);}
this.hasChanges.recipient=true;this._checkChanges();},saveRecipient:function(callback)
{var list=WidgetStore.get(this.id+'-userList');var uids=list.getValue();var params={notify:WidgetStore.get(this.id+'-notify').getValue(),uids:dfx.jsonEncode(uids),screen:this.id+'Widget',op:'saveRecipient'};var self=this;this.parent.processScreen(params,function(res){self.config=dfx.jsonDecode(res);list.clear();var len=uids.length;for(var i=0;i<len;i++){list.addAsset(uids[i]);}
if(len===0&&self.config.notify===true){var noUser=dfx.getId(self.id+'-infobox_notification_item1');dfx.showElement(noUser);}
if(dfx.isFn(callback)===true){callback.call();}});},saveTime:function(callback)
{var enabled=WidgetStore.get(this.id+'-enableToggle').getValue();var hour='';var hourWidget=WidgetStore.get(this.id+'-timeHour');if(dfx.isset(hourWidget)===true){hour=hourWidget.getValue(false,true);}
var min='';var minWidget=WidgetStore.get(this.id+'-timeMin');if(dfx.isset(minWidget)===true){min=minWidget.getValue(false,true);}
var params={enabled:enabled,date:WidgetStore.get(this.id+'-date').getTime(),hour:hour,min:min,screen:this.id+'Widget',op:'saveTime'};var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){var len=data.names.length;for(var i=0;i<len;i++){self.updateIconTime(enabled,data.names[i],data.time,data.username,data.icon);}
self.unscheduled=data.unscheduled;self.config.schedule=enabled;var warning=dfx.getId(self.id+'-infobox_warning_unscheduled');if(warning){if(enabled===true){dfx.hideElement(warning);}else{if(self.unscheduled>self.config.threshold){dfx.showElement(warning);}}}
self.removeDisabledDiv(null,true);if(dfx.isFn(callback)===true){callback.call();}},true);},changeId:function(systemid)
{var params={screen:this.id+'Widget',op:'changeId',systemid:systemid};var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(){self.reload();var systemid=WidgetStore.get(self.id+'-systemid');if(systemid){systemid.setValue('');}},true,200);},reload:function()
{var title=dfx.getId('SystemConfigScreenModeWidgetType-tab_pane-tab-patching-title');dfx.trigger(title,'click');},updateIconTime:function(enabled,name,time,username,usericon)
{var icon=dfx.getId('icon-'+name);var user=dfx.getId('user-'+name);if(enabled===true){dfx.swapClass(icon,'redCross','greenTick');dfx.showElement(user);dfx.setHtml(user,username);dfx.setStyle(user,'background-image','url('+usericon+')');}else{dfx.swapClass(icon,'greenTick','redCross');dfx.hideElement(user);}
var msg=dfx.getId('time-'+name);dfx.setHtml(msg,time);},refreshScreen:function()
{var warning=dfx.getId(this.id+'-infobox_warning_unscheduled');if(warning){if(this.unscheduled>this.config.threshold){dfx.showElement(warning);}else{dfx.hideElement(warning);}}
if(this.isDemo===false){var notify=WidgetStore.get(this.id+'-notify');if(this.config.notify===true){notify.toggleOn(true);}else{notify.toggleOff(true);}}
var dateDiv=dfx.getId(this.id+'-dateDiv');var noUpdate=dfx.getId(this.id+'-noPending');if(this.unpatched!==0||this.unscheduled!==0){dfx.hideElement(noUpdate);dfx.showElement(dateDiv);var toggle=WidgetStore.get(this.id+'-enableToggle');if(this.config.schedule===true){toggle.toggleOn();}else{toggle.toggleOff();}
var date=dfx.getId(this.id+'-date');var time=dfx.getId(this.id+'-time');if(toggle.getValue()===false){dfx.hideElement(date);dfx.hideElement(time);}else{dfx.showElement(date);dfx.showElement(time);}}else{dfx.showElement(noUpdate);dfx.hideElement(dateDiv);}
var noInstalled=dfx.getId(this.id+'-noInstalled');if(this.installed===0){dfx.showElement(noInstalled);}else{dfx.hideElement(noInstalled);}},getPatchesInfo:function(callback)
{var params={screen:this.id+'Widget',op:'getPatchesInfo'};var self=this;this.parent.processScreen(params,function(data){var patches=dfx.jsonDecode(data);var len=patches.length;var unscheduled=0;var unpatched=0;var installed=0;for(var i=0;i<len;i++){if(patches[i].scheduled===null){unscheduled++;}else if(patches[i].patched===null){unpatched++;}else{installed++;}}
self.patches=patches;self.unscheduled=unscheduled;self.unpatched=unpatched;self.installed=installed;if(dfx.isFn(callback)===true){callback.call(self);}});},addExpandCollapseEvent:function()
{var notes=dfx.getClass('archive-summary');var len=notes.length;for(var i=0;i<len;i++){this._addExpandCollapseEvent(notes[i]);}},_addExpandCollapseEvent:function(note)
{var expand=dfx.getClass('summary-expand',note);var collapse=dfx.getClass('summary-collapse',note);var shortNote=dfx.getClass('note-short',note);var longNote=dfx.getClass('note-long',note);dfx.addEvent(expand,'click',function(){dfx.hideElement(shortNote);dfx.showElement(longNote);});dfx.addEvent(collapse,'click',function(){dfx.hideElement(longNote);dfx.showElement(shortNote);});},addCheckAsapEvent:function()
{var self=this;var checkAsap=WidgetStore.get(this.id+'-asap');var text=dfx.getId('check-asap-time');if(dfx.isset(checkAsap)===true){if(this.config.hasOwnProperty('asap_enabled')===true){if(this.config.asap_enabled===false){checkAsap.disable();}}else if(checkAsap){checkAsap.disable();}
checkAsap.addClickEvent(function(){checkAsap.disable();dfx.setHtml(text,'');dfx.addClass(text,'loader');var params={screen:self.id+'Widget',op:'checkAsap'};self.parent.processScreen(params,function(time){dfx.removeClass(text,'loader');dfx.setHtml(text,time);});});}},updateSubscriptionInfo:function()
{var params={screen:this.id+'Widget',op:'getSubInfo'};var self=this;this.parent.processScreen(params,function(remain){if(remain==='EXPIRED'){var infobox=WidgetStore.get(self.id+'-infobox');if(infobox){infobox.showWarning('expired');}}
var subremain=dfx.getId('sub-remain');if(subremain){dfx.setHtml(subremain,remain);}},false,200);},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callback)
{if(callback){callback.call(this);}},switchOnScreen:function()
{var self=this;this.getPatchesInfo(function(){self.refreshScreen();});this.setSaveButton(function(){var systemid=WidgetStore.get(self.id+'-systemid');if(dfx.isset(systemid)===true){var val=systemid.getValue();if(val!==''){self.changeId(val);return;}}
self.saveRecipient(function(){self.saveTime(function(){self.hasChanges={};self.setModified(false);});});},function(){self.reload();});},switchOffScreen:function(){}};dfx.inherits('PatchingSystemConfigScreen','AbstractSettingsScreen');function PermissionEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen('permissionRole');this.assetPicker.addProjectFolderWhiteList('permissionRole','Users');this.assetPicker.setHideSite('permissionRole');this.widgetType='PermissionEditScreen';this.originalPermission=null;this.permissions=null;this.newStartingPerm={};this.changes={};this.mainWrapper=dfx.getId(this.id+'-mainWrapper-items');this.publicAccessWrapper=null;this.roleAccessWrapper=null;this.roleSections={};this.overrideButtons={};this.addNewButtons={};this.roleRightPaneList={};this.removeButtons={};this.cascadeBoxes={};this.roleRows={};this.permSelectBoxes={};this.effectiveIndic={};this.inheritanceIndic={};this.publicWrapperClass=this.id+'-publicSection';this.publicCurrentPermissionClass=this.id+'-publicCurrentPermission';this.publicLeftCornerClass=this.id+'-publicPermissionLeftCorner';this.publicPermissionTypeGrantedClass=this.id+'-PublicState-Green';this.publicPermissionTypeDeniedClass=this.id+'-PublicState-Red';this.publicPermissionSwitchClass=this.id+'-publicPermissionSwitch';this.publicPermissionSelectClass=this.id+'-publicPermissionSelect';this.publicRightCornerClass=this.id+'-publicPermissionRightCorner';this.publicPermissionTextClass=this.id+'-publicPermissionText';this.publicGrantedPublicAccessTextClass=this.id+'-publicGrantedPublicAccessText';this.publicPermissionSwitchLabelClass=this.id+'-publicPermissionSwitchLabel';this.publicPermissionSwitchButtonWrapperClass=this.id+'-publicPermissionSwitchButtonWrapper';this.publicOverrideButtonWrapperClass=this.id+'-publicOverrideButtonWrapper';this.mainWrapperClass=this.id+'-mainWrapper';this.overrideInUseClass=this.id+'-overrideInUse';this.overrideCascadeLabelClass=this.id+'-overrideCascadeLabel';this.rightLayer2Class=this.id+'-rightLayer2';this.rightLayer3Class=this.id+'-rightLayer3';this.appliesToChildrenOptionClass=this.id+'-appliesToChildrenOption';this.appliesToChildrenTextClass=this.id+'-appliesToChildrenText';this.appliesToChildrenCheckBoxWrapperClass=this.id+'-appliesToChildrenCheckBoxWrapper';this.appliesToChildrenCheckBoxClass=this.id+'-applyToChildren';this.overrideRemoveClass=this.id+'-overrideRemove';this.newPermissionRemoveClass=this.id+'-newPermissionRemove';this.currentUserAndGroupClass=this.id+'-currentUserAndGroup';this.currentUserAndGroupWrapperClass=this.id+'-currentUserAndGroupWrapper';this.roleWrapperClass=this.id+'-roleAccessWrapper';this.roleSectionClass=this.id+'-roleSection';this.roleSectionTitleClass=this.id+'-roleSectionTitle';this.roleEntryClass=this.id+'-roleEntry';this.leftLayerOneClass=this.id+'-leftLayerOne';this.leftLayerTwoClass=this.id+'-leftLayerTwo';this.leftLayerThreeClass=this.id+'-leftLayerThree';this.effectiveIndicatorClass=this.id+'-effectiveIndicator';this.inheritanceIndicatorClass=this.id+'-inheritanceIndicator';this.userTypeClass=this.id+'-userType';this.userNameClass=this.id+'-userName';this.overrideButtonWrapperClass=this.id+'-overrideButtonWrapper';this.permOptionListClass=this.id+'-permOptionList';this.addNewButtonWrapperClass=this.id+'-addNewButtonWrapper';this.roleLeftPaneClass=this.id+'-roleLeftPane';this.roleRightPaneClass=this.id+'-roleRightPane';this.publicAccessManager=null;this.publicAccessManagerid='PublicAccess-'+this.assetid;this.publicAccessManagerDynamicDiv=WidgetStore.get(this.id+'-publicAccessManager');this.roleManager=null;this.roleManagerid='RoleManager-'+this.assetid;this.roleManagerDynamicDiv=WidgetStore.get(this.id+'-roleManager');}
PermissionEditScreenWidgetType.prototype={init:function(data)
{this.originalPermission=data.permissions;this.permissions=dfx.clone(this.originalPermission);this.userInfo=data.userInfo;this.roleNames=data.roleNames;var self=this;var wrapper=dfx.getId(this.id+'-mainWrapper-items');this.mainWrapper=wrapper;dfx.empty(wrapper);dfx.addClass(wrapper,this.mainWrapperClass);this.includeWidgets(['Select','ToggleButton','Button'],function(){self.createPublicSection(function(){self.createRoleSection();self.ready();});});if(self.readOnly){self.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(wrapper,el);},function(){self.forceEdit();});}},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var self=this;if(readOnly===true){dfx.foreach(this.permissions,function(roleid){dfx.foreach(self.permissions[roleid],function(userid){if(dfx.isset(self.overrideButtons[roleid])===true){if(dfx.isset(self.overrideButtons[roleid][userid])===true){self.overrideButtons[roleid][userid].setReadOnly(true);}}
if(dfx.isset(self.permSelectBoxes[roleid])===true){if(dfx.isset(self.permSelectBoxes[roleid][userid])===true){self.permSelectBoxes[roleid][userid].setReadOnly(true);}}
if(dfx.isset(self.addNewButtons[roleid])===true){self.addNewButtons[roleid].setReadOnly(true);}
if(dfx.isset(self.removeButtons[roleid])===true){if(dfx.isset(self.removeButtons[roleid][userid])===true){dfx.hideElement(self.removeButtons[roleid][userid]);}}});});}else{dfx.foreach(self.permissions,function(roleid){dfx.foreach(self.permissions[roleid],function(userid){if(dfx.isset(self.overrideButtons[roleid])===true){if(dfx.isset(self.overrideButtons[roleid][userid])===true){self.overrideButtons[roleid][userid].setReadOnly(false);}}
if(dfx.isset(self.permSelectBoxes[roleid])===true){if(dfx.isset(self.permSelectBoxes[roleid][userid])===true){self.permSelectBoxes[roleid][userid].setReadOnly(false);dfx.setStyle(self.permSelectBoxes[roleid][userid].select,'display','inline');}}
if(dfx.isset(self.addNewButtons[roleid])===true){self.addNewButtons[roleid].setReadOnly(false);}
if(dfx.isset(self.removeButtons[roleid])===true){if(dfx.isset(self.removeButtons[roleid][userid])===true){dfx.showElement(self.removeButtons[roleid][userid]);}}
if(dfx.isset(self.cascadeBoxes[roleid])===true){if(dfx.isset(self.cascadeBoxes[roleid][userid])===true){dfx.showElement(self.cascadeBoxes[roleid][userid]);}}});});if(self.publicAccessGrantDeny){self.publicAccessGrantDeny.setReadOnly(false);}
if(self.publicOverrideButton){self.publicOverrideButton.setReadOnly(false);}}},permissionInheritanceState:function(permEntry)
{var state=0;if(permEntry.effective===true){if(permEntry.cascade===true){state=1;}else{state=3;}}else{if(permEntry.cascade===true){state=2;}else{state=4;}}
return state;},createPublicSection:function(callback)
{var self=this;if(dfx.isset(this.permissions[0])===false){var publicAccessWrapper=document.createElement('div');this.publicAccessWrapper=publicAccessWrapper;dfx.addClass(publicAccessWrapper,this.publicWrapperClass);this.mainWrapper.appendChild(publicAccessWrapper);dfx.setHtml(publicAccessWrapper,'Public permission is not available for this asset');if(callback){callback.call(self);}
return;}
var publicPerm=this.permissions[0][0];var publicAccessWrapper=document.createElement('div');this.publicAccessWrapper=publicAccessWrapper;dfx.addClass(publicAccessWrapper,this.publicWrapperClass);this.mainWrapper.appendChild(publicAccessWrapper);inheritanceState=this.permissionInheritanceState(publicPerm);var accessType='Granted';var publicClass=this.publicPermissionTypeGrantedClass;var publicLeftCornerState='granted';var publicRightCornerState='granted';var publicSwitchDefault=true;if(inheritanceState===2){accessType='Denied';publicClass=this.publicPermissionTypeDeniedClass;publicSwitchDefault=false;publicLeftCornerState='denied';publicRightCornerState='denied';}else if(inheritanceState===4){accessType='Denied';publicClass=this.publicPermissionTypeDeniedClass;publicLeftCornerState='denied';}
this.inheritanceState=inheritanceState;this.publicClass=publicClass;this.publicAccessGrantDeny=this.createWidget(this.id+'-publicPermissionSwitchPublic','ToggleButton',false,'slider',publicSwitchDefault,'Yes','No');this.publicOverrideButton=this.createWidget(this.id+'-publicPermissionOverridePublic','Button','ButtonWidgetType-black',false,'Override');this.publicAccessGrantDeny.create(function(publicToggleElement){self.publicOverrideButton.create(function(publicOverrideElem){self.publicOverrideElem=publicOverrideElem;var publicLeftCorner=document.createElement('div');dfx.addClass(publicLeftCorner,self.publicLeftCornerClass);dfx.addClass(publicLeftCorner,publicLeftCornerState);self.publicLeftCorner=publicLeftCorner;var publicPermissionType=document.createElement('div');self.publicPermissionType=publicPermissionType;dfx.addClass(publicPermissionType,publicClass+'-Left');var publicPermissionText=document.createElement('div');dfx.addClass(publicPermissionText,self.publicPermissionTextClass);var currentPublicPermission=document.createElement('span');dfx.addClass(currentPublicPermission,self.publicCurrentPermissionClass);self.currentPublicPermission=currentPublicPermission;dfx.setHtml(currentPublicPermission,'Public Access '+accessType);publicPermissionText.appendChild(currentPublicPermission);publicPermissionType.appendChild(publicPermissionText);var publicPermissionSwitch=document.createElement('div');self.publicPermissionSwitch=publicPermissionSwitch;dfx.addClass(publicPermissionSwitch,self.publicPermissionSwitchClass);if(publicPerm.override===null){if(publicPerm.effective===true){publicRightCornerState='granted';}else{publicRightCornerState='denied';}
if(publicPerm.blockerdenied===0){self._showInheritCascadePublicPermissison(publicPermissionSwitch,publicOverrideElem);dfx.addClass(publicPermissionSwitch,publicClass+'-Right');}else{dfx.addClass(publicPermissionSwitch,publicClass+'-Right');}}else{publicRightCornerState='override';if(self._isOwnerOfPerm(publicPerm)===true){self._showStartGrantPublicPermission(publicPermissionSwitch,publicToggleElement);}else{if(publicPerm.cascade===true){self._showInheritOverrideContinuePermission(publicPermissionSwitch);}else{self._showInheritOverrideReversePublicPermission(publicPermissionSwitch);}}}
var publicRightCorner=document.createElement('div');dfx.addClass(publicRightCorner,self.publicRightCornerClass);dfx.addClass(publicRightCorner,publicRightCornerState);self.publicRightCorner=publicRightCorner;dfx.addClass(self.publicAccessWrapper,self.publicWrapperClass);self.publicAccessWrapper.appendChild(publicLeftCorner);self.publicAccessWrapper.appendChild(publicPermissionType);self.publicAccessWrapper.appendChild(publicPermissionSwitch);self.publicAccessWrapper.appendChild(publicRightCorner);self._addPublicPermissionToggleEvent();if(callback){callback.call(self);}});});},_isOwnerOfPerm:function(perm)
{if(perm.override!==null&&(perm.override==='granted'||perm.override==='denied')){var colTypes=['granted','denied','blockergranted','blockerdenied'];var ln=colTypes.length;if(perm[perm.override]!==1){return false;}
for(var i=0;i<colTypes.length;i++){if(perm[colTypes[i]]>0&&colTypes[i]!==perm.override){return false;}}
return true;}
return false;},_showInheritOverrideReversePublicPermission:function(publicPermissionSwitch)
{this._showPublicOverrideInUseRightPane(publicPermissionSwitch);dfx.addClass(publicPermissionSwitch,'cascade');},_showInheritOverrideContinuePermission:function(publicPermissionSwitch)
{this._showPublicOverrideInUseRightPane(publicPermissionSwitch);dfx.addClass(publicPermissionSwitch,'cascade');},_showStartGrantPublicPermission:function(publicPermissionSwitch,publicToggleElement)
{var publicPermissionSelect=document.createElement('div');dfx.addClass(publicPermissionSelect,this.publicPermissionSelectClass);var publicGrantedPublicAccessText=document.createElement('div');dfx.addClass(publicGrantedPublicAccessText,this.publicGrantedPublicAccessTextClass);var publicPermissionSwitchLabel=document.createElement('label');dfx.addClass(publicPermissionSwitchLabel,this.publicPermissionSwitchLabelClass);dfx.setHtml(publicPermissionSwitchLabel,'Grant Public Access');publicGrantedPublicAccessText.appendChild(publicPermissionSwitchLabel);publicPermissionSelect.appendChild(publicGrantedPublicAccessText);var publicPermissionSwitchWrapper=document.createElement('div');dfx.addClass(publicPermissionSwitchWrapper,this.publicPermissionSwitchButtonWrapperClass);publicPermissionSwitchWrapper.appendChild(publicToggleElement);publicPermissionSelect.appendChild(publicPermissionSwitchWrapper);publicPermissionSwitch.appendChild(publicPermissionSelect);},_showInheritCascadePublicPermissison:function(publicPermissionSwitch,publicOverrideElem)
{var publicOverrideButtonWrapper=document.createElement('div');dfx.addClass(publicOverrideButtonWrapper,this.publicOverrideButtonWrapperClass);publicPermissionSwitch.appendChild(publicOverrideButtonWrapper);publicOverrideButtonWrapper.appendChild(publicOverrideElem);this._addPublicOverrideButtonEvent();},_showPublicOverrideInUseRightPane:function(parentElem)
{this._showOverrideInUseRightPane(parentElem,'0','0');dfx.setStyles(this.cascadeBoxes[0][0],'top','23px');this._addPublicOverrideRemoveEvent(this.removeButtons[0][0]);this._addPublicOverrideAppliesToChildrenEvent(this.cascadeBoxes[0][0]);},_showExistingRoleOverrideInUseRightPane:function(parentElem,roleid,userid)
{this._showOverrideInUseRightPane(parentElem,roleid,userid);this._addEventRoleList(roleid,userid);},_addEventRoleList:function(roleid,userid)
{var self=this;dfx.addEvent(this.removeButtons[roleid][userid],'click',function(){dfx.empty(self.roleRightPaneList[roleid][userid]);dfx.removeClass(self.inheritanceIndic[roleid][userid],'stop checked');dfx.removeClass(self.inheritanceIndic[roleid][userid],'skip');dfx.addClass(self.inheritanceIndic[roleid][userid],'inherit');dfx.removeClass(self.roleRightPaneList[roleid][userid],'override');self.permissions[roleid][userid].override=null;self._showOverrideRoleRightPane(self.roleRightPaneList[roleid][userid],roleid,userid);if(dfx.isset(self.permissions[roleid][userid])===true){if(self.permissions[roleid][userid].effective===false){dfx.removeClass(self.effectiveIndic[roleid][userid],'denied');dfx.addClass(self.effectiveIndic[roleid][userid],'granted');self.permissions[roleid][userid].effective=true;self.screenModified();}else{dfx.removeClass(self.effectiveIndic[roleid][userid],'granted');dfx.addClass(self.effectiveIndic[roleid][userid],'denied');self.permissions[roleid][userid].effective=false;self.screenModified();}}});var checkBox=this.cascadeBoxes[roleid][userid];dfx.addEvent(checkBox,'click',function(){dfx.toggleClass(checkBox,'checked');if(dfx.hasClass(checkBox,'checked')===true){dfx.removeClass(self.inheritanceIndic[roleid][userid],'skip');dfx.addClass(self.inheritanceIndic[roleid][userid],'stop checked');self.permissions[roleid][userid].cascade=true;}else{dfx.removeClass(self.inheritanceIndic[roleid][userid],'checked');self.permissions[roleid][userid].cascade=false;}
self.screenModified();});},_showOverrideInUseRightPane:function(parentElem,roleid,userid)
{var overrideInUse=document.createElement('div');dfx.addClass(overrideInUse,this.overrideInUseClass);dfx.setHtml(overrideInUse,'Override in use');dfx.addClass(parentElem,'override');var rightLayer2=document.createElement('div');dfx.addClass(rightLayer2,this.rightLayer2Class);var appliesToChildrenOption=document.createElement('div');dfx.addClass(appliesToChildrenOption,this.appliesToChildrenOptionClass);var appliesToChildrenText=document.createElement('div');dfx.addClass(appliesToChildrenText,this.appliesToChildrenTextClass);appliesToChildrenOption.appendChild(appliesToChildrenText);var publicOverrideCascadeLabel=document.createElement('label');dfx.addClass(publicOverrideCascadeLabel,this.overrideCascadeLabelClass);dfx.setHtml(publicOverrideCascadeLabel,'Applies to children');appliesToChildrenText.appendChild(publicOverrideCascadeLabel);var appliesToChildrenCheckBoxWrapper=document.createElement('div');dfx.addClass(appliesToChildrenCheckBoxWrapper,this.appliesToChildrenCheckBoxWrapperClass);var cascadeTickBox=document.createElement('div');this.publicOverrideCascadeTickBox=cascadeTickBox;dfx.addClass(cascadeTickBox,this.appliesToChildrenCheckBoxClass);if(dfx.isset(this.cascadeBoxes[roleid])===false){this.cascadeBoxes[roleid]={};}
this.cascadeBoxes[roleid][userid]=cascadeTickBox;appliesToChildrenCheckBoxWrapper.appendChild(cascadeTickBox);if(dfx.isset(this.permissions[roleid])===true){if(dfx.isset(this.permissions[roleid][userid])===true){if(this.permissions[roleid][userid]['cascade']===true){dfx.addClass(cascadeTickBox,'checked');}}}
if(this.readOnly===true){dfx.hideElement(cascadeTickBox);}
appliesToChildrenOption.appendChild(appliesToChildrenCheckBoxWrapper);rightLayer2.appendChild(appliesToChildrenOption);var rightLayer3=document.createElement('div');dfx.addClass(rightLayer3,this.rightLayer3Class);var overrideRemoveButton=document.createElement('div');dfx.attr(overrideRemoveButton,"title","Click to revert to parents' settings");dfx.addClass(overrideRemoveButton,this.overrideRemoveClass);if(userid==='0'){dfx.addClass(overrideRemoveButton,'public');}else{dfx.addClass(overrideRemoveButton,'standard');}
rightLayer3.appendChild(overrideRemoveButton);if(dfx.isset(this.removeButtons[roleid])===false){this.removeButtons[roleid]={};}
this.removeButtons[roleid][userid]=overrideRemoveButton;if(this.readOnly===true){dfx.hideElement(overrideRemoveButton);}
rightLayer2.appendChild(rightLayer3);parentElem.appendChild(overrideInUse);parentElem.appendChild(rightLayer2);},_showPublicOverrideRoleRightPane:function(parentElem)
{var overrideButtonWrapper=document.createElement('div');dfx.addClass(overrideButtonWrapper,this.overrideButtonWrapperClass);overrideButtonWrapper.appendChild(newOverrideButton);parentElem.appendChild(overrideButtonWrapper);},_showOverrideRoleRightPane:function(parentElem,roleid,userid)
{var self=this;var overrideButtonWrapper=document.createElement('div');dfx.addClass(overrideButtonWrapper,this.overrideButtonWrapperClass);if(dfx.isset(this.overrideButtons[roleid])===false){this.overrideButtons[roleid]={};}
this.overrideButtons[roleid][userid]=this.createWidget(this.id+'-publicPermissionOverride-'+roleid+'-'+userid,'Button','ButtonWidgetType-black',false,'Override');this.overrideButtons[roleid][userid].create(function(publicOverrideElem){overrideButtonWrapper.appendChild(publicOverrideElem);parentElem.appendChild(overrideButtonWrapper);});this.overrideButtons[roleid][userid].addClickEvent(function(){self.permissions[roleid][userid].override=true;self.permissions[roleid][userid].cascade=true;dfx.addClass(self.inheritanceIndic[roleid][userid],'stop');if(self.permissions[roleid][userid].cascade===true){dfx.addClass(self.inheritanceIndic[roleid][userid],'checked');}
dfx.removeClass(self.inheritanceIndic[roleid][userid],'inherit');if(dfx.isset(self.permissions[roleid][userid])===true){if(self.permissions[roleid][userid].effective===true){dfx.removeClass(self.effectiveIndic[roleid][userid],'granted');dfx.addClass(self.effectiveIndic[roleid][userid],'denied');self.permissions[roleid][userid].effective=false;self.screenModified();}else{dfx.removeClass(self.effectiveIndic[roleid][userid],'denied');dfx.addClass(self.effectiveIndic[roleid][userid],'granted');self.permissions[roleid][userid].effective=true;self.screenModified();}}
if(dfx.isset(self.roleRightPaneList[roleid][userid])===true){dfx.empty(self.roleRightPaneList[roleid][userid]);dfx.addClass(self.roleRightPaneList[roleid][userid],'override');self._showExistingRoleOverrideInUseRightPane(self.roleRightPaneList[roleid][userid],roleid,userid);}});},_addPublicOverrideRemoveEvent:function(removeButton)
{var self=this;dfx.addEvent(removeButton,'click',function(){if(dfx.isset(self.permissions[0][0])===true){self.permissions[0][0].override=null;if(self.permissions[0][0].effective===false){dfx.removeClass(self.publicPermissionSwitch,'cascade');dfx.removeClass(self.publicPermissionType,self.publicPermissionTypeDeniedClass+'-Left');dfx.removeClass(self.publicPermissionSwitch,self.publicPermissionTypeDeniedClass+'-Right');dfx.addClass(self.publicPermissionType,self.publicPermissionTypeGrantedClass+'-Left')
dfx.addClass(self.publicPermissionSwitch,self.publicPermissionTypeGrantedClass+'-Right');dfx.removeClass(self.publicLeftCorner,'denied');dfx.removeClass(self.publicRightCorner,'override');dfx.addClass(self.publicLeftCorner,'granted');dfx.addClass(self.publicRightCorner,'granted');dfx.setHtml(self.currentPublicPermission,'Public Access Granted');dfx.empty(self.publicPermissionSwitch);self._showInheritCascadePublicPermissison(self.publicPermissionSwitch,self.publicOverrideElem);self.permissions[0][0].effective=true;self.changes[0]={};self.changes[0][0]=self.permissions[0][0];self.screenModified();}else{dfx.removeClass(self.publicPermissionSwitch,'cascade');dfx.removeClass(self.publicPermissionType,self.publicPermissionTypeGrantedClass+'-Left');dfx.removeClass(self.publicPermissionSwitch,self.publicPermissionTypeGrantedClass+'-Right');dfx.addClass(self.publicPermissionType,self.publicPermissionTypeDeniedClass+'-Left')
dfx.addClass(self.publicPermissionSwitch,self.publicPermissionTypeDeniedClass+'-Right');dfx.removeClass(self.publicLeftCorner,'granted');dfx.removeClass(self.publicRightCorner,'override');dfx.addClass(self.publicLeftCorner,'denied');dfx.addClass(self.publicRightCorner,'denied');dfx.setHtml(self.currentPublicPermission,'Public Access Denied');dfx.empty(self.publicPermissionSwitch);self._showInheritCascadePublicPermissison(self.publicPermissionSwitch,self.publicOverrideElem);self.permissions[0][0].effective=false;self.changes[0]={};self.changes[0][0]=self.permissions[0][0];self.screenModified();}}});},_addPublicOverrideAppliesToChildrenEvent:function(check)
{var self=this;dfx.addEvent(check,'click',function(){dfx.toggleClass(check,'checked');if(dfx.hasClass(check,'checked')===true){self.permissions[0][0].cascade=true;}else{self.permissions[0][0].cascade=false;}
self.changes[0]={};self.changes[0][0]=self.permissions[0][0];self.isModified=true;self.screenModified();});},_addPublicOverrideButtonEvent:function()
{var self=this;this.publicOverrideButton.addClickEvent(function(){if(dfx.isset(self.permissions[0][0])===true){self.permissions[0][0].override=true;if(self.permissions[0][0].effective===true){dfx.addClass(self.publicPermissionSwitch,'cascade');dfx.removeClass(self.publicPermissionSwitch,self.publicPermissionTypeGrantedClass+'-Right');dfx.removeClass(self.publicPermissionType,self.publicPermissionTypeGrantedClass+'-Left');dfx.addClass(self.publicPermissionType,self.publicPermissionTypeDeniedClass+'-Left');dfx.removeClass(self.publicLeftCorner,'granted');dfx.removeClass(self.publicRightCorner,'granted');dfx.addClass(self.publicLeftCorner,'denied');dfx.addClass(self.publicRightCorner,'override');dfx.setHtml(self.currentPublicPermission,'Public Access Denied');dfx.empty(self.publicPermissionSwitch);self.permissions[0][0].effective=false;self._showPublicOverrideInUseRightPane(self.publicPermissionSwitch);self.screenModified();}else{dfx.addClass(self.publicPermissionSwitch,'cascade');dfx.removeClass(self.publicPermissionSwitch,self.publicPermissionTypeDeniedClass+'-Right');dfx.removeClass(self.publicPermissionType,self.publicPermissionTypeDeniedClass+'-Left');dfx.addClass(self.publicPermissionType,self.publicPermissionTypeGrantedClass+'-Left');dfx.removeClass(self.publicLeftCorner,'denied');dfx.removeClass(self.publicRightCorner,'denied');dfx.addClass(self.publicLeftCorner,'granted');dfx.addClass(self.publicRightCorner,'override');dfx.setHtml(self.currentPublicPermission,'Public Access Granted');dfx.empty(self.publicPermissionSwitch);self.permissions[0][0].effective=true;self._showPublicOverrideInUseRightPane(self.publicPermissionSwitch);self.screenModified();}}});},_addPublicPermissionToggleEvent:function()
{var self=this;this.publicAccessGrantDeny.addToggleOnEvent(function(isOn){dfx.removeClass(self.publicPermissionType,self.publicPermissionTypeDeniedClass+'-Left');dfx.removeClass(self.publicLeftCorner,'denied');dfx.addClass(self.publicPermissionType,self.publicPermissionTypeGrantedClass+'-Left');dfx.addClass(self.publicLeftCorner,'granted');dfx.setHtml(self.currentPublicPermission,'Public Access Granted');if(dfx.isset(self.permissions[0][0])===true){self.permissions[0][0].effective=true;}
self.screenModified();});this.publicAccessGrantDeny.addToggleOffEvent(function(isOn){dfx.removeClass(self.publicPermissionType,self.publicPermissionTypeGrantedClass+'-Left');dfx.removeClass(self.publicLeftCorner,'granted');dfx.addClass(self.publicPermissionType,self.publicPermissionTypeDeniedClass+'-Left');dfx.addClass(self.publicLeftCorner,'denied');dfx.setHtml(self.currentPublicPermission,'Public Access Denied');if(dfx.isset(self.permissions[0][0])===true){self.permissions[0][0].effective=false;}
self.screenModified();});},createRoleSection:function(callback)
{var self=this;var roleAccessWrapper=document.createElement('div');this.roleAccessWrapper=roleAccessWrapper;dfx.addClass(roleAccessWrapper,this.roleWrapperClass);this.mainWrapper.appendChild(roleAccessWrapper);dfx.foreach(this.permissions,function(roleid){if(roleid!=='0'){self.addNewButtons[roleid]=self.createWidget(this.id+'-publicPermissionAddNew-'+roleid,'Button','ButtonWidgetType',false,'Add New');self.addNewButtons[roleid].create(function(newPublicAddNewButton){var newRoleSection=document.createElement('div');dfx.addClass(newRoleSection,self.roleSectionClass);self.roleSections[roleid]=newRoleSection;var roleName=self.roleNames[roleid];var roleSectionTitle=document.createElement('div');dfx.addClass(roleSectionTitle,self.roleSectionTitleClass);dfx.setHtml(roleSectionTitle,roleName);newRoleSection.appendChild(roleSectionTitle);var currentUserAndGroupWrapper=document.createElement('div');dfx.addClass(currentUserAndGroupWrapper,self.currentUserAndGroupWrapperClass);newRoleSection.appendChild(currentUserAndGroupWrapper);var currentUserAndGroup=document.createElement('div');dfx.addClass(currentUserAndGroup,self.currentUserAndGroupClass);dfx.setHtml(currentUserAndGroup,'Current Users & User Groups');currentUserAndGroupWrapper.appendChild(currentUserAndGroup);var addNewButtonWrapper=document.createElement('div');dfx.addClass(addNewButtonWrapper,self.addNewButtonWrapperClass);addNewButtonWrapper.appendChild(newPublicAddNewButton);self.addNewButtons[roleid].addClickEvent(function(){dfx.foreach(self.addNewButtons,function(buttonIdx){var button=self.addNewButtons[buttonIdx];self._toggleAddNewButtons(button,false);return true;});self._addNewRoleUserEntry(roleid);});currentUserAndGroupWrapper.appendChild(addNewButtonWrapper);dfx.foreach(self.permissions[roleid],function(userid){var userName=self.userInfo[userid]['name'];var roleRowHtml=self._getRoleRowHtml(roleid,userid);if(dfx.isset(self.roleRows[roleid])===false){self.roleRows[roleid]={};}
self.roleRows[roleid][userid]=roleRowHtml;dfx.addClass(roleRowHtml,self.roleEntryClass);newRoleSection.appendChild(roleRowHtml);return true;});roleAccessWrapper.appendChild(newRoleSection);});}});return true;},_toggleAddNewButtons:function(button,enable)
{if(button){if(enable===true){button.enable();}else{button.disable();}}},_addNewRoleUserEntry:function(roleid)
{var self=this;this.assetPicker.addAssetsSelectedAction(function(uids){self.reorder=true;dfx.foreach(uids,function(i){if(uids[i].search('~')!==-1){AssetManager.getShadowidFromRemoteid(uids[i],function(shadowid){if(shadowid!==false){var uid=parseInt(shadowid,10);var add=true;if(self.permissions.hasOwnProperty(roleid)===true){if(self.permissions[roleid].hasOwnProperty(uid)===true){add=false;}}}else{var uid=uids[i];var add=true;}
if(add===true){self._getUserData(roleid,uid,function(data){if(data!==''){var newRoleHtml=self._getNewRowHtml(roleid,dfx.jsonDecode(data));dfx.addClass(newRoleHtml,self.roleEntryClass);self.roleSections[roleid].appendChild(newRoleHtml);if(dfx.isset(self.roleRows[roleid])===false){self.roleRows[roleid]={};}
self.roleRows[roleid][uid]=newRoleHtml;}});self._addNewRolePermData(roleid,uid);self.screenModified();}});}else{var uid=parseInt(uids[i],10);var add=true;if(self.permissions.hasOwnProperty(roleid)===true){if(self.permissions[roleid].hasOwnProperty(uid)===true){add=false;}}
if(add===true){self._getUserData(roleid,uid,function(data){if(data!==''){var newRoleHtml=self._getNewRowHtml(roleid,dfx.jsonDecode(data));dfx.addClass(newRoleHtml,self.roleEntryClass);self.roleSections[roleid].appendChild(newRoleHtml);if(dfx.isset(self.roleRows[roleid])===false){self.roleRows[roleid]={};}
self.roleRows[roleid][uid]=newRoleHtml;}});self._addNewRolePermData(roleid,uid);self.screenModified();}}
return true;});self.screenModified();},true);this.assetPicker.init('permissionRole',function(){self.assetPicker.dialog.open();});this.assetPicker.addCloseAction(function(){dfx.foreach(self.addNewButtons,function(buttonIdx){var button=self.addNewButtons[buttonIdx];self._toggleAddNewButtons(button,true);return true;});});},_calcEffectiveness:function(permEntry)
{if(permEntry.blockerdenied<=0&&(permEntry.blockergranted>0||(permEntry.denied<=0&&permEntry.granted>0))){return true;}
return false;},_getUserData:function(roleid,uid,callback)
{var params={screen:'PermissionEditScreenWidget',type:'getGroupInfo',groupid:dfx.jsonEncode([uid])};var self=this;var permissionEditScreen=WidgetStore.get('PermissionEditScreen');permissionEditScreen.parent.getScreenData(params,function(data){if(dfx.isFn(callback)===true){callback.call(self,data);}});},_addNewRolePermData:function(roleid,userid)
{if(dfx.isset(this.permissions[roleid])===false){this.permissions[roleid]={};}
this.permissions[roleid][userid]={effective:true,cascade:true};if(dfx.isset(this.newStartingPerm[roleid])===false){this.newStartingPerm[roleid]={};}
this.newStartingPerm[roleid][userid]=this.permissions[roleid][userid];},_getRoleRowHtml:function(roleid,userid)
{var self=this;var roleRowDiv=document.createElement('div');var roleLeftPane=this._getExistingRoleLeftPane(roleid,userid);dfx.addClass(roleLeftPane,this.roleLeftPaneClass);roleRowDiv.appendChild(roleLeftPane);var roleRightPane=document.createElement('div');dfx.addClass(roleRightPane,this.roleRightPaneClass);if(dfx.isset(this.roleRightPaneList[roleid])===false){this.roleRightPaneList[roleid]={};}
this.roleRightPaneList[roleid][userid]=roleRightPane;var rolePermEntry=this.permissions[roleid][userid];var rightPaneInner=null;if(rolePermEntry.override===null){if(rolePermEntry.blockerdenied===0){rightPaneInner=this._showOverrideRoleRightPane(roleRightPane,roleid,userid);}}else{if(self._isOwnerOfPerm(rolePermEntry)===true){rightPaneInner=this._getNewRoleRightPane(roleRightPane,roleid,userid);;}else{rightPaneInner=this._showExistingRoleOverrideInUseRightPane(roleRightPane,roleid,userid);}}
if(rightPaneInner!==null){roleRowDiv.appendChild(roleRightPane);}
return roleRowDiv;},_getNewRowHtml:function(roleid,userdata)
{var userid=userdata.id;var usertype=userdata.typeid;var username=userdata.name;var roleRowDiv=document.createElement('div');var roleLeftPane=this._getNewRoleLeftPane(roleid,userid,username,usertype);dfx.addClass(roleLeftPane,this.roleLeftPaneClass);roleRowDiv.appendChild(roleLeftPane);var roleRightPane=document.createElement('div');dfx.addClass(roleRightPane,this.roleRightPaneClass);if(dfx.isset(this.roleRightPaneList[roleid])===false){this.roleRightPaneList[roleid]={};}
this.roleRightPaneList[roleid][userid]=roleRightPane;var rightPaneInner=this._getNewRoleRightPane(roleRightPane,roleid,userid);if(dfx.isset(this.roleRightPaneList[roleid])===false){this.roleRightPaneList[roleid]={};}
this.roleRightPaneList[roleid][userid]=roleRightPane;roleRowDiv.appendChild(roleRightPane);return roleRowDiv;},_getInheritCascadeClass:function(roleid,userid)
{var info=this.permissions[roleid][userid];var className='';if(info.override!==null){if(info.cascade===true){className='stop checked';}else{className='stop';}}else{className='inherit';}
return className;},_getExistingRoleLeftPane:function(roleid,userid)
{var permissionEntry=this.permissions[roleid][userid];var roleName=this.roleNames[roleid];var userName=this.userInfo[userid]['name'];var userType=this.userInfo[userid]['type'];var permEffectiveIndicatorClass='granted';if(permissionEntry.effective===true){permEffectiveIndicatorClass='granted';}else{permEffectiveIndicatorClass='denied';}
var permInheritanceIndicatorClass=this._getInheritCascadeClass(roleid,userid);var roleLeftPane=this._getRoleLeftPane(roleid,userid,permEffectiveIndicatorClass,permInheritanceIndicatorClass,userName,userType);return roleLeftPane;},_getRoleLeftPane:function(roleid,userid,permEffIndicatorClass,permInhIndicatorClass,userName,userType)
{var roleLeftPane=document.createElement('div');var leftLayerOne=document.createElement('div');dfx.addClass(leftLayerOne,this.leftLayerOneClass);roleLeftPane.appendChild(leftLayerOne);var permEffectivenessIndicator=document.createElement('div');if(dfx.isset(this.effectiveIndic[roleid])===false){this.effectiveIndic[roleid]={};}
this.effectiveIndic[roleid][userid]=permEffectivenessIndicator;dfx.addClass(permEffectivenessIndicator,this.effectiveIndicatorClass);dfx.addClass(permEffectivenessIndicator,permEffIndicatorClass);leftLayerOne.appendChild(permEffectivenessIndicator);var leftLayerTwo=document.createElement('div');dfx.addClass(leftLayerTwo,this.leftLayerTwoClass);leftLayerOne.appendChild(leftLayerTwo);var permInheritanceIndicator=document.createElement('div');if(dfx.isset(this.inheritanceIndic[roleid])===false){this.inheritanceIndic[roleid]={};}
this.inheritanceIndic[roleid][userid]=permInheritanceIndicator;var inheritanceClass=this.inheritanceIndicatorClass;dfx.addClass(permInheritanceIndicator,inheritanceClass);dfx.addClass(permInheritanceIndicator,permInhIndicatorClass);leftLayerTwo.appendChild(permInheritanceIndicator);var leftLayerThree=document.createElement('div');dfx.addClass(leftLayerThree,this.leftLayerThreeClass);leftLayerTwo.appendChild(leftLayerThree);var userTypeIndicator=document.createElement('div');dfx.addClass(userTypeIndicator,this.userTypeClass);if(userType==='userGroup'){dfx.addClass(userTypeIndicator,'user');}else{dfx.addClass(userTypeIndicator,'usergroup');}
leftLayerThree.appendChild(userTypeIndicator);var userNameDiv=document.createElement('div');dfx.addClass(userNameDiv,this.userNameClass);dfx.setHtml(userNameDiv,userName);leftLayerThree.appendChild(userNameDiv);return roleLeftPane;},_getNewRoleLeftPane:function(roleid,userid,userName,usertype)
{return this._getRoleLeftPane(roleid,userid,'granted','stop checked',userName,usertype);},_getNewRoleRightPane:function(parentElem,roleid,userid)
{var self=this;var overrideInUse=document.createElement('div');dfx.addClass(overrideInUse,self.overrideInUseClass);if(dfx.isset(this.permSelectBoxes[roleid])===false){this.permSelectBoxes[roleid]={};}
this.permSelectBoxes[roleid][userid]=this.createWidget(this.id+'-permStartSelect-'+roleid+'-'+userid,'Select');var permsChoices={0:'Grant Permission',1:'Deny Permission'};this.permSelectBoxes[roleid][userid].addItems(permsChoices);this.permSelectBoxes[roleid][userid].create(function(permOptionList){if(dfx.isset(self.permissions[roleid])===true){if(dfx.isset(self.permissions[roleid][userid])===true){if(self.permissions[roleid][userid].effective===true){self.permSelectBoxes[roleid][userid].setValue(0,false);}else{self.permSelectBoxes[roleid][userid].setValue(1,false);}}}
dfx.addClass(permOptionList,self.permOptionListClass);var rightLayer2=document.createElement('div');dfx.addClass(rightLayer2,self.rightLayer2Class);var appliesToChildrenOption=document.createElement('div');dfx.addClass(appliesToChildrenOption,self.appliesToChildrenOptionClass);var appliesToChildrenText=document.createElement('div');dfx.addClass(appliesToChildrenText,self.appliesToChildrenTextClass);appliesToChildrenOption.appendChild(appliesToChildrenText);var publicOverrideCascadeLabel=document.createElement('label');dfx.addClass(publicOverrideCascadeLabel,self.overrideCascadeLabelClass);dfx.attr(publicOverrideCascadeLabel,"style","color: #6C8DB2");dfx.setHtml(publicOverrideCascadeLabel,'Applies to children');appliesToChildrenText.appendChild(publicOverrideCascadeLabel);var appliesToChildrenCheckBoxWrapper=document.createElement('div');dfx.addClass(appliesToChildrenCheckBoxWrapper,self.appliesToChildrenCheckBoxWrapperClass);var cascadeTickBox=document.createElement('div');if(dfx.isset(self.cascadeBoxes[roleid])===false){self.cascadeBoxes[roleid]={};}
self.cascadeBoxes[roleid][userid]=cascadeTickBox;if(dfx.isset(self.permissions[roleid])===true){if(dfx.isset(self.permissions[roleid][userid])===true){if(self.permissions[roleid][userid].cascade===true){dfx.addClass(cascadeTickBox,'checked');}}}
if(self.readOnly===true){dfx.hideElement(cascadeTickBox);}
self._addCascadeTickboxEvents(cascadeTickBox,roleid,userid);self.permSelectBoxes[roleid][userid].addItemSelectedEvent(function(){var val=parseInt(self.permSelectBoxes[roleid][userid].getValue(),10);if(val===1){dfx.removeClass(self.effectiveIndic[roleid][userid],'granted');dfx.addClass(self.effectiveIndic[roleid][userid],'denied');self.permissions[roleid][userid].effective=false;if(dfx.hasClass(cascadeTickBox,'checked')===true){self.permissions[roleid][userid].cascade=true;}else{self.permissions[roleid][userid].cascade=false;}}else if(val===0){dfx.removeClass(self.effectiveIndic[roleid][userid],'denied');dfx.addClass(self.effectiveIndic[roleid][userid],'granted');self.permissions[roleid][userid].effective=true;if(dfx.hasClass(cascadeTickBox,'checked')===true){self.permissions[roleid][userid].cascade=true;}else{self.permissions[roleid][userid].cascade=false;}}
self.screenModified();});dfx.addClass(cascadeTickBox,self.appliesToChildrenCheckBoxClass);appliesToChildrenCheckBoxWrapper.appendChild(cascadeTickBox);appliesToChildrenOption.appendChild(appliesToChildrenCheckBoxWrapper);var overrideRemoveButton=document.createElement('div');dfx.addClass(overrideRemoveButton,self.newPermissionRemoveClass);if(dfx.isset(self.removeButtons[roleid])===false){self.removeButtons[roleid]={};}
self.removeButtons[roleid][userid]=overrideRemoveButton;appliesToChildrenOption.appendChild(overrideRemoveButton);if(self.readOnly===true){dfx.hideElement(overrideRemoveButton);}
dfx.addEvent(overrideRemoveButton,'click',function(){dfx.toggleClass(overrideRemoveButton,'removed');dfx.toggleClass(self.roleRows[roleid][userid],'deleted');if(dfx.hasClass(self.roleRows[roleid][userid],'deleted')===true){self.permSelectBoxes[roleid][userid].select.disabled=true;dfx.removeEvent(self.cascadeBoxes[roleid][userid],'click');if(dfx.isset(self.permissions[roleid][userid])===true){if(dfx.isset(self.newStartingPerm[roleid])===false){self.newStartingPerm[roleid]={};}
self.newStartingPerm[roleid][userid]=self.permissions[roleid][userid];self.permissions[roleid][userid].deleted=true;}}else{if(dfx.isset(self.permissions[roleid])===false){self.permissions[roleid]={};}
self.permSelectBoxes[roleid][userid].select.disabled=false;self._addCascadeTickboxEvents(self.cascadeBoxes[roleid][userid],roleid,userid);self.permissions[roleid][userid].deleted=false;}
self.screenModified();});rightLayer2.appendChild(appliesToChildrenOption);overrideInUse.appendChild(permOptionList);parentElem.appendChild(overrideInUse);parentElem.appendChild(rightLayer2);});},_addCascadeTickboxEvents:function(cascadeTickBox,roleid,userid)
{var self=this;dfx.addEvent(cascadeTickBox,'click',function(){dfx.toggleClass(cascadeTickBox,'checked');if(dfx.isset(self.permissions[roleid][userid])===true){if(dfx.hasClass(cascadeTickBox,'checked')===true){dfx.addClass(self.inheritanceIndic[roleid][userid],'checked');self.permissions[roleid][userid]['cascade']=true;}else{dfx.removeClass(self.inheritanceIndic[roleid][userid],'checked');self.permissions[roleid][userid]['cascade']=false;}}
self.screenModified();});},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},saveScreenSettings:function()
{var self=this;dfx.foreach(this.permissions,function(roleid){dfx.foreach(self.permissions[roleid],function(userid){dfx.foreach(self.permissions[roleid][userid],function(index){if(dfx.isset(self.originalPermission[roleid][userid])===false){if(dfx.isset(self.changes[roleid])===false){self.changes[roleid]={};}
self.changes[roleid][userid]=self.permissions[roleid][userid];}else{if(self.permissions[roleid][userid][index]!==self.originalPermission[roleid][userid][index]){if(dfx.isset(self.changes[roleid])===false){self.changes[roleid]={};}
self.changes[roleid][userid]=self.permissions[roleid][userid];}}});});});var params={assetid:this.assetid,permissionInfo:dfx.jsonEncode(self.changes),screen:this.id+'Widget'};var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){self.reload(function(){self.removeDisabledDiv(null,true);self.setModified(false);});self.switchOnScreen();},true);},revertScreenSettings:function()
{var self=this;this.displayDisabledDiv(true);this.reload(function(){self.removeDisabledDiv();});},reload:function(callback)
{var self=this;var params={mode:'EditScreenMode',screen:'PermissionEditScreenWidget',type:'getPermissionData',assetid:this.assetid};this.parent.getScreenData(params,function(data){var permissionData=dfx.jsonDecode(data);self.init(permissionData);callback.call(self);});if(dfx.isset(callback)===true){callback.call(self);}},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},switchOffScreen:function(){},screenModified:function()
{var self=this;var modified=false;self.changes={};dfx.foreach(this.permissions,function(roleid){dfx.foreach(self.permissions[roleid],function(userid){dfx.foreach(self.permissions[roleid][userid],function(index){if(dfx.isset(self.originalPermission[roleid][userid])===false){if(dfx.isset(self.changes[roleid])===false){self.changes[roleid]={};}
self.changes[roleid][userid]=self.permissions[roleid][userid];}else{if(self.permissions[roleid][userid][index]!==self.originalPermission[roleid][userid][index]){if(dfx.isset(self.changes[roleid])===false){self.changes[roleid]={};}
self.changes[roleid][userid]=self.permissions[roleid][userid];}}});});});if(dfx.isEmpty(self.changes)===false||dfx.isEmpty(self.newStartingPerm)===false){modified=true;}
this.setModified(modified);}};dfx.inherits('PermissionEditScreen','AbstractSettingsScreen');function ProjectSystemConfigScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='ProjectSystemConfigScreen';this.id=id;this.parent=parent;this.screenid=screenid;this.system=system;this.title=title;this.parent=parent;this.projects={};this.sorted=false;this.modified={};this.restore={};this.activate={};this.noDelete=false;}
ProjectSystemConfigScreenWidgetType.prototype={init:function(data)
{var wLen=data.widgets.length;for(var w=0;w<wLen;w++){this.children.push(data.widgets[w]);}
this.projects=data.projects;var self=this;this.setReadOnly(this.readOnly);if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId(self.id+'-restore'),el);self.makeReadOnly();},function(){self.forceEdit();});}else{dfx.showElement(dfx.getId(this.id+'-inactive'));}
this.addRestoreSectionEvent();this.addActiveSectionEvent();this.addInactiveSectionEvent();var urls=dfx.getClass(this.id+'-projectLink');var uLen=urls.length;var mode='/_edit?initialMode=SystemConfigScreenMode&initialScreen=ProjectSystemConfigScreenWidget';for(var j=0;j<uLen;j++){dfx.addEvent(urls[j],'click',function(){WidgetStore.get('EditingSaveButton');var saveButton=WidgetStore.get('EditingSaveButton');if(saveButton.isEnabled()===true){var answer=confirm(WidgetStore.getUnsavedChangesStr());if(answer===true){window.location.href=dfx.getHtml(this)+mode;}}else{window.location.href=dfx.getHtml(this)+mode;}});}
this.ready();},makeReadOnly:function()
{dfx.addClass(dfx.getId(this.id+'-wrapper'),'readOnly');var elem=dfx.getClass(this.id+'-projectSort');var len=elem.length;for(var i=0;i<len;i++){dfx.swapClass(elem,this.id+'-projectSort',this.id+'-projectSort-inactive');}},forceEdit:function()
{var self=this;AbstractSettingsScreenWidgetType.prototype.forceEdit.call(this,function(){self.setModified(false);self.reload();});},reload:function()
{var title=dfx.getId('SystemConfigScreenModeWidgetType-tab_pane-tab-project-title');dfx.trigger(title,'click');},addRestoreSectionEvent:function()
{var table=WidgetStore.get(this.id+'-restoreTable');if(table){var rowids=table.getRowids();var rLen=rowids.length;for(var i=0;i<rLen;i++){this._addRestoreEvent(rowids[i]);}}},addActiveSectionEvent:function()
{var table=WidgetStore.get(this.id+'-activeTable');if(table){var self=this;table.makeSortable(0,'div.'+this.id+'-projectSort',null,function(){self.sorted=true;self.setModified(true);});var rowids=table.getRowids();var rLen=rowids.length;for(var i=0;i<rLen;i++){this._addEditEvent(rowids[i]);}
this._addDeleteEvent();this._addCheckProgress();}},addInactiveSectionEvent:function()
{var table=WidgetStore.get(this.id+'-inactiveTable');if(table){var rowids=table.getRowids();var rLen=rowids.length;for(var i=0;i<rLen;i++){this.activate[rowids[i]]={};this._addActivateButtonEvent(rowids[i]);this._addCancelButtonEvent(rowids[i]);}}},_addRestoreEvent:function(id)
{var self=this;var restore=WidgetStore.get(this.id+'-restoreButton-'+id);if(restore){restore.addClickEvent(function(){self.restore[id]=true;self.setModified(true);var button=dfx.getId(self.id+'-restoreButton-'+id);var msg=dfx.getId(self.id+'-restoreMsg-'+id);var row=dfx.getId(self.id+'-restoreTable-row-'+id);dfx.hideElement(button);dfx.showElement(msg);dfx.addClass(row,'restore');});}},_addEditEvent:function(id)
{var self=this;var nameInput=WidgetStore.get(this.id+'-nameInput-'+id);if(nameInput){nameInput.addOnChangeEvent(function(){self._hideIntervention(id);self.modified[id]=this.getValue();self.setModified(true);});}},_addDeleteEvent:function()
{var self=this;var deleteButtons=dfx.getClass(this.id+'-projectDelete');dfx.addEvent(deleteButtons,'click',function(){var buttons=dfx.getClass(self.id+'-projectDelete');var bLen=buttons.length;if(bLen===1){var warning='Last project cannot be marked for deletion';self._showIntervention(pid,this,warning,null,'OK','275px','70px');}else{if(self.noDelete===true){return;}
self.noDelete=true;var pid=dfx.attr(this,'pid');var msg='The deletion of a project is not an instant action. ';msg+='Marking the project for removal means it will be ';msg+='deleted after the next system backup is run ';msg+='(usually late at night). A project is recoverable up ';msg+='until this backup takes place. After this point in ';msg+='time the project is completely removed.<br /><br />';msg+='Do you wish to continue?';self._showIntervention(pid,this,msg,'Yes','No','250px','200px',function(){self.displayDisabledDiv(true);self.parent.processScreen({marked:pid,screen:self.id+'Widget',op:'markProject'},function(){self.reload();});},function(){self.noDelete=false;});}});},_addCheckProgress:function()
{var self=this;this.interval=setInterval(function(){var loader=dfx.getClass(self.id+'-projectLoader');if(loader){var len=loader.length;if(len===0){clearInterval(self.interval);}}
self.parent.processScreen({screen:self.id+'Widget',op:'getProjectInfo'},function(data){if(data){data=dfx.jsonDecode(data);var pLen=data.length;for(var x=0;x<pLen;x++){if(data[x].created!==null){var loader=dfx.getId('projectLoader-'+data[x].name);if(loader){dfx.swapClass(loader,self.id+'-projectLoader',self.id+'-projectCreated');var msg=dfx.getId('projectMsg-'+data[x].name);if(msg){dfx.setHtml(msg,'Project created, reload to edit settings');}}}}}},false,200);},60000);},_addActivateButtonEvent:function(id)
{var self=this;var button=WidgetStore.get(this.id+'-activateButton-'+id);if(button){button.addClickEvent(function(e){var nameText=dfx.getId(self.id+'-nameText-'+id);var nameInput=dfx.getId(self.id+'-nameInput-'+id+'_container');if(nameText&&nameInput){dfx.hideElement(nameText);dfx.showElement(nameInput);WidgetStore.get(self.id+'-nameInput-'+id).focus();}
var typeDiv=dfx.getId(self.id+'-typeDiv-'+id);if(typeDiv){dfx.setStyle(typeDiv,'opacity',1);}
var urlText=dfx.getId(self.id+'-urlText-'+id);var urlInput=dfx.getId(self.id+'-urlInput-'+id+'_container');if(urlText&&urlInput){dfx.hideElement(urlText);dfx.showElement(urlInput);}
var aButton=dfx.getId(self.id+'-activateButton-'+id);var cButton=dfx.getId(self.id+'-cancelButton-'+id);if(aButton&&cButton){dfx.hideElement(aButton);dfx.showElement(cButton);}});}
var nameInput=WidgetStore.get(this.id+'-nameInput-'+id);if(nameInput){nameInput.addOnChangeEvent(function(){self._hideIntervention(id);self.activate[id].name=this.getValue();self.setModified(true);});}
var urlInput=WidgetStore.get(this.id+'-urlInput-'+id);if(urlInput){urlInput.addOnChangeEvent(function(){self._hideIntervention(id);self.activate[id].url=this.getValue();self.setModified(true);});}},_addCancelButtonEvent:function(id)
{var self=this;var button=WidgetStore.get(this.id+'-cancelButton-'+id);if(button){button.addClickEvent(function(e){var nameText=dfx.getId(self.id+'-nameText-'+id);var nameInput=dfx.getId(self.id+'-nameInput-'+id+'_container');if(nameText&&nameInput){dfx.hideElement(nameInput);dfx.showElement(nameText);}
var typeDiv=dfx.getId(self.id+'-typeDiv-'+id);if(typeDiv){dfx.setStyle(typeDiv,'opacity',0.5);}
var urlText=dfx.getId(self.id+'-urlText-'+id);var urlInput=dfx.getId(self.id+'-urlInput-'+id+'_container');if(urlText&&urlInput){dfx.hideElement(urlInput);dfx.showElement(urlText);}
var aButton=dfx.getId(self.id+'-activateButton-'+id);var cButton=dfx.getId(self.id+'-cancelButton-'+id);if(aButton&&cButton){dfx.hideElement(cButton);dfx.showElement(aButton);}
self.activate[id]={};WidgetStore.get(self.id+'-nameInput-'+id).setValue('');WidgetStore.get(self.id+'-urlInput-'+id).setValue('http://');self._hideIntervention(id);});}},switchOffScreen:function(){},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){var v1=self._validateName();var v2=self._validateActivation();if(v1===false||v2===false){return;}
self.processRestoreSection(function(){self.processActiveSection(function(){self.processInactiveSection(function(){self.reload();});});});},function(){self.reload();});},processRestoreSection:function(callback)
{var self=this;var todo=[];for(var x in this.restore){if(this.restore[x]===true){todo.push(x);}}
var tLen=todo.length;if(tLen>0){this.displayDisabledDiv(true);this.parent.processScreen({restore:dfx.jsonEncode(todo),screen:self.id+'Widget',op:'restoreProject'},function(){if(dfx.isFn(callback)===true){callback.call(self);}});}else{if(dfx.isFn(callback)===true){callback.call(self);}}},processActiveSection:function(callback)
{var self=this;var order=[];if(this.sorted===true){var elem=dfx.getClass(this.id+'-projectSort');var len=elem.length;for(var i=0;i<len;i++){var elemid=elem[i].id.replace('sort-','');order.push(elemid);}}
this.displayDisabledDiv(true);this.parent.processScreen({order:dfx.jsonEncode(order),todo:dfx.jsonEncode(self.modified),screen:self.id+'Widget',op:'updateProject'},function(){if(dfx.isFn(callback)===true){callback.call(self);}});},processInactiveSection:function(callback)
{var todo=this._validateActivation();if(dfx.isEmpty(todo)===false){var params={todo:dfx.jsonEncode(todo),screen:this.id+'Widget',op:'activateProject'};var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){if(data.hasOwnProperty('errors')===false){if(dfx.isFn(callback)===true){callback.call(self);}}else{self.setModified(true);}},true);}else{if(dfx.isFn(callback)===true){callback.call(self);}}},_validateName:function()
{for(var i in this.modified){if(dfx.isBlank(this.modified[i])===true){var target=dfx.getId(this.id+'-nameInput-'+i+'_container');var msg='Name cannot be empty';this._showIntervention(i,target,msg,null,'OK','175px','70px');return false;}else{var unique=this._checkUniqueName(this.modified[i]);if(unique===false){var target=dfx.getId(this.id+'-nameInput-'+i+'_container');var msg='Project name must be unique';this._showIntervention(i,target,msg,null,'OK','210px','70px');return false;}}}
return true;},_checkUniqueName:function(name)
{var pLen=this.projects.length;for(var x=0;x<pLen;x++){if(this.projects[x].hasOwnProperty('name')===true){var pName=this.projects[x].name;if(pName.toLowerCase()===name.toLowerCase()){return false;}}}
return true;},_validateActivation:function()
{var todo=[];var error=null;var popName=false;var popUrl=false;var popSuffix=false;for(var i in this.activate){var hasName=this.activate[i].hasOwnProperty('name');var hasUrl=this.activate[i].hasOwnProperty('url');var name='';var url='';if(hasName===true){name=this.activate[i].name;}
if(hasUrl===true){url=this.activate[i].url;if(url==='http://'){url='';}}
if(hasName===true&&hasUrl===true){if(dfx.isBlank(name)===true){popName=true;error=i;break;}else if(dfx.isBlank(url)===true){popUrl=true;error=i;break;}else{var testUrl=url.replace('/_edit','');if((testUrl+'/_edit')===url){popSuffix=true;error=i;break;}else{todo.push({id:i,name:name,url:url,type:'site'});}}}else{if(hasName===false&&hasUrl===true){popName=true;error=i;break;}else if(hasUrl===false&&hasName===true){popUrl=true;error=i;break;}}}
if(error!==null){var msg='';if(popName===true){var nameElem=dfx.getId(this.id+'-nameInput-'+error+'_container');msg='Name cannot be empty';this._showIntervention(error,nameElem,msg,null,'OK','175px','70px');}else if(popUrl===true){var urlElem=dfx.getId(this.id+'-urlInput-'+error+'_container');msg='URL cannot be empty';this._showIntervention(error,urlElem,msg,null,'OK','170px','70px');}else if(popSuffix===true){var urlElem=dfx.getId(this.id+'-urlInput-'+error+'_container');msg='URL is invalid';this._showIntervention(error,urlElem,msg,null,'OK','150px','70px');}
return false;}else{return todo;}},_showIntervention:function(id,target,msg,ok,cancel,width,height,okCb,cancelCb)
{var self=this;this._hideIntervention(id);this.includeWidget('Intervention',function(){if(dfx.isset(okCb)===false){okCb=function(){};}
if(dfx.isset(cancelCb)===false){cancelCb=function(){};}
var pop=self.createWidget('projectIntervention-'+id,'Intervention',cancelCb,okCb);pop.confirmText=ok;pop.cancelText=cancel;pop.create(function(){pop.setSize(width,height);pop.setMessage(msg);pop.show(target);});});},_hideIntervention:function(id)
{var ok=dfx.getId('projectIntervention-'+id+'-cancelButton');if(ok){dfx.trigger(ok,'click');}}};dfx.inherits('ProjectSystemConfigScreen','AbstractSettingsScreen');function PublishingEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='PublishingEditScreen';this._workflowSchemas=[];this._isPublished=false;this._hasWorkflow=false;this._statusContainer=null;this._origStatus=this._isPublished;this.statusToggle=null;this.changesToggle=null;this._dependencies={};this.depWrap=null;this.pubDepsWrap=null;this._safeToPublished=false;this.contextClassname='dependency-usageContext';this.contextDescClassname='dependency-usageContextDesc';this.contextTagClassname='dependency-usageContextTag';this.contextCurvesClassname='dependency-usageContextCurves';this.contextTypeClassname='dependency-usageContextType';}
PublishingEditScreenWidgetType.prototype={screenModified:function()
{var saveon=false;var publishToggle=WidgetStore.get(this.id+'-publishToggle');if(this._safeToPublished===true){saveon=true;}else if(this._inSafeEdit===true){if(publishToggle&&publishToggle.getValue()===true){saveon=true;}}else if(publishToggle&&this._origStatus!==publishToggle.getValue()){saveon=true;}
var pubDepsToggle=WidgetStore.get(this.id+'-pubDeps');if(this._dependenciesInitiated===true){if(pubDepsToggle&&pubDepsToggle.getValue()===true){saveon=true;}}
this.setModified(saveon);},init:function(data)
{var main=dfx.getId(this.id+'-WorkflowManager');if(main){dfx.empty(main);}
this._isPublished=data.status;this._origStatus=this._isPublished;this._hasWorkflow=data.hasWorkflows;this._inWorkflow=data.inWorkflow;this._inSafeEdit=data.inSafeEdit;this.changesToggle=null;this._safeToPublished=false;this._nonPublishedAssetsExists=data.nonPublishedAssetsExist;this._dependencies=data.dependencies;this._dependenciesInitiated=false;if(this._nonPublishedAssetsExists===true){this._taglineData=data.tagLineData;}
if(this._hasWorkflow===true){this._initWorkflow();}
this._initStatus();this.screenModified();},_initStatus:function()
{var self=this;var statusWrapper=dfx.getId(this.id+'-status');var c=this.getClass()+'-status-main';var elems=dfx.getClass(c,statusWrapper);if(elems.length>0){dfx.remove(elems);}
var main=document.createElement('div');this.domElem=main;dfx.addClass(main,c);this._statusContainer=main;var content='<div class="'+c+'-titleWrapper">';content+='<div class="'+c+'-title"></div></div>';content+='<div class="'+c+'-bottom"></div>';content+='<div class="'+c+'-dependencies"></div>';dfx.setHtml(main,content);var _appendWrapper=function(){statusWrapper.appendChild(main);if(self._isPublished===false){dfx.hideElement(dfx.getClass(c+'-dependencies',main)[0]);}
dfx.showElement(dfx.getId('PublishingEditScreen-main').parentNode);var nameElems=dfx.getClass('AssetTagLine-assetName',main);dfx.foreach(nameElems,function(idx){dfx.ellipsizeDom(nameElems[idx],250);return true;});self.showStatus();if(self.readOnly===true){self.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(statusWrapper,el);},function(){});}};if(this._nonPublishedAssetsExists===true&&(this._hasWorkflow===false||(this._hasWorkflow===true&&this._isPublished===true))){var settingsWidget=WidgetStore.get('EditScreenModeWidgetType');if(this._isPublished===true){settingsWidget.showSubInfoPublishingWarning();}else{settingsWidget.hideSubInfoPublishingWarning();}
self._dependenciesInitiated=true;self._initDependencies(main,_appendWrapper);}else{if(this._nonPublishedAssetsExists===false||this._isPublished!==true){var settingsWidget=WidgetStore.get('EditScreenModeWidgetType');settingsWidget.hideSubInfoPublishingWarning();}
_appendWrapper();}},_initDependencies:function(main,callback)
{var self=this;var c=this.getClass()+'-status-main';this.includeWidgets(['PlainList','AssetTagLine','ToggleButton'],function(){var depWrap=dfx.getClass(c+'-dependencies',main)[0];self.depWrap=depWrap;var pubDepsWrap=document.createElement('div');self.pubDepsWrap=pubDepsWrap;dfx.addClass(pubDepsWrap,'blueNoticeBoxWrap');var toggleWdgt=self.createWidget(self.id+'-pubDeps','ToggleButton',false,'slider',false,'Yes','No');toggleWdgt.addToggleEvent(function(on){self.screenModified();});toggleWdgt.create(function(el){var msg='The following dependencies require publishing. Would you like to do this now?';var pubDepsMsg=document.createElement('div');dfx.setHtml(pubDepsMsg,msg);dfx.addClass(pubDepsMsg,'blueNoticeBoxWrap-msg');dfx.addClass(el,self.widgetType+'-pubDepsToggle');pubDepsWrap.appendChild(pubDepsMsg);pubDepsWrap.appendChild(el);depWrap.appendChild(pubDepsWrap);var warning=document.createElement('div');var warningMsg=document.createElement('div');warning.id=self.id+'-pubDepsWarning';dfx.addClass(warning,self.widgetType+'-pubDepsWarning');dfx.addClass(warningMsg,self.widgetType+'-pubDepsWarningMsg');dfx.setHtml(warningMsg,'<strong>Warning:&nbsp;&nbsp;</strong>You do not have the ability to automatically publish the following dependencies');warning.appendChild(warningMsg);depWrap.appendChild(warning);dfx.hideElement(warning);var sectionsTitles={'embedded_media':'Embedded Media','content_references':'Content References','general_references':'General References','design_related':'Design Related'};var tagLines=[];var tagLinesElem={};var lists=[];var warnings={};var depPubExists=false;dfx.foreach(self._dependencies,function(sectionid){var listWrapper=document.createElement('div');dfx.addClass(listWrapper,self.widgetType+'-pubDepsListWrap');var subHeader=document.createElement('h2');dfx.setHtml(subHeader,sectionsTitles[sectionid]);dfx.addClass(subHeader,'dependency');listWrapper.appendChild(subHeader);var listW=document.createElement('div');listWrapper.appendChild(listW);dfx.addClass(listW,self.widgetType+'-pubDepsList');depWrap.appendChild(listWrapper);dfx.foreach(self._dependencies[sectionid],function(idx){var resourceid=self._dependencies[sectionid][idx].resourceId;var widgetid=self.id+'-'+sectionid+'-'+resourceid+'-'+idx;var astTagLine=self.createWidget(widgetid,'AssetTagLine');astTagLine.setCustomData({id:resourceid,name:self._taglineData[resourceid].name,iconUrl:self._taglineData[resourceid].typeIconUrl,assetType:self._taglineData[resourceid].type,url:self._taglineData[resourceid].url,error:self._taglineData[resourceid].error});tagLines.push({wdgt:astTagLine,sectionid:sectionid,idx:idx});return true;});lists.push({id:sectionid,elem:listW});return true;});var _createDependencyLists=function(idx){var sectionid=lists[idx].id;var rows=[];dfx.foreach(self._dependencies[sectionid],function(idx){var resourceid=self._dependencies[sectionid][idx].resourceId;var widgetid=self.id+'-'+sectionid+'-'+resourceid+'-'+idx;var context=document.createElement('div');var contextDesc=document.createElement('div');var contextTag=document.createElement('div');var contextCurves=document.createElement('span');var contextType=document.createElement('span');dfx.addClass(context,self.contextClassname);dfx.addClass(contextDesc,self.contextDescClassname);dfx.addClass(contextTag,self.contextTagClassname);dfx.addClass(contextCurves,self.contextCurvesClassname);dfx.addClass(contextType,self.contextTypeClassname);dfx.setHtml(contextDesc,self._dependencies[sectionid][idx].resourceUsedAs);dfx.setHtml(contextType,self._dependencies[sectionid][idx].resourceString);contextCurves.appendChild(contextType);contextTag.appendChild(contextCurves);context.appendChild(contextDesc);;context.appendChild(contextTag);rows.push({id:widgetid+'-row',left:tagLinesElem[widgetid],right:context});return true;});var list=self.createWidget(self.id+'-'+sectionid+'-list','PlainList','871',false,false,false,rows);list.create(function(el){lists[idx].elem.appendChild(el);if(idx<(lists.length-1)){_createDependencyLists(idx+1);}else{if(depPubExists===true){dfx.showElement(self.pubDepsWrap);}
dfx.foreach(warnings,function(secid){dfx.showElement(warning);return true;});if(callback){callback.call(self);}}});};var tagLinesLen=tagLines.length;var _createAstTagLines=function(idx){tagLines[idx].wdgt.create(function(elem){var secid=tagLines[idx].sectionid;var secidx=tagLines[idx].idx;if(self._dependencies[secid][secidx].inWorkflow===true){var warningSpan=document.createElement('span');dfx.addClass(warningSpan,self.widgetType+'-astTagLineWarn');dfx.setHtml(warningSpan,'(In Workflow)');elem.appendChild(warningSpan);warnings[secid]=true;}else if(self._dependencies[secid][secidx].hasWorkflow===true){var warningSpan=document.createElement('span');dfx.addClass(warningSpan,self.widgetType+'-astTagLineWarn');dfx.setHtml(warningSpan,'(Workflow Applied)');elem.appendChild(warningSpan);warnings[secid]=true;}
if(self._dependencies[secid][secidx].permission===false){var warningSpan=document.createElement('span');dfx.addClass(warningSpan,self.widgetType+'-astTagLineWarn');dfx.setHtml(warningSpan,'(Permission Denied)');elem.appendChild(warningSpan);warnings[secid]=true;}
if(self._dependencies[secid][secidx].inWorkflow===false&&self._dependencies[secid][secidx].hasWorkflow===false&&self._dependencies[secid][secidx].permission===true){depPubExists=true;}
tagLinesElem[tagLines[idx].wdgt.id]=elem;if(idx<(tagLinesLen-1)){_createAstTagLines(idx+1);}else{if(lists.length>0){_createDependencyLists(0);}}});};if(tagLinesLen>0){_createAstTagLines(0);}else{if(callback){callback.call(self);}}});});},showStatus:function(updateTitle)
{var self=this;var _showStatus=function(){var titleEl=dfx.getClass(self.getClass()+'-status-main-title',self._statusContainer)[0];dfx.removeClass(titleEl.parentNode,'inwf');if(self._inWorkflow){dfx.addClass(titleEl.parentNode,'inwf');if(self._inSafeEdit===true){dfx.setHtml(titleEl,'Safe Editing and currently in workflow');}else{dfx.setHtml(titleEl,'Unpublished and currently in workflow');}}else if(self._inSafeEdit===true&&self._safeToPublished!==true){dfx.setHtml(titleEl,'Safe Editing in progress');dfx.swapClass(titleEl.parentNode,'unpublished','inSafeEdit');}else if(self._isPublished===true){if(self.changesToggle&&self.changesToggle.isOn()===true){dfx.setHtml(titleEl,'Published');}else{dfx.setHtml(titleEl,'Published');}
dfx.removeClass(titleEl.parentNode,'inSafeEdit');dfx.removeClass(titleEl.parentNode,'unpublished');dfx.addClass(titleEl.parentNode,'published');}else{dfx.setHtml(titleEl,'Unpublished');dfx.swapClass(titleEl.parentNode,'published','unpublished');}};if(updateTitle!==true){this._showSwitchToLive(function(){_showStatus();self.ready();});}else{_showStatus();this.ready();}},_showSwitchToLive:function(callback)
{var descDiv=dfx.getClass(this.getClass()+'-status-main-bottom',this._statusContainer)[0];dfx.empty(descDiv);var c=this.getClass()+'-statusChane';var msg='';var divid='';if(this._inSafeEdit===true&&this._hasWorkflow!==true){msg='Publish changes';divid=this.id+'-publishChangesBtn';}else if((this._isPublished===true&&this._inSafeEdit!==true)||this._hasWorkflow!==true){msg='Publish this asset';divid=this.id+'-publishAssetBtn';}else{msg='You cannot publish this asset until workflow has been completed';divid=this.id+'-cannotPublishMsg';}
var content='<div id="'+divid+'"  class="'+c+'-left"><div class="'+c+'-desc">'+msg+'</div>';content+='<div class="'+c+'-opt"></div></div>';if(this._inSafeEdit===true&&this._inWorkflow!==true){content+='<div id="'+this.id+'-cancelSafeEditBtn" class="'+c+'-right"><div class="'+c+'-cancelSE">Cancel Safe Edit and Revert Changes</div>';content+='<div class="'+c+'-SEopt"></div></div>';}
dfx.setHtml(descDiv,content);if(this._isPublished===true||this._hasWorkflow!==true){var optCont=dfx.getClass(c+'-opt',descDiv)[0];var self=this;this.includeWidget('ToggleButton',function(){var toggleState=self._isPublished;if(self._inSafeEdit===true){toggleState=false;}
if((this._isPublished===true&&this._inSafeEdit!==true)||this._hasWorkflow!==true){var toggle=self.createWidget(self.id+'-publishToggle','ToggleButton',false,'slider',toggleState,'Yes','No');self.statusToggle=toggle;toggle.create(function(el){optCont.appendChild(el);});toggle.addToggleEvent(function(on){if(on===true){self._isPublished=true;self._safeToPublished=true;if(self.changesToggle){self.changesToggle.disable();}
dfx.showElement(dfx.getId(self.id+'-status-main-dependencies'));}else{self._safeToPublished=false;if(self.changesToggle){self.changesToggle.enable();}
if(self._inSafeEdit!==true){self._isPublished=false;dfx.hideElement(dfx.getId(self.id+'-status-main-dependencies'));}}
if(self.depWrap!==null){if(on===true){dfx.showElement(self.depWrap);}else if(self._inSafeEdit!==true){dfx.hideElement(self.depWrap);}}
self.screenModified();self.showStatus(true);});}
if(self._isPublished!==true){dfx.hideElement(dfx.getId(self.id+'-status-main-dependencies'));}
if(self._inSafeEdit===true&&self._inWorkflow!==true){var seOptCont=dfx.getClass(c+'-SEopt',descDiv)[0];self._createSafeEditToggle(seOptCont);}
callback.call(self);});}else{callback.call(self);}},_createSafeEditToggle:function(parentCont)
{var toggle=this.createWidget(this.id+'-changesToggle','ToggleButton',false,'slider',false,'Yes','No');this.changesToggle=toggle;var self=this;toggle.create(function(el){parentCont.appendChild(el);});toggle.addToggleEvent(function(on){if(on===true){self._safeToPublished=true;if(self.statusToggle){self.statusToggle.disable();}}else{self._safeToPublished=false;if(self.statusToggle){self.statusToggle.enable();}}
self.screenModified();self.showStatus(true);});},_initWorkflow:function()
{var self=this;this.includeWidget('WorkflowManager',function(){var id=this.id+'-WorkflowManager';var parent=dfx.getId(id);if(!parent){parent=document.createElement('div');parent.id=id;}
dfx.getId('PublishingEditScreen-main').appendChild(parent);var wfm=self.createWidget(null,'WorkflowManager',self.assetid,parent,self._isPublished,self._inSafeEdit);wfm.setReadOnly(self.readOnly);wfm.addResetCallback(function(){self.refresh();});wfm.create(function(el){});});},getAutoSaveContents:function(content)
{var saveData={publishingStatus:this._isPublished||false};return saveData;},loadAutoSaveContents:function(content,callback)
{if(content&&dfx.isset(content.publishingStatus)&&this._isPublished!==content.publishingStatus){this.statusToggle.setValue(content.publishingStatus);}},saveScreenSettings:function()
{var discardChanges=false;var status=this._isPublished;if(this.changesToggle){discardChanges=this.changesToggle.isOn();}
var params={assetid:this.assetid,screen:this.id+'Widget',process:'save',status:dfx.jsonEncode(status),discard:dfx.jsonEncode(discardChanges),safeToPublished:dfx.jsonEncode(this._safeToPublished)};var self=this;var pubDepsToggle=WidgetStore.get(this.id+'-pubDeps');if(pubDepsToggle){params.pubDeps=pubDepsToggle.getValue();var ids=[];dfx.foreach(this._dependencies,function(secid){dfx.foreach(self._dependencies[secid],function(idx){if(self._dependencies[secid][idx].inWorkflow===false&&self._dependencies[secid][idx].hasWorkflow===false&&self._dependencies[secid][idx].permission===true){ids.push(self._dependencies[secid][idx].resourceId);}
return true;});return true;});params.deps=dfx.jsonEncode(ids);}
var self=this;this.displayDisabledDiv(true);this.parent.processScreen(params,function(saveResult,data){if(saveResult&&!saveResult.errors){self._safeToPublished=false;self.refresh(discardChanges);}else{self.screenModified();}},true);},revertScreenSettings:function()
{var self=this;var widget=WidgetStore.get('EditScreenModeWidgetType-tab_pane');if(widget){self.clean();widget.showScreen('publishing',null,true);}},refresh:function(discardChanges)
{var params={assetid:this.assetid,screen:this.id+'Widget',process:'refresh'};var self=this;this.parent.getScreenData(params,function(data){if(data){WidgetStore.get('Toolbar-contextSwitcherButton').updateButtonStatus('EditScreenMode',self.assetid);data=dfx.jsonDecode(data);self.init(data);}});},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},clean:function()
{var el=dfx.getId(this.id+'-WorkflowManager');if(el&&el.parentNode){dfx.remove(el);}
var statusWrapper=dfx.getId(this.id+'-status');if(statusWrapper&&statusWrapper.parentNode){dfx.remove(statusWrapper);}
this._workflowSchemas=null;this._isPublished=null;this._hasWorkflow=null;this._statusContainer=null;},switchOffScreen:function(){}};dfx.inherits('PublishingEditScreen','AbstractSettingsScreen');function RoleAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='RoleAdminScreen';this.roleid=null;this.lastRoleid=null;this.rolesInfo=WidgetStore.get(this.id+'-infobox');}
RoleAdminScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);this.rolesInfo.setReadOnly(readOnly);for(var id in this.topLevels){if(this.topLevels.hasOwnProperty(id)===true){var topLevel=this.topLevels[id];var toogleWdgt=WidgetStore.get(this.id+'-grantAll'+topLevel);toogleWdgt.setReadOnly(readOnly);}}
var titleWdgt=WidgetStore.get(this.id+'-roleTitle');if(titleWdgt){titleWdgt.setReadOnly(readOnly);}
var rmBtns=dfx.getClass(this.widgetType+'-InfoBoxRoleRemove',dfx.getId('RoleAdminScreen-infobox_body'));dfx.foreach(rmBtns,function(idx){if(readOnly===true){dfx.hideElement(rmBtns[idx]);}else{dfx.showElement(rmBtns[idx]);}
return true;});},screenModified:function()
{var self=this;var modified=false;dfx.foreach(this.rolesData,function(roleid){if(self.rolesData[roleid].deleted===true){modified=true;return false;}
if(self.rolesData[roleid].roleTitle!==self.rolesData[roleid].oriRoleTitle){modified=true;return false;}
return true;});if(modified===false){dfx.foreach(this.prvsChangeLog,function(id){if(self.prvsChangeLog[id]===true){modified=true;return false;}
return true;});}
this.setModified(modified);},init:function(data)
{var self=this;this.rolesData={};this.rolesDataOri={};this.privileges=data.privileges;this.privilegeInfo=data.prvsInfo;this.topLevels=data.topLevels;this.rolesPrvs=data.rolesPrvs;this.prvChildrenRef={};this.roleids=[];this.prvsChangeLog={};var _populatePrvStruc=function(tree,parentid){for(var id in tree){if(tree.inArray){self.prvChildrenRef[parentid].isLeaf=true;return;}else if(tree.hasOwnProperty(id)===true){if(parentid){var pid=parentid+'.'+id;}else{var pid=id;}
self.prvChildrenRef[pid]={children:[],isLeaf:false,isTop:false,granted:false};if(parentid){self.prvChildrenRef[parentid].children.push(id);}else{self.prvChildrenRef[id].isTop=true;}
_populatePrvStruc(tree[id],pid);}}};_populatePrvStruc(data.prvsStruc);var rlen=data.roles.length;for(var i=0;i<rlen;i++){this.roleids.push(data.roles[i].roleid);this.rolesData[data.roles[i].roleid]={roleTitle:data.roles[i].roleTitle,oriRoleTitle:data.roles[i].roleTitle,deleted:false,prvsStruc:dfx.clone(this.prvChildrenRef),prevStruc:false};for(var id in this.topLevels){if(this.topLevels.hasOwnProperty(id)===true){var toggleWdgt=WidgetStore.get(self.id+'-grantAll'+this.topLevels[id]);this.rolesData[data.roles[i].roleid][this.topLevels[id]]={};this.rolesData[data.roles[i].roleid][this.topLevels[id]].grantAll=false;}}}
for(var rid in data.rolesPrvs){if(data.rolesPrvs.hasOwnProperty(rid)===true){for(var pid in data.rolesPrvs[rid]){if(data.rolesPrvs[rid].hasOwnProperty(pid)===true){this.rolesData[rid].prvsStruc[pid].granted=data.rolesPrvs[rid][pid];}}}}
for(var tid in this.topLevels){if(this.topLevels.hasOwnProperty(tid)===true){var tLevel=this.topLevels[tid];for(var rid in data.rolesPrvs){if(data.rolesPrvs.hasOwnProperty(rid)===true){if(this.rolesData[rid].prvsStruc[tLevel.toLowerCase()].granted===true){this.rolesData[rid][tLevel].grantAll=true;}}}}}
if(dfx.isset(this.rolesData[this.lastRoleid])===false){this.lastRoleid=null;this.roleid=this.roleids[0];dfx.remove(dfx.getId(this.id+'-readOnlyMsg'));}
if(this.lastRoleid!==null){this.roleid=this.lastRoleid;}else if(dfx.isset(data.roles[0])===true){this.roleid=data.roles[0].roleid;}else{var tabs=dfx.getId('RoleAdminScreen-rolesTabs');dfx.hideElement(tabs);var noRolesMsg=document.createElement('div');noRolesMsg.setAttribute('id','noRolesMsgArea');dfx.setHtml(noRolesMsg,'No roles exist to configure.');tabs.parentNode.appendChild(noRolesMsg);}
this.rolesDataOri=dfx.clone(this.rolesData);this.rolesInfo.reset();this.rolesInfo.setTitle('Roles Manager');this.rolesInfo.setUlClassPrefix('Blue');this.rolesInfo.addSection('roles',null);this.rolesInfo.setSelected(this.roleid);this.createRolesInfoBox();this.createPrivilegeTree();var wait=function(){setTimeout(function(){var created=true;for(var id in self.topLevels){if(self.topLevels.hasOwnProperty(id)===true){if(!dfx.getId(self.id+'-privilegeTreeWrap-'+self.topLevels[id])){created=false;break;}}}
if(created){self.setTabs(self.roleid,self.readOnly);if(self.readOnly===true){self.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId(self.id+'-rolesTabs'),el);},function(){});}
self.ready();}else{wait();}},100);};wait();},createRolesInfoBox:function(roles)
{var self=this;var _createNewRoleItem=function(rid,title){var html='<div class="'+self.widgetType+'-InfoBoxRoleWrapper">';html+='<div class="'+self.widgetType+'-InfoBoxRoleTitle">'+title+'</div>';var st='';if(self.readOnly===true){st='display: none; visibility: hidden;'}
html+='<div style="'+st+'" class="'+self.widgetType+'-InfoBoxRoleRemove"> </div>';html+='</div>';return html;};var _roleOnclickCallback=function(id,e){var readOnly=false;var et=dfx.getMouseEventTarget(e);var remove=dfx.hasClass(et,self.widgetType+'-InfoBoxRoleRemove');if(remove===true){if(self.rolesData[id].deleted===true){dfx.removeClass(dfx.getId(id),'deleted');dfx.removeClass(et,'removed');self.rolesData[id].deleted=false;}else{dfx.addClass(dfx.getId(id),'deleted');dfx.addClass(et,'removed');self.rolesData[id].deleted=true;readOnly=true;}
self.screenModified();}else{if(self.rolesData[id].deleted===true){readOnly=true;}}
self.getTabs(self.roleid);self.roleid=id;var readOnlyMsg=dfx.getId(self.id+'-readOnlyMsg');if(readOnlyMsg){dfx.remove(readOnlyMsg);}
var setAll=function(){if(self.readOnly===true){readOnly=true;}
self.setTabs(self.roleid,readOnly);};if(readOnly){wrnOps={id:self.id+'-readOnlyMsg',leftTitle:'Read Only',mainMessage:'This screen is <strong>Read Only</strong> because the role is <strong>Marked for Deletion</strong>.',colour:'red',buttonTitle:null};self.createScreenWarningMessage(wrnOps,function(el){dfx.insertBefore(dfx.getId(self.id+'-rolesTabs'),el);setAll();});}else{setAll();}};var content='';for(var rid in this.rolesData){if(this.rolesData.hasOwnProperty(rid)===true){var title=this.rolesData[rid].roleTitle;content=_createNewRoleItem(rid,title);this.rolesInfo.addItem('roles',parseInt(rid),content,function(id,e){_roleOnclickCallback(id,e);},false);}}
this.rolesInfo.addButton('add_role','Add New','right',function(){self.includeWidgets(['TextField'],function(){var textfield=self.createWidget(self.id+'-InfoBoxNewRoleName','TextField');textfield.create(function(el){var newNameWrapper=document.createElement('div');var cancelIcon=document.createElement('div');dfx.addClass(newNameWrapper,'TextFieldWidgetType-TextFieldWrapper');dfx.addClass(cancelIcon,'TextFieldWidgetType-TextFieldCancel');newNameWrapper.appendChild(cancelIcon);newNameWrapper.appendChild(el);dfx.hideElement(newNameWrapper);dfx.getId(self.id+'-infobox_BtnContainerMiddle').appendChild(newNameWrapper);dfx.addEvent(cancelIcon,'click',function(e){var btn=WidgetStore.get(self.id+'-infobox_btn_add_role');btn.setName('Add New');textfield.setValue('');dfx.hideElement(newNameWrapper);});self.rolesInfo.addButtonClickEvent('right',function(){var btn=WidgetStore.get(self.id+'-infobox_btn_add_role');var btnVal=btn.getName();var nRoleN=textfield.getValue();if(btnVal==='Add New'){dfx.showElement(dfx.getId(self.id+'-InfoBoxNewRoleName_container'));btn.setName('Create');dfx.showElement(newNameWrapper);dfx.getId(self.id+'-InfoBoxNewRoleName').focus();}else if(btnVal==='Create'&&nRoleN.length>0){var params={screen:'RoleAdminScreenWidget',op:'createNewRole',name:nRoleN};self.displayDisabledDiv();self.parent.processScreen(params,function(data){var result=data;var newRoleid=result.roleid;self.rolesData[parseInt(newRoleid)]={roleTitle:nRoleN,oriRoleTitle:nRoleN,deleted:false,prvsStruc:dfx.clone(self.prvChildrenRef)};dfx.hideElement(newNameWrapper);for(var id in self.topLevels){if(self.topLevels.hasOwnProperty(id)===true){self.rolesData[newRoleid][self.topLevels[id]]={};self.rolesData[newRoleid][self.topLevels[id]].grantAll=false;}}
self.rolesDataOri[newRoleid]=dfx.clone(self.rolesData[newRoleid]);var content=_createNewRoleItem(newRoleid,nRoleN);self.rolesInfo.addItem('roles',parseInt(newRoleid),content,function(id,e){_roleOnclickCallback(id,e);},false);var btn=WidgetStore.get(self.id+'-infobox_btn_add_role');textfield.setValue('');btn.setName('Add New');dfx.hideElement(dfx.getId(self.id+'-InfoBoxNewRoleName_container'));if(self.roleid===undefined){dfx.hideElement(dfx.getId('noRolesMsgArea'));dfx.showElement(dfx.getId('RoleAdminScreen-rolesTabs'));}else{self.getTabs(self.roleid);}
self.roleid=parseInt(newRoleid);var readOnlyMsg=dfx.getId(self.id+'-readOnlyMsg');if(readOnlyMsg){dfx.remove(readOnlyMsg);}
var readOnly=false;if(self.readOnly===true){readOnly=true;}
self.setTabs(self.roleid,readOnly);self.rolesInfo.setItem(parseInt(newRoleid));self.removeDisabledDiv();},true);}});});});});if(this.roleid!==undefined){this.rolesInfo.setItem(this.roleid);}},createPrivilegeTree:function()
{var self=this;var roleTitleWrap=document.createElement('div');roleTitleWrap.id=this.id+'-roleTitleWrap';dfx.addClass(roleTitleWrap,self.widgetType+'-roleTitleWrap');var content='<label id="'+this.id+'-roleTitleLabel" for="'+self.id+'-roleTitle" class="'+self.widgetType+'-roleTitleLabel">Role Name</label>';roleTitleWrap.innerHTML=content;this.includeWidgets(['TextField'],function(){var roleTitle=self.createWidget(self.id+'-roleTitle','TextField');roleTitle.create(function(el){roleTitleWrap.appendChild(el);dfx.addEvent(roleTitle.domEl,'keyup',function(e){var rInfoTitle=dfx.getClass(self.widgetType+'-InfoBoxRoleTitle',dfx.getId(self.roleid))[0];dfx.setHtml(rInfoTitle,roleTitle.domEl.value);self.getTabs(self.roleid);self.screenModified();});});});var layoutDiv=dfx.getId(self.id+'-rolesTabs-cardLayout');layoutDiv.parentNode.insertBefore(roleTitleWrap,layoutDiv);for(var id in this.topLevels){if(this.topLevels.hasOwnProperty(id)===true){(function(topLevel){var topLevelWrapid=self.id+'-'+topLevel+'Tab';var topLevelWrap=dfx.getId(topLevelWrapid);dfx.setStyle(topLevelWrap,'position','relative');dfx.setStyle(topLevelWrap,'margin-bottom','30px');var modal=document.createElement('div');modal.id=self.id+'-roleDescModal-'+topLevel;dfx.addClass(modal,self.widgetType+'-roleDescModal');dfx.setStyle(modal,'display','none');content='<div class="'+self.widgetType+'-roleDescModalLeft">&nbsp;</div>';content+='<div class="'+self.widgetType+'-roleDescModalRight">';content+='<div id="'+self.id+'-roleDescModal-title-'+topLevel+'" class="'+self.widgetType+'-roleDescModalRight-title">&nbsp;</div>';content+='<div id="'+self.id+'-roleDescModal-text-'+topLevel+'" class="'+self.widgetType+'-roleDescModalRight-text">&nbsp;</div>';content+='</div>';dfx.setHtml(modal,content);var identifier=self.id+'-grantAll'+topLevel;self.includeWidgets(['ToggleButton'],function(){var toggleWdgt=self.createWidget(identifier,'ToggleButton',false,'slider',false,'Yes','No');toggleWdgt.addToggleOnEvent(function(){var allDenied=true;for(var pid in self.rolesData[self.roleid].prvsStruc){if(self.rolesData[self.roleid].prvsStruc.hasOwnProperty(pid)===true){if(pid!==topLevel.toLowerCase()&&self.rolesData[self.roleid].prvsStruc[pid].granted===true){allDenied=false;break;}}}
if(allDenied===false){self.rolesData[self.roleid].prevStruc=dfx.clone(self.rolesData[self.roleid].prvsStruc);}else{self.rolesData[self.roleid].prevStruc=false;}
self._iteratePrivileges(topLevel.toLowerCase(),function(id,info,callback){if(id!==topLevel.toLowerCase()){var target=dfx.getId(self.id+'-'+id+'-btn');if(info.isLeaf===true){dfx.removeClass(target,'leafSelected');dfx.removeClass(target,'leafDenied');}else{dfx.removeClass(target,'groupSelected');dfx.removeClass(target,'groupNone');}
dfx.addClass(target,'leafSelectedGrey');self.rolesData[self.roleid].prvsStruc[id].granted=false;}else{self.rolesData[self.roleid].prvsStruc[id].granted=true;}
if(dfx.isset(self.rolesDataOri[self.roleid].prvsStruc[id].granted)===false){self.rolesDataOri[self.roleid].prvsStruc[id].granted=self.rolesData[self.roleid].prvsStruc[id].granted;}
if(self.rolesData[self.roleid].prvsStruc[id].granted!==self.rolesDataOri[self.roleid].prvsStruc[id].granted){self.prvsChangeLog[self.roleid+'-'+id]=true;}else{self.prvsChangeLog[self.roleid+'-'+id]=false;}
if(callback){callback.call(self);}});self.screenModified();});toggleWdgt.addToggleOffEvent(function(){if(dfx.isset(self.rolesData[self.roleid])===true){if(self.rolesData[self.roleid].prevStruc===false&&self.rolesData[self.roleid].prvsStruc[topLevel.toLowerCase()].granted===true){self._iteratePrivileges(topLevel.toLowerCase(),function(id,info,callback){if(id!==topLevel.toLowerCase()){var target=dfx.getId(self.id+'-'+id+'-btn');if(info.isLeaf===true){dfx.removeClass(target,'leafSelected');dfx.removeClass(target,'leafSelectedGrey');dfx.addClass(target,'leafDenied');}else{dfx.removeClass(target,'leafSelectedGrey');dfx.removeClass(target,'groupSelected');dfx.addClass(target,'groupNone');}}
self.rolesData[self.roleid].prvsStruc[id].granted=false;if(self.rolesData[self.roleid].prvsStruc[id].granted!==self.rolesDataOri[self.roleid].prvsStruc[id].granted){self.prvsChangeLog[self.roleid+'-'+id]=true;}else{self.prvsChangeLog[self.roleid+'-'+id]=false;}
if(callback){callback.call(self);}});}else if(self.rolesData[self.roleid].prevStruc){self.rolesData[self.roleid].prvsStruc=dfx.clone(self.rolesData[self.roleid].prevStruc);self.setTabs(self.roleid,false,true);}}
self.screenModified();});toggleWdgt.create(function(el){var grantAllWrap=document.createElement('div');var grantAllText=document.createElement('div');var grantAllToggleWrap=document.createElement('div');dfx.addClass(grantAllWrap,self.widgetType+'-grantAllWrap');dfx.addClass(grantAllWrap,self.widgetType+'-grantAllWrap-'+topLevel);dfx.addClass(grantAllText,self.widgetType+'-grantAllText');dfx.addClass(grantAllToggleWrap,self.widgetType+'-grantAllToggleWrap');grantAllText.innerHTML='Grant unrestricted access to '+topLevel.toLowerCase()+' privileges';grantAllToggleWrap.appendChild(el);grantAllWrap.appendChild(grantAllText);grantAllWrap.appendChild(grantAllToggleWrap);dfx.getId(topLevelWrapid).appendChild(grantAllWrap);var treeWrap=document.createElement('div');treeWrap.id=self.id+'-privilegeTreeWrap-'+topLevel;dfx.addClass(treeWrap,self.widgetType+'-privilegeTreeWrap');dfx.getId(topLevelWrapid).appendChild(treeWrap);dfx.getId(topLevelWrapid).appendChild(modal);self._iteratePrivileges(topLevel.toLowerCase(),function(id,info,callback){if(info.isTop===false){var parts=id.split('.');var partsLen=parts.length;var label=dfx.ucFirst(parts[(partsLen-1)]);var rowWrap=document.createElement('div');var content='';var prefix=self.id+'-'+id;var lvlStrs=['second','third','forth','fifth','sixth'];rowWrap.id=id;dfx.addClass(rowWrap,'rowWrap');content+='<div id="'+prefix+'-wrap" class="'+self.widgetType+'-prvRow';content+=' '+self.widgetType+'-'+lvlStrs[(partsLen-2)]+'Level';content+='">';content+='  <div id="'+prefix+'-icon" class="'+self.widgetType+'-prvRowIcon';if(info.isLeaf===false){content+=' expanded';}else{content+=' leaf';}
content+='">&nbsp;</div>';content+='  <div id="'+prefix+'-title" class="'+self.widgetType+'-prvRowTitle">'+label+'</div>';content+='  <div id="'+prefix+'-btn" class="'+self.widgetType+'-prvRowBtn">&nbsp;</div>';content+='</div>';rowWrap.innerHTML=content;var rw=dfx.getClass(self.widgetType+'-prvRow',rowWrap)[0];dfx.addEvent(rw,'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,self.widgetType+'-prvRowBtn')===true){var prvid=target.id.substring((self.id.length+1),(target.id.length-4));self._processClick(prvid);}else{self._expandCollapseLevels(target);}});treeWrap.appendChild(rowWrap);dfx.addEvent(rowWrap,'mouseover',function(e){var target=dfx.getMouseEventTarget(e);while(dfx.hasClass(target,'rowWrap')===false){target=target.parentNode;}
dfx.setStyle(modal,'left',dfx.getElementWidth(target)+22+'px');var top=(dfx.getElementCoords(target).y-dfx.getElementCoords(topLevelWrap).y);top=(top-15);var modalH=100;var outterBtmY=dfx.getElementCoords(topLevelWrap).y+dfx.getElementHeight(topLevelWrap);var modalBtmY=dfx.getElementCoords(topLevelWrap).y+top+modalH;if(outterBtmY>=(modalBtmY+48)){dfx.removeClass(dfx.getClass(self.widgetType+'-roleDescModalLeft',modal)[0],'bottom');dfx.setStyle(modal,'top',top+'px');}else{dfx.addClass(dfx.getClass(self.widgetType+'-roleDescModalLeft',modal)[0],'bottom');top=((dfx.getElementCoords(target).y-dfx.getElementCoords(topLevelWrap).y)-modalH+35);dfx.setStyle(modal,'top',top+'px');}
var titleDiv=dfx.getId(self.id+'-roleDescModal-title-'+topLevel);var descDiv=dfx.getId(self.id+'-roleDescModal-text-'+topLevel);if(dfx.isset(self.privilegeInfo[target.id])===true){dfx.setHtml(titleDiv,self.privilegeInfo[target.id].name);dfx.setHtml(descDiv,self.privilegeInfo[target.id].description);}else{dfx.setHtml(titleDiv,'No name');dfx.setHtml(descDiv,'No description');}
dfx.setStyle(modal,'display','block');dfx.addClass(rowWrap,self.widgetType+'-rowOver');});dfx.addEvent(rowWrap,'mouseout',function(e){dfx.removeClass(rowWrap,self.widgetType+'-rowOver');dfx.setStyle(modal,'display','none');});}
if(callback){callback.call(self);}});});});})(this.topLevels[id]);}}},_processClick:function(prvid)
{var self=this;var btnDiv=dfx.getId(this.id+'-'+prvid+'-btn');if(dfx.hasClass(btnDiv,'leafSelectedGrey')===true||this.readOnly){return;}
if(this.rolesData[self.roleid].prvsStruc[prvid].isLeaf===true){if(this.rolesData[self.roleid].prvsStruc[prvid].granted===true){dfx.swapClass(btnDiv,'leafSelected','leafDenied');this.rolesData[self.roleid].prvsStruc[prvid].granted=false;}else{dfx.swapClass(btnDiv,'leafDenied','leafSelected');this.rolesData[self.roleid].prvsStruc[prvid].granted=true;}
if(this.rolesData[self.roleid].prvsStruc[prvid].granted!==this.rolesDataOri[self.roleid].prvsStruc[prvid].granted){this.prvsChangeLog[self.roleid+'-'+prvid]=true;}else{this.prvsChangeLog[self.roleid+'-'+prvid]=false;}}else{if(this.rolesData[self.roleid].prvsStruc[prvid].granted===true){dfx.swapClass(btnDiv,'groupSelected','groupNone');this._iteratePrivileges(prvid,function(id,info,callback){if(id!==prvid){var target=dfx.getId(self.id+'-'+id+'-btn');if(info.isLeaf===true){dfx.removeClass(target,'leafSelected');dfx.removeClass(target,'leafSelectedGrey');dfx.addClass(target,'leafDenied');}else{dfx.removeClass(target,'leafSelectedGrey');dfx.removeClass(target,'groupSelected');dfx.addClass(target,'groupNone');}}
self.rolesData[self.roleid].prvsStruc[id].granted=false;if(self.rolesData[self.roleid].prvsStruc[id].granted!==self.rolesDataOri[self.roleid].prvsStruc[id].granted){self.prvsChangeLog[self.roleid+'-'+id]=true;}else{self.prvsChangeLog[self.roleid+'-'+id]=false;}
if(callback){callback.call(self);}});}else{dfx.swapClass(btnDiv,'groupNone','groupSelected');this._iteratePrivileges(prvid,function(id,info,callback){if(id!==prvid){var target=dfx.getId(self.id+'-'+id+'-btn');dfx.removeClass(target,'leafSelected');dfx.removeClass(target,'leafDenied');dfx.removeClass(target,'groupSelected');dfx.removeClass(target,'groupNone');dfx.addClass(target,'leafSelectedGrey');self.rolesData[self.roleid].prvsStruc[id].granted=false;}else{self.rolesData[self.roleid].prvsStruc[id].granted=true;}
if(self.rolesData[self.roleid].prvsStruc[id].granted!==self.rolesDataOri[self.roleid].prvsStruc[id].granted){self.prvsChangeLog[self.roleid+'-'+id]=true;}else{self.prvsChangeLog[self.roleid+'-'+id]=false;}
if(callback){callback.call(self);}});}}
self.screenModified();},_iteratePrivileges:function(parentid,callback)
{var self=this;if(parentid===null){for(var id in this.topLevels){if(this.topLevels.hasOwnProperty(id)===true){this._iteratePrivileges(this.topLevels[id].toLowerCase(),callback);}}}else{if(this.prvChildrenRef[parentid].isLeaf===true){callback.call(self,parentid,this.prvChildrenRef[parentid]);}else{callback.call(self,parentid,this.prvChildrenRef[parentid],function(){var cLen=self.prvChildrenRef[parentid].children.length;if(cLen>0){for(var i=0;i<cLen;i++){self._iteratePrivileges(parentid+'.'+self.prvChildrenRef[parentid].children[i],callback);}}});}}},setTabs:function(roleid,readOnly,tOnly)
{var self=this;var treeOnly=tOnly||false;var _setStyle=function(className,btnDiv){switch(className){case'leafSelected':dfx.removeClass(btnDiv,'groupNone');dfx.removeClass(btnDiv,'groupSelected');dfx.removeClass(btnDiv,'leafSelectedGrey');dfx.removeClass(btnDiv,'leafDenied');dfx.addClass(btnDiv,className);break;case'leafSelectedGrey':dfx.removeClass(btnDiv,'groupNone');dfx.removeClass(btnDiv,'groupSelected');dfx.removeClass(btnDiv,'leafSelected');dfx.removeClass(btnDiv,'leafDenied');dfx.addClass(btnDiv,className);break;case'leafDenied':dfx.removeClass(btnDiv,'groupNone');dfx.removeClass(btnDiv,'groupSelected');dfx.removeClass(btnDiv,'leafSelected');dfx.removeClass(btnDiv,'leafSelectedGrey');dfx.addClass(btnDiv,className);break;case'groupNone':dfx.removeClass(btnDiv,'leafSelectedGrey');dfx.swapClass(btnDiv,'groupSelected',className);break;case'groupSelected':dfx.removeClass(btnDiv,'leafSelectedGrey');dfx.swapClass(btnDiv,'groupNone',className);break;default:break;}};var titleWdgt=WidgetStore.get(this.id+'-roleTitle');if(dfx.isset(this.rolesData[roleid])===false){titleWdgt.setValue('Hidden');}else{titleWdgt.setValue(this.rolesData[roleid].roleTitle);}
titleWdgt.setReadOnly(readOnly);for(var id in this.topLevels){if(this.topLevels.hasOwnProperty(id)===true){var toggleWdgt=WidgetStore.get(self.id+'-grantAll'+this.topLevels[id]);if(treeOnly===false){if(dfx.isset(this.rolesData[roleid])===false){toggleWdgt.toggleSlideOff(null,true,false);}else{if(this.rolesData[roleid][this.topLevels[id]].grantAll===true){toggleWdgt.toggleSlideOn(null,true,false);}else{toggleWdgt.toggleSlideOff(null,true,false);}}}
toggleWdgt.setReadOnly(readOnly);var parentLocked='';self._iteratePrivileges(this.topLevels[id].toLowerCase(),function(id,info,callback){var btnDiv=dfx.getId(self.id+'-'+id+'-btn');var childLocked=false;if(parentLocked!==''){if(id.search(parentLocked)===0){childLocked=true;_setStyle('leafSelectedGrey',btnDiv);}else{parentLocked='';}}
if(childLocked===false){if(info.isLeaf===true){if(dfx.isset(this.rolesData[roleid])===true&&self.rolesData[roleid].prvsStruc[id].granted===true){_setStyle('leafSelected',btnDiv);}else{_setStyle('leafDenied',btnDiv);}}else if(info.isTop===true||info.isLeaf===false){if(dfx.isset(this.rolesData[roleid])===true&&self.rolesData[roleid].prvsStruc[id].granted===true){parentLocked=id;_setStyle('groupSelected',btnDiv);}else{_setStyle('groupNone',btnDiv);}}}
if(callback){callback.call(self);}});}}},_expandCollapseLevels:function(target)
{var self=this;var collapse=false;var pid=target.id;pid=pid.substring(this.id.length+1);pid=pid.substring(0,pid.search(/-/));this._iteratePrivileges(pid,function(id,info,callback){var iconDiv=dfx.getId(self.id+'-'+id+'-icon');if(id===pid){if(info.isLeaf===true){}else{if(dfx.hasClass(iconDiv,'expanded')===true){collapse=true;dfx.swapClass(iconDiv,'expanded','collapsed');}else if(dfx.hasClass(iconDiv,'collapsed')===true){dfx.swapClass(iconDiv,'collapsed','expanded');}
if(callback){callback.call(self);}}}else{var rowDiv=dfx.getId(self.id+'-'+id+'-wrap');if(collapse===true){dfx.addClass(rowDiv,'hide');}else{dfx.removeClass(rowDiv,'hide');if(info.isLeaf===false){if(dfx.hasClass(iconDiv,'collapsed')===true){dfx.swapClass(iconDiv,'collapsed','expanded');}}}
if(callback){callback.call(self);}}});},getTabs:function(roleid,readOnly)
{var self=this;var title=WidgetStore.get(this.id+'-roleTitle');this.rolesData[roleid].roleTitle=title.getValue();for(var id in this.topLevels){if(this.topLevels.hasOwnProperty(id)===true){var toggleWdgt=WidgetStore.get(self.id+'-grantAll'+this.topLevels[id]);this.rolesData[roleid][this.topLevels[id]].grantAll=toggleWdgt.getValue();}}},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},save:function()
{this.constructSettings();this.settings.ops=dfx.jsonEncode(this.settings.ops);var self=this;this.request({action:'processScreen'},function(data){self.switchOffScreen();self.parent.refreshScreen('role');});},reset:function(callback)
{var self=this;var params={action:'paintScreen',mode:'AdminScreenMode',screen:'RoleAdminScreenWidget',type:'getRolesData'};dfx.post(window.location.href,params,function(rolesData){for(var id in self.topLevels){if(self.topLevels.hasOwnProperty(id)===true){var elem=dfx.getId(self.id+'-'+self.topLevels[id]+'Tab');elem.innerHTML='';}}
dfx.remove(dfx.getId(self.id+'-roleTitleWrap'));rolesData=dfx.jsonDecode(rolesData);self.init(rolesData);callback.call(self);});},saveScreenSettings:function()
{var self=this;if(this.roleid!==undefined){this.getTabs(this.roleid);}
var params={screen:this.id+'Widget',op:'saveRoles',rolesData:dfx.jsonEncode(this.rolesData),prvsInfo:dfx.jsonEncode(this.rolesPrvs)};this.displayDisabledDiv();this.parent.processScreen(params,function(data){self.lastRoleid=self.roleid;self.reset(function(){self.switchOnScreen();self.removeDisabledDiv();});},true);},revertScreenSettings:function()
{var self=this;this.displayDisabledDiv(true);this.reset(function(){self.removeDisabledDiv();});},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},switchOffScreen:function(){}};dfx.inherits('RoleAdminScreen','AbstractSettingsScreen');function SecurityAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='SecurityAdminScreen';this.asaDynamicDiv=WidgetStore.get(this.id+'-adminScreensAccess-dynamicDiv');this.adminScreensAccessWdgt=null;}
SecurityAdminScreenWidgetType.prototype={init:function(data)
{var self=this;this.loadAdminScreensAccess(function(){self.adminScreensAccessWdgt.setReadOnly(self.readOnly);if(self.readOnly){self.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId('AdminScreensAccess-wrap'),el);},function(){self.adminScreensAccessWdgt.forceEdit();});}
self.ready();});},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callback)
{if(callback){callback.call(this);}},loadAdminScreensAccess:function(callback)
{var self=this;delete this.adminScreensAccessWdgt;this.asaDynamicDiv.changeContent({action:'paintScreen',mode:'AdminScreenMode',screen:'SecurityAdminScreenWidget',type:'adminScreensAccessDynamicDiv'},function(data){self.adminScreensAccessWdgt=WidgetStore.get('AdminScreensAccess');self.adminScreensAccessWdgt.postWidget=self.parent;if(dfx.isset(callback)===true){callback.call(self);}});},switchOnScreen:function(){},switchOffScreen:function(){}};dfx.inherits('SecurityAdminScreen','AbstractSettingsScreen');function SuperUsersSystemConfigScreenWidgetType(id,screenid,system,title,parent)
{AbstractSettingsScreenWidgetType.call(this,id);this.widgetType='SuperUsersSystemConfigScreen';this.screenid=screenid;this.system=system;this.title=title;this.parent=parent;this.hasChanges={};this.added=[];this.children.push(this.id+'-table-Button-AddExistingUser');}
SuperUsersSystemConfigScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var removeBtns=dfx.getClass(this.widgetType+'WidgetType-remove',dfx.getId('SuperUsersSystemConfigScreen-usersTable'));dfx.foreach(removeBtns,function(idx){if(readOnly===true){dfx.hideElement(removeBtns[idx]);}else{dfx.showElement(removeBtns[idx]);}
return true;});},init:function(data)
{var currentUser=data.userid;var self=this;var table=WidgetStore.get(this.id+'-usersTable');if(table){table.addClickEvent(this.id,function(rowid,colIdx,elem){var className=self.id+'WidgetType-remove';if(dfx.hasClass(elem,className)===true){if(parseInt(table.getRowid(rowid),10)!==parseInt(currentUser,10)){self.toggleUser(rowid);}else{if(self.ipopup){self.ipopup.show(dfx.getTag('td',dfx.getId(rowid))[3]);}else{self.includeWidget('Intervention',function(){self.ipopup=self.createWidget(null,'Intervention',function(){},function(){});self.ipopup.confirmText=null;self.ipopup.cancelText='OK';self.ipopup.create(function(){self.ipopup.setSize('250px','65px');self.ipopup.setMessage('You cannot remove yourself from the super users list');self.ipopup.show(dfx.getTag('td',dfx.getId(rowid))[3]);});});}}}});}
var addNew=WidgetStore.get(this.id+'-table-Button-AddExistingUser');if(!addNew){return;}
var assetPicker=WidgetStore.get('EditingAssetPicker');assetPicker.setScreen('superUsers');assetPicker.addProjectFolderWhiteList('superUsers','Users');assetPicker.setHideSite('superUsers');addNew.addClickEvent(function(){addNew.disable();assetPicker.init('superUsers',function(){assetPicker.dialog.open();});});assetPicker.addAssetsSelectedAction(function(selectedAssets){var sLen=selectedAssets.length;for(var i=0;i<sLen;i++){self.addUserToList(selectedAssets[i]);self.hasChanges[selectedAssets[i]]=true;self.added.push(selectedAssets[i]);}
self._checkChanges();},true);assetPicker.addCloseAction(function(){addNew.enable();});if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getClass('SectionWidgetType-sectionHeader',dfx.getId(self.id+'-table'))[0],el);},function(){});}
this.ready();},_checkChanges:function()
{var noChange=true;for(var id in this.hasChanges){if(this.hasChanges[id]===true){this.setModified(true);noChange=false;break;}}
if(noChange===true){this.setModified(false);}},addUserToList:function(userid)
{var table=WidgetStore.get(this.id+'-usersTable');if(table&&table.hasRow(userid)===false){var colClass=['userName','email','lastLogin','remove'];var c=this.getClass();var self=this;var options={attributes:['username','name','email'],type:true,typeIcon:false,linking:[],urls:true};AssetManager.getAsset(userid,function(user){if(user.type!=='user'){return;}
var userName=user.getAttribute('name')+' ('+user.getAttribute('username')+')';var email=user.getAttribute('email');var remove='<div class="'+c+'-remove"></div>';var rowData=[userName,email||'&nbsp;','&nbsp;',remove];var row=table.createRowAsElement(rowData,colClass,userid);table.addRow(row);self.switchOnScreen();},false,options);}},toggleUser:function(rowid)
{var row=dfx.getId(rowid);dfx.toggleClass(row,'disabled');if(this.hasChanges.hasOwnProperty(rowid)===true){delete this.hasChanges[rowid];}else{this.hasChanges[rowid]=true;}
this._checkChanges();this.switchOnScreen();},saveConfig:function()
{var table=WidgetStore.get(this.id+'-usersTable');if(!table){return;}
var rowids=table.getRowids(null,function(row){return(dfx.hasClass(row,'disabled')!==true);});var self=this;var params={users:dfx.jsonEncode(rowids),screen:this.id+'Widget',op:'saveSuperUsers'};this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){dfx.remove(dfx.getClass('disabled',table.domElem,'tr'));self.added=[];self.hasChanges={};self.setModified(false);self.removeDisabledDiv(null,true);},true);},switchOnScreen:function()
{var self=this;this.setSaveButton(function(){self.saveConfig();},function(){self.revert();});},revert:function()
{var table=WidgetStore.get(this.id+'-usersTable');var markedRows=table.getRowids(null,function(row){return(dfx.hasClass(row,'disabled')===true);});var markedLen=markedRows.length;for(var i=0;i<markedLen;i++){var marked=dfx.getId(table.getRowElement(markedRows[i]));dfx.toggleClass(marked,'disabled');}
var addedLen=this.added.length;for(var j=0;j<addedLen;j++){var added=dfx.getId(table.getRowElement(this.added[j]));dfx.remove(added);}
this.added=[];this.hasChanges={};this.setModified(false);this.removeDisabledDiv();},switchOffScreen:function(){}};dfx.inherits('SuperUsersSystemConfigScreen','AbstractSettingsScreen');function UsageEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='UsageEditScreen';this.sections=[{id:'embedded_media',title:'Embedded Media'},{id:'content_references',title:'Content References'},{id:'general_references',title:'General References'},{id:'design_related',title:'Design Related'}];this.contextClassname='dependency-usageContext';this.contextDescClassname='dependency-usageContextDesc';this.contextTagClassname='dependency-usageContextTag';this.contextCurvesClassname='dependency-usageContextCurves';this.contextTypeClassname='dependency-usageContextType';this.changes={};}
UsageEditScreenWidgetType.prototype={screenModified:function()
{var self=this;var modified=false;dfx.foreach(this.changes,function(id){if(self.changes[id]===true){modified=true;return false;}
return true;});this.setModified(modified);},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);},init:function(data)
{var self=this;dfx.showElement(dfx.getId(this.id+'-dependencies').parentNode);var itemElems=dfx.getId(this.id+'-dependencies-items');var itemLen=itemElems.length;for(var i=itemLen;i>0;i--){dfx.remove(itemElems.childNodes[i]);}
var wrapper=dfx.getId(this.id+'-dependencies-items');var desc='This section lists the parts of the system that this asset is using. ';desc+='This may be media, such as images and movies, ';desc+='assets that it is linking to or assets that are being used within the design of the page.';var descDiv=document.createElement('div');dfx.setHtml(descDiv,desc);dfx.addClass(descDiv,this.widgetType+'-deps-description');wrapper.appendChild(descDiv);this.includeWidgets(['PlainList','AssetTagLine'],function(){dfx.foreach(self.sections,function(idx){var listWrap=document.createElement('div');var sectionid=self.sections[idx].id;var subHeader=document.createElement('h2');dfx.addClass(subHeader,'dependency');dfx.setHtml(subHeader,self.sections[idx].title);listWrap.appendChild(subHeader);var listWrapper=document.createElement('div');listWrapper.id=self.id+'-'+sectionid;dfx.addClass(listWrap,self.widgetType+'-depListWrap');listWrap.appendChild(listWrapper);wrapper.appendChild(listWrap);return true;});var tagLines=[];var tagLinesElem={};var lists=[];dfx.foreach(self.sections,function(idx){var sectionid=self.sections[idx].id;lists.push(sectionid);dfx.foreach(data.deps[sectionid],function(idx){var resourceid=data.deps[sectionid][idx].resourceId;var widgetid=self.id+'-'+sectionid+'-'+resourceid+'-'+idx;var astTagLine=self.createWidget(widgetid,'AssetTagLine');if(resourceid===0){astTagLine.setCustomData({id:resourceid,name:data.tagLineData[data.deps[sectionid][idx].resourceType].name,iconUrl:data.tagLineData[data.deps[sectionid][idx].resourceType].typeIconUrl,assetType:data.tagLineData[data.deps[sectionid][idx].resourceType].type,url:data.tagLineData[data.deps[sectionid][idx].resourceType].url,error:data.tagLineData[data.deps[sectionid][idx].resourceType].error});}else{astTagLine.setCustomData({id:resourceid,name:data.tagLineData[resourceid].name,iconUrl:data.tagLineData[resourceid].typeIconUrl,assetType:data.tagLineData[resourceid].type,url:data.tagLineData[resourceid].url,error:data.tagLineData[resourceid].error});}
tagLines.push(astTagLine);return true;});return true;});var _createDependencyLists=function(idx){var sectionid=lists[idx];var rows=[];if(data.deps[sectionid].length===0){var noDepString=document.createElement('span');var msgString='';if(sectionid==='embedded_media'){msgString='There is no embedded media.';}else if(sectionid==='content_references'){msgString='There are no content references.';}else if(sectionid==='general_references'){msgString='There are no general references.';}else if(sectionid==='design_related'){msgString='There are no design related references.';}
dfx.setHtml(noDepString,msgString);rows.push({id:'',left:noDepString,right:null});dfx.addClass(noDepString,self.widgetType+'-no-dependencies');}else{dfx.foreach(data.deps[sectionid],function(idx){var resourceid=data.deps[sectionid][idx].resourceId;var widgetid=self.id+'-'+sectionid+'-'+resourceid+'-'+idx;var context=document.createElement('div');var contextDesc=document.createElement('div');var contextTag=document.createElement('div');var contextCurves=document.createElement('span');var contextType=document.createElement('span');dfx.addClass(context,self.contextClassname);dfx.addClass(contextDesc,self.contextDescClassname);dfx.addClass(contextTag,self.contextTagClassname);dfx.addClass(contextCurves,self.contextCurvesClassname);dfx.addClass(contextType,self.contextTypeClassname);dfx.setHtml(contextDesc,data.deps[sectionid][idx].resourceUsedAs);dfx.setHtml(contextType,data.deps[sectionid][idx].resourceString);contextCurves.appendChild(contextType);contextTag.appendChild(contextCurves);context.appendChild(contextDesc);context.appendChild(contextTag);rows.push({id:widgetid+'-row',left:tagLinesElem[widgetid],right:context});return true;});}
var list=self.createWidget(self.id+'-'+sectionid+'-list','PlainList','850',false,false,true,rows);list.create(function(el){dfx.getId(self.id+'-'+sectionid).appendChild(el);var browserInfo=dfx.browser();if(browserInfo.type!=='msie'){dfx.foreach(data.deps[sectionid],function(idx){var resourceid=data.deps[sectionid][idx].resourceId;var widgetid=self.id+'-'+sectionid+'-'+resourceid+'-'+idx;dfx.ellipsizeDom(dfx.getClass('AssetTagLine-assetName',tagLinesElem[widgetid])[0],250);});}
if(idx<(lists.length-1)){_createDependencyLists(idx+1);}else{self.ready();}});};var tagLinesLen=tagLines.length;var _createAstTagLines=function(idx){if(tagLinesLen===0){_createDependencyLists(0);}else{tagLines[idx].create(function(elem){tagLinesElem[tagLines[idx].id]=elem;if(idx<(tagLinesLen-1)){_createAstTagLines(idx+1);}else{if(lists.length>0){_createDependencyLists(0);}}});}};_createAstTagLines(0);});},getAutoSaveContents:function()
{var saveData={};return saveData;},loadAutoSaveContents:function(content,callBack)
{if(callback){callback.call(this);}},saveScreenSettings:function()
{var self=this;var params={screen:this.id+'Widget',assetid:this.assetid,defaultPageDesign:this.defaultPage.getValue(false,false),defaultCascade:this.defaultCascade.getValue(),defaultChildDesign:this.defaultChild.getValue(false,false),urlLookups:[]};dfx.foreach(this.designSettings.lookups,function(idx){params.urlLookups.push({url:self.designSettings.lookups[idx].url,pageid:self.urlPage[idx].getValue(false,false),cascade:self.urlCascade[idx].getValue(),childid:self.urlChild[idx].getValue(false,false)});return true;});params.urlLookups=dfx.jsonEncode(params.urlLookups);this.displayDisabledDiv(true);this.parent.processScreen(params,function(data){self.reset(function(){self.switchOnScreen();self.removeDisabledDiv();});},true);},revertScreenSettings:function()
{var self=this;this.displayDisabledDiv(true);this.reset(function(){self.removeDisabledDiv();});},reset:function(callback)
{var self=this;var params={mode:'EditScreenMode',screen:'UsageEditScreenWidget',type:'getDesignData',assetid:this.assetid};this.parent.getScreenData(params,function(data){var designData=dfx.jsonDecode(data);self.init(designData);callback.call(self);});},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},switchOffScreen:function(){}};dfx.inherits('UsageEditScreen','AbstractSettingsScreen');function WorkflowAdminScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='WorkflowAdminScreen';this._loadAutoSave=false;var self=this;window.onbeforeunload=function(e){if(self.isModified){return"You have unsaved changes!";}};var schemaNameWidget=WidgetStore.get(this.id+'-details-name');if(schemaNameWidget){schemaNameWidget.addOnChangeEvent(function(newName){self.setModified(true);var id=self.id+'-infobox-schemaName-'+self.currentSchema;var el=dfx.getId(id);if(el){dfx.setHtml(el,newName);}});}}
WorkflowAdminScreenWidgetType.prototype={init:function(data,schema,stream)
{schema=schema||data.schemaid;this.schemas={};this._removedSchemas={};this._cache={};this._streamInfo={};this.readOnlyGroups={};this.streamSteps={};this.streamElements={};this.isModified=false;this.setModified(false);this._createTextField=null;this.schemas=data.schemas;this.assetTypeIcon=this.assetTypeIcon||data.typeIconUrl;var wrapperEl=dfx.getId(this.id+'-details-wrapper');if(dfx.isEmpty(this.schemas)===true){dfx.addClass(wrapperEl,'noSchemas');this.schemas={};}else{dfx.removeClass(wrapperEl,'noSchemas');}
this.initInfoBox();this._initAddNewStream();if(!schema||!this.schemas[schema]){schema=data.schemaid;stream=null;}
if(schema){this.showSchema(schema,stream);}
if(this.readOnly===true){var details=dfx.getId(this.id+'-details-wrapper');dfx.addClass(details,'readOnly');}
this.ready();if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){var wrapper=dfx.getId(this.id+'-infobox');dfx.insertAfter(wrapper,el);},function(){});}},_initAddNewStream:function()
{var button=WidgetStore.get(this.id+'-details-streamsSection-Button-AddNew');if(button){var self=this;button.setReadOnly(this.readOnly);button.addClickEvent(function(){self.addNewStream(self.currentSchema);},true);}},addNewStream:function(schemaid)
{this.isModified=true;this.setModified(true);var id=dfx.getUniqueId();var parentCont=dfx.getId(this.id+'-details-streams');var c=this.getClass()+'-streamList';var streamsCont=dfx.getClass('schema-'+schemaid,parentCont)[0];if(streamsCont){var firstStream=false;if(this.schemas[schemaid]){if(!this.schemas[schemaid].streams||this.schemas[schemaid].streams.length===0){this.schemas[schemaid].streams={};firstStream=true;}
this.schemas[schemaid].streams[id]={flow:'sequential',name:''};}
var self=this;this._createStreamField(id,schemaid,'',firstStream,function(el){streamsCont.appendChild(el);});}},showStream:function(schemaid,streamid)
{var self=this;var c=this.getClass();var elem=dfx.getId(this.id+'-details-wrapper');dfx.addClass(elem,'hidden');var wrapper=dfx.getId(this.id+'-streamsWrapper');if(!wrapper){this._initStreamsWrapper(function(){self.showStream(schemaid,streamid);});return;}
if(!this.schemas[schemaid].streams[streamid].steps){var params={screen:this.id+'Widget',process:'getTasks',schemaid:schemaid,streamid:streamid};this.parent.getScreenData(params,function(data){self.schemas[schemaid].streams[streamid].steps={};self._showStream(schemaid,streamid);if(data){data=dfx.jsonDecode(data);self._processNewStepData(schemaid,streamid,data);}});}else if(!dfx.getId(this.id+'-streamInfo-'+schemaid+'-'+streamid)){var data=dfx.clone(this.schemas[schemaid].streams[streamid].steps);self._showStream(schemaid,streamid);this._processNewStepData(schemaid,streamid,data);}else{this._showStream(schemaid,streamid);}},_processNewStepData:function(schemaid,streamid,data)
{for(var id in data){if(data.hasOwnProperty(id)===true){var step=data[id];var self=this;this.addNewStep(schemaid,streamid,id,step.name,step.desc,{assignees:step.assignees,removedUsers:step.removedUsers},function(){delete data[id];self._processNewStepData(schemaid,streamid,data);});break;}}},_showStream:function(schemaid,streamid)
{var stepArrayid='steps_'+streamid+'_'+schemaid;var readOnly=false;if(this.schemas[schemaid].streams[streamid].removed===true){readOnly=true;if(!dfx.getId(this.id+'-readOnlyMsg')){wrnOps={id:this.id+'-readOnlyMsg',leftTitle:'Read Only',mainMessage:'This screen is <strong>Read Only</strong> because the stream is <strong>Marked for Deletion</strong>.',colour:'red',buttonTitle:null};this.createScreenWarningMessage(wrnOps,function(el){dfx.insertBefore(dfx.getClass('WorkflowAdminScreenWidgetType-streamInfo-top')[0],el);});}}else{var readOnlyMsg=dfx.getId(this.id+'-readOnlyMsg');if(readOnlyMsg){dfx.remove(readOnlyMsg);}}
if(this.readOnly===true){readOnly=true;}
WidgetStore.get(this.id+'-addNewStepBtn').setReadOnly(readOnly);this._streamInfo.toggle.setReadOnly(readOnly);this.currentStream=streamid;var wrapper=dfx.getId(this.id+'-streamsWrapper');var id=this.id+'-streamInfo-'+schemaid+'-'+streamid;var streamEl=dfx.getId(id);var c=this.getClass()+'-stream-steps';if(!streamEl){streamEl=document.createElement('div');streamEl.id=id;wrapper.appendChild(streamEl);dfx.addClass(streamEl,c);var self=this;jQuery(streamEl).sortable({axis:'y',handle:'div.WorkflowAdminScreenStepWidgetType-step-dragHandle',stop:function(){self.updateFieldNumbers(streamEl);self.setModified(true);},tolerance:'pointer'});}
dfx.removeClass(dfx.getClass(c,wrapper),'active');dfx.addClass(streamEl,'active');var title=this.schemas[schemaid].streams[streamid].name;var flow=this.schemas[schemaid].streams[streamid].flow;dfx.setHtml(this._streamInfo.title,title);if(flow==='sequential'){this._streamInfo.toggle.toggleSlideOn(null,false,false,true);}else{this._streamInfo.toggle.toggleSlideOff(null,false,false,true);}
dfx.removeClass(wrapper,'hidden');this.infobox.setItem('infobox_'+schemaid+'_'+streamid);},_initStreamsWrapper:function(callback)
{var main=document.createElement('div');main.id=this.id+'-streamsWrapper';var c=this.getClass()+'-streamInfo';dfx.addClass(main,c+' hideen');var content='<div class="'+c+'-top">';content+='<div class="'+c+'-top-title"></div>';content+='<div class="'+c+'-top-subtitle">';content+='<span class="'+c+'-top-desc">Steps need to be completed in sequence</span>';content+='<div class="'+c+'-top-toggle"></div>';content+='<div class="'+c+'-top-addNewButton"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var details=dfx.getId(this.id+'-details-wrapper');dfx.insertAfter(details,main);this._streamInfo={title:dfx.getClass(c+'-top-title',main)[0],desc:dfx.getClass(c+'-top-desc',main)[0]};var self=this;this.includeWidgets(['ToggleButton','Button'],function(){var toggle=self.createWidget(null,'ToggleButton',false,'slider',false,'Yes','No');self._streamInfo.toggle=toggle;toggle.create(function(toggleEl){dfx.getClass(c+'-top-toggle',main)[0].appendChild(toggleEl);});toggle.addToggleEvent(function(on){self.setStreamFlow(self.currentSchema,self.currentStream,on);self.setModified(true);});var button=self.createWidget(self.id+'-addNewStepBtn','Button');button.setName('Add New Step');button.create(function(buttonEl){dfx.getClass(c+'-top-addNewButton',main)[0].appendChild(buttonEl);});button.addClickEvent(function(){self.addNewStep(self.currentSchema,self.currentStream);self.isModified=true;self.setModified(true);});callback.call(self);});},addNewStep:function(schemaid,streamid,stepid,stepName,stepDesc,stepUsers,callback)
{var _streamid=this.id+'-streamInfo-'+schemaid+'-'+streamid;var streamEl=dfx.getId(_streamid);var self=this;var readOnly=this.readOnly;if(this.schemas[schemaid].streams[streamid].removed===true){readOnly=true;}
this.includeWidget('WorkflowAdminScreenStep',function(){var step=self.createWidget(null,'WorkflowAdminScreenStep',streamEl,schemaid,_streamid,stepid,stepName,stepDesc,stepUsers);step.setReadOnly(readOnly);if(!self.streamSteps[schemaid]){self.streamSteps[schemaid]={};}
if(!self.streamSteps[schemaid][streamid]){self.streamSteps[schemaid][streamid]={};}
self.streamSteps[schemaid][streamid][step.id]=step;step.create(function(el){streamEl.appendChild(el);jQuery(streamEl).sortable('refresh');if(callback){callback.call(self);}});});},setStreamFlow:function(schemaid,streamid,sequential)
{var flow='sequential';if(!sequential){flow='non-'+flow;}
this.schemas[schemaid].streams[streamid].flow=flow;},showSchema:function(schemaid,streamid)
{if(this._loadAutoSave!==true&&this.schemas[this.currentSchema]){var prevName=WidgetStore.get(this.id+'-details-name').getValue();this.schemas[this.currentSchema].name=prevName;}
this.currentSchema=schemaid;this.currentStream=null;dfx.removeClass(dfx.getId(this.id+'-details-wrapper'),'hidden');dfx.addClass(dfx.getId(this.id+'-streamsWrapper'),'hidden');var parentCont=dfx.getId(this.id+'-details-streams');var c=this.getClass()+'-streamList';var name=this.schemas[schemaid].name;WidgetStore.get(this.id+'-details-name').setValue(name);dfx.removeClass(dfx.getClass(c,parentCont),'active');var streamsCont=dfx.getClass('schema-'+schemaid,parentCont)[0];if(streamsCont){dfx.addClass(streamsCont,'active');}else{var wrapper=document.createElement('div');dfx.addClass(wrapper,c);dfx.addClass(wrapper,'schema-'+schemaid);dfx.addClass(wrapper,'active');parentCont.appendChild(wrapper);var streams=this.schemas[schemaid].streams;for(var idx in streams){if(streams.hasOwnProperty(idx)===false){continue;}
var self=this;this._createStreamField(idx,schemaid,streams[idx].name,false,function(el){wrapper.appendChild(el);if(streamid&&parseInt(streamid)===parseInt(idx)){self.showStream(schemaid,idx);}});}}
var wrapperEl=dfx.getId(this.id+'-details-wrapper');dfx.removeClass(wrapperEl,'noSchemas');if(this.readOnly!==true){var addNewBtn=WidgetStore.get(this.id+'-details-streamsSection-Button-AddNew');if(addNewBtn){if(this._removedSchemas&&this._removedSchemas[schemaid]){addNewBtn.setReadOnly(true);}else{addNewBtn.setReadOnly(false);}}}
this._updateSchemaMarkedForDeletion(schemaid);},_updateSchemaMarkedForDeletion:function(schemaid)
{if(this._removedSchemas&&this._removedSchemas[schemaid]){var self=this;if(!dfx.getId(this.id+'-schemaReadOnlyMsg')){wrnOps={id:this.id+'-schemaReadOnlyMsg',leftTitle:'Read Only',mainMessage:'This schema is <strong>Read Only</strong> because the schema is <strong>Marked for Deletion</strong>.',colour:'red',buttonTitle:null};this.createScreenWarningMessage(wrnOps,function(el){dfx.insertBefore(dfx.getId(self.id+'-details-nameSection'),el);});}}else{var readOnlyMsg=dfx.getId(this.id+'-schemaReadOnlyMsg');if(readOnlyMsg){dfx.remove(readOnlyMsg);}}},_toggleStreamRemoved:function(schemaid,streamid,markAsRemoved)
{if(this._removedSchemas[schemaid]){return;}
this.setModified(true);var self=this;var infoBoxEl=dfx.getId('infobox_'+schemaid+'_'+streamid);var main=this.streamElements[schemaid+'_'+streamid];if(markAsRemoved===true&&dfx.hasClass(main,'removed')===true){return;}else if(markAsRemoved===false&&dfx.hasClass(main,'removed')===false){return;}
dfx.toggleClass(main,'removed');if(dfx.hasClass(main,'removed')===true){self.schemas[schemaid].streams[streamid].removed=true;dfx.addClass(infoBoxEl,'removed');if(self.streamSteps[schemaid]&&self.streamSteps[schemaid][streamid]){for(var stepid in self.streamSteps[schemaid][streamid]){self.streamSteps[schemaid][streamid][stepid].setReadOnly(true);}}}else{self.schemas[schemaid].streams[streamid].removed=false;dfx.removeClass(infoBoxEl,'removed');if(self.streamSteps[schemaid]&&self.streamSteps[schemaid][streamid]){for(var stepid in self.streamSteps[schemaid][streamid]){self.streamSteps[schemaid][streamid][stepid].setReadOnly(false);}}}
if(parseInt(this.currentSchema)===parseInt(schemaid)&&parseInt(this.currentStream)===parseInt(streamid)){this.showStream(schemaid,streamid);}},_createStreamField:function(id,schemaid,streamName,checked,callback)
{streamName=streamName||'';if(parseInt(this.schemas[schemaid].defaultStream)===parseInt(id)){checked=true;}
var c=this.getClass()+'-stream';var main=document.createElement('div');var content='<div class="'+c+'-field"></div>';this.streamElements[schemaid+'_'+id]=main;content+='<div class="'+c+'-check"></div>';content+='<div class="'+c+'-removedOverlay"></div>';content+='<div class="'+c+'-remove" id="'+this.id+'-removeStream-'+schemaid+'-'+id+'"></div>';dfx.addClass(main,c);dfx.setHtml(main,content);main.setAttribute('streamname',streamName);var fieldCont=dfx.getClass(c+'-field',main)[0];var remove=dfx.getClass(c+'-remove',main)[0];var check=dfx.getClass(c+'-check',main)[0];if(this.readOnly===true){if(checked!==true){dfx.setStyle(check,'display','none');}
dfx.setStyle(remove,'display','none');}
var self=this;if(remove){var infoBoxEl=null;dfx.addEvent(remove,'click',function(e){self.setModified(true);self._toggleStreamRemoved(schemaid,id);dfx.stopPropagation(e);dfx.preventDefault(e);if(dfx.hasClass(main,'removed')===true&&dfx.hasClass(main,'checked')===true){var streamElems=main.parentNode.childNodes;var sln=streamElems.length;for(var i=0;i<sln;i++){if(dfx.hasClass(streamElems[i],'removed')===false){dfx.trigger(dfx.getClass(c+'-check',streamElems[i])[0],'click');break;}}}
return false;});}
if(checked===true){dfx.addClass(main,'checked');}
if(check){dfx.addEvent(check,'click',function(){if(self.readOnly===true){return;}
self.setModified(true);dfx.removeClass(dfx.getClass('checked',main.parentNode),'checked');dfx.toggleClass(main,'checked');self.schemas[schemaid].defaultStream=id;});}
this.includeWidget('TextField',function(){var textField=self.createWidget('stream_'+schemaid+'_'+id,'TextField');textField.create(function(el){textField.setReadOnly(self.readOnly);textField.setValue(streamName);textField.addOnChangeEvent(function(newName){self._updateStreamName(id,newName);self.schemas[schemaid].streams[id].name=newName;});fieldCont.appendChild(el);callback.call(self,main);});});var elem=this._createInfoboxStreamItem(schemaid,id,streamName);this.infobox.addChildItem('schemas',schemaid,'infobox_'+schemaid+'_'+id,elem,function(){self.showStream(schemaid,id);});if(remove&&this.schemas[schemaid].streams[id].removed===true){dfx.trigger(remove,'click');}
if(this.currentSchema===schemaid){this.infobox.setItem(schemaid);}},getAutoSaveContents:function()
{this._autoSaving=true;this._getData();this._autoSaving=false;var saveData=dfx.jsonEncode({schemas:this.schemas,currentSchema:this.currentSchema,currentStream:this.currentStream});return saveData;},loadAutoSaveContents:function(content,callback)
{var data=dfx.jsonDecode(content);this._loadAutoSave=true;var self=this;this.reload(function(){self._loadAutoSave=false;},null,null,data);},initInfoBox:function()
{var self=this;this.infobox=WidgetStore.get(this.id+'-infobox');this.infobox.setTitle('Workflow Manager');this.infobox.setUlClassPrefix('Blue');this.infobox.addSection('schemas',null);this.infobox.setSelected(this.currentSchema);var addItem=function(sid,schemaName){var elem=self._createInfoboxSchemaItem(sid,schemaName);self.infobox.addItem('schemas',sid,elem,function(){self.showSchema(sid);});};for(var sid in this.schemas){if(this.schemas.hasOwnProperty(sid)===true){var schema=this.schemas[sid];addItem(sid,schema.name);}}
if(this.readOnly!==true){var self=this;this.infobox.addNewButton(function(value){self.addNewSchema(value);});}},addNewSchema:function(schemaName)
{if(dfx.trim(schemaName).length===0){return;}
this.setModified(true);this.isModified=true;var id='new_'+dfx.getUniqueId();this.schemas[id]={name:schemaName,streams:null};var elem=this._createInfoboxSchemaItem(id,schemaName);var self=this;this.infobox.addItem('schemas',id,elem,function(){self.showSchema(id);});this.showSchema(id);this.infobox.setItem(id);},_createInfoboxSchemaItem:function(schemaid,schemaName)
{var c=this.getClass()+'-infobox-item';var elem=document.createElement('div');var id=this.id+'-infobox-schemaName-'+schemaid;dfx.addClass(elem,c);var content='<div class="'+c+'-icon" style="background-image:url('+this.assetTypeIcon+');"></div>';content+='<div class="'+c+'-name" id="'+id+'">'+schemaName+'</div>';content+='<div class="'+c+'-remove"></div>';dfx.setHtml(elem,content);var self=this;var removeButton=dfx.getClass(c+'-remove',elem)[0];if(this.readOnly===true){dfx.setStyle(removeButton,'display','none');}
if(removeButton){dfx.addEvent(removeButton,'click',function(e){self.setModified(true);if(!self._removedSchemas[schemaid]){WidgetStore.get(self.id+'-details-name').setReadOnly(true);dfx.addClass(removeButton,'removed');dfx.foreach(self.schemas[schemaid].streams,function(streamid){self._toggleStreamRemoved(schemaid,streamid,true);});self._removedSchemas[schemaid]=true;if(self.currentSchema===schemaid||parseInt(self.currentSchema)===parseInt(schemaid)){self._updateSchemaMarkedForDeletion(schemaid);var addNewBtn=WidgetStore.get(self.id+'-details-streamsSection-Button-AddNew');if(addNewBtn){addNewBtn.setReadOnly(true);}}
self._addDeletedLayer(elem.parentNode);}else{WidgetStore.get(self.id+'-details-name').setReadOnly(false);dfx.removeClass(removeButton,'removed');delete self._removedSchemas[schemaid];self._removeDeletedLayer(elem.parentNode);if(self.currentSchema===schemaid||parseInt(self.currentSchema)===parseInt(schemaid)){self._updateSchemaMarkedForDeletion(schemaid);var addNewBtn=WidgetStore.get(self.id+'-details-streamsSection-Button-AddNew');if(addNewBtn){addNewBtn.setReadOnly(false);}}
dfx.foreach(self.schemas[schemaid].streams,function(streamid){self._toggleStreamRemoved(schemaid,streamid,false);});}
dfx.stopPropagation(e);dfx.preventDefault(e);return false;});}
return elem;},_updateStreamName:function(streamid,name)
{var id=this.id+'-infobox-'+streamid;if(!this._cache[id]){var elem=dfx.getId(id);if(elem){elem=dfx.getTag('span',elem)[0];if(elem){this._cache[id]=elem;}else{return;}}}
this.isModified=true;dfx.setHtml(this._cache[id],name);this.setModified(true);},_createInfoboxStreamItem:function(schemaid,streamid,streamName)
{var c=this.getClass()+'-infobox-childItem';var elem=document.createElement('div');elem.id=this.id+'-infobox-'+streamid;dfx.addClass(elem,c);dfx.setHtml(elem,'<span>'+streamName+'</span><div class="remove"></div>');var removeButton=dfx.getClass('remove',elem)[0];if(this.readOnly===true){dfx.setStyle(removeButton,'display','none');}
if(removeButton){var self=this;dfx.addEvent(removeButton,'click',function(e){self._toggleStreamRemoved(schemaid,streamid);dfx.stopPropagation(e);dfx.preventDefault(e);var main=self.streamElements[schemaid+'_'+streamid];var c=self.getClass()+'-stream';if(dfx.hasClass(main,'removed')===true&&dfx.hasClass(main,'checked')===true){var streamElems=main.parentNode.childNodes;var sln=streamElems.length;for(var i=0;i<sln;i++){if(dfx.hasClass(streamElems[i],'removed')===false){dfx.trigger(dfx.getClass(c+'-check',streamElems[i])[0],'click');break;}}}
return false;});}
return elem;},_getData:function()
{var schemaNameWidget=WidgetStore.get(this.id+'-details-name');if(schemaNameWidget){if(this.schemas[this.currentSchema]){this.schemas[this.currentSchema].name=schemaNameWidget.getValue();}}
var modified=false;for(var schemaid in this.schemas){if(this._removedSchemas[schemaid]===true){modified=true;if(this._autoSaving===true){this.schemas[schemaid].isRemoved=true;}else{delete this.schemas[schemaid];continue;}}
if(!this.schemas[schemaid].streams){continue;}
for(var streamid in this.schemas[schemaid].streams){if(this.schemas[schemaid].streams[streamid].removed===true){modified=true;if(this._autoSaving!==true){delete this.schemas[schemaid].streams[streamid];continue;}}
if(this.schemas[schemaid].streams[streamid].steps){var streamEl=dfx.getId(this.id+'-streamInfo-'+schemaid+'-'+streamid);if(streamEl){this.schemas[schemaid].streams[streamid].steps=this._getStepsData(schemaid,streamid,streamEl);}}}}
if(modified===true){this.setModified(true);}},_getStepsData:function(schemaid,streamid,streamEl)
{var stepsData={};var steps=dfx.getClass('WorkflowAdminScreenStepWidgetType-step',streamEl);var sln=steps.length;for(var i=0;i<sln;i++){var stepEl=steps[i];var id=this.id+'-streamInfo-'+schemaid+'-'+streamid+'-'+stepEl.getAttribute('stepid');if(!id||dfx.hasClass(stepEl,'removed')===true){continue;}
var name=WidgetStore.get(id+'-name');var desc=WidgetStore.get(id+'-desc');var usersInfo=this._getStepUserInfos(id,stepEl);var users=usersInfo.users;var removedUsers=usersInfo.removedUsers;stepsData[stepEl.getAttribute('stepid')]={name:name.getValue(),desc:desc.getValue(),assignees:users,removedUsers:removedUsers,order:(i+1)};}
return stepsData;},_getStepUserInfos:function(id,stepEl)
{var usersList={};var removedUsers=[];var c='WorkflowAdminScreenStepUsersWidgetType-userList-item';var users=dfx.getClass(c,stepEl);var ln=users.length;for(var i=0;i<ln;i++){var userEl=users[i];var userid=userEl.getAttribute('userid');if(dfx.hasClass(userEl,'removed')===true){if(this._autoSaving!==true){continue;}else{removedUsers.push(userid);}}
usersList[(userid).toString()]=1;var countel=dfx.getTag('input',userEl)[0];if(countel){var countw=WidgetStore.get(countel.id);if(countw.getValue()>0){usersList[userid]=countw.getValue();}}}
return{users:usersList,removedUsers:removedUsers};},saveScreenSettings:function()
{this._getData();var params={screen:this.id+'Widget',process:'save',data:dfx.jsonEncode(this.schemas)};this.displayDisabledDiv(true);var self=this;this.parent.processScreen(params,function(data){if(data&&!data.errors){self.reload(function(){self.removeDisabledDiv(null,true);},data.newSchemaids,data.newStreamids);}
self.switchOnScreen();},true);},revertScreenSettings:function()
{var widget=WidgetStore.get('AdminScreenModeWidgetType-tab_pane');if(widget){widget.showScreen('workflow',null,true);}},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},switchOffScreen:function(){},reload:function(callback,schemaidMap,streamidMap,data)
{this.infobox.reset();var el=dfx.getId(this.id+'-streamsWrapper');if(el){dfx.remove(el);}
var cont=dfx.getId(this.id+'-details-streams');if(cont){dfx.empty(cont);}
if(schemaidMap&&schemaidMap[this.currentSchema]){this.currentSchema=schemaidMap[this.currentSchema];}
if(streamidMap&&streamidMap[this.currentStream]){this.currentStream=streamidMap[this.currentStream];}
if(data){this.init(data,data.currentSchema,data.currentStream);callback.call(this);}else{var params={screen:this.id+'Widget',process:'getInitData'};var self=this;this.parent.getScreenData(params,function(data){data=dfx.jsonDecode(data);self.init(data,self.currentSchema,self.currentStream);callback.call(self);});}},_addDeletedLayer:function(parent,custClass)
{var c=this.getClass()+'-removedLayer';var el=document.createElement('div');dfx.addClass(el,c);if(custClass){dfx.addClass(el,custClass);}
parent.appendChild(el);return el;},_removeDeletedLayer:function(parent)
{dfx.remove(dfx.getClass(this.getClass()+'-removedLayer',parent));},updateFieldNumbers:function(parent)
{var elems=dfx.getClass('WorkflowAdminScreenStepWidgetType-step-orderNum',parent);var ln=elems.length;for(var i=0;i<ln;i++){dfx.setHtml(elems[i],(i+1)+'.');}},setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);if(readOnly!==true){WidgetStore.get(this.id+'-details-name').setReadOnly(false);var infoboxElem=dfx.getId(this.id+'-infobox_section_schemas');if(infoboxElem){dfx.setStyle(dfx.getClass('remove',infoboxElem,'div'),'display','block');dfx.setStyle(dfx.getClass(this.getClass()+'-infobox-item-remove',infoboxElem,'div'),'display','block');}
var addNewBtn=WidgetStore.get(this.id+'-details-streamsSection-Button-AddNew');if(addNewBtn){addNewBtn.setReadOnly(false);}
if(this.infobox&&this.infobox.hasAddNewButton()===false){var self=this;this.infobox.addNewButton(function(value){self.addNewSchema(value);});}
var checkElems=dfx.getClass(this.getClass()+'-stream-check');if(checkElems){dfx.setStyle(checkElems,'display','block');}
var details=dfx.getId(this.id+'-details-wrapper');if(details){dfx.removeClass(details,'readOnly');}
var removeElems=dfx.getClass(this.getClass()+'-stream-remove');if(removeElems){dfx.setStyle(removeElems,'display','block');}}}};dfx.inherits('WorkflowAdminScreen','AbstractSettingsScreen');function WorkflowEditScreenWidgetType(id,screenid,system,title,parent,assetid,readOnly)
{AbstractSettingsScreenWidgetType.call(this,id,screenid,system,title,parent,assetid,readOnly);this.widgetType='WorkflowEditScreen';this.workflowTypes=null;this.schemas=null;this.assetid=assetid;this._removedSchemas={};this.assetSchemas={};this._listContainers={};this._origAssetSchemas={};var self=this;window.onbeforeunload=function(e){if(self.isModified){return"You have unsaved changes!";}};}
WorkflowEditScreenWidgetType.prototype={setReadOnly:function(readOnly)
{AbstractSettingsScreenWidgetType.prototype.setReadOnly.call(this,readOnly);var appChilds=dfx.getClass(this.widgetType+'WidgetType-listItem-appChild',dfx.getId(this.id+'-main'));dfx.foreach(appChilds,function(idx){if(readOnly===true){dfx.hideElement(appChilds[idx]);}else{dfx.showElement(appChilds[idx]);}
return true;});var rmBtns=dfx.getClass(this.widgetType+'WidgetType-listItem-remove',dfx.getId(this.id+'-main'));dfx.foreach(rmBtns,function(idx){if(readOnly===true){dfx.hideElement(rmBtns[idx]);}else{dfx.showElement(rmBtns[idx]);}
return true;});},init:function(data)
{var self=this;this._origData=dfx.clone(data);this.setModified(false);this.isModified=false;this.workflowTypes=data.workflowTypes;this.schemas=data.schemas;if(data.assetSchemas){this.assetSchemas=data.assetSchemas;this._origAssetSchemas=dfx.clone(this.assetSchemas);}else{this.assetSchemas={};this._origAssetSchemas=dfx.clone(this.assetSchemas);}
this._createListContainers();if(this.readOnly===true){this.displayScreenReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId(self.id+'-main'),el);},function(){});}
this.ready();},_createListContainers:function()
{var parentContainer=dfx.getId(this.id+'-main');dfx.empty(parentContainer);for(var type in this.workflowTypes){var cont=this._createListContainer(type,this.workflowTypes[type]);parentContainer.appendChild(cont);}
var hasSchemas=false;for(var schemaid in this.assetSchemas){hasSchemas=true;this._createListItem(schemaid,this.assetSchemas[schemaid].type);}
if(hasSchemas!==true){this._showNoItemsContainer('publishing.publish');}},_showNoItemsContainer:function(type)
{var el=document.createElement('div');dfx.setHtml(el,'There are no workflow schemas applied');dfx.insertAfter(this._listContainers[type],el);el.id=this.id+'-noSchemas-'+type;dfx.addClass(el,this.getClass()+'-noSchemas');},_hideNoItemsContainer:function(type)
{var id=this.id+'-noSchemas-'+type;var el=dfx.getId(id);if(el){dfx.remove(el);}},_createListContainer:function(type,title)
{var c=this.getClass()+'-typeContainer';var main=document.createElement('div');dfx.addClass(main,c);var contents='<div class="'+c+'-title">Workflow Schemas For '+title+'</div>';contents+='<div class="'+c+'-list">';contents+='<div class="'+c+'-list-header">';contents+='<div class="'+c+'-list-header-title">Current Schemas</div>';contents+='<div class="'+c+'-list-header-addSchema"></div></div>';contents+='<div class="'+c+'-list-items"></div></div>';dfx.setHtml(main,contents);var buttonCont=dfx.getClass(c+'-list-header-addSchema',main)[0];var listItemsCont=dfx.getClass(c+'-list-items',main)[0];this._listContainers[type]=listItemsCont;var self=this;this.includeWidget('Button',function(){var button=self.createWidget(self.id+'-addSchema','Button');button.setName('Add Schema');button.create(function(el){buttonCont.appendChild(el);});button.addClickEvent(function(){self._hideNoItemsContainer('publishing.publish');self._createListItem(null,type,true);self.isModified=true;self.setModified(true);});button.setReadOnly(self.readOnly);});return main;},_getCascadeClass:function(schemaid)
{var schema=this.assetSchemas[schemaid];var str='';if(schema.assetid!=='new'&&!schema.owner){str+='inherit';}else{str+='stop';}
return str;},_addIndicatorClass:function(icon)
{dfx.removeClass(icon,'inherit-continue');dfx.removeClass(icon,'inherit-stop');dfx.removeClass(icon,'stop-continue');dfx.removeClass(icon,'stop-stop');if(dfx.hasClass(icon,'inherit')===true){if(dfx.hasClass(icon,'checked')===true){dfx.addClass(icon,'inherit-continue');}else{dfx.addClass(icon,'inherit-stop');}}else{if(dfx.hasClass(icon,'checked')===true){dfx.addClass(icon,'stop-continue');}else{dfx.addClass(icon,'stop-stop');}}},_createListItem:function(schemaid,schemaType,cascade)
{var c=this.getClass()+'-listItem';var main=document.createElement('div');dfx.addClass(main,c);schemaid=schemaid||'new_'+dfx.getUniqueId();var title='';var self=this;if(!self.assetSchemas[schemaid]){self.assetSchemas[schemaid]={cascade:cascade,type:schemaType,assetid:'new',stop_point:false};}else if(this.schemas[schemaid]){title='<span ';if(this.assetSchemas[schemaid].owner!==true){title+='title="Inherit from #'+this.assetSchemas[schemaid].assetid+'"';}
title+='>'+this.schemas[schemaid]+'</span>';}
var contents='<div class="'+c+'-cascIcon"></div>';contents+='<div class="'+c+'-title"></div>';contents+='<div class="'+c+'-appChild-text">Applies to Children</div>';contents+='<div class="'+c+'-appChild"></div>';contents+='<div class="'+c+'-remove"></div>';dfx.setHtml(main,contents);var titleCont=dfx.getClass(c+'-title',main)[0];var icon=dfx.getClass(c+'-cascIcon',main)[0];dfx.addClass(icon,this._getCascadeClass(schemaid));if(title){dfx.setHtml(titleCont,title);}else{dfx.addClass(main,'newWorkflow');this.includeWidget('Select',function(){var select=self.createWidget(null,'Select');var items={0:'---'};for(var id in self.schemas){items[id]=self.schemas[id];}
select.addItems(items);select.setSelectedEventValueType('value');select.create(function(el){if(self.assetSchemas[schemaid].schemaid){select.setValue(self.assetSchemas[schemaid].schemaid,true);}
select.addItemSelectedEvent(function(selectedid){self.assetSchemas[schemaid].schemaid=selectedid;});titleCont.appendChild(el);});});}
var remove=dfx.getClass(c+'-remove',main)[0];dfx.addEvent(remove,'click',function(){dfx.toggleClass(remove,'removed');if(dfx.hasClass(remove,'removed')===true){self._addDeletedLayer(main);self.assetSchemas[schemaid].stop_point=true;}else{self._removeDeletedLayer(main);self.assetSchemas[schemaid].stop_point=false;}
self.isModified=true;self.setModified(true);});if(this.readOnly===true){dfx.hideElement(remove);}else{dfx.showElement(remove);}
if(self.assetSchemas[schemaid].stop_point===true){dfx.trigger(remove,'click');}
var check=dfx.getClass(c+'-appChild',main)[0];dfx.addEvent(check,'click',function(){dfx.toggleClass(check,'checked');if(dfx.hasClass(check,'checked')===true){self.assetSchemas[schemaid].cascade=true;dfx.addClass(icon,'checked');self._addIndicatorClass(icon);}else{self.assetSchemas[schemaid].cascade=false;dfx.removeClass(icon,'checked');self._addIndicatorClass(icon);}
self.isModified=true;self.setModified(true);});if(this.readOnly===true){dfx.hideElement(check);}else{dfx.showElement(check);}
if(this.assetSchemas[schemaid].cascade===true){dfx.addClass([icon,check],'checked');}
this._addIndicatorClass(icon);if(this._listContainers[schemaType]){this._listContainers[schemaType].appendChild(main);}},switchOnScreen:function()
{var self=this;if(this.readOnly===true){this.disableSaveButton();}else{this.setSaveButton(function(){self.saveScreenSettings();},function(){self.revertScreenSettings();});}},switchOffScreen:function(){},saveScreenSettings:function()
{this.displayDisabledDiv(true);var data=this.assetSchemas;for(var schemaid in this.assetSchemas){if(this._origAssetSchemas[schemaid]){if(parseInt(this._origAssetSchemas[schemaid].assetid)!==parseInt(this.assetid)){if(this._origAssetSchemas[schemaid].stop_point===this.assetSchemas[schemaid].stop_point&&this._origAssetSchemas[schemaid].cascade===this.assetSchemas[schemaid].cascade){delete this.assetSchemas[schemaid];}}}}
var params={screen:this.id+'Widget',process:'save',data:dfx.jsonEncode(data),assetid:this.assetid};var self=this;this.parent.processScreen(params,function(data){if(data){self.init(data);}},true);this.switchOnScreen();},revertScreenSettings:function()
{this.init(this._origData);},_addDeletedLayer:function(parent,custClass)
{var c=this.getClass()+'-removedLayer';var el=document.createElement('div');dfx.addClass(el,c);if(custClass){dfx.addClass(el,custClass);}
parent.appendChild(el);return el;},_removeDeletedLayer:function(parent)
{dfx.remove(dfx.getClass(this.getClass()+'-removedLayer',parent));},getAutoSaveContents:function()
{var data=dfx.clone(this.assetSchemas);return data;},loadAutoSaveContents:function(content,callback)
{this.assetSchemas=content;this._createListContainers();}};dfx.inherits('WorkflowEditScreen','AbstractSettingsScreen');function FileAssetEditContentsWidgetType(id,assetid,extraAttrs,hasPerm)
{AssetAssetEditContentsWidgetType.call(this,id,assetid,extraAttrs,hasPerm);dfx.addClass(document.body,'FileAssetEditContentsWidgetType-body');this.assetid=assetid;this.widgetType='FileAssetEditContents';this.form=null;this.formWidget=null;this.currentMode=WidgetStore.get('EditingModeSwitcher').currentMode;this.progressBar=null;this.fileSubmit=false;this.progressBarElem=null;}
FileAssetEditContentsWidgetType.prototype={init:function()
{if(this.currentMode==='EditEditingMode'){var self=this;var widget=WidgetStore.get(this.id+'-uploadFileInput');this.formWidget=widget;var form=dfx.getId(this.id+'-uploadFileForm');this.form=form;if(dfx.isset(widget)===true){var qs='?widget='+this.widgetType+'WidgetType&action=updateFile&a='+this.assetid;form.setAttribute('action',Widget.EDIT_URL+qs);widget.setForm(form);}
this.includeWidget('ProgressBar',function(){self.progressBar=self.createWidget(self.id+'-pb','ProgressBar');self.progressBar.setNoDeleteBtn(true);self.progressBar.create(function(elem){self.progressBarElem=document.createElement('div');self.progressBarElem.appendChild(elem);dfx.addClass(self.progressBarElem,self.getClass()+'-progressBar');});self.progressBar.setReadOnly(self.readOnly);var fileInput=dfx.getId(self.id+'-uploadFileInput');var nameField=WidgetStore.get(self.id+'-name');if(fileInput){dfx.addEvent(fileInput,'change',function(){self.setModified(true);});}
if(nameField){nameField.setReadOnly(self.readOnly);nameField.addOnChangeEvent(function(){self.setModified(true);});}
dfx.foreach(self.extraAttrs,function(idx){var wdgt=WidgetStore.get(self.id+'-'+self.extraAttrs[idx]);if(wdgt){wdgt.setReadOnly(self.readOnly);(function(extraAttrWdgt){extraAttrWdgt.addOnChangeEvent(function(){self.setModified(true);});})(wdgt);}
return true;});self.setSaveButton(function(){self.save();},function(){var params={widget:'FileAssetEditContentsWidgetType',action:'getFileInfo',assetid:self.assetid,extraAttrs:dfx.jsonEncode(self.extraAttrs)};dfx.post(window.location.href,params,function(data){var fileInfo=dfx.jsonDecode(data);WidgetStore.get(self.id+'-name').setValue(fileInfo.name);dfx.foreach(self.extraAttrs,function(idx){WidgetStore.get(self.id+'-'+self.extraAttrs[idx]).setValue(fileInfo[self.extraAttrs[idx]]);return true;});self._refreshFileUploadInput();self.removeDisabledDiv();});});self.removeDisabledDiv();});}else{var button=WidgetStore.get(this.id+'_dl');this.addDownloadButtonClickEvent(button);}},setScreenLock:function()
{var self=this;var upload=dfx.getClass('FileAssetEditContentsWidgetType-uploadField')[0];if(upload){dfx.hideElement(upload);}
WidgetStore.get(this.id+'-name').disable();dfx.foreach(self.extraAttrs,function(idx){WidgetStore.get(self.id+'-'+self.extraAttrs[idx]).disable();return true;});this.displayAssetEditReadOnlyWarning(function(el){dfx.insertBefore(dfx.getClass('FileAssetEditContentsWidgetType-Wrapper')[0],el);},function(){self._forceEdit();});},_forceEdit:function()
{var self=this;var upload=dfx.getClass('FileAssetEditContentsWidgetType-uploadField')[0];if(upload){dfx.showElement(upload);}
WidgetStore.get(this.id+'-name').enable();dfx.foreach(self.extraAttrs,function(idx){WidgetStore.get(self.id+'-'+self.extraAttrs[idx]).enable();return true;});},_refreshFileUploadInput:function()
{var self=this;var newUpload=document.createElement('input');newUpload.id=this.id+'-uploadFileInput';newUpload.type='file';newUpload.name='file';if(dfx.getId(this.id+'-uploadFileInput')!==null){dfx.remove(dfx.getId(this.id+'-uploadFileInput'));var uploadBox=dfx.getId(this.id+'-uploadBox');var uploadField=dfx.getClass('FileAssetEditContentsWidgetType-uploadField',uploadBox)[0];uploadField.appendChild(newUpload);dfx.addEvent(newUpload,'change',function(){self.setModified(true);});}
this.removeDisabledDiv();},save:function()
{var self=this;this.displayDisabledDiv(true);if(dfx.getId(this.id+'-uploadFileInput')===null||(dfx.getId(this.id+'-uploadFileInput')!==null&&dfx.getId(this.id+'-uploadFileInput').value.length===0)){this.form.submit();setTimeout(function(){self._refreshFileUploadInput();},1000);}else{dfx.getId('_disabledDiv').appendChild(this.progressBarElem);this.fileSubmit=true;this.progressBar.reset();this.progressBar.show();this.progressBar.updateProgress(0);this.progressBar.updateLabel('File upload in progress...');this.form.submit();var widget=this.formWidget;var completed=false;var pt=setInterval(function(){widget.checkProgress(function(progress){if(progress>=100){completed=true;self.progressBar.updateProgress(100,function(){self.progressBar.hide();var iframe=dfx.getId(self.id+'-uploadFileInput-iframe');var result=dfx.getHtml(dfx.getIframeDocument(iframe).body);var msg='Saved';if(result==='success'){self.progressBar.updateLabel(msg);self._showSaveSuccess();setTimeout(function(){self.fileSubmit=false;self._refreshFileUploadInput();dfx.remove(dfx.getId('__saveLayer'));self.removeDisabledDiv();dfx.remove(self.progressBarElem);},1000);}else{self._showSaveFailed({errors:['File upload failed.']},function(){self._refreshFileUploadInput();dfx.remove(dfx.getId('__saveLayer'));self.removeDisabledDiv();dfx.remove(self.progressBarElem);});}
clearTimeout(pt);});}else{if(completed===false){self.progressBar.updateProgress(Math.floor(progress));}}});},1000);}},addDownloadButtonClickEvent:function(button)
{if(button){var self=this;button.addClickEvent(function(){self.downloadFileVersion();});}},downloadFileVersion:function()
{window.location.href=this.url+'?widget='+this.widgetType+'WidgetType&action=dlf&a='+escape(this.assetid);}};dfx.inherits('FileAssetEditContents','AssetAssetEditContents');function FileConnectionAssetEditContentsWidgetType(id,assetid,extraAttrs)
{AssetAssetEditContentsWidgetType.call(this,id,assetid,extraAttrs);dfx.addClass(document.body,'FileConnectionAssetEditContentsWidgetType-body');this.assetid=assetid;this.widgetType='FileConnectionAssetEditContents';this.currentMode=WidgetStore.get('EditingModeSwitcher').currentMode;this.nameField=WidgetStore.get(this.id+'-name');this.pathField=WidgetStore.get(this.id+'-path');this.filterField=WidgetStore.get(this.id+'-filter');this.oriValues={};}
FileConnectionAssetEditContentsWidgetType.prototype={init:function()
{if(this.currentMode==='EditEditingMode'){var self=this;this.oriValues[this.id+'-name']=this.nameField.getValue();this.oriValues[this.id+'-path']=this.pathField.getValue();this.oriValues[this.id+'-filter']=this.filterField.getValue();this.addFieldsEvent();this.setSaveButton(function(){self.save();},function(){self.revert();});this.ready();}},addFieldsEvent:function()
{var self=this;this.nameField.addOnChangeEvent(function(){var currVal=self.nameField.getValue();if(currVal===self.oriValues[self.id+'-name']){self.disableSaveButton();}else{self.enableSaveButton();}});this.pathField.addOnChangeEvent(function(){var currVal=self.pathField.getValue();if(currVal===self.oriValues[self.id+'-path']){self.disableSaveButton();}else{self.enableSaveButton();}});this.filterField.addItemSelectedEvent(function(){var currVal=self.filterField.getValue();if(currVal===self.oriValues[self.id+'-filter']){self.disableSaveButton();}else{self.enableSaveButton();}});},save:function()
{var self=this;var params={widget:'FileConnectionAssetEditContentsWidgetType',action:'processWidget',assetid:this.assetid,op:'saveAsset',name:this.nameField.getValue(),path:this.pathField.getValue(),filter:this.filterField.getValue()};this.displayDisabledDiv(true);dfx.post(window.location.href,params,function(data){self.removeDisabledDiv();});},revert:function()
{this.displayDisabledDiv(true);var params={attributes:['name','path','filter'],type:false,typeIcon:false,linking:[],urls:false};var self=this;AssetManager.getAsset(this.assetid,function(asset){self.nameField.setValue(asset.name);self.pathField.setValue(asset.attributes.path);self.filterField.setValue(asset.attributes.filter,true);self.disableSaveButton();self.removeDisabledDiv();},false,params);},setScreenLock:function()
{this.nameField.disable();this.pathField.disable();this.filterField.disable();var self=this;this.displayAssetEditReadOnlyWarning(function(el){dfx.insertBefore(dfx.getClass('AssetAssetEditContentsWidgetType-outerBox')[0],el);},function(){self._forceEdit();});},_forceEdit:function()
{this.nameField.enable();this.pathField.enable();this.filterField.enable();}};dfx.inherits('FileConnectionAssetEditContents','AssetAssetEditContents');function LdapConnectionAssetEditContentsWidgetType(id,assetid,extraAttrs)
{AssetAssetEditContentsWidgetType.call(this,id,assetid,extraAttrs);dfx.addClass(document.body,'LdapConnectionAssetEditContentsWidgetType-body');this.assetid=assetid;this.widgetType='LdapConnectionAssetEditContents';this.currentMode=WidgetStore.get('EditingModeSwitcher').currentMode;this.oriValues={};this.widgetids=['name','hostname','port','basedn','binddn','password','authDN','authFilter','usernameMapTo','nameMapTo','firstNameMapTo','lastNameMapTo','emailMapTo','groupName','groupMembership','groupMember','uniqueUserAttr','uniqueUserGroupAttr'];}
LdapConnectionAssetEditContentsWidgetType.prototype={init:function()
{if(this.currentMode==='EditEditingMode'){var self=this;var outerBox=dfx.getClass('AssetAssetEditContentsWidgetType-outerBox',dfx.getId('EditingAsset'))[0];this.addFieldsEvent();dfx.foreach(this.widgetids,function(idx){var widgetid=self.id+'-'+self.widgetids[idx];var val=WidgetStore.get(widgetid).getValue();self.oriValues[widgetid]=val;return true;});this.setSaveButton(function(){self.save();},function(){self.revert();});this.ready();}},addFieldsEvent:function()
{var self=this;dfx.foreach(this.widgetids,function(idx){var widgetid=self.id+'-'+self.widgetids[idx];var widget=WidgetStore.get(widgetid);if(widgetid===(self.id+'-password')){widget.addPasswordTypedEvents(function(){var currVal=widget.getValue();if(currVal!==self.oriValues[widgetid]){self.enableSaveButton();}else{self.disableSaveButton();}});}else{widget.addOnChangeEvent(function(){var currVal=widget.getValue();if(currVal!==self.oriValues[widgetid]){self.enableSaveButton();}else{self.disableSaveButton();}});}
return true;});},save:function()
{var self=this;var params={widget:'LdapConnectionAssetEditContentsWidgetType',action:'processWidget',assetid:this.assetid,op:'saveAsset'};dfx.foreach(this.widgetids,function(idx){var widgetid=self.id+'-'+self.widgetids[idx];var val=WidgetStore.get(widgetid).getValue();params[self.widgetids[idx]]=val;return true;});this.displayDisabledDiv(true);dfx.post(window.location.href,params,function(data){WidgetStore.get(self.id+'-password').clearValue();self.removeDisabledDiv();});},revert:function()
{var self=this;var params={widget:'LdapConnectionAssetEditContentsWidgetType',action:'processWidget',assetid:this.assetid,op:'revertAsset'};this.displayDisabledDiv(true);dfx.post(window.location.href,params,function(data){dfx.foreach(this.widgetids,function(idx){var widgetid=self.id+'-'+self.widgetids[idx];WidgetStore.set(widgetid).setValue(data[self.widgetids[idx]]);return true;});self.disableSaveButton();self.removeDisabledDiv();});},setScreenLock:function()
{dfx.foreach(this.widgetids,function(idx){var widgetid=self.id+'-'+self.widgetids[idx];var widget=WidgetStore.set(widgetid);widget.disable();return true;});var self=this;this.displayAssetEditReadOnlyWarning(function(el){dfx.insertBefore(dfx.getClass('AssetAssetEditContentsWidgetType-outerBox')[0],el);},function(){self._forceEdit();});},_forceEdit:function()
{dfx.foreach(this.widgetids,function(idx){var widgetid=self.id+'-'+self.widgetids[idx];var widget=WidgetStore.set(widgetid);widget.enable();return true;});}};dfx.inherits('LdapConnectionAssetEditContents','AssetAssetEditContents');function MySourceMatrixConnectionAssetEditContentsWidgetType(id,assetid,extraAttrs)
{AssetAssetEditContentsWidgetType.call(this,id,assetid,extraAttrs);dfx.addClass(document.body,'MySourceMatrixConnectionAssetEditContentsWidgetType-body');this.assetid=assetid;this.widgetType='MySourceMatrixConnectionAssetEditContents';this.currentMode=WidgetStore.get('EditingModeSwitcher').currentMode;this.nameField=WidgetStore.get(this.id+'-name');this.soapUrl=WidgetStore.get(this.id+'-soap_url');this.rootAssetId=WidgetStore.get(this.id+'-root_assetid');this.usernameField=WidgetStore.get(this.id+'-username');this.passwordField=WidgetStore.get(this.id+'-password');}
MySourceMatrixConnectionAssetEditContentsWidgetType.prototype={init:function()
{if(this.currentMode==='EditEditingMode'){var self=this;this.addFieldsEvent();this.setSaveButton(function(){self.save();},function(){self.revert();});this.ready();}},addFieldsEvent:function()
{var self=this;this.nameField.addOnChangeEvent(function(){self.enableSaveButton();});this.soapUrl.addOnChangeEvent(function(){self.enableSaveButton();});this.rootAssetId.addOnChangeEvent(function(){self.enableSaveButton();});this.usernameField.addOnChangeEvent(function(){self.enableSaveButton();});this.passwordField.addPasswordTypedEvents(function(){self.enableSaveButton();});},save:function()
{var self=this;var params={widget:'MySourceMatrixConnectionAssetEditContentsWidgetType',action:'processWidget',assetid:this.assetid,op:'saveAsset',name:this.nameField.getValue(),soap_url:this.soapUrl.getValue(),root_assetid:this.rootAssetId.getValue(),username:this.usernameField.getValue(),password:this.passwordField.getValue()};this.displayDisabledDiv(true);dfx.post(window.location.href,params,function(data){if(data==='success'){self._showSaveSuccess();self.removeDisabledDiv(null,true);}else{self._showSaveFailed({errors:['File to save.']},function(){dfx.remove(dfx.getId('__saveLayer'));self.removeDisabledDiv();self.setModified(true);});}});},revert:function()
{this.displayDisabledDiv(true);var params={attributes:['name','soap_url','root_assetid'],type:false,typeIcon:false,linking:[],urls:false};var self=this;AssetManager.getAsset(this.assetid,function(asset){self.nameField.setValue(asset.name);self.soapUrl.setValue(asset.attributes.soap_url);self.rootAssetId.setValue(asset.attributes.root_assetid,true);self.disableSaveButton();self.removeDisabledDiv();},false,params);},setScreenLock:function()
{this.nameField.disable();this.soapUrl.disable();this.rootAssetId.disable();var self=this;this.displayAssetEditReadOnlyWarning(function(el){dfx.insertBefore(dfx.getClass('AssetAssetEditContentsWidgetType-outerBox')[0],el);},function(){self._forceEdit();});},_forceEdit:function()
{this.nameField.enable();this.soapUrl.enable();this.rootAssetId.enable();}};dfx.inherits('MySourceMatrixConnectionAssetEditContents','AssetAssetEditContents');function UserGroupAssetEditContentsWidgetType(id,assetid,assetInfo,readOnly)
{this.assetInfo=assetInfo;this.assetType='userGroup';this.assetid=assetid;this.modeType=WidgetStore.get('EditingModeSwitcher').currentMode;AssetAssetEditContentsWidgetType.call(this,id,assetid);dfx.addClass(document.body,'UserGroupAssetEditContentsWidgetType-body');this.readOnly=readOnly||false;}
UserGroupAssetEditContentsWidgetType.prototype={init:function()
{var self=this;this.createBox(function(){if(self.modeType==='EditEditingMode'){self.setSaveButton(function(){self.save();},function(){self.revert();});self.setReadOnly(self.readOnly);self.removeDisabledDiv();}});},setReadOnly:function(readOnly)
{AbstractContainerWidgetType.prototype.setReadOnly.call(this,readOnly);WidgetStore.get(this.id+'-name').setReadOnly(readOnly);WidgetStore.get(this.id+'-email').setReadOnly(readOnly);},setScreenLock:function()
{var self=this;this.displayAssetEditReadOnlyWarning(function(el){dfx.insertBefore(dfx.getId(self.id),el);},function(){self.forceEdit();});},createBox:function(callback)
{var c='UserGroupAssetEditContentsWidgetType';var container=document.createElement('div');dfx.setStyle(container,'padding','10px');var self=this;var top=document.createElement('div');var content='<div class="'+c+'-top-left userGroup">';content+='<div class="'+c+'-top-left-row name"> </div>';content+='<div class="'+c+'-top-left-row email"> </div>';content+='</div>';dfx.addClass(top,c+'-top');dfx.setHtml(top,content);container.appendChild(top);var name=dfx.getClass('name',top)[0];var email=dfx.getClass('email',top)[0];if(this.modeType==='PreviewEditingMode'){dfx.setHtml(name,this.assetInfo.name);dfx.setHtml(email,this.assetInfo.email);if(callback){var elem=dfx.getId(self.id);elem.appendChild(container);callback.call(self);}}else if(this.modeType==='EditEditingMode'){this.includeWidgets(['TextField'],function(){var titleBox=self.createWidget(self.id+'-name','TextField');var emailBox=self.createWidget(self.id+'-email','TextField');titleBox.setValue(self.assetInfo.name);emailBox.setValue(self.assetInfo.email);titleBox.create(function(nel){emailBox.create(function(eel){var nLabel=document.createElement('label');dfx.addClass(nLabel,c+'-name-label');dfx.setHtml(nLabel,'Name');nLabel.setAttribute('for',self.id+'-name');var eLabel=document.createElement('label');dfx.addClass(eLabel,c+'-email-label');dfx.setHtml(eLabel,'Email');eLabel.setAttribute('for',self.id+'-name');name.appendChild(nLabel);name.appendChild(nel);email.appendChild(eLabel);email.appendChild(eel);titleBox.addOnChangeEvent(function(){if(titleBox.getValue()!==self.assetInfo.name){self.setModified(true);}else{self.setModified(false);}});emailBox.addOnChangeEvent(function(){if(emailBox.getValue()!==self.assetInfo.email){self.setModified(true);}else{self.setModified(false);}});if(callback){var elem=dfx.getId(self.id);elem.appendChild(container);callback.call(self);}});});});}},save:function()
{var params={widget:'UserGroupAssetEditContentsWidgetType',action:'save',assetid:this.assetid,name:WidgetStore.get(this.id+'-name').getValue(),email:WidgetStore.get(this.id+'-email').getValue()};var self=this;this.displayDisabledDiv(true);this.request(params,function(data){self.assetInfo.name=params.name;self.removeDisabledDiv();});},revert:function()
{var titleBox=WidgetStore.get(this.id+'-name');titleBox.setValue(this.assetInfo.name);var emailBox=WidgetStore.get(this.id+'-email');emailBox.setValue(this.assetInfo.email);this.removeDisabledDiv();}};dfx.inherits('UserGroupAssetEditContents','AssetAssetEditContents');function AccountManagerEditWidgetType(id,assetid,settings,formats,config,groups)
{AssetEditWidgetType.call(this,id,assetid);this.widgetType='AccountManagerEdit';this.settings=settings;this.config=config;this.unsavedConfig=dfx.clone(this.config);this.groups=groups;this.deletedGroups={};this.editor=null;this.formats=formats;this.initFormats=formats;this.currentFormat='not_logged_in';this.controls=WidgetStore.get(this.id+'-controls');}
AccountManagerEditWidgetType.prototype={init:function(data)
{var self=this;this.printCreateLocs();this.setModified(false);var buttonid=this.id+'-section:create_loc:-Button-AddNew';var createLocButton=WidgetStore.get(buttonid);if(dfx.isset(createLocButton)===true){createLocButton.addClickEvent(function(){self.setModified(true);for(var uid in self.groups){if(self.unsavedConfig.createLoc.find(uid)===-1){var len=self.unsavedConfig.createLoc.length;var list=WidgetStore.get(self.id+'-createLoc-list');self.unsavedConfig.createLoc.push(uid);self.createUserGroupSelect(uid,len,list);break;}}});}
this.controls.createState.addToggleEvent(function(){self.setModified(true);});this.controls.verifyEmail.addToggleEvent(function(){self.setModified(true);});this._setupWYSIWYG();this.setSaveButton(function(){self.saveSettings();},function(){self.revert();});},revert:function()
{this.displayDisabledDiv(true);this.deletedGroups={};this.unsavedConfig=dfx.clone(this.config);this.refreshGroupList();var createState=this.controls.createState;var verifyEmail=this.controls.verifyEmail;createState.setValue(this.config.createState);verifyEmail.setValue(this.config.verifyEmail);this.formats=dfx.clone(this.initFormats);this.editor.setContents(this.formats[this.currentFormat]);var self=this;setTimeout(function(){self.refreshAccountManager();self.removeDisabledDiv();},500);},refreshAccountManager:function()
{var self=this;this.setModified(false);this.request({action:'getAssetContent'},function(data){var am=dfx.getId('accountManager-'+self.assetid);if(dfx.isset(am)===true){dfx.setHtml(am,data);}});},printCreateLocs:function()
{var list=WidgetStore.get(this.id+'-createLoc-list');var len=this.unsavedConfig.createLoc.length;for(var i=0;i<len;i++){this.createUserGroupSelect(this.unsavedConfig.createLoc[i],i,list);}},createUserGroupSelect:function(uid,i,parent)
{var groupsCount=0;for(var key in this.groups){groupsCount++;}
if(this.unsavedConfig.createLoc.length>=groupsCount){var buttonid=this.id+'-section:create_loc:-Button-AddNew';var createLocButton=WidgetStore.get(buttonid);createLocButton.disable();}
var self=this;this.includeWidget('UserGroupSelect',function(){var select=self.createWidget(self.id+'-createLoc-'+i,'UserGroupSelect',self.groups,[uid]);select.create(function(el){dfx.addClass(el,'UserGroupSelect');var del=document.createElement('span');dfx.addClass(del,'delete');dfx.addEvent(del,'click',function(){self.setModified(true);self.deleteGroup(i,uid);});parent.addItem(i,[el,del]);select.addItemSelectedEvent(function(){self.setModified(true);self.unsavedConfig.createLoc[i]=this.getValue();});});});},deleteGroup:function(index,uid)
{var list=WidgetStore.get(this.id+'-createLoc-list');var item=list.getItemElement(index);var select=WidgetStore.get(this.id+'-createLoc-'+index);if(this.deletedGroups.hasOwnProperty(uid)===true){dfx.removeClass(item,'recover');delete this.deletedGroups[uid];select.enable();}else{var count=0;for(var id in this.deletedGroups){count++;}
var len=(this.unsavedConfig.createLoc.length-1);if(len===count){var msg='You cannot delete this create location. At least one create location needs to be selected in order for the account manager to work.';this._showIntervention(uid,item,msg,null,'OK',90,320);return;}
select.disable();dfx.addClass(item,'recover');this.deletedGroups[uid]=1;}},_showIntervention:function(id,target,msg,ok,cancel,height,width)
{var self=this;this._hideIntervention(id);this.includeWidget('Intervention',function(){var pop=self.createWidget('amIntervention-'+id,'Intervention');pop.confirmText=ok;pop.cancelText=cancel;pop.create(function(){pop.setSize(width,height);pop.setMessage(msg);pop.show(target);});});},_hideIntervention:function(id)
{var ok=dfx.getId('amIntervention-'+id+'-cancelButton');if(ok){dfx.trigger(ok,'click');}},saveFormat:function()
{var editElem=dfx.getId(this.id+'-formContentsContainer');if(editElem){this.formats[this.currentFormat]=this.editor.getContents();}
var self=this;var params={action:'saveFormat',not_logged_in:this.formats.not_logged_in,logged_in:this.formats.logged_in,created:this.formats.created,validated:this.formats.validated};this.request(params,function(){self.initFormats=dfx.clone(self.formats);self.refreshAccountManager();self.removeDisabledDiv();});},saveSettings:function()
{var self=this;var createState=this.controls.createState.getValue();var verifyEmail=this.controls.verifyEmail.getValue();var params={action:'saveDetails',createLoc:dfx.jsonEncode(this.unsavedConfig.createLoc),deletedLoc:dfx.jsonEncode(this.deletedGroups),createState:dfx.jsonEncode(createState),verifyEmail:dfx.jsonEncode(verifyEmail)};this.displayDisabledDiv(true);this.request(params,function(){self.refreshGroupList();self.config=dfx.clone(self.unsavedConfig);self.config.createState=createState;self.config.verifyEmail=verifyEmail;self.deletedGroups={};self.saveFormat();self.setModified(false);});},refreshGroupList:function()
{var list=WidgetStore.get(this.id+'-createLoc-list');list.clearItems();for(var uid in this.deletedGroups){var index=this.unsavedConfig.createLoc.find(uid);if(index>=0){this.unsavedConfig.createLoc.splice(index,1);}}
this.deletedGroups={};this.printCreateLocs();var groupsCount=0;for(var key in this.groups){groupsCount++;}
if(this.unsavedConfig.createLoc.length<groupsCount){var buttonid=this.id+'-section:create_loc:-Button-AddNew';var createLocButton=WidgetStore.get(buttonid);createLocButton.enable();}},_setupWYSIWYG:function()
{var self=this;var table=WidgetStore.get(this.id+'-formatsTable');var editElem=dfx.getId(this.id+'-formContentsContainer');if(table){table.addClickEvent(this.id,function(rowid,colidx){var type=rowid.split('-');type=type[(type.length-1)];var row=dfx.getId(rowid);if(dfx.isset(row)===true){dfx.addClass(row,'editing');if(self.currentFormat!==type){var currentRow=dfx.getId(this.id+'-row-'+self.currentFormat);if(dfx.isset(currentRow)===true){dfx.removeClass(currentRow,'editing');}}}
if(type){if(self.currentFormat!==type){self.formats[self.currentFormat]=self.editor.getContents();dfx.setHtml(editElem,self.formats[type]);self.currentFormat=type;}}});}
var activeRow=dfx.getId(table.id+'-row-'+this.currentFormat);if(activeRow){dfx.addClass(activeRow,'editing');}
this.includeWidget('WYSIWYG',function(){self.editor=self.createWidget(self.id+'-formatEditor','WYSIWYG');var elem=dfx.getId(self.id+'-formContentsContainer');self.editor.setPluginSettings('ViperToolbarPlugin',{parent:elem.parentNode});self.editor.setContentChangedCallback(function(){self.setModified(true);});dfx.setStyle(elem.parentNode,'position','relative');self.editor.load(function(){self.editor.setElement(elem);});});var update=WidgetStore.get(this.id+'-formatRight-previewPane-update');if(dfx.isset(update)===true){update.addClickEvent(function(){self.previewFormat(self.editor.getContents());});}
var revert=WidgetStore.get(this.id+'-formatRight-previewPane-revert');if(dfx.isset(revert)===true){revert.addClickEvent(function(){self.editor.setContents(self.initFormats[self.currentFormat]);self.previewFormat(self.initFormats[self.currentFormat]);});}},previewFormat:function(format)
{var self=this;var params={action:'previewFormat',format:format};this.request(params,function(data){var am=dfx.getId('accountManager-'+self.assetid);if(dfx.isset(am)===true){dfx.setHtml(am,data);}});}};dfx.inherits('AccountManagerEdit','AssetEdit');function AssetListingEditWidgetType(id,assetid,settings)
{AssetEditWidgetType.call(this,id,assetid);this.widgetType='AssetListingEdit';this.assetTypes={};this.formats={};this.noFormatBox={};this.currentFormat={formatType:'assetTypes',name:'default'};this.removedAssetTypes=[];this.removedFormats={};if(dfx.isEmpty(settings)===true){settings={};}
this.settings=settings;this.editableNodes=[];this.requestTimer=null;this.originalData=null;var self=this;dfx.foreach(settings,function(i){self.children.push(id+'-settings:'+settings[i]);});}
AssetListingEditWidgetType.prototype={init:function(data,assetid,editables)
{if(data.assetTypes){this.assetTypes=data.assetTypes;}
this.originalData=dfx.clone(data);if(data.formats){this.formats=data.formats;if(this.formats.positions&&this.formats.positions.length===0){this.formats.positions={};}}
var self=this;this.setSaveButton(function(){if(self.readOnly!==true){self.save(function(data){if(data&&!data.errors){setTimeout(function(){dfx.trigger(dfx.getId('EditEditingModeWidgetType-assetViewBtn'),'click');},self.saveDelay);}});}},function(){dfx.trigger(dfx.getId('EditEditingModeWidgetType-assetViewBtn'),'click');});var spanln=editables.length;for(var i=0;i<spanln;i++){if(editables[i].getAttribute('assetid')===this.assetid){this.editableNodes.push(editables[i]);}}
this._setupGeneric();this._setupWYSIWYG();this._setupStaticSources();this._setupFromatsTab();this._setupAssetTypeFormatsTab();this._setupPageLayoutsFormatsTab();this._setupPositionsFormatsTab();this._setupDetailsAssetTypeTab();WidgetStore.addDataChangeListener('AssetListingAPEStateListener','bugState',function(data){if(data.state===1){self.togglePanel(true);}else if(data.state===0){self.togglePanel(false);}});},togglePanel:function(show)
{var typeFilterPanel=dfx.getId(this.id+'-filters-assetTypesBottom');var positionPanel=dfx.getId(this.id+'-formats-positions-bottom');var previewPane=dfx.getId(this.id+'-formats-editor-previewPane');if(show===true&&this.readOnly!==true){dfx.showElement(typeFilterPanel);dfx.showElement(positionPanel);dfx.showElement(previewPane);}else{dfx.hideElement(typeFilterPanel);dfx.hideElement(positionPanel);dfx.hideElement(previewPane);}},_setupFromatsTab:function()
{var id=this.id+'-formatsTab-grid-leftColumn';var tabWidget=WidgetStore.get(id);if(tabWidget){var self=this;tabWidget.addOnChangeHandler(function(newIndex,prevIndex){dfx.setStyle(dfx.getId(self.id+'-selectFormat'),'display','block');});}},_setupGeneric:function()
{var self=this;var previewButton=WidgetStore.get(this.id+'-formats-editor-previewPane-udpate');if(previewButton){this.children.push(previewButton.id);previewButton.setReadOnly(this.readOnly);previewButton.addClickEvent(function(){self.updatePageContents();});}
var revertButton=WidgetStore.get(this.id+'-formats-editor-previewPane-revert');if(revertButton){this.children.push(revertButton.id);revertButton.setReadOnly(this.readOnly);revertButton.addClickEvent(function(){var reverValue='';if(self.originalData.formats[self.currentFormat.formatType]){if(self.originalData.formats[self.currentFormat.formatType][self.currentFormat.name]){reverValue=self.originalData.formats[self.currentFormat.formatType][self.currentFormat.name];}}
self.setFormatValue(self.currentFormat.formatType,self.currentFormat.name,reverValue,false);self.showFormat(self.currentFormat.formatType,self.currentFormat.name,true);});}
var idp=this.id+'-settings:';var directLinks=WidgetStore.get(idp+'directLinks');directLinks.addToggleEvent(function(on){self.updatePageContents(500);self.setModified(true);});var enablePagination=WidgetStore.get(idp+'enablePagination');enablePagination.addToggleEvent(function(on){self.updatePageContents(500);self.setModified(true);});var listType=WidgetStore.get(idp+'listType');listType.addItemSelectedEvent(function(){self.updatePageContents(500);self.setModified(true);});var widgetsToUpdate=['assetsPerPage','nextPageLinkText','prevPageLinkText','maxDepth','minDepth'];var wln=widgetsToUpdate.length;for(var i=0;i<wln;i++){this._listControlAddOnChangeEvent(widgetsToUpdate[i]);}},_listControlAddOnChangeEvent:function(settingid)
{var self=this;var widget=WidgetStore.get(this.id+'-settings:'+settingid);if(widget){widget.addOnChangeEvent(function(){self.updatePageContents(500);self.setModified(true);});}},_setupStaticSources:function()
{var addButton=WidgetStore.get(this.id+'-section:static_sources:-Button-AddNew');if(addButton){addButton.setReadOnly(this.readOnly);var staticList=WidgetStore.get(this.id+'-settings:rootNodes');var self=this;var id=this.id;var assetPicker=WidgetStore.get('EditingAssetPicker');assetPicker.setScreen(id);assetPicker.addProjectFolderWhiteList(id,'Documents');assetPicker.addProjectFolderWhiteList(id,'Images');assetPicker.addProjectFolderWhiteList(id,'Movies');assetPicker.setUniqueSelect(false);assetPicker.addAssetsSelectedAction(function(selectedAssets){var sln=selectedAssets.length;for(var i=0;i<sln;i++){staticList.addAsset(selectedAssets[i]);}
self.updatePageContents(500);});staticList.addItemEnabledEvent(function(){self.updatePageContents(500);});staticList.addItemDisabledEvent(function(){self.updatePageContents(500);});addButton.addClickEvent(function(){addButton.disable();self.displayDisabledDiv(true);assetPicker.init(id,function(){assetPicker.dialog.open();});});assetPicker.addCloseAction(function(){addButton.enable();});}},_setupDetailsAssetTypeTab:function()
{var select=WidgetStore.get(this.id+'-filters-assetTypes-select');var button=WidgetStore.get(this.id+'-filters-assetTypes-addNew');var filterTable=WidgetStore.get(this.id+'-filters-assetTypesTable');var formatsTable=WidgetStore.get(this.id+'-formats-assetTypesTable');if(button&&select&&filterTable&&formatsTable){var self=this;select.setReadOnly(this.readOnly);button.setReadOnly(this.readOnly);filterTable.setReadOnly(this.readOnly);formatsTable.setReadOnly(this.readOnly);var formatsTableDelCols=dfx.getClass('TableWidgetType-cell-assetListingTypeFormats-col-delete',formatsTable.domElem);var filterTableDelCols=dfx.getClass('TableWidgetType-cell-filters-assetTypes-col-delete',filterTable.domElem);if(this.readOnly===true){dfx.setStyle(formatsTableDelCols,'display','none');dfx.setStyle(filterTableDelCols,'display','none');}
var inheritWidgetEls=dfx.getClass('RadioButtonWidgetType',filterTable.domElem);dfx.foreach(inheritWidgetEls,function(i){var radioBtn=WidgetStore.get(inheritWidgetEls[i].id);if(radioBtn){radioBtn.setReadOnly(self.readOnly);}});filterTable.addClickEvent(this.id,function(rowid,colidx,elem){var type=rowid.split('-');type=type[(type.length-1)];if(type){if(self.readOnly===true){return;}
if(colidx===3||dfx.hasClass(elem,'delete')===true){self.toggleAssetType(type);}else if(colidx===2||dfx.hasClass(elem,'RadioButtonWidgetType')===true){self.toggleInheritance(type);}}});button.addClickEvent(function(){var val=select.getValue();if(val&&val!=='0'&&!self.assetTypes[val]){var colClass=['filters-assetTypes-col-icon','filters-assetTypes-col-name','filters-assetTypes-col-inherit','filters-assetTypes-col-delete',];var tcolClass=['assetListingTypeFormats-col-icon','assetListingTypeFormats-col-name','assetListingTypeFormats-col-delete'];var params={action:'getTypeInfo',typeid:val};self.request(params,function(data){var typeInfo=dfx.jsonDecode(data);var typeIcon='<div style="background-image: url('+typeInfo.icon+');"></div>';var deleteIcon='<div class="delete"></div>';self.includeWidget('RadioButton',function(){var iid=self.id+'-'+val+'-inherit';var radio=self.createWidget(iid,'RadioButton');radio.setLabel('Inherit');radio.setLabelPos('left');radio.setShowLabel(true);radio.create(function(el){var row=filterTable.createRowAsElement([typeIcon,typeInfo.name,el,deleteIcon],colClass,val);filterTable.addRow(row);});});var trow=formatsTable.createRowAsElement([typeIcon,typeInfo.name,deleteIcon],tcolClass,val);formatsTable.addRow(trow);self.assetTypes[val]={name:typeInfo.name,icon:typeInfo.icon,inherit:false};self.updatePageContents(500);});}});}},toggleAssetType:function(assetType)
{if(this.removedAssetTypes.find(assetType)===-1){this._removeAssetType(assetType);}else{this._enableAssetType(assetType);}
this.updatePageContents(500);this.setModified(true);},toggleInheritance:function(type)
{var check=WidgetStore.get(this.id+'-'+type+'-inherit');if(this.assetTypes[type].inherit!==true){this.assetTypes[type].inherit=true;check.check();}else{this.assetTypes[type].inherit=false;check.uncheck();}
this.updatePageContents(500);},_removeAssetType:function(assetType)
{this.removedAssetTypes.push(assetType);var rowid=this.id+'-filters-assetTypesTable-row-'+assetType;dfx.addClass(dfx.getId(rowid),'disabled');var check=WidgetStore.get(this.id+'-'+assetType+'-inherit');check.disable();this.removeFormat('assetTypes',assetType);this.updatePageContents(500);this.setModified(true);return true;},_enableAssetType:function(assetType)
{var aindex=this.removedAssetTypes.find(assetType);if(aindex!==-1){this.removedAssetTypes.splice(aindex,1);var rowid=this.id+'-filters-assetTypesTable-row-'+assetType;dfx.removeClass(dfx.getId(rowid),'disabled');var check=WidgetStore.get(this.id+'-'+assetType+'-inherit');check.enable();this._enableAssetTypeFormat(assetType);this.setModified(true);}},_setupAssetTypeFormatsTab:function()
{dfx.setStyle(dfx.getId(this.id+'-noCust'),'display','none');dfx.setStyle(dfx.getId(this.id+'-selectFormat'),'display','block');this._formatsTableClickEvent('assetTypes');var self=this;dfx.addEvent(dfx.getId(this.id+'-formats-assetTypes:default'),'click',function(){self.showFormat('assetTypes','default');var divid=self.id+'-formats-assetTypes:default';dfx.setStyle(dfx.getId(divid),'background-color','#D8ECFD');});var noCustBtn=WidgetStore.get(this.id+'-noCust-custBtn');if(noCustBtn){this.children.push(noCustBtn.id);noCustBtn.setReadOnly(this.readOnly);noCustBtn.addClickEvent(function(){self.setFormatValue(self.noFormatBox.formatType,self.noFormatBox.name,'',true);self.showFormat(self.noFormatBox.formatType,self.noFormatBox.name,true);});}},_setupPageLayoutsFormatsTab:function()
{this._formatsTableClickEvent('pageLayouts');},_setupPositionsFormatsTab:function()
{this._formatsTableClickEvent('positions');var addButton=WidgetStore.get(this.id+'-formats-positions-add');var selection=WidgetStore.get(this.id+'-formats-positions-select');var position=WidgetStore.get(this.id+'-formats-positions-pos');var table=WidgetStore.get(this.id+'-formats-positionsTable');if(addButton&&selection&&position&&table){addButton.setReadOnly(this.readOnly);selection.setReadOnly(this.readOnly);position.setReadOnly(this.readOnly);table.setReadOnly(this.readOnly);this.children.push(addButton.id);this.children.push(selection.id);this.children.push(position.id);this.children.push(table.id);var deleteCols=dfx.getClass('TableWidgetType-cell-filters-positionFormats-col-delete',table.domElem);dfx.setStyle(deleteCols,'display','none');var colClass=['assetListingPositionFormats-col-icon','filters-positionFormats-col-name','filters-positionFormats-col-delete',];var typeNames=['in List','on Page'];var id=this.id;var self=this;addButton.addClickEvent(function(){var pos=position.getValue();var type=selection.getValue();var rowid=type+':'+pos;if(dfx.getId(id+'-formats-positionsTable-row-'+rowid)){return;}
var content=pos+dfx.getOrdinalSuffix(pos)+' '+typeNames[type];var deleteIcon='<div class="delete positionFormats-delete"></div>';var row=table.createRowAsElement(['',content,deleteIcon],colClass,rowid);table.addRow(row);self.setModified(true);});}},_formatsTableClickEvent:function(formatType)
{var self=this;var table=WidgetStore.get(this.id+'-formats-'+formatType+'Table');if(table){table.addClickEvent(this.id,function(rowid,colidx){var type=rowid.split('-');type=type[(type.length-1)];if(type){if(colidx===2){self.removeFormat(formatType,type);}else{self.showFormat(formatType,type);}}});}},_setupWYSIWYG:function()
{var self=this;var idp=this.id+'-settings:';var listType=WidgetStore.get(idp+'listType');if(listType&&listType.getValue()==='raw'){this.includeWidget('TextArea',function(){var editor=self.createWidget(self.id+'-editor','TextArea');self.editor=editor;var elem=dfx.getId(self.id+'-formats-editor');editor.create(function(editorEl){editor.setValue(self.formats[self.currentFormat.formatType][self.currentFormat.name]);elem.appendChild(editorEl);});});return;}
this.includeWidget('WYSIWYG',function(){var editor=self.createWidget(self.id+'-editor','WYSIWYG');self.editor=editor;var elem=dfx.getId(self.id+'-formats-editor');editor.setPluginSettings('ViperToolbarPlugin',{parent:elem.parentNode});editor.setPluginSettings('ViperKeywordPlugin',{renderKeywords:false});dfx.addEvent(dfx.getId(self.id+'-formatsTab-formatsTab'),'click',function(e){if(self.readOnly!==true){editor.enable();}else{editor.disable();}});dfx.setStyle(elem.parentNode,'position','relative');editor.load(function(){editor.setElement(elem);if(self.readOnly===true){editor.disable();}});});},showFormat:function(formatType,name,revert)
{if(this.removedAssetTypes.find(name)!==-1){return;}
var tableid=this.id+'-formats-'+formatType+'Table';dfx.setStyle(dfx.getClass('TableWidgetType-row',dfx.getId(tableid)),'background-color','#FFF');var divid=this.id+'-formats-assetTypes:default';dfx.setStyle(dfx.getId(divid),'background-color','#FFF');var tableRowid=tableid+'-row-'+name;dfx.setStyle(dfx.getId(tableRowid),'background-color','#D8ECFD');if(revert!==true){var currentVal=this.getCurrentFormatValue();this.setFormatValue(this.currentFormat.formatType,this.currentFormat.name,currentVal,false);}
var elem=dfx.getId(this.id+'-formats-editor');var html='';if(this.formatExists(formatType,name)===true){dfx.setStyle(dfx.getId(this.id+'-noCust'),'display','none');dfx.setStyle(dfx.getId(this.id+'-selectFormat'),'display','none');html=this.formats[formatType][name];}else{var self=this;this.noFormatBox={formatType:formatType,name:name}
AssetManager.getAssetTypeInfos([name],function(typeInfo){typeInfo=typeInfo[0];dfx.getId(self.id+'-noCust-img').src=typeInfo.largeIconURL;dfx.setStyle(dfx.getId(self.id+'-selectFormat'),'display','none');dfx.setStyle(dfx.getId(self.id+'-noCust'),'display','block');});return;}
this.editor.setContents(html);this.currentFormat={formatType:formatType,name:name};if(formatType==='assetTypes'){this._enableAssetTypeFormat(name);}},setFormatValue:function(formatType,name,value,activateSave)
{if(!this.formats[formatType]){this.formats[formatType]={};}
this.formats[formatType][name]=value;if(activateSave===true){this.setModified(true);}},removeFormat:function(formatType,name)
{if(!this.removedFormats[formatType]){this.removedFormats[formatType]=[];}
var index=this.removedFormats[formatType].find(name);if(index===-1){this.removedFormats[formatType].push(name);}else{dfx.removeArrayIndex(this.removedFormats[formatType],index);}
var rowid=this.id+'-formats-'+formatType+'Table-row-'+name;var elem=dfx.getId(rowid);if(dfx.hasClass(elem,'disabled')===true){if(formatType==='assetTypes'){if(this.removedAssetTypes.inArray(name)===true){return;}}
dfx.removeClass(elem,'disabled');}else{dfx.addClass(elem,'disabled');}
this.setModified(true);},_enableAssetTypeFormat:function(assetType)
{if(this.removedFormats.assetTypes){if(this.removedAssetTypes.find(assetType)!==-1){return;}
var idx=this.removedFormats.assetTypes.find(assetType);if(idx!==-1){this.removedFormats.assetTypes.splice(idx,1);var rowid=this.id+'-formats-assetTypesTable-row-'+assetType;dfx.removeClass(dfx.getId(rowid),'disabled');this.setModified(true);}}},formatExists:function(formatType,name)
{return(this.formats[formatType]&&dfx.isset(this.formats[formatType][name])===true);},updatePageContents:function(delay)
{if(delay){clearTimeout(this.requestTimer);var self=this;this.requestTimer=setTimeout(function(){self.updatePageContents();},delay);}else{var data=this.getSaveData();var params={action:'getPreviewContent',settings:dfx.jsonEncode(data)};var nodes=this.editableNodes;this.request(params,function(data){dfx.setHtml(nodes,data);});}},getCurrentFormatValue:function()
{var elem=dfx.getId(this.id+'-formats-editor');var contents=this.editor.getContents(elem);return contents;},getFormatsSettingValue:function()
{var currentVal=this.getCurrentFormatValue();this.setFormatValue(this.currentFormat.formatType,this.currentFormat.name,currentVal,true);var formats=this.formats;var listType=WidgetStore.get(this.id+'-settings:listType');if(listType){listType=listType.getValue();}
for(var formatType in formats){if(formats.hasOwnProperty(formatType)===true){for(var name in formats[formatType]){if(formats[formatType].hasOwnProperty(name)===true){if(this.removedFormats[formatType]){if(this.removedFormats[formatType].find(name)!==-1){delete this.formats[formatType][name];delete formats[formatType][name];}}
if(formats[formatType][name]&&listType!=='raw'){formats[formatType][name]=this.editor.getHtml(formats[formatType][name]);}}}}}
return formats;},getAssetTypesSettingValue:function()
{var types={};for(var type in this.assetTypes){if(this.assetTypes.hasOwnProperty(type)===true){if(this.removedAssetTypes.find(type)===-1){types[type]=this.assetTypes[type].inherit;}}}
return types;}};dfx.inherits('AssetListingEdit','AssetEdit');function CustomFormEditWidgetType(id,assetid,questions,formats)
{AssetEditWidgetType.call(this,id,assetid);this.widgetType='CustomFormEdit';this.assetid=assetid;this.domElem=dfx.getId(id+'-questions');this.domElemLeft=dfx.getId(id+'-qnLeft');this.domElemRight=dfx.getId(id+'-qnEdit');this.form=dfx.getId('form'+assetid+'-container');this.tabsWidget=WidgetStore.get(this.id+'-tab_pane');this.qnTable=null;this.qnCount=1;this.editing=-1;this.itemsPerPage=6;this.currentPage=1;this.tabs=WidgetStore.get(this.id+'-subTabPane');this.subTab=dfx.getId(this.id+'-filteredSubsTable');this.subTable=null;this.subData={};this.totalSub=0;this.start=0;this.end=0;this.editor=null;this.questions=questions;this.formats=formats;this.currentFormat='formContentsFormat';var qn=questions;if(qn instanceof Array&&qn.length===0){qn={};}
this.initialSettings=this.cloneSettings(qn);this.unsavedSettings=qn;this.deleted={};this.deletedSub={};this.formJS=null;this.hasChanges={};this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen('customForm');this.assetPicker.addProjectFolderWhiteList('customForm','Users');this.assetPicker.setHideSite('customForm');this.assetPicker.setUniqueSelect(false);}
CustomFormEditWidgetType.prototype={init:function()
{var self=this;this.setSaveButton(function(){self.saveSettings();},function(){self.revert();});this.includeWidgets('Table',function(){self.printQuestionList(false,function(){self.addQuestionSettingsEvents();self.addQuestionRulesEvent();self.addSubmissionEvents();self.addFormatEvent();self._setupWYSIWYG();self.tabsWidget.addOnSelectHandler(function(index,prev){self.updateUnsavedDetails(self.editing);if(index===0){self.printQuestionSettingsEdit(self.editing);}else if(index===1){self.refreshPagination();}});var addNewQn=dfx.getId(self.id+'-addNew');var qnRules=dfx.getId(self.id+'-qnRules');var preview=dfx.getId(self.id+'-formatRight-previewPane');WidgetStore.addDataChangeListener('CustomFormSettingsPaneStateListener','bugState',function(data){if(data.state===1){dfx.showElement(addNewQn);dfx.showElement(qnRules);dfx.showElement(preview);}else if(data.state===0){dfx.hideElement(addNewQn);dfx.hideElement(qnRules);dfx.hideElement(preview);}});self.formJS=new CustomFormAssetType(self.assetid);self.formJS.attachValidation(self.questions);});});},revert:function()
{this.displayDisabledDiv(true);this.deleted={};this.unsavedSettings=this.cloneSettings(this.initialSettings);var active=this.editing;if(this.unsavedSettings.hasOwnProperty(this.editing)===false){for(var qid in this.unsavedSettings){active=qid;break;}}
this.printQuestionList(true);this.printQuestionSettingsEdit(active,true);for(var subid in this.deletedSub){if(this.deletedSub.hasOwnProperty(subid)===true){var row=dfx.getId(this.id+'-subTable-row-'+subid);dfx.removeClass(row,'recover');}}
this.deletedSub={};this.editor.setContents(this.formats[this.currentFormat]);this.removeDisabledDiv();},saveSettings:function()
{var self=this;var params={};this.displayDisabledDiv(true);var options=WidgetStore.get(this.id+'-options');options.prune();this.updateUnsavedDetails(this.editing);var table=dfx.getId(this.id+'-qnTable');var order=dfx.getClass('qnOrder',table);var newOrder=[];dfx.foreach(order,function(idx){newOrder.push(order[idx].value);return true;});var settings=this.unsavedSettings;dfx.foreach(settings,function(qid){if(dfx.isEmpty(settings[qid].rules)===true){delete settings[qid].rules;}else{settings[qid].rules=dfx.jsonEncode(settings[qid].rules);}
return true;});params.questions=dfx.jsonEncode(settings);params.order=dfx.jsonEncode(newOrder);params.deleted=dfx.jsonEncode(this.deleted);var editElem=dfx.getId(this.id+'-formContentsContainer');if(editElem){this.formats[this.currentFormat]=this.editor.getContents();}
params.formContents=this.formats.formContentsFormat;params.thankYou=this.formats.thankYouFormat;params.deletedSub=dfx.jsonEncode(this.deletedSub);var list=WidgetStore.get(this.id+'-emailList');params.notify=WidgetStore.get(this.id+'-emailNotify').getValue();params.recipient=dfx.jsonEncode(list.getValue());params.message='';params.action='saveSettings';this.request(params,function(data){data=dfx.jsonDecode(data);if(dfx.isset(data.error)===true){self._showSaveFailed(data,function(){},params);}else{var qn=data.details;if(qn instanceof Array&&qn.length===0){qn={};self.editing=-1;}
self.initialSettings=self.cloneSettings(qn);self.unsavedSettings=qn;self.deleted={};self.refreshForm();self.printQuestionList(false);self.printQuestionSettingsEdit(self.editing);self.refreshForm();self.subData=data.deletedSub;self.deletedSub={};uids=data.emailOps;list.clear();var len=uids.length;for(var i=0;i<len;i++){list.addAsset(uids[i]);}
if(len===0&&params.notify===true){var noUser=dfx.getId(self.id+'-noUserMsg');dfx.showElement(noUser);}
self.hasChanges={};self.setModified(false);dfx.trigger(dfx.getId('EditEditingModeWidgetType-assetViewBtn'),'click');}});},refreshForm:function()
{var self=this;this.request({action:'getFormContents'},function(data){if(dfx.isset(self.form)===true){dfx.setHtml(self.form,data);self.attachRules();}});},addQuestionSettingsEvents:function()
{var self=this;var add=WidgetStore.get(this.id+'-add');add.addClickEvent(function(){self.addQuestion();});var title=WidgetStore.get(this.id+'-titleEdit');title.addOnChangeEvent(function(value){var nameTag=dfx.getId(self.id+'-nameTag-q'+self.editing);nameTag.innerHTML=value;self._checkSettingChanges('label',value);});var descToggle=WidgetStore.get(this.id+'-descToggle');var desc=WidgetStore.get(this.id+'-desc');descToggle.addToggleEvent(function(t){if(t===false){desc.setValue('');}
self._checkSettingChanges('desc',desc.getValue());});desc.addOnChangeEvent(function(val){self._checkSettingChanges('desc',val);});var useDefaultToggle=WidgetStore.get(this.id+'-defaultToggle');var useDefault=WidgetStore.get(this.id+'-default');useDefaultToggle.addToggleEvent(function(t){if(t===false){useDefault.setValue('');}
var useDefaultError=dfx.getId(useDefault.id+'-error');dfx.setHtml(useDefaultError,'');self._checkDefaultValue(useDefault.getValue());});useDefault.addOnChangeEvent(function(val){self._checkDefaultValue(val);});var lines=WidgetStore.get(this.id+'-rows');lines.addOnChangeEvent(function(val){self._checkSettingChanges('rows',parseInt(val,10),function(old){return parseInt(old,10);});});var options=WidgetStore.get(this.id+'-options');options.addOnChangeEvent(function(){var val=options.formatValue(options.getValue());self._checkSettingChanges('options',val,function(old){return options.formatValue(old);});});var multi=WidgetStore.get(this.id+'-multi');multi.addToggleEvent(function(val){options.setMulti(val);self._checkSettingChanges('multi',val);});},_checkSettingChanges:function(type,val,callback)
{if(this.initialSettings.hasOwnProperty(this.editing)===false){this.hasChanges[this.editing+'-'+type]=true;}else{var oldVal='';if(this.initialSettings[this.editing].hasOwnProperty(type)===true){oldVal=this.initialSettings[this.editing][type];if(dfx.isFn(callback)===true){var self=this;oldVal=callback.call(self,oldVal);}}
var index=this.editing+'-'+type;if(val!==oldVal){this.hasChanges[index]=true;}else{if(this.hasChanges.hasOwnProperty(index)===true){delete this.hasChanges[index];}}}
this._checkChanges();},_checkOrderChange:function()
{this.updateUnsavedDetails(this.editing);var oldOrder=[];for(var qid in this.initialSettings){oldOrder.push(qid);}
var table=dfx.getId(this.id+'-qnTable');var order=dfx.getClass('qnOrder',table);var len=order.length;var newOrder=[];for(var i=0;i<len;i++){newOrder.push(order[i].value);}
var oldLen=oldOrder.length;var newLen=newOrder.length;if(newLen!==oldLen){this.hasChanges.order=true;}else{var mismatch=false;for(var j=0;j<oldLen;j++){if(newOrder[j]!==oldOrder[j]){mismatch=true;this.hasChanges.order=true;break;}}
if(mismatch===false){delete this.hasChanges.order;}}
if(this.hasChanges.hasOwnProperty('order')===true){if(this.hasChanges.order===true){var oLen=newOrder.length;var questions={};for(var x=0;x<oLen;x++){questions[newOrder[x]]=dfx.clone(this.unsavedSettings[newOrder[x]]);}
this.unsavedSettings=dfx.clone(questions);}}
this._checkChanges();},_checkDefaultValue:function(val)
{var settings=this.unsavedSettings[this.editing];var useDefault=WidgetStore.get(this.id+'-default');var ret=true;if(settings.type==='number'){ret=this.formJS.numberValidation(useDefault.id,val,settings.rules.number);}else if(settings.type==='text'){if(settings.hasOwnProperty('rules')===true){if(settings.rules.hasOwnProperty('len')===true){ret=this.formJS.lenValidation(useDefault.id,val,settings.rules.len);}
if(ret===true&&settings.rules.hasOwnProperty('email')===true){ret=this.formJS.emailValidation(useDefault.id,val,settings.rules.email);}}}
if(ret===false){this.disableSaveButton();}else{this._checkSettingChanges('defaultVal',val);}},_checkChanges:function()
{var noChange=true;for(var id in this.hasChanges){if(this.hasChanges[id]===true){this.setModified(true);noChange=false;break;}}
if(noChange===true){this.setModified(false);}},printQuestionList:function(inRevert,callback)
{var self=this;if(dfx.isset(inRevert)===false||inRevert===false){this.updateUnsavedDetails(this.editing);}
if(this.qnTable!==null){var id=this.id+'-qnTable';this.qnTable=null;delete this.qnTable;WidgetStore.remove(id);var table=dfx.getId(id);this.domElemLeft.removeChild(table);}
var qnCount=0;for(var qid in this.unsavedSettings){qnCount++;}
if(qnCount===0){this.qnTable=null;var msg1=dfx.getId(this.id+'-settingNoQnSelected');var msg2=dfx.getId(this.id+'-ruleNoQnSelected');var edit=dfx.getId(this.id+'-qnEdit');dfx.showElement(msg1);dfx.showElement(msg2);dfx.hideElement(edit);if(callback){callback.call(self);}
return;}
var data={col:['','','','','',''],colHeaderClass:['qnIDHeader','qnMoveHeader','qnReqHeader','qnNameHeader','qnTypeHeader','qnDeleteHeader'],colClass:['qid','move','required','name','type','delete'],data:[]};var qnTable=self.createWidget(self.id+'-qnTable','Table');qnTable.setData(data);qnTable.create(function(el){self.domElemLeft.appendChild(el);self.qnTable=qnTable;for(var qid in self.unsavedSettings){self._addQnRow(qid);}
for(var qDeleted in self.deleted){self.deleteQuestion(qDeleted,true);}
self.qnCount=1;self.qnTable.makeSortable(0,'span.move',null,function(){self._checkOrderChange();self._updateQuestionListIndex();});if(callback){callback.call(self);}});},printQuestionSettingsEdit:function(qid,inRevert)
{if(qid===-1){return;}
var qn=null;if(this.unsavedSettings.hasOwnProperty(qid)===false){return;}else{qn=this.unsavedSettings[qid];}
var update=true;if(dfx.isset(inRevert)===true&&inRevert===true){update=false;}
var msg=dfx.getId(this.id+'-settingNoQnSelected');dfx.hideElement(msg);var row=dfx.getId(this.id+'-qnTable-row-'+this.editing);if(dfx.isset(row)===true){dfx.removeClass(row,'editing');}
if(this.unsavedSettings.hasOwnProperty(this.editing)===true&&update===true){this.updateUnsavedDetails(this.editing);}
this.editing=qid;var currentRow=dfx.getId(this.id+'-qnTable-row-'+qid);if(dfx.isset(currentRow)===true){dfx.addClass(currentRow,'editing');}
dfx.showElement(this.domElemRight);var qidEdit=WidgetStore.get(this.id+'-qidEdit');qidEdit.setValue(qid);var title=WidgetStore.get(this.id+'-titleEdit');if(qn.label){title.setValue(qn.label);}else{title.setValue('');}
var descToggle=WidgetStore.get(this.id+'-descToggle');var desc=WidgetStore.get(this.id+'-desc');if(qn.desc&&qn.desc.length>0){desc.setValue(qn.desc);descToggle.toggleSlideOn();}else{desc.setValue('');descToggle.toggleSlideOff();}
var type=dfx.getId(this.id+'-typeEdit-'+qid).value;var useDefault=dfx.getId('SectionWidgetType-section-item-3');var useDesc=dfx.getId('SectionWidgetType-section-item-5');var allowMulti=dfx.getId('SectionWidgetType-section-item-6');var optList=dfx.getId('SectionWidgetType-section-item-7');if(type==='text'||type==='number'){dfx.showElement(useDefault);dfx.showElement(useDesc);dfx.hideElement(allowMulti);dfx.hideElement(optList);}else if(type==='options'||type==='dropdown'){dfx.hideElement(useDefault);dfx.hideElement(useDesc);dfx.showElement(allowMulti);dfx.showElement(optList);}
var defaultToggle=WidgetStore.get(this.id+'-defaultToggle');var defaultWidget=WidgetStore.get(this.id+'-default');if(qn.defaultVal&&qn.defaultVal.length>0){defaultWidget.setValue(qn.defaultVal);defaultToggle.toggleSlideOn();}else{defaultWidget.setValue('');defaultToggle.toggleSlideOff();}
var rows=WidgetStore.get(this.id+'-rows');if(qn.rows){rows.setValue(qn.rows);}else{rows.setValue('1');}
var options=WidgetStore.get(this.id+'-options');options.setDefaultOptions();options.enableCheck();if(qn.hasOwnProperty('options')===true){options.setOptions(qn.options.options);}
options.refresh();var multi=WidgetStore.get(this.id+'-multi');if(qn.hasOwnProperty('multi')===true){if(qn.multi===true){multi.toggleSlideOn();}else{multi.toggleSlideOff();}}
if(qn.type==='options'||qn.type==='dropdown'){var multiContainer=dfx.getId(this.id+'-multi-slider');if(qn.type==='dropdown'){dfx.swapClass(multiContainer,'optionsMulti','dropdownMulti');}else{dfx.swapClass(multiContainer,'dropdownMulti','optionsMulti');}}
this.printQuestionRulesEdit(qid);},updateUnsavedDetails:function(qid)
{if(qid===-1){return;}
var req=dfx.getId(this.id+'-req-'+qid).state;var type=dfx.getId(this.id+'-typeEdit-'+qid).value;var label=WidgetStore.get(this.id+'-titleEdit').getValue();var desc=WidgetStore.get(this.id+'-desc').getValue();var def=WidgetStore.get(this.id+'-default').getValue();var rows=WidgetStore.get(this.id+'-rows').getValue();var options=WidgetStore.get(this.id+'-options').getValue();var multi=WidgetStore.get(this.id+'-multi').getValue();var params={type:type,label:label,required:req,desc:desc,defaultVal:def,rows:rows,options:options,multi:multi};var rules=this.getUnsavedRules(qid);if(rules!==null){params.rules=rules;}
this.unsavedSettings[qid]=params;},_updateQuestionListIndex:function()
{var table=dfx.getId(this.id+'-qnTable-0');var tbody=table.getElementsByTagName("tbody")[0];var tr=tbody.getElementsByTagName("tr");var len=tr.length;var count=1;for(var i=0;i<len;i++){if(tr[i].className!=='TableWidgetType-row-bg'){var td=tr[i].getElementsByTagName("td")[0];td.innerHTML=count+'.';count++;}}},_addQnRow:function(qid)
{var self=this;var qn=this.unsavedSettings[qid];var nameTag=document.createElement('div');nameTag.id=this.id+'-nameTag-q'+qid;dfx.setHtml(nameTag,qn.label);dfx.addEvent(nameTag,'click',function(){if(self.deleted.hasOwnProperty(qid)===true){return;}
self.printQuestionSettingsEdit(qid);});var moveButton=document.createElement('span');dfx.addClass(moveButton,'move');var idField=document.createElement('input');idField.type='hidden';idField.value=qid;idField.name='qnOrder[]';dfx.addClass(idField,'qnOrder');moveButton.appendChild(idField);moveButton.id='move-'+qid;var deleteButton=document.createElement('span');dfx.addClass(deleteButton,'delete');dfx.addEvent(deleteButton,'click',function(){self.deleteQuestion(qid);});var id=qid+'.';var req=this._createReqStar(qid);var type=this._createTypeEdit(qid);var rowData=[this.qnCount+'.',moveButton,req,nameTag,type,deleteButton];var colClass=this.qnTable.data[0].colClass;var row=this.qnTable.createRowAsElement(rowData,colClass,qid);this.qnCount++;this.qnTable.addRow(row);},_createReqStar:function(qid)
{var self=this;var qn=this.unsavedSettings[qid];var req=document.createElement('span');req.id=this.id+'-req-'+qid;req.state=qn.required;var titles={on:'Click to make this field optional',off:'Click to make this field required'};if(req.state===true){dfx.attr(req,'title',titles.on);}else{dfx.attr(req,'title',titles.off);}
dfx.addClass(req,'require-'+qn.required);dfx.addEvent(req,'click',function(){if(self.deleted.hasOwnProperty(qid)===true){return;}
if(self.editing!==qid){self.printQuestionSettingsEdit(qid);}
dfx.swapClass(req,'require-'+req.state,'require-'+!req.state);req.state=!req.state;if(req.state===true){dfx.attr(req,'title',titles.on);}else{dfx.attr(req,'title',titles.off);}
self._checkSettingChanges('required',req.state);});return req;},_createTypeEdit:function(qid)
{var self=this;var qn=this.unsavedSettings[qid];var types={text:'Text Box',number:'Numeric',options:'Checkbox/Radio Button',dropdown:'Select'};var select=document.createElement('select');select.id=this.id+'-typeEdit-'+qid;for(var key in types){var option=document.createElement('option');dfx.setHtml(option,types[key]);option.value=key;select.appendChild(option);}
select.value=qn.type;dfx.addEvent(select,'change',function(evt){if(this.value==='options'||this.value==='dropdown'){self.unsavedSettings[qid].defaultVal='';}
self._checkSettingChanges('type',this.value);self.printQuestionSettingsEdit(qid);});return select;},addQuestion:function()
{var type=WidgetStore.get(this.id+'-type').getValue();var count=Number(WidgetStore.get(this.id+'-createCount').getValue());var qid=0;var qNum=1;for(var id in this.unsavedSettings){qNum++;}
for(var i=0;i<count;i++){var settings={required:false,type:type,label:'Question '+qNum,desc:'',defaultVal:'',rows:1,multi:false,options:{options:{0:{selected:false,value:'First Choice'},1:{selected:false,value:'Second Choice'}}}};qid=dfx.getUniqueId();if(type==='number'){var numRule={min:'',max:'',intOnly:true,msg:''};settings.rules={number:numRule};}
this.unsavedSettings[qid]=settings;qNum++;}
this.printQuestionList(false);this.printQuestionSettingsEdit(qid);},deleteQuestion:function(qid,force)
{var mark=false;if(dfx.isset(force)===true&&force===true){mark=true;}
if(this.unsavedSettings.hasOwnProperty(qid)===true){var row=dfx.getId(this.id+'-qnTable-row-'+qid);var type=dfx.getId(this.id+'-typeEdit-'+qid);var move=dfx.getId('move-'+qid);if(this.deleted.hasOwnProperty(qid)===true&&mark===false){dfx.removeClass(row,'recover');dfx.swapClass(move,'move-recover','move');delete this.deleted[qid];type.disabled=false;delete this.hasChanges[qid+'-del'];}else{dfx.removeClass(row,'editing');dfx.swapClass(move,'move','move-recover');dfx.addClass(row,'recover');this.deleted[qid]=1;type.disabled=true;this.hasChanges[qid+'-del']=true;}}
var lastId=-1;for(var id in this.unsavedSettings){if(this.deleted.hasOwnProperty(id)===false){lastId=id;break;}}
if(lastId!==-1){this.printQuestionSettingsEdit(lastId);this.printQuestionRulesEdit(lastId);}else{var msg1=dfx.getId(this.id+'-settingNoQnSelected');var msg2=dfx.getId(this.id+'-ruleNoQnSelected');var msg3=dfx.getId(this.id+'-ruleNoRulesApplied');var settings=dfx.getId(this.id+'-qnEdit');var rules=dfx.getId(this.id+'-addNewRule');dfx.showElement(msg1);dfx.showElement(msg2);dfx.hideElement(msg3);dfx.hideElement(settings);dfx.hideElement(rules);var lenDiv=dfx.getId(this.id+'-lenRuleDiv');var emailDiv=dfx.getId(this.id+'-emailRuleDiv');var numberDiv=dfx.getId(this.id+'-numberRuleDiv');var countDiv=dfx.getId(this.id+'-selcountRuleDiv');dfx.hideElement(lenDiv);dfx.hideElement(emailDiv);dfx.hideElement(numberDiv);dfx.hideElement(countDiv);}
this._checkOrderChange();return;},cloneSettings:function(settings)
{var result=dfx.clone(settings);for(var qid in settings){if(settings[qid].hasOwnProperty('rules')===true){var rules=settings[qid].rules;if(rules==='[]'){result[qid].rules={};}else if(rules instanceof Array===true&&rules.length===0){result[qid].rules={};}else{result[qid].rules=dfx.clone(settings[qid].rules);}}}
return result;},addSubmissionEvents:function()
{var self=this;var filteredCSV=dfx.getId('exportSubCSV');var filteredXML=dfx.getId('exportSubXML');var allCSV=dfx.getId('exportAllSubCSV');var allXML=dfx.getId('exportAllSubXML');dfx.addEvent(filteredCSV,'click',function(){self.exportFile('csv');});dfx.addEvent(filteredXML,'click',function(){self.exportFile('xml');});dfx.addEvent(allCSV,'click',function(){self.exportFile('csv');});dfx.addEvent(allXML,'click',function(){self.exportFile('xml');});this.addPaginationEvent('filtered');this.addPaginationEvent('all');this.tabs=WidgetStore.get(this.id+'-subTabPane');this.tabs.selectedIndex=0;this.tabs.addOnSelectHandler(function(index,prevIndex){self.currentPage=1;self.refreshPagination(index);});var searchButton=WidgetStore.get(this.id+'-search');if(dfx.isset(searchButton)===true){searchButton.addClickEvent(function(){self.refreshPagination();});}
var switchTabLink=dfx.getId('switchTabLink');dfx.addEvent(switchTabLink,'click',function(evt){var subTab=WidgetStore.get(self.id+'-subTabPane');subTab.selectTab(1);});var expandAll=WidgetStore.get(this.id+'-expandAll');expandAll.addToggleOnEvent(function(){for(var subid in self.subData){var contentBg=dfx.getId('qnContent-'+subid+'-bg');var summaryBg=dfx.getId('qnSummary-'+subid+'-bg');var content=dfx.getId('qnContent-'+subid);var summary=dfx.getId('qnSummary-'+subid);dfx.hideElement(summary);dfx.hideElement(summaryBg);dfx.showElement(content);dfx.showElement(contentBg);}});expandAll.addToggleOffEvent(function(){for(var subid in self.subData){var contentBg=dfx.getId('qnContent-'+subid+'-bg');var summaryBg=dfx.getId('qnSummary-'+subid+'-bg');var content=dfx.getId('qnContent-'+subid);var summary=dfx.getId('qnSummary-'+subid);dfx.hideElement(content);dfx.hideElement(contentBg);dfx.showElement(summary);dfx.showElement(summaryBg);}});var deleteAll=WidgetStore.get(this.id+'-deleteAll');if(dfx.isset(deleteAll)===true){deleteAll.addClickEvent(function(){self.request({action:'deleteAllSubmission'},function(data){self.subData=dfx.jsonDecode(data);self.refreshPagination();});});}
var addUser=WidgetStore.get(this.id+'-addUser');if(dfx.isset(addUser)===true){addUser.addClickEvent(function(){addUser.disable();self.displayDisabledDiv(true);self.assetPicker.init('customForm',function(){self.assetPicker.dialog.open();});});}
this.assetPicker.addCloseAction(function(){addUser.enable();});var notifyToggle=WidgetStore.get(this.id+'-emailNotify');notifyToggle.addToggleEvent(function(){self.hasChanges.notify=true;self._checkChanges();});var noUser=dfx.getId(this.id+'-noUserMsg');var list=WidgetStore.get(this.id+'-emailList');var recipients=list.getValue();var recCount=recipients.length;if(recCount>0){dfx.hideElement(noUser);}
this.assetPicker.addAssetsSelectedAction(function(selectedAssets){dfx.hideElement(noUser);var len=selectedAssets.length;for(var i=0;i<len;i++){list.addAsset(selectedAssets[i]);}
self.hasChanges.recipient=true;self._checkChanges();});list.addRemovedEvent(function(){self.hasChanges.recipient=true;self._checkChanges();});},addPaginationEvent:function(table)
{var self=this;var prevButton=WidgetStore.get(this.id+'-'+table+'SubsPrev');var nextButton=WidgetStore.get(this.id+'-'+table+'SubsNext');prevButton.disable();prevButton.addClickEvent(function(){var pageNum=self.currentPage;if(pageNum===2){prevButton.disable();}
nextButton.enable();self.printPagination(pageNum-1);self.printSubTable(pageNum-1);});nextButton.addClickEvent(function(){var totalPage=Math.ceil((self.totalSub/self.itemsPerPage));var pageNum=self.currentPage;if(pageNum===(totalPage-1)){nextButton.disable();}
prevButton.enable();self.printPagination(pageNum+1);self.printSubTable(pageNum+1);});},refreshPagination:function(index)
{var self=this;if(dfx.isset(index)===false){index=this.tabs.selectedIndex;}
if(index===0){this.start=WidgetStore.get(this.id+'-startDate').getTime();var end=WidgetStore.get(this.id+'-endDate').getTime();this.end=(parseInt(end,10)+86399);}else{this.start=0;this.end=0;}
this.request({action:'getSubmissionsCount',startTime:self.start,endTime:self.end},function(data){var count=dfx.jsonDecode(data);self.totalSub=parseInt(count.searched,10);if(self.totalSub>0){var lastPage=Math.ceil((self.totalSub/self.itemsPerPage));if(self.currentPage>lastPage){self.currentPage=lastPage;}}
var noSubMsg=dfx.getId(self.id+'-filteredSubsMsg');var noFSubMsg=dfx.getId(self.id+'-filteredNoSubsMsg');var subtitle=dfx.getId(self.id+'-filteredExportSubtitle');if(self.tabs.selectedIndex===1){noSubMsg=dfx.getId(self.id+'-allSubsMsg');subtitle=dfx.getId(self.id+'-allExportSubtitle');}
var numEntries=Number(count.searched);if(numEntries>0){dfx.hideElement(noSubMsg);dfx.hideElement(noFSubMsg);if(numEntries===1){dfx.setHtml(subtitle,'('+numEntries+' Entry)');}else{dfx.setHtml(subtitle,'('+numEntries+' Entries)');}}else{dfx.setHtml(subtitle,'');if(count.all>0){dfx.hideElement(noFSubMsg);dfx.showElement(noSubMsg);}else{dfx.showElement(noFSubMsg);dfx.hideElement(noSubMsg);}
if(self.tabs.selectedIndex===1){dfx.showElement(noSubMsg);}}
self.printPagination(self.currentPage);self.printSubTable(self.currentPage);});},printPagination:function(pageNum)
{var index=this.tabs.selectedIndex;var table='filtered';if(index===1){table='all';}
var pagination=dfx.getId(this.id+'-'+table+'Pagination');if(this.totalSub>this.itemsPerPage){this.currentPage=pageNum;dfx.showElement(pagination);var currentPageDiv=dfx.getId(this.id+'-'+table+'PaginationCurrentPage');if(dfx.isset(currentPageDiv)===true){dfx.setHtml(currentPageDiv,pageNum);}
var totalPageDiv=dfx.getId(this.id+'-'+table+'PaginationTotalPage');var totalPage=Math.ceil((this.totalSub/this.itemsPerPage));if(dfx.isset(totalPageDiv)===true){dfx.setHtml(totalPageDiv,totalPage);}
var prevButton=WidgetStore.get(this.id+'-'+table+'SubsPrev');var nextButton=WidgetStore.get(this.id+'-'+table+'SubsNext');if(pageNum===1){prevButton.disable();}else{prevButton.enable();}
if(pageNum===totalPage){nextButton.disable();}else{nextButton.enable();}}else{dfx.hideElement(pagination);}},printSubTable:function(pageNum)
{var index=this.tabs.selectedIndex;var tableName='filtered';if(index===1){tableName='all';}
var subsTable=dfx.getId(this.id+'-'+tableName+'SubsTable');if(this.subTable!==null){var id=this.id+'-subTable';var subTable=WidgetStore.get(id);if(dfx.isset(subTable)===true){WidgetStore.remove(id);}
this.subTable=null;delete this.subTable;while(subsTable.firstChild){subsTable.removeChild(subsTable.firstChild);}
if(index===1){var otherTable=dfx.getId(this.id+'-filteredSubsTable');while(otherTable.firstChild){otherTable.removeChild(otherTable.firstChild);}}else{var otherTable=dfx.getId(this.id+'-allSubsTable');while(otherTable.firstChild){otherTable.removeChild(otherTable.firstChild);}}}
var subTableData={col:['ID','Time','Answers','User','IP Address',''],colHeaderClass:['subIdHeader','subTimeHeader','subAnswerHeader','subUserHeader','subIpHeader','subDeleteHeader'],colClass:['subId','subTime','subAnswer','subUser','subIp','subDelete'],data:[]};var self=this;this.includeWidgets('Table',function(){self.subTable=self.createWidget(self.id+'-subTable','Table');self.subTable.setData(subTableData);});this.request({action:'getSubmissions',startTime:self.start,endTime:self.end,limit:self.itemsPerPage,offset:((pageNum-1)*this.itemsPerPage)},function(data){self.subData=dfx.jsonDecode(data);var len=self.subData.length;if(len!==0){var current=self;self.subTable.create(function(el){subsTable.appendChild(el);for(var subId in current.subData){current.addSubRow(current.subData[subId]);}});}});},addSubRow:function(sub)
{var self=this;var deleteButton=document.createElement('span');dfx.addClass(deleteButton,'delete');dfx.addEvent(deleteButton,'click',function(){self.markSubmissionForDeletion(sub[0]);});var rowData=[sub[0],sub[1],sub[2],sub[3],sub[4],deleteButton];var colClass=this.subTable.data[0].colClass;var row=this.subTable.createRowAsElement(rowData,colClass,sub[0]);if(this.deletedSub.hasOwnProperty(sub[0])===true){dfx.addClass(row,'recover');}
this.subTable.addRow(row);var contentBg=dfx.getId('qnContent-'+sub[0]+'-bg');var summaryBg=dfx.getId('qnSummary-'+sub[0]+'-bg');var content=dfx.getId('qnContent-'+sub[0]);var summary=dfx.getId('qnSummary-'+sub[0]);dfx.addEvent(contentBg,'click',function(){dfx.hideElement(content);dfx.hideElement(contentBg);dfx.showElement(summary);dfx.showElement(summaryBg);});dfx.addEvent(summaryBg,'click',function(){dfx.hideElement(summary);dfx.hideElement(summaryBg);dfx.showElement(content);dfx.showElement(contentBg);});},markSubmissionForDeletion:function(id)
{var row=dfx.getId(this.id+'-subTable-row-'+id);if(this.deletedSub.hasOwnProperty(id)===true){dfx.removeClass(row,'recover');delete this.deletedSub[id];}else{dfx.addClass(row,'recover');this.deletedSub[id]=1;}
if(dfx.isEmpty(this.deletedSub)===false){this.hasChanges.submission=true;}else{delete this.hasChanges.submission;}
this._checkChanges();},exportFile:function(format)
{var data=dfx.jsonEncode(this.subData);var query='&action=export&assetid='+this.assetid;query+='&start='+this.start+'&end='+this.end;query+='&format='+format;window.location.href=this.url+'?widget=EditingAssetWidget&__action=performAction'+query;},addFormatEvent:function()
{var formContentsLink=dfx.getId(this.id+'-formContents');var thankYouLink=dfx.getId(this.id+'-thankYou');var formContents=dfx.getId(this.id+'-formContentsContainer');var thankYou=dfx.getId(this.id+'-thankYouContainer');var self=this;dfx.addEvent(formContentsLink,'click',function(){dfx.showElement(formContents);dfx.hideElement(thankYou);});dfx.addEvent(thankYouLink,'click',function(){dfx.showElement(thankYou);dfx.hideElement(formContents);});},_setupWYSIWYG:function(callback)
{var self=this;var table=WidgetStore.get(this.id+'-formatsTable');if(table){table.addClickEvent(this.id,function(rowid,colidx){var type=rowid.split('-');type=type[(type.length-1)];var row=dfx.getId(rowid);if(dfx.isset(row)===true){dfx.addClass(row,'editing');if(self.currentFormat!==type){var currentRow=dfx.getId(this.id+'-row-'+self.currentFormat);if(dfx.isset(currentRow)===true){dfx.removeClass(currentRow,'editing');}}}
if(type){if(self.currentFormat!==type){self.formats[self.currentFormat]=self.editor.getContents();self.editor.setContents(self.formats[type]);self.currentFormat=type;}}});}
var activeRow=dfx.getId(table.id+'-row-'+this.currentFormat);if(activeRow){dfx.addClass(activeRow,'editing');}
this.includeWidget('WYSIWYG',function(){self.editor=self.createWidget(self.id+'-formatEditor','WYSIWYG');var elem=dfx.getId(self.id+'-formContentsContainer');self.editor.setPluginSettings('ViperToolbarPlugin',{parent:elem.parentNode});self.editor.setContentChangedCallback(function(){self.hasChanges[this.editing+'-formats']=true;self._checkChanges();});dfx.setStyle(elem.parentNode,'position','relative');self.editor.load(function(){self.editor.setElement(elem);});});var update=WidgetStore.get(this.id+'-formatRight-previewPane-update');if(dfx.isset(update)===true){update.addClickEvent(function(){self.previewFormat(self.editor.getContents());});}
var revert=WidgetStore.get(this.id+'-formatRight-previewPane-revert');if(dfx.isset(revert)===true){revert.addClickEvent(function(){self.editor.setContents(self.formats[self.currentFormat]);self.previewFormat(self.formats[self.currentFormat]);});}},previewFormat:function(format)
{var self=this;var params={action:'previewFormat',type:this.currentFormat,format:format};this.request(params,function(data){if(dfx.isset(self.form)===true){dfx.setHtml(self.form,data);self.attachRules();}});},attachRules:function()
{this.formJS.attachValidation(this.unsavedSettings);},addQuestionRulesEvent:function()
{var self=this;var button=WidgetStore.get(this.id+'-addNewRuleButton');button.addClickEvent(function(){self._addRuleEvent();});var lenDelete=dfx.getId('lenRuleDelete');dfx.addEvent(lenDelete,'click',function(){self._deleteRuleEvent('len');});var emailDelete=dfx.getId('emailRuleDelete');dfx.addEvent(emailDelete,'click',function(){self._deleteRuleEvent('email');});var countDelete=dfx.getId('selcountRuleDelete');dfx.addEvent(countDelete,'click',function(){self._deleteRuleEvent('selcount');});var len=WidgetStore.get(this.id+'-lenRuleLen');var lenOp=WidgetStore.get(this.id+'-lenRuleOp');var lenMsg=WidgetStore.get(this.id+'-lenRuleErrorMsg');len.addOnChangeEvent(function(){self._checkRuleChanges();});lenOp.addItemSelectedEvent(function(){self._checkRuleChanges();});lenMsg.addOnChangeEvent(function(){self._checkRuleChanges();});var emailMsg=WidgetStore.get(this.id+'-emailRuleErrorMsg');emailMsg.addOnChangeEvent(function(){self._checkRuleChanges();});var numMin=WidgetStore.get(this.id+'-numberRuleMin');var numMax=WidgetStore.get(this.id+'-numberRuleMax');var numIntOnly=WidgetStore.get(this.id+'-numberRuleIntOnly');var numMsg=WidgetStore.get(this.id+'-numberRuleErrorMsg');numMin.addOnChangeEvent(function(){self._checkRuleChanges();});numMax.addOnChangeEvent(function(){self._checkRuleChanges();});numIntOnly.addToggleEvent(function(){self._checkRuleChanges();});numMsg.addOnChangeEvent(function(){self._checkRuleChanges();});var selCount=WidgetStore.get(this.id+'-selcountRuleCount');var selOp=WidgetStore.get(this.id+'-selcountRuleOp');var selMsg=WidgetStore.get(this.id+'-selcountRuleErrorMsg');selCount.addOnChangeEvent(function(){self._checkRuleChanges();});selOp.addItemSelectedEvent(function(){self._checkRuleChanges();});lenMsg.addOnChangeEvent(function(){self._checkRuleChanges();});},_addRuleEvent:function()
{var qid=this.editing;if(qid===-1){return;}
var settings=this.unsavedSettings[qid];if(settings.hasOwnProperty('rules')===false){settings.rules={};}
var type=WidgetStore.get(this.id+'-addNewRuleType').getValue();if(type==='len'){settings.rules.len={len:'',lenOp:'>',msg:''};}else if(type==='email'){settings.rules.email={msg:''};}else if(type==='number'){settings.rules.number={min:'',max:'',intOnly:true,msg:''};}else if(type==='selcount'){settings.rules.selcount={countVal:1,countOp:'==',msg:''};}
this._checkRuleChanges(false);this.printQuestionRulesEdit(qid);},_deleteRuleEvent:function(type)
{var qid=this.editing;if(qid===-1){return;}
var settings=this.unsavedSettings[qid];if(settings.hasOwnProperty('rules')===false){return;}
var rules=settings.rules;if(rules.hasOwnProperty(type)===true){if(rules[type].hasOwnProperty('marked')===true){delete rules[type].marked;}else{rules[type].marked=true;}}
this._checkRuleChanges(false);this.printQuestionRulesEdit(qid,false);},_checkRuleChanges:function(update)
{var qid=this.editing;if(qid===-1){return;}
var oldRules={};if(this.initialSettings.hasOwnProperty(qid)===true){if(this.initialSettings[qid].hasOwnProperty('rules')===true){oldRules=this.initialSettings[qid].rules;}}
var newRules={};if(dfx.isset(update)===true&&update===false){if(this.unsavedSettings[qid].hasOwnProperty('rules')===true){newRules=this.unsavedSettings[qid].rules;}}else{newRules=this.getUnsavedRules(qid);}
if(dfx.objDiff(newRules,oldRules)===true){this.hasChanges[qid+'-rules']=true;}else{delete this.hasChanges[qid+'-rules'];}
this._checkChanges();},printQuestionRulesEdit:function(qid,update)
{var msg1=dfx.getId(this.id+'-ruleNoQnSelected');if(qid===-1){dfx.showElement(msg1);return;}else{dfx.hideElement(msg1);}
var set=true;if(dfx.isset(update)===true&&update===false){set=false;}
var msg2=dfx.getId(this.id+'-ruleNoRulesApplied');var settings=this.unsavedSettings[qid];var rules={};var type=settings.type;if(settings.hasOwnProperty('rules')===false){dfx.showElement(msg2);}else{dfx.hideElement(msg2);rules=settings.rules;}
var ruleType=WidgetStore.get(this.id+'-addNewRuleType');var showAdd=false;ruleType.disableOption('len',true);ruleType.disableOption('email',true);ruleType.disableOption('selcount',true);var lenDiv=dfx.getId(this.id+'-lenRuleDiv');var emailDiv=dfx.getId(this.id+'-emailRuleDiv');var numberDiv=dfx.getId(this.id+'-numberRuleDiv');var countDiv=dfx.getId(this.id+'-selcountRuleDiv');dfx.hideElement(lenDiv);dfx.hideElement(emailDiv);dfx.hideElement(numberDiv);dfx.hideElement(countDiv);if(type==='text'){var hasEmail=true;if(rules.hasOwnProperty('email')===true){dfx.showElement(emailDiv);if(set===true){var msg=WidgetStore.get(this.id+'-emailRuleErrorMsg');msg.setValue(rules.email.msg);}
if(rules.email.hasOwnProperty('marked')===true){this._markRule('email');}else{this._unmarkRule('email');}}else{ruleType.enableOption('email');ruleType.setValue('email',true);showAdd=true;hasEmail=false;this._unmarkRule('email');}
if(rules.hasOwnProperty('len')===true){dfx.showElement(lenDiv);if(set===true){var len=WidgetStore.get(this.id+'-lenRuleLen');var lenOp=WidgetStore.get(this.id+'-lenRuleOp');var msg=WidgetStore.get(this.id+'-lenRuleErrorMsg');len.setValue(rules.len.len);lenOp.setValue(rules.len.lenOp,true);msg.setValue(rules.len.msg);}
if(rules.len.hasOwnProperty('marked')===true){this._markRule('len');}else{this._unmarkRule('len');}}else{ruleType.enableOption('len');ruleType.setValue('len',true);this._unmarkRule('len');showAdd=true;if(hasEmail===false){dfx.showElement(msg2);}}}else if(type==='number'){if(rules.hasOwnProperty('number')===false){var numRule={min:'',max:'',intOnly:true,msg:''};rules={number:numRule};this.unsavedSettings[qid].rules=rules;}
dfx.showElement(numberDiv);var min=WidgetStore.get(this.id+'-numberRuleMin');var max=WidgetStore.get(this.id+'-numberRuleMax');var intOnly=WidgetStore.get(this.id+'-numberRuleIntOnly');var msg=WidgetStore.get(this.id+'-numberRuleErrorMsg');min.setValue(rules.number.min);max.setValue(rules.number.max);intOnly.setValue(rules.number.intOnly);msg.setValue(rules.number.msg);}else if(type==='options'||type==='dropdown'){if(rules.hasOwnProperty('selcount')===true){dfx.showElement(countDiv);if(set===true){var count=WidgetStore.get(this.id+'-selcountRuleCount');var countOp=WidgetStore.get(this.id+'-selcountRuleOp');var msg=WidgetStore.get(this.id+'-selcountRuleErrorMsg');count.setValue(rules.selcount.countVal);countOp.setValue(rules.selcount.countOp,true);msg.setValue(rules.selcount.msg);}
if(rules.selcount.hasOwnProperty('marked')===true){this._markRule('selcount');}else{this._unmarkRule('selcount');}}else{dfx.showElement(msg2);ruleType.enableOption('selcount');ruleType.setValue('selcount',true);this._unmarkRule('selcount');showAdd=true;}}
var bar=dfx.getId(this.id+'-addNewRule');var controls=dfx.getId(this.id+'-addNewRuleContainer');var noMore=dfx.getId(this.id+'-noMoreMsg');if(showAdd===true){dfx.showElement(bar);dfx.showElement(controls);dfx.hideElement(noMore);}else{dfx.showElement(bar);dfx.showElement(noMore);dfx.hideElement(controls);}},_markRule:function(type)
{var div=dfx.getId(this.id+'-'+type+'RuleDiv');var rule=dfx.getId(this.id+'-'+type+'Rule-items');dfx.swapClass(div,'normal','recover');dfx.hideElement(rule);},_unmarkRule:function(type)
{var div=dfx.getId(this.id+'-'+type+'RuleDiv');var rule=dfx.getId(this.id+'-'+type+'Rule-items');dfx.swapClass(div,'recover','normal');dfx.showElement(rule);},getUnsavedRules:function(qid)
{if(this.unsavedSettings.hasOwnProperty(qid)===false){return null;}
var result={};var settings=this.unsavedSettings[qid];if(settings.hasOwnProperty('rules')===true){var rules=settings.rules;for(var type in rules){var params=this._getRuleParam(type);if(params!=={}){result[type]=params;}}}
if(result==={}){return null;}
return result;},_getRuleParam:function(type)
{var params={};if(type==='len'){params.len=WidgetStore.get(this.id+'-lenRuleLen').getValue();params.lenOp=WidgetStore.get(this.id+'-lenRuleOp').getValue();params.msg=WidgetStore.get(this.id+'-lenRuleErrorMsg').getValue();}else if(type==='email'){params.msg=WidgetStore.get(this.id+'-emailRuleErrorMsg').getValue();}else if(type==='number'){params.min=WidgetStore.get(this.id+'-numberRuleMin').getValue();params.max=WidgetStore.get(this.id+'-numberRuleMax').getValue();params.intOnly=WidgetStore.get(this.id+'-numberRuleIntOnly').getValue();params.msg=WidgetStore.get(this.id+'-numberRuleErrorMsg').getValue();}else if(type==='selcount'){params.countVal=WidgetStore.get(this.id+'-selcountRuleCount').getValue();params.countOp=WidgetStore.get(this.id+'-selcountRuleOp').getValue();params.msg=WidgetStore.get(this.id+'-selcountRuleErrorMsg').getValue();}
var div=dfx.getId(this.id+'-'+type+'RuleDiv');if(dfx.hasClass(div,'recover')===true){params.marked=true;}
return params;}};dfx.inherits('CustomFormEdit','AssetEdit');function WizardStepManagerWidgetType(id)
{CardLayoutWidgetType.call(this,id);this.widgetType='WizardStepManager';this.allowMultiCreate=true;this.multiStepsData=[];this.currentMultiStepIdx=0;this.ruleWidgets={};this.steps=[];this.stepCards=[];this.currentDataIndex=0;this.maxCreate=10;this.totalSteps=null;this.stepChangedActions=[];this.indexChangedActions=[];this.stepTitles=[];this.disabledData=[];this.processActions=[];this.dialogButtons={};this.buttonAdded=false;this.dataWidgets=[];this.editingEnabled=false;this.wizardidForLabel='';this.wizardDivids=[];this.modalDialog=null;this.errors={};this.errorFns=[];this.multiDataStatus={};this.multiLockedData={};this.ellipsisLen=null;this.visitedStepCount=0;this.assets=1;this.assetButtons=[];}
WizardStepManagerWidgetType.prototype={init:function(callback)
{var self=this;var confirmId=this.id+'-confirmStep';this.confirmStep=dfx.getId(confirmId);this.confirmStep.id=confirmId;if(dfx.isset(dfx.getId(this.id))===true){this._addCards();}},setConfirmStepElem:function(elem)
{this.confirmStep=elem;},setRules:function(rules)
{this.rules=rules;},setSteps:function(steps)
{this.steps=steps;var c=this.getThisClassName()+'-multiCreate-item';this.assetButtons.push(dfx.getClass(c)[0]);if(steps&&steps[0]&&steps[0].widgets){var titleIndex=steps[0].widgets.find('title');var widget=WidgetStore.get(steps[0].widgets[titleIndex]);if(widget){var elem=widget.domElem;var self=this;var name='';this.ellipsisLen=null;dfx.addEvent(elem,'keyup',function(e){name=widget.getValue();var keyCode=null;if(e.originalEvent){keyCode=e.originalEvent.keyCode;}
self._updateTitle(self.currentMultiStepIdx,name,keyCode)});}}
this.reset();this.selectStepData(0);this.setCurrentStep(0,true);},_updateTitle:function(index,title,key)
{var c=this.getThisClassName()+'-multiCreate-item';var buttonTitle=dfx.getClass(c+'-title',this.assetButtons[index]);var browserInfo=dfx.browser();var name=title;if(name!==''){if(browserInfo.type==='msie'){dfx.setHtml(buttonTitle,name);}else{if(key&&key===16){return;}
dfx.setStyle(buttonTitle,'visibility','hidden');dfx.setHtml(buttonTitle,name);var titleWidth=dfx.getStyle(buttonTitle,'width');titleWidth=parseInt(titleWidth.substr(0,(titleWidth.length-2)),10);if(titleWidth>130){if(this.ellipsisLen===null){if(key===null){var tmpName=name;while(titleWidth>130){tmpName=tmpName.substring(0,(tmpName.length-1));dfx.setHtml(buttonTitle,tmpName);titleWidth=dfx.getStyle(buttonTitle,'width');titleWidth=parseInt(titleWidth.substr(0,(titleWidth.length-2)),10);}
this.ellipsisLen=tmpName.length+1;}else{this.ellipsisLen=name.length;}}
name=dfx.ellipsize(name,(this.ellipsisLen-4));dfx.setHtml(buttonTitle,name);}else{this.ellipsisLen=null;}
dfx.setStyle(buttonTitle,'visibility','visible');}}else{dfx.setHtml(buttonTitle,'Asset '+(index+1));}},addWizardButtons:function(modal)
{this.modalDialog=modal;var self=this;var singleStep=false;var secondBtnTitle='Next';this.totalSteps=this.cards.length;if(this.totalSteps===1){singleStep=true;secondBtnTitle='Finish';}
modal.addButton(secondBtnTitle,function(nextBtn){modal.addButton('Prev',function(prevBtn){modal.addButton('Add More',function(moreBtn){modal.addButton('Close',function(closeBtn){dfx.addClass(closeBtn,'WizardStepManagerWidgetType-closeBtn');dfx.addClass(prevBtn,'WizardStepManagerWidgetType-closeBtn');dfx.setStyle(moreBtn.domElem,'float','left');self.dialogButtons.Prev=WidgetStore.get(prevBtn.id);self.dialogButtons.Next=WidgetStore.get(nextBtn.id);self.dialogButtons.More=WidgetStore.get(moreBtn.id);self.dialogButtons.Close=WidgetStore.get(closeBtn.id);self.dialogButtons.Close.hide();self.dialogButtons.Close.addClickEvent(function(){modal.close(true,true);var activeMode=WidgetStore.getData('activeMode');if(activeMode.id==='PreviewEditingMode'){self.displayDisabledDiv(true);window.location.href=window.location.href;}});self.dialogButtons.Prev.disable();self.dialogButtons.Prev.addClickEvent(function(e){self._prevButtonAction(e);});self.dialogButtons.Next.addClickEvent(function(e){if(singleStep===true){self._finishButtonAction(e);}else{self._nextButtonAction(e);}});self.dialogButtons.More.addClickEvent(function(e){if(self.assets<9){self.addNewAsset();}else if(self.assets>=9){self.addNewAsset();self.dialogButtons.More.disable();}});});});});});},updateButtons:function()
{var cs=this.currentCardIndex;var total=this.getTotalSteps();var self=this;for(var button in this.dialogButtons){var bt=this.dialogButtons[button];switch(button){case'Prev':if(cs===0){bt.disable();}else if(cs===(total-1)){bt.disable();}else{bt.enable();}
break;case'Next':if(cs===(total-2)){bt.setName('Finish');bt.addClickEvent(function(e){self._finishButtonAction(e);},true);}else{bt.setName('Next');bt.addClickEvent(function(e){self._nextButtonAction(e);},true);}
break;default:break;}}},addNewAsset:function()
{var self=this;var c=this.getThisClassName()+'-multiCreate-item';if(this.assets===1){this._addMultiCreateButtonEvent(dfx.getClass(c)[0],0);}
this.assets++;var multiStepData=this._getCurrentMultiStepData(true);var title='Asset '+this.assets;dfx.foreach(this.multiLockedData,function(wid){multiStepData[wid]=dfx.clone(self.multiLockedData[wid],false);if(wid==='title'){title=multiStepData[wid].value;}
return true;});this.multiStepsData.push(multiStepData);var idx=(this.assets-1);var div=this._createMultiButton(title,idx);this.assetButtons.push(div);this.multiDataStatus[idx]=true;this.selectStepData(idx);this.setCurrentStep(0,true);var delIcon=dfx.getClass(c+'-disable',div)[0];if(!delIcon){return;}
var self=this;dfx.addEvent(delIcon,'click',function(e){var enabled=self.multiDataStatus[idx];if(enabled===true){if(self.assets===1){return;}
self.multiDataStatus[idx]=false;var newSelected=(idx-1);while(self.multiDataStatus[newSelected]===false){newSelected=(newSelected-1);}
self.selectStepData(newSelected);dfx.addClass(div,'disabled');dfx.addClass(delIcon,'recover');}else{self.multiDataStatus[idx]=true;self.selectStepData(idx);dfx.removeClass(div,'disabled');dfx.removeClass(delIcon,'recover');}});},getDialogButtonWidgets:function()
{return this.dialogButtons;},nextStep:function()
{var current=this.getCurrentStep();this.setCurrentStep((current+1));},previousStep:function()
{var current=this.getCurrentStep();this.setCurrentStep((current-1));},setCurrentStep:function(step,noValidation)
{if(step<0||step>this.steps.length){return;}
this._setMultiStepData(this.currentMultiStepIdx,this._getCurrentMultiStepData());if(noValidation!==true){var self=this;this.validateStep(function(result){var res=true;if(result!==true){var errors=[];var resLen=result.length;for(var i=0;i<resLen;i++){if(self.multiDataStatus[i]===false){continue;}
for(var widgetid in result[i]){if(result[i][widgetid].result===false){res=false;errors.push({widgetid:widgetid,assetIndex:i,msg:result[i][widgetid].errors[0]});}}}}
if(res===true){self.setStepErrors(self.getCurrentStep(),[]);if(self.visitedStepCount<step){self.visitedStepCount=step;}
self.setCurrentStep(step,true);}else{self.setStepErrors(self.getCurrentStep(),errors);if(step<self.getCurrentStep()){self.setCurrentStep(step,true);}else{}}
self.showErrors();});return;}
if(this.visitedStepCount<step){return;}
for(var i=0;i<step;i++){if(this.getStepState(i)==='error'){return false;}}
if(step===this.steps.length){this.currentCardIndex++;this.process();}else{this.show(step);}
this.updateButtons();this.fireStepChanged();},_prevButtonAction:function(e)
{this.previousStep();},_nextButtonAction:function(e)
{this.nextStep();},_finishButtonAction:function(e)
{this.setCurrentStep(this.steps.length);},validateStep:function(callback)
{var result=true;var stepInfo=this.steps[this.getCurrentStep()];var widgets=stepInfo.widgets;var classes=[];var wdgtLen=widgets.length;for(var i=0;i<wdgtLen;i++){var widgetid=widgets[i];if(dfx.isset(this.rules[widgetid])===true){var wid=widgetid;var ruleLen=this.rules[wid].length;for(var j=0;j<ruleLen;j++){var ruleInfo=this.rules[wid][j];var ruleType=ruleInfo.type;var ruleClassN='RuleType'+dfx.ucFirst(ruleType);classes.push(ruleClassN);}}}
var self=this;var result=[];this.includeWidgets(classes,function(){if(self.multiStepsData.length>0){var multiLen=self.multiStepsData.length;for(var k=0;k<multiLen;k++){var skip=false;if(k>0){var multiBtn=dfx.getId('multiCreate-button-icon-'+k);if(dfx.hasClass(multiBtn,'WizardStepManagerWidgetType-multiCreate-button-icon-disable')===true){skip=true;}}
result.push({});if(skip===false){var res=self._validateStep(k);result[k]=dfx.clone(res);}else{result[k].result=true;result[k].errors=[];}}}else{result.push({});var res=self._validateStep(0);result[0]=dfx.clone(res);}
if(result.length===0){callback.call(self,true);}else{var isValid=true;var resultLen=result.length;for(var l=0;l<resultLen;l++){for(var wid in result[l]){isValid=result[l][wid].result&&isValid;}}
if(isValid===true){callback.call(self,true);}else{callback.call(self,result);}}});},_validateStep:function(index)
{var stepInfo=this.steps[this.currentCardIndex];var widgets=stepInfo.widgets;var result={};var wdgtLen=widgets.length;for(var i=0;i<wdgtLen;i++){if(dfx.isset(this.rules[widgets[i]])===true){var wid=widgets[i];result[wid]={errors:[],result:true};var ruleLen=this.rules[wid].length;for(var j=0;j<ruleLen;j++){var ruleInfo=this.rules[wid][j];var ruleWidget=this._getRuleTypeWidget(ruleInfo);ruleWidget.setWidgetid(wid);var widget=WidgetStore.get(wid);if(widget.getDefaultText){if(this.multiStepsData[index][wid].value===''&&this.multiStepsData[index][wid].defaultText!==''){ruleWidget.setValue(this.multiStepsData[index][wid].defaultText);}else{ruleWidget.setValue(this.multiStepsData[index][wid].value);}}else{ruleWidget.setValue(this.multiStepsData[index][wid]);}
result[wid].result=result[wid].result&&ruleWidget.validate();if(result[wid].result===false){if(dfx.isset(ruleInfo.error)===true){result[wid].errors=[ruleInfo.error];}else{result[wid].errors=ruleWidget.getErrors();}
break;}}}}
return result;},_getRuleTypeWidget:function(ruleInfo)
{var ruleType=ruleInfo.type;var ruleClassN='';var ruleWidget=null;if(dfx.isset(this.ruleWidgets[ruleType])===false){ruleClassN='RuleType'+dfx.ucFirst(ruleType);this.ruleWidgets[ruleType]=this.createWidget('ruleType-'+ruleType,ruleClassN);ruleWidget=this.ruleWidgets[ruleType];}else{ruleWidget=this.ruleWidgets[ruleType];ruleWidget.reset();}
for(var val in ruleInfo){if(val==='type'||val==='client'||val==='server'||val==='error'){continue;}
var evalStr='ruleWidget.set'+dfx.ucFirst(val)+'(ruleInfo[val])';eval(evalStr);}
return ruleWidget;},setWizardIdForLabel:function(wizardid)
{this.wizardidForLabel=wizardid;},setWizardDivIds:function(wizardDivids)
{this.wizardDivids=wizardDivids;var self=this;var len=this.wizardDivids.length;for(var i=0;i<len;i++){(function(idx){var wdivWdgt=WidgetStore.get(self.wizardDivids[idx]);wdivWdgt.addLockAction(function(checked){var widgetid=wdivWdgt.getWidgetId();var widget=WidgetStore.get(widgetid);var value=widget.getValue();if(checked===true){widget.disable();var itemLen=self.multiStepsData.length;for(var itemIdx=1;itemIdx<itemLen;itemIdx++){if(widget.getDefaultText){self.multiStepsData[itemIdx][widgetid].value=value;}else{self.multiStepsData[itemIdx][widgetid]=dfx.clone(value,false);}
if(widgetid==='title'){self._updateTitle(itemIdx,value);}}
if(widget.getDefaultText){self.multiLockedData[widgetid]={value:value,defaultText:''};}else{self.multiLockedData[widgetid]=dfx.clone(value,false);}}else if(checked===false){widget.enable();delete self.multiLockedData[widgetid];}});})(i);}},selectStepData:function(index)
{var wizardDivsLen=this.wizardDivids.length;for(var i=0;i<wizardDivsLen;i++){var widget=WidgetStore.get(this.wizardDivids[i]);if(index===0){widget.show();}else{widget.hide();}}
var c=this.getThisClassName()+'-multiCreate-item';var el=dfx.getId(this.id+'-addMore-items');var buttons=dfx.getClass(c,el);if(dfx.isset(buttons[index])===true){dfx.removeClass(buttons,'selected');dfx.addClass(buttons[index],'selected');var currData=this._getCurrentMultiStepData();this._setMultiStepData(this.currentMultiStepIdx,currData);this._setCurrentMultiStepData(index);this.currentMultiStepIdx=index;}
this.fireDataIndexChanged(index)},fireDataIndexChanged:function()
{var actionLen=this.indexChangedActions.length;for(var i=0;i<actionLen;i++){this.indexChangedActions[i].call(this,this.currentMultiStepIdx,this.currentCardIndex);}},_createMultiButton:function(title,index,selected)
{var c=this.getThisClassName()+'-multiCreate-item';var div=document.createElement('div');dfx.addClass(div,c);var content='<div class="'+c+'-title">'+title+'</div>';content+='<div class="'+c+'-disable" title="Do not create an item"></div>';content+='<div class="'+c+'-state"></div>';dfx.setHtml(div,content);var elItems=dfx.getId(this.id+'-addMore-items');elItems.appendChild(div);this._addMultiCreateButtonEvent(div,index);return div;},_addMultiCreateButtonEvent:function(el,index)
{var self=this;dfx.addEvent(el,'click',function(){if(dfx.hasClass(el,'disabled')===true){return;}
self.selectStepData(index);self.showErrors(index);});},_getCurrentMultiStepData:function(noVal)
{var stepData={};var stepsLen=this.steps.length;for(var j=0;j<stepsLen;j++){var widgetsLen=this.steps[j].widgets.length;for(var k=0;k<widgetsLen;k++){var widgetid=this.steps[j].widgets[k];if(noVal===true){var widget=WidgetStore.get(widgetid);if(widget.getDefaultText){stepData[widgetid]={defaultText:'',value:''};}else{stepData[widgetid]='';}}else{var widget=WidgetStore.get(widgetid);if(widget.getDefaultText){stepData[widgetid]={defaultText:widget.getDefaultText(),value:widget.getValue()};}else{stepData[widgetid]=widget.getValue();}}}}
return stepData;},getCurrentStepDataIndex:function()
{return this.currentMultiStepIdx;},_setCurrentMultiStepData:function(idx)
{var self=this;dfx.foreach(this.multiStepsData[idx],function(widgetid){var widget=WidgetStore.get(widgetid);if(widget.getDefaultText){widget.setDefaultText(self.multiStepsData[idx][widgetid].defaultText);widget.setValue(self.multiStepsData[idx][widgetid].value);}else{widget.setValue(self.multiStepsData[idx][widgetid],true,idx);}
return true;});},_resetCurrentMultiStepData:function()
{var self=this;dfx.foreach(this.multiStepsData[0],function(widgetid){var widget=WidgetStore.get(widgetid);if(dfx.isFn(widget.clearValue)===true){widget.clearValue();}
return true;});var buttonTitle=dfx.getClass(this.getThisClassName()+'-multiCreate-item-title',this.assetButtons[0])[0];dfx.setHtml(buttonTitle,'Asset 1');this.selectStepData(0);},_getMultiStepData:function(idx)
{return this.multiStepsData[idx];},_setMultiStepData:function(idx,data)
{this.multiStepsData[idx]=data;},setStepFieldData:function(stepIdx,dataName,value)
{this.multiStepsData[stepIdx][dataName]=value;},process:function()
{this._showProcessing(true);this.fireProcessActions(this.steps);},disableButtons:function()
{this.modalDialog.disableButtons();},enableButtons:function()
{this.modalDialog.enableButtons();},_showProcessing:function(withLoader)
{this.hideAll();dfx.setStyle(dfx.getId('WizardRunner-wizardSteps'),'display','none');dfx.setStyle(dfx.getId('WizardRunner-wizardStepManagerWrapper'),'display','none');this.disableButtons();if(withLoader&&withLoader===true){this.displayDisabledDiv(true,dfx.getId('WizardRunner-wrapper'),'white','absolute');}else{this.removeDisabledDiv('WizardRunner-wrapper');}
dfx.setStyle(dfx.getId('WizardRunner-wizardStepManager-confirmStep'),'display','block');this._showConfirmProcessing();},_showConfirmProcessing:function()
{dfx.setStyle(dfx.getId('WizardRunner-wizardStepManager-confirmStep-processing'),'display','block');},_hideConfirmProcessing:function()
{dfx.setStyle(dfx.getId('WizardRunner-wizardStepManager-confirmStep-processing'),'display','none');},_setProcessingMessage:function(msg)
{if(dfx.isset(msg)===true){var processingEl=dfx.getId(this.confirmStep.id+'-processing');if(typeof msg==='string'){dfx.setHtml(processingEl,msg);}else{dfx.empty(processingEl);processingEl.appendChild(msg);}}},_showSuccess:function(result,errors)
{var self=this;var c=this.getThisClassName()+'-success';var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-left"><h2>Wizard Complete</h2>';content+='<div class="'+c+'-msg">';var okHtml=' asset(s) have now been created. You can now edit the asset(s),';okHtml+=' restart the wizard or close the wizard and return to the last screen you were viewing.</div>';var failHtml='';if(errors&&errors.length>0){var failCnt=0;failHtml='<h3>Not all assets were created</h3>';failHtml+='<div class="'+c+'-msg">';dfx.foreach(errors,function(idx){failHtml+=errors[idx].msg.replace(/&lt;/g,'<').replace(/&gt;/g,'>')+'<br />';failCnt++;return true;});var okCnt=0;for(var successid in result.assets){okCnt++;}
failHtml+='</div>';totalCnt=okCnt+failCnt;okHtml='<strong>'+okCnt+' out of '+totalCnt+'</strong>'+okHtml;}else{okHtml='All'+okHtml;}
content+=okHtml+failHtml;content+='<div class="'+c+'-restartBtn"></div>';content+='</div>';content+='<div class="'+c+'-right"></div>';dfx.setHtml(main,content);var restartBtnCont=dfx.getClass(c+'-restartBtn',main)[0];var rightCont=dfx.getClass(c+'-right',main)[0];this.includeWidget('Button',function(){var restartButton=self.createWidget(null,'Button','ButtonWidgetType-liteGrey');restartButton.setName('Restart Wizard');restartButton.addClickEvent(function(){self.reset();},true);restartButton.create(function(el){restartBtnCont.appendChild(el);});for(var assetid in result.assets){if(result.assets.hasOwnProperty(assetid)===false){continue;}
var info=result.assets[assetid];rightCont.appendChild(self._createSuccessAssetCont(info,result.icon));}});var confirmCont=dfx.getId(this.confirmStep.id+'-success');dfx.empty(confirmCont);confirmCont.appendChild(main);dfx.setStyle(dfx.getId('WizardRunner-wizardStepManagerWrapper'),'display','none');dfx.addClass(this.confirmStep,'success');setTimeout(function(){self.dialogButtons.Prev.hide();self.dialogButtons.Next.hide();self.dialogButtons.More.hide();self.dialogButtons.Close.show();self.modalDialog.enableButtons();self.removeDisabledDiv(dfx.getId('WizardRunner-wrapper'));},500);},_createSuccessAssetCont:function(info,icon)
{if(info.name.length>20){info.name=dfx.ellipsize(info.name,20);}
var c=this.getThisClassName()+'-success-asset';var assetCont=document.createElement('div');dfx.addClass(assetCont,c);var assethtml='<div class="'+c+'-icon" style="background-image:url('+icon;assethtml+=');"></div>';assethtml+='<div class="'+c+'-name">'+info.name+'</div>';assethtml+='<div class="'+c+'-btn"></div>';dfx.setHtml(assetCont,assethtml);var btnCont=dfx.getClass(c+'-btn',assetCont)[0];var editBtn=this.createWidget(null,'Button','ButtonWidgetType-liteGrey');editBtn.setName('Edit');editBtn.addClickEvent(function(){window.location=info.url;});editBtn.create(function(editBtnEl){dfx.addClass(editBtnEl,'WizardStepManagerWidgetType-editAssetBtn');btnCont.appendChild(editBtnEl);});return assetCont;},_showCompleteMsg:function(result)
{if(result.hasOwnProperty('success')===true){this._showSuccess(result.success,result.errors);}else{this._showFailed(result.errors,result.type)}},_showFailed:function(errors,type)
{if(type==='validation'){var stepErrors={};var eln=errors.length;var steps=[];for(var i=0;i<eln;i++){var error=errors[i];var newErr={widgetid:error.widget,assetIndex:error.item};var mln=error.errors.length;newErr.msg=[];for(var j=0;j<mln;j++){newErr.msg.push(error.errors[j]);}
newErr.msg=newErr.msg.join('<br />');if(!stepErrors['step_'+error.step]){stepErrors['step_'+error.step]=[];}
stepErrors['step_'+error.step].push(newErr);steps.push(error.step);}
var stepln=steps.length;if(stepln>0){for(var i=0;i<stepln;i++){this.setStepErrors(steps[i],stepErrors['step_'+steps[i]]);}
this.setCurrentStep(steps[0],true);dfx.setStyle(dfx.getId('WizardRunner-wizardSteps'),'display','block');dfx.setStyle(dfx.getId('WizardRunner-wizardStepManagerWrapper'),'display','block');this.show(steps[0]);this.showErrors();this.modalDialog.enableButtons();this.updateButtons();this.removeDisabledDiv(dfx.getId('WizardRunner-wrapper'));}}else{var self=this;var c=this.getThisClassName()+'-success';var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-left"><h2>Failed to Create Asset</h2>';content+='<div class="'+c+'-msg">';dfx.foreach(errors,function(idx){content+=errors[idx].msg.replace(/&lt;/g,'<').replace(/&gt;/g,'>')+'<br />';return true;});content+='</div>';content+='<div class="'+c+'-restartBtn"></div>';content+='</div>';content+='<div class="'+c+'-right"></div>';dfx.setHtml(main,content);var restartBtnCont=dfx.getClass(c+'-restartBtn',main)[0];var rightCont=dfx.getClass(c+'-right',main)[0];this.includeWidget('Button',function(){var restartButton=self.createWidget(null,'Button','ButtonWidgetType-liteGrey');restartButton.setName('Restart Wizard');restartButton.addClickEvent(function(){self.reset();},true);restartButton.create(function(el){restartBtnCont.appendChild(el);});});var confirmCont=dfx.getId(this.confirmStep.id+'-success');dfx.empty(confirmCont);confirmCont.appendChild(main);dfx.setStyle(dfx.getId('WizardRunner-wizardStepManagerWrapper'),'display','none');dfx.addClass(this.confirmStep,'success');setTimeout(function(){self.dialogButtons.Prev.hide();self.dialogButtons.Next.hide();self.dialogButtons.More.hide();self.dialogButtons.Close.show();self.modalDialog.enableButtons();self.removeDisabledDiv(dfx.getId('WizardRunner-wrapper'));},500);}},hideFinalStep:function()
{dfx.removeClass(this.confirmStep,'success');},reset:function()
{var self=this;var elem=dfx.getId(this.id+'-addMore');var elItems=dfx.getId(this.id+'-addMore-items');var c='WizardStepManagerWidgetType-multiCreate-expanded';var elVisClass=this.getClass()+'-multiCreate-items-visible';dfx.removeClass(elem,c);dfx.removeClass(elItems,elVisClass);var assetButtonsLen=this.assetButtons.length;for(var i=1;i<assetButtonsLen;i++){dfx.remove(this.assetButtons[i]);}
this._resetCurrentMultiStepData();var firstButton=this.assetButtons.shift();this.assetButtons=[firstButton];this.multiStepsData=[];this.currentMultiStepIdx=0;this.assets=1;this.multiLockedData={};this.hideFinalStep();dfx.setStyle(dfx.getId('WizardRunner-wizardSteps'),'display','block');dfx.setStyle(dfx.getId('WizardRunner-wizardStepManager'),'display','block');var steps=dfx.getId(this.id+'-steps');this.currentCardIndex=0;this.fireStepChanged();if(this.dialogButtons.Next){this.dialogButtons.Next.removeEvents();this.updateButtons();}
var stepsLen=this.steps.length;for(var i=0;i<stepsLen;i++){var widgetsLen=this.steps[i].widgets.length;for(var j=0;j<widgetsLen;j++){var widgetid=this.steps[i].widgets[j];var widget=WidgetStore.get(widgetid);if(dfx.isset(widget.reset)===true){widget.reset();}
widget.enable();}}
var wizardDivLen=this.wizardDivids.length;for(var j=0;j<wizardDivLen;j++){(function(idx){var wdivWdgt=WidgetStore.get(self.wizardDivids[idx]);wdivWdgt.setLockState(false,true);wdivWdgt.hide();if(self.dialogButtons.More){self.dialogButtons.More.enable();}})(j);}
dfx.setStyle(dfx.getId(this.id+'-confirmStep'),'display','none');dfx.remove(dfx.getId(this.id+'-confirmStep-success'));dfx.remove(dfx.getId(this.id+'-confirmStep-processing'));var content='<div id="'+this.id+'-confirmStep-success" class="WizardStepManagerWidgetType-success"> </div>';content+='<div id="'+this.id+'-confirmStep-processing" class="WizardStepManagerWidgetType-processing"> </div>';dfx.setHtml(dfx.getId(this.id+'-confirmStep'),content);this.errors={};if(self.dialogButtons.Prev){self.dialogButtons.Prev.show();}
if(self.dialogButtons.Next){self.dialogButtons.Next.show();}
if(self.dialogButtons.More){self.dialogButtons.More.show();}
if(self.dialogButtons.Close){self.dialogButtons.Close.hide();}
this.show(0);dfx.setStyle(dfx.getId('WizardRunner-wizardStepManagerWrapper'),'display','block');},getCurrentStep:function()
{return this.currentCardIndex;},addStepChangedAction:function(action)
{this.stepChangedActions.push(action);},resetStepChangedActions:function()
{this.stepChangedActions=[];},fireStepChanged:function()
{var actionLen=this.stepChangedActions.length;for(var i=0;i<actionLen;i++){this.stepChangedActions[i].call(this,this.currentCardIndex);}},addProcessAction:function(action,reset)
{if(dfx.isFn(action)===true){if(reset===true){this.processActions=[];}
this.processActions.push(action);}},resetProcessActions:function()
{this.processActions=[];},fireProcessActions:function()
{var actionLen=this.processActions.length;for(var i=0;i<actionLen;i++){this.processActions[i].call(this,this.steps);}},getSteps:function()
{return this.steps;},getValues:function()
{var values=[];var dataIndex=0;var numMultiSteps=this.multiStepsData.length;var skipped=0;var items=dfx.getClass(this.widgetType+'WidgetType-multiCreate-item',dfx.getId('WizardRunner-wizardStepManager-addMore-items'));for(var i=0;i<numMultiSteps;i++){if(dfx.hasClass(items[i],'disabled')===true){skipped++;continue;}
var data=this.multiStepsData[i];values.push({});var stepsLen=this.steps.length;for(var j=0;j<stepsLen;j++){var stepTitle=this.steps[j].title;values[(i-skipped)][stepTitle]={};var widgetsLen=this.steps[j].widgets.length;for(var k=0;k<widgetsLen;k++){var widgetid=this.steps[j].widgets[k];var widget=WidgetStore.get(widgetid);if(widget.getDefaultText){if(data[widgetid].value===''&&data[widgetid].defaultText!==''){values[(i-skipped)][stepTitle][widgetid]=data[widgetid].defaultText;}else{values[(i-skipped)][stepTitle][widgetid]=data[widgetid].value;}}else{values[(i-skipped)][stepTitle][widgetid]=data[widgetid];}}}}
return values;},getThisClassName:function()
{return'WizardStepManagerWidgetType';},getClass:function()
{return'CardLayoutWidgetType';},getTotalSteps:function()
{return(this.cards.length+1);},setStepErrors:function(step,errors)
{this.errors['step_'+step]=errors;this.fireUpdateErrors(step);},fireUpdateErrors:function(step)
{var eln=this.errorFns.length;for(var i=0;i<eln;i++){this.errorFns[i].call(this,step,this.errors);}},addUpdateErrorsAction:function(callback)
{this.errorFns.push(callback);},resetUpdateErrorsActions:function()
{this.errorFns=[];},getStepState:function(step)
{var idx='step_'+step;if(this.errors[idx]){var eln=this.errors[idx].length;if(eln>0){return'error';}}
return'completed';},getStepErrors:function(stepIndex)
{stepIndex=stepIndex||this.getCurrentStep();var idx='step_'+stepIndex;return this.errors[idx]||[];},showErrors:function(assetIndex)
{assetIndex=assetIndex||this.currentMultiStepIdx;var elems=dfx.getClass('WizardDivWidgetType-error',dfx.getId(this.id));dfx.removeClass(elems,'active');dfx.setHtml(elems,'');var assetButtons=dfx.getClass(this.getThisClassName()+'-multiCreate-item-state',dfx.getId('WizardModalDialog'));var errors=this.getStepErrors();var eln=errors.length;for(var i=0;i<eln;i++){var error=errors[i];if(dfx.hasClass(assetButtons[error.assetIndex],'error')===false){dfx.addClass(assetButtons[error.assetIndex],'error');}
if(assetIndex===error.assetIndex){var elem=dfx.getId('wizardWidget-'+error.widgetid);if(elem){var elem=dfx.getClass('WizardDivWidgetType-error',elem)[0];if(elem){dfx.addClass(elem,'active');dfx.setHtml(elem,error.msg);}}}}
var assetIndexes=[];for(var step in this.errors){eln=this.errors[step].length;errors=this.errors[step];for(var i=0;i<eln;i++){var error=errors[i];assetIndexes.push(error.assetIndex);}}
for(var i=0;i<this.assets;i++){if(assetIndexes.inArray(i)===false){dfx.removeClass(assetButtons[i],'error');}else{dfx.addClass(assetButtons[i],'error');}}}};dfx.inherits('WizardStepManager','CardLayout');function EditingContentsWidgetType(id)
{DynamicDivWidgetType.call(this,id);this.widgetType='EditingContents';}
EditingContentsWidgetType.prototype={scriptUpdate:function(xml)
{var self=this;var data=null;if(typeof xml==='string'){var parser=new Util.Xml(xml);data=parser.parse();if(data.firstChild.tagName==='parsererror'){data=xml;dfx.setHtml(domElem,data);if(dfx.isFn(endFunc)){endFunc.call();}
return;}else if(data.firstChild.tagName==='div'){dfx.setHtml(domElem,xml);if(dfx.isFn(endFunc)){endFunc.call();}
return;}}else{data=xml;}
if(Widget.CSS_MINIFIED===false){var cssIncludes=data.getElementsByTagName('cssinclude');var cssIncNum=cssIncludes.length;for(var i=0;i<cssIncNum;i++){var link=document.createElement('link');link.href=cssIncludes.item(i).firstChild.nodeValue;link.type="text/css";link.rel="stylesheet";document.getElementsByTagName("head").item(0).appendChild(link);}}},updateContent:function(xml,endFunc)
{var self=this;var modeSwitcher=WidgetStore.get('EditingModeSwitcher');var currMode=modeSwitcher.getCurrentMode();var _updateContent=function(assetCssContents){if(assetCssContents){var styleTagid='assetStyle';var styleTag=document.getElementById(styleTagid);dfx.remove(styleTag);dfx.addCssToStyle(dfx.jsonDecode(assetCssContents),'assetStyle');}
self.cleanup();var domElem=self.domElem;if(domElem===null){self.domElem=dfx.getId(self.id);domElem=self.domElem;}
var data=null;if(typeof xml==='string'){var parser=new Util.Xml(xml);data=parser.parse();if(data.firstChild.tagName==='parsererror'){data=xml;dfx.setHtml(domElem,data);if(dfx.isFn(endFunc)){endFunc.call();}
return;}else if(data.firstChild.tagName==='div'){dfx.setHtml(domElem,xml);if(dfx.isFn(endFunc)){endFunc.call();}
return;}}else{data=xml;}
var cssIncludes=data.getElementsByTagName('cssinclude');var cssIncNum=cssIncludes.length;for(var i=0;i<cssIncNum;i++){self.cssLinks.push(dfx.includeCss(cssIncludes.item(i).firstChild.nodeValue));}
var cssContents=data.getElementsByTagName('csscontent');var cssNum=cssContents.length;for(i=0;i<cssNum;i++){dfx.addCssToStyle(dfx.getNodeTextContent(cssContents[i]));}
var divContent=dfx.getNodeTextContent(data.getElementsByTagName('content').item(0));dfx.setHtml(domElem,divContent.replace(/jsscript/g,'script'));var callbackData=dfx.getNodeTextContent(data.getElementsByTagName('callbackdata').item(0));self.includeScriptFiles(data,function(){var src=dfx.getNodeTextContent(data.getElementsByTagName('javascript').item(0));var script=document.createElement('script');script.text=src;script.language='javascript';script.type='text/javascript';self.jsScripts.push(script);document.getElementsByTagName("head").item(0).appendChild(script);if(dfx.isFn(endFunc)){endFunc.call(self,callbackData);}});};if(currMode==='PreviewEditingMode'||currMode==='EditEditingMode'){var data={EditingContents:true,action:'loadDesignCss'};dfx.post(window.location.href,data,function(cssContents){_updateContent(cssContents);});}else{_updateContent();}}};dfx.inherits('EditingContents','DynamicDiv');function WizardManagerWidgetType(id)
{DynamicDivWidgetType.call(this,id);this.widgetType='WizardManager';this.domElem=dfx.getId(this.id+'-content');}
WizardManagerWidgetType.prototype={init:function()
{var wizardEditLinks=dfx.getClass(this.getClass()+'-wizards-edit');var self=this;dfx.addEvent(wizardEditLinks,'click',function(e){var target=dfx.getMouseEventTarget(e);var wizardid=dfx.attr(target,'wizardid');self.showEditWizardInterface(wizardid);});},showEditWizardInterface:function(wizardid)
{var params={widget:this.widgetType,action:'showBuilder',wizardid:wizardid};this.changeContent(params);}};dfx.inherits('WizardManager','DynamicDiv');function AssetTypeWidgetType(id,assetTypes,hideInheritButton)
{InputWidgetType.call(this,id);this.options={};this.domEl=dfx.getId(this.id);this.items=assetTypes||{};this.hideInheritButton=hideInheritButton||false;if(this.hideInheritButton==='1'){this.hideInheritButton=true;}
this.typeAddedEvents=[];this.init();}
AssetTypeWidgetType.prototype={init:function()
{for(var type in this.items){if(this.items.hasOwnProperty(type)===true){this.addType(type,this.items[type],true);}}},_addEvents:function()
{var self=this;var addButton=WidgetStore.get(this.id+'-add');if(dfx.isset(addButton)===true){addButton.addClickEvent(function(){var list=WidgetStore.get(self.id+'-list');var select=WidgetStore.get(self.id+'-select');var itemid=select.getValue();var type=select.getTextContent();self.addType(itemid,0,false);});}},addType:function(type,inherit,force)
{if(force!==true){if(type===''||type in this.items){return;}}
var itemid=type;var list=WidgetStore.get(this.id+'-list');var self=this;this._createItemContent(itemid,inherit,function(columns){list.addItem(itemid,columns);self.fireTypeAddedEvents(itemid);self.items[itemid]=inherit;});},_createItemContent:function(itemid,inherit,callback)
{var self=this;AssetManager.getAssetTypeInfos([itemid],function(typeInfo){typeInfo=typeInfo[0];var typeName=typeInfo.name||dfx.ucWords(itemid);var iconUrl=typeInfo.iconURL;self._getInheritButtonContent(itemid,inherit,function(el){var inheritCol=el;var nameCol=document.createElement('div');nameCol.setAttribute('title',typeName);dfx.setStyle(nameCol,'background','url('+iconUrl+' ) no-repeat 0% 50%');dfx.setStyle(nameCol,'padding-left','20px');dfx.setHtml(nameCol,typeName);callback.call(this,[nameCol,inheritCol]);});});},_getInheritButtonContent:function(itemid,inherit,callback)
{if(this.hideInheritButton===true){callback.call(this,'');return;}
var self=this;this.includeWidget('Button',function(){var buttonWidget=self.createWidget(self.id+'_inhbutton:'+itemid,'Button');if(inherit===1){buttonWidget.setName('Inherit');buttonWidget.enable();}else{buttonWidget.setName('Do Not Inherit');buttonWidget.disable();}
buttonWidget.setButtonColour('green');buttonWidget.enableToggleMode();buttonWidget.setMinWidth('100px');buttonWidget.create(function(el){callback.call(self,el);buttonWidget.addClickEvent(function(){if(dfx.isset(self.items[itemid])===false){self.items[itemid]=0;}
if(self.items[itemid]===0){self.items[itemid]=1;buttonWidget.setName('Inherit');buttonWidget.enable();}else{self.items[itemid]=0;buttonWidget.setName('Do Not Inherit');buttonWidget.disable();}},true);});});},_createWidget:function()
{this._compCount=0;var self=this;self.selects++;this.includeWidgets(['SelectWidget','CheckBoxWidget','ButtonWidget'],function(){var selectWidget=self.createWidget(self.id+'-select:'+self.selects,'SelectWidget');var checkboxWidget=self.createWidget(self.id+'-checkbox:'+self.selects,'CheckBoxWidget');checkboxWidget.setLabel('Inherit');var cancelButton=self.createWidget(self.id+'-cancel:'+self.selects,'ButtonWidget');cancelButton.setName('Clear');var moreButton=self.createWidget(self.id+'-more:'+self.selects,'ButtonWidget');moreButton.setName('More');selectWidget.create(function(select){checkboxWidget.create(function(checkbox){cancelButton.create(function(cancel){moreButton.create(function(more){var div=document.createElement('div');dfx.setStyle(div,'overflow:hidden;');div.appendChild(select);div.appendChild(checkbox);div.appendChild(cancel);div.appendChild(more);self.domEl.appendChild(div);});});});});});},getValue:function()
{var items=WidgetStore.get(this.id+'-list').getValue();var value={};var len=items.length;for(var i=0;i<len;i++){var inherit=0;if(this.items[items[i]]&&this.items[items[i]]===1){inherit=1;}
value[items[i]]=inherit;}
return value;},setValue:function(value)
{for(var type in value){this.addType(type,value[type]);}},addTypeAddedEvent:function(fn)
{this.typeAddedEvents.push(fn);},fireTypeAddedEvents:function(typeid)
{var fnl=this.typeAddedEvents.length;for(var i=0;i<fnl;i++){this.typeAddedEvents[i].call(this,typeid);}},addItemClickedEvent:function(fn)
{WidgetStore.get(this.id+'-list').addItemClickedEvent(fn);},addItemDisabledEvent:function(fn)
{WidgetStore.get(this.id+'-list').addItemDisabledEvent(fn);},addItemEnabledEvent:function(fn)
{WidgetStore.get(this.id+'-list').addItemEnabledEvent(fn);}};dfx.inherits('AssetType','Input');function CheckBoxListWidgetType(id)
{InputWidgetType.call(this,id);this.widgetType='CheckBoxList';this.optionElements=this.getOptionElements();this.optionElementLength=this.getOptsLength();}
CheckBoxListWidgetType.prototype={getOptionElements:function()
{return dfx.getClass('CheckBoxWidgetType',dfx.getId(this.id),'input');},getOptsLength:function()
{return this.optionElements.length;},getValue:function()
{var value=[];for(var i=0;i<this.optionElementLength;i++){var widgetId=this.id+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true&&widget.isChecked()===true){value.push(widget.getValue());}}
return value.join(';');},setValue:function(value)
{var vals=value.split(';');var vLen=vals.length;var c=vLen;for(var i=0;i<this.optionElementLength;i++){var widgetId=this.id+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){widget.uncheck();if(c>0){for(var j=0;j<vLen;j++){if(widget.getValue()===vals[j]){widget.check();c--;}}}}}},uncheckAll:function()
{var len=this.getOptsLength();for(var i=0;i<len;i++){var widgetId=this.id+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){widget.uncheck();}}},disable:function()
{var len=this.getOptsLength();for(var i=0;i<len;i++){var widgetId=this.id+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){widget.disable();}}},enable:function()
{var len=this.getOptsLength();for(var i=0;i<len;i++){var widgetId=this.id+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){widget.enable();}}}};dfx.inherits('CheckBoxList','Input');function CheckBoxWidgetType(id,target,checked)
{InputWidgetType.call(this,id);this.widgetType='CheckBox';this.checked=checked||false;this.type='checkbox';this.labelPos='right';target=(target)||this.id;this.target=target;this.events=[];this.checkEventAdded=false;this.wrapper=null;if(dfx.isset(this.domElem)===true){this.domElem.checked=checked;this.addCheckElement(target);}}
CheckBoxWidgetType.prototype={addCheckElement:function(elemid)
{if(this.checkEventAdded===false){var self=this;var el=dfx.getId(elemid);if(!el){el=this.domElem;}
if(el){dfx.addEvent(el,'click',function(e){self.toggle(e);});}
this.checkEventAdded=true;}},create:function(callback)
{var cssClass=this.widgetType+'WidgetType-image';if(this.checked===true){cssClass=cssClass+'-checked';}
var cont=document.createElement('div');dfx.addClass(cont,this.getClass());cont.setAttribute('id',this.id+'_container');var div=document.createElement('div');div.setAttribute('id',this.id+'_wrapper');dfx.addClass(div,cssClass);this.wrapper=div;if(dfx.isset(this.showLabel)===true&&this.showLabel===true){if(this.labelPos==='left'){cont.appendChild(this.createLabel(this.label));}}
var cb=document.createElement('input');cb.setAttribute('type',this.type);cb.setAttribute('id',this.id);cb.setAttribute('name',this.id);dfx.addClass(cb,this.getClass());div.appendChild(cb);cont.appendChild(div);if(dfx.isset(this.showLabel)===true&&this.showLabel===true){if(this.labelPos==='right'){cont.appendChild(this.createLabel(this.label));}}
this.domElem=cb;this.target=this.id;if(dfx.isFn(callback)===true){callback.call(this,cont);return;}},_addEvents:function()
{this.addCheckElement(this.target);},isChecked:function()
{return this.checked;},toggle:function(e)
{var target=dfx.getMouseEventTarget(e);if(target.id===''){return;}
if(this.checked===true){this.uncheck();}else{this.check();}},check:function()
{if(this.readOnly===true){return;}
this.domElem.checked=true;this.checked=true;var wrapper=dfx.getId(this.id+'_wrapper');dfx.swapClass(wrapper,this.widgetType+'WidgetType-image',this.widgetType+'WidgetType-image-checked');this.fireCheckedEvents(true);},uncheck:function()
{if(this.readOnly===true){return;}
this.domElem.checked=false;this.checked=false;var wrapper=dfx.getId(this.id+'_wrapper');dfx.swapClass(wrapper,this.widgetType+'WidgetType-image-checked',this.widgetType+'WidgetType-image');this.fireCheckedEvents(false);},exportWidget:function()
{var o=InputWidgetType.prototype.exportWidget.call(this);o.checked=this.isChecked();return o;},setChecked:function(c)
{this.checked=c;},disable:function()
{this.domElem.disabled=true;},enable:function()
{this.domElem.disabled=false;},getValue:function()
{return dfx.getId(this.id).checked;},setLabelPos:function(pos)
{this.labelPos=pos;},addCheckedEvent:function(fn)
{this.events.push(fn);},fireCheckedEvents:function(status)
{var len=this.events.length;for(var i=0;i<len;i++){this.events[i].call(this,status);}},setReadOnly:function(readOnly)
{InputWidgetType.prototype.setReadOnly.call(this,readOnly);if(this.domEl){}}};dfx.inherits('CheckBox','Input');function DateFieldWidgetType(id,yearRange)
{InputWidgetType.call(this,id);this.parts=['day','month','year'];this.partsLength=this.parts.length;this.yearRange=yearRange;}
DateFieldWidgetType.prototype={getValue:function()
{var date=[];for(var i=0;i<this.partsLength;i++){var name=this.id+'-'+this.parts[i];var widget=WidgetStore.get(name);if(dfx.isset(widget)===true){var value=this.parts[i]+':'+widget.getValue();date.push(value);}}
return date.join(';');},getTime:function()
{var monthArray=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];var vals=this.getValue().split(';');var day=(parseInt(vals[0].split(':')[1],10)+1);var month=monthArray[vals[1].split(':')[1]];var year=this.yearRange[vals[2].split(':')[1]];var time=day+' '+month+' '+year;var result=(Date.parse(time)/1000);return result;},setValue:function(value)
{var vals=value.split(';');var valsLen=vals.length;for(var i=0;i<valsLen;i++){var parts=vals[i].split(':');var name=this.id+'-'+parts[0];var widget=WidgetStore.get(name);if(dfx.isset(widget)===true){widget.setValue(parts[1]);}}},disable:function()
{for(var i=0;i<this.partsLength;i++){var name=this.id+'-'+this.parts[i];var widget=WidgetStore.get(name);if(dfx.isset(widget)===true){widget.disable();}}},enable:function()
{for(var i=0;i<this.partsLength;i++){var name=this.id+'-'+this.parts[i];var widget=WidgetStore.get(name);if(dfx.isset(widget)===true){widget.enable();}}},addOnchangeEvent:function(fn)
{for(var i=0;i<this.partsLength;i++){var name=this.id+'-'+this.parts[i];this._addComponentOnchangeEvent(name,fn);}},_addComponentOnchangeEvent:function(name,fn)
{var widget=WidgetStore.get(name);if(dfx.isset(widget)===true){widget.addItemSelectedEvent(fn);}}};dfx.inherits('DateField','Input');function SelectWidgetType(id,items,selectedItems,minWidth,mainWidth,readOnly,allowEmpty,allowEmptyText,useDefault)
{InputWidgetType.call(this,id);this.widgetType='Select';this.options={};this.domEl=dfx.getId(this.id);this.value=null;this.listEl=null;this.textWidget=null;this.scroll=null;this.list=null;this.listZIndex=null;this.items=items||{};this.itemCount=0;this.closed=true;this.minWidth=minWidth||0;this.mainWidth=mainWidth||0;this.changed=false;this.readOnly=readOnly||false;this.allowEmpty=allowEmpty||false;this.allowEmptyText=allowEmptyText||'-- Leave Empty --';this.useDefault=useDefault||false;this.selectedItems=selectedItems||[];this.selectedEventValueType='index';this.select=null;this.itemSelctedEvents=[];if(dfx.isset(dfx.getId(this.id))===true){this.initNonCustom();}}
SelectWidgetType.prototype={initNonCustom:function()
{this.select=dfx.getId(this.id);this.addSelectEvents();},getItems:function()
{var result=[];var len=this.select.options.length;for(var i=0;i<len;i++){result.push(this.select.options[i].value);}
return result;},addItems:function(items)
{this.items=items;},getSelectedValue:function()
{return this.value;},setReadOnly:function(readOnly)
{InputWidgetType.prototype.setReadOnly.call(this,readOnly);var rod=dfx.getId(this.id+'-readOnly');var label=dfx.getId(this.id+'-label');var select=dfx.getId(this.id);if(select){var selIdx=select.selectedIndex;dfx.setHtml(rod,select.options[selIdx].text);}
var container=dfx.getId(this.id+'-container');if(readOnly===true){dfx.addClass(container,'readOnly');dfx.showElement(rod);}else{dfx.removeClass(container,'readOnly');dfx.showElement(select);dfx.hideElement(rod);}},create:function(callback)
{var self=this;var div=document.createElement('div');div.id=this.id+'-container';dfx.addClass(div,this.widgetType+'WidgetType-Container');if(self.showLabel===true){var label=self.createLabel(true);if(this.readOnly){dfx.hideElement(label);}
div.appendChild(label);}
var select=document.createElement('select');select.id=this.id;var selected=this.selectedItems.length;var mark=false;if(selected>0){mark=true;}
if(this.allowEmpty===true){var empty=document.createElement('option');empty.text=this.allowEmptyText;empty.value='emptydefault';if(this.selectedItems.find('emptydefault')===true){empty.selected=true;}
select.appendChild(empty);}
for(var key in this.items){var option=document.createElement('option');dfx.setHtml(option,this.items[key]);option.value=key;var checked=this.selectedItems.find(key);if(mark===true&&checked!==-1){option.selected=true;}
select.appendChild(option);}
if(this.readOnly){dfx.hideElement(select);}
div.appendChild(select);var rod=document.createElement('div');rod.id=this.id+'-readOnly';dfx.addClass(rod,this.widgetType+'WidgetType-readOnly');if(!this.readOnly){dfx.hideElement(rod);}
div.appendChild(rod);this.select=select;this.addSelectEvents();callback.call(self,div);},addOption:function(txt,val)
{var op=document.createElement('option');op.text=txt;op.value=val;var browserInfo=dfx.browser();if(browserInfo.type==='msie'||browserInfo.version==='7.0'){this.select.add(op);}else{this.select.add(op,null);}},removeAllOptions:function()
{var opLen=this.select.options.length;for(var i=(opLen-1);i>=0;i--){this.select.remove(i);}},getOptionIndex:function(optVal)
{return this.list.getItemIndex(optVal);},getOptionElement:function(optVal)
{return this.list.getItemElement(optVal);},getValue:function(returnIndex,returnText)
{if(this.select.multiple){if(returnIndex===true){var selectedIndexes=[];var opLen=this.select.options.length;for(var i=0;i<opLen;i++){if(this.select.options[i].selected===true){selectedIndexes.push(i);}}
if(selectedIndexes.length===0){return[this.select.selectedIndex];}else{return selectedIndexes;}}else{if(returnText===true){return this.select.options[this.select.selectedIndex].text;}else{var selectedIndexes=[];var opLen=this.select.options.length;for(var i=0;i<opLen;i++){if(this.select.options[i].selected===true){selectedIndexes.push(this.select.options[i].value);}}
if(selectedIndexes.length===0){var index=this.select.selectedIndex||0;if(index===-1){return'';}
return[this.select.options[index].value];}else{return selectedIndexes;}}}}else{if(returnIndex===true){return this.select.selectedIndex;}else{if(returnText===true){return this.select.options[this.select.selectedIndex].text;}else{var index=this.select.selectedIndex||0;if(index===-1){index=0;}
return this.select.options[index].value;}}}},getTextContent:function()
{if(dfx.isset(this.value)===false){for(var item in this.items){if(this.items.hasOwnProperty(item)===true){this.value=item;break;}}}
if(typeof this.items[this.value]==='object'){return this.items[this.value].text;}
return this.items[this.value].content;},setTextContent:function(index,textContent)
{this.select.options[index].text=textContent;},setValue:function(value,rawValue)
{if(rawValue===true){var opLen=this.select.options.length;for(var i=0;i<opLen;i++){if(this.select.options[i].value===value){this.select.selectedIndex=i;var rod=dfx.getId(this.id+'-readOnly');if(rod){dfx.setHtml(rod,this.select.options[i].text);}
break;}}}else{if(value instanceof Array){var opLen=this.select.options.length;for(var i=0;i<opLen;i++){if(value.inArray(this.select.options[i].value)===true){this.select.options[i].selected=true;}else{this.select.options[i].selected=false;}}}else{this.select.selectedIndex=value;}}},addSelectEvents:function()
{var self=this;dfx.addEvent(this.select,'change',function(evt){var index=evt.target.selectedIndex;var value=evt.target.value;if(self.selectedEventValueType==='index'){self.fireItemSelectedEvents(index);}else{self.fireItemSelectedEvents(value);}});},setListZIndex:function(zi)
{this.listZIndex=zi;},setSelectedEventValueType:function(type)
{this.selectedEventValueType=type;},addItemSelectedEvent:function(fn)
{this.itemSelctedEvents.push(fn);},fireItemSelectedEvents:function(val)
{this.changed=true;var ln=this.itemSelctedEvents.length;for(var i=0;i<ln;i++){this.itemSelctedEvents[i].call(this,val);}},disable:function()
{this.select.disabled=true;},enable:function()
{this.select.disabled=false;},getOption:function(val)
{var len=this.select.options.length;for(var i=0;i<len;i++){if(this.select.options[i].value===val){return this.select.options[i];}}
return null;},disableOption:function(val,hide)
{var len=this.select.options.length;for(var i=0;i<len;i++){if(this.select.options[i].value===val){this.select.options[i].disabled='disabled';if(dfx.isset(hide)===true&&hide===true){dfx.hideElement(this.select.options[i]);}}}},enableOption:function(val)
{var len=this.select.options.length;for(var i=0;i<len;i++){if(this.select.options[i].value===val){this.select.options[i].disabled='';dfx.showElement(this.select.options[i]);}}}};dfx.inherits('Select','Input');function SpinButtonWidgetType(id,min,max,inc,dec,readOnly)
{InputWidgetType.call(this,id);this.widgetType='SpinButton';this.minValue=parseFloat(min);this.maxValue=parseFloat(max);this.increment=parseFloat(inc)||1;this.decimals=parseInt(dec)||0;this.readOnly=readOnly||false;this.initValue=1;this._allowEmptyValue=false;this.changeEvents=[];if(isNaN(this.minValue)){this.minValue=null;}
if(isNaN(this.maxValue)){this.maxValue=null;}
this.buttonUp=null;this.buttonDown=null;this.container=null;this.domEl=dfx.getId(this.id);if(this.domEl){this.readOnlyEl=dfx.getClass(this.getClass()+'-readOnly')[0];this.container=this.domEl.parentNode;this.init();}}
SpinButtonWidgetType.prototype={init:function()
{this.buttonUp=dfx.getId(this.id+'-button-up');this.buttonDown=dfx.getId(this.id+'-button-down');this.addButtonEvents();this.addKeyEvents();},create:function(callback)
{var div=document.createElement('div');dfx.addClass(div,'TextFieldWidgetType-Container SpinButtonWidgetType-Container');var c=this.getClass();this.container=div;if(this.readOnly===true){dfx.addClass(div,'readOnly');}
var textBox=document.createElement('input');textBox.id=this.id;textBox.type='text';textBox.setAttribute('size',3);textBox.setAttribute('value',this.initValue);dfx.addClass(textBox,'TextFieldWidgetType');this.domEl=textBox;div.appendChild(textBox);var buttons=document.createElement('div');dfx.addClass(buttons,c+'-buttons');div.appendChild(buttons);var readOnlyEl=document.createElement('div');dfx.addClass(readOnlyEl,c+'-readOnly');div.appendChild(readOnlyEl);this.readOnlyEl=readOnlyEl;dfx.setHtml(this.readOnlyEl,this.domEl.value);var up=document.createElement('div');this.buttonUp=up;dfx.addClass(up,c+'-button '+c+'-button-up');up.id=this.id+'-button-up';buttons.appendChild(up);var down=document.createElement('div');this.buttonDown=down;dfx.addClass(down,c+'-button '+c+'-button-down');down.id=this.id+'-button-down';buttons.appendChild(down);if(dfx.isFn(callback)===true){this.addButtonEvents();this.addKeyEvents();callback.call(this,div);}},setInitialValue:function(val)
{this.initValue=val;},allowEmptyValue:function(allowEmpty)
{this._allowEmptyValue=allowEmpty;},addButtonEvents:function()
{var up=this.buttonUp;var down=this.buttonDown;var self=this;var intr=null;var tout=null;dfx.addEvent(up,'mousedown',function(e){dfx.addClass(up,self.getClass()+'-button-up-clicked');self.increase();clearInterval(intr);clearTimeout(tout);tout=setTimeout(function(){intr=setInterval(function(){self.increase();},150);},400);});dfx.addEvent(document,'mouseup',function(e){var t=dfx.getMouseEventTarget(e);if(t!==self.container&&dfx.isChildOf(t,self.container)!==true){return;}
clearTimeout(tout);dfx.removeClass(up,self.getClass()+'-button-up-clicked');dfx.removeClass(down,self.getClass()+'-button-down-clicked');if(intr){clearInterval(intr);intr=null;}});dfx.addEvent(down,'mousedown',function(e){dfx.addClass(down,self.getClass()+'-button-down-clicked');self.decrease();clearInterval(intr);clearTimeout(tout);tout=setTimeout(function(){intr=setInterval(function(){self.decrease();},150);},400);});dfx.addEvent(this.domEl,'blur',function(){self.adjustValue(parseFloat(self.domEl.value));});},addKeyEvents:function()
{if(!this.domEl){return;}
var self=this;var keyDown=false;dfx.addEvent(this.domEl,'keydown',function(e){if(e.keyCode===38){if(!keyDown){dfx.addClass(self.buttonUp,self.getClass()+'-button-up-clicked');}
self.increase();}else if(e.keyCode===40){if(!keyDown){dfx.addClass(self.buttonDown,self.getClass()+'-button-down-clicked');}
self.decrease();}else if(e.keyCode===13){self.adjustValue(null);}
keyDown=true;});dfx.addEvent(this.domEl,'keyup',function(e){keyDown=false;dfx.removeClass(self.buttonUp,self.getClass()+'-button-up-clicked');dfx.removeClass(self.buttonDown,self.getClass()+'-button-down-clicked');});},increase:function()
{var val=parseFloat(this.domEl.value);if(isNaN(val)){val=this.minValue;}
this.adjustValue(val+this.increment);},decrease:function()
{var val=parseFloat(this.domEl.value);if(isNaN(val)){val=this.maxValue;}
this.adjustValue((val-this.increment));},adjustValue:function(val)
{if(val==='undefined'||val===null){val=parseFloat(this.domEl.value);}
if(isNaN(val)){if(this._allowEmptyValue===true){this.domEl.value='';this.fireOnChangeEvents(this.domEl.value);}else{val=0;this.adjustValue(0);}
return;}else if(this.maxValue!==null&&val>this.maxValue){val=this.maxValue;}else if(this.minValue!==null&&val<this.minValue){val=this.minValue;}
if(val.toFixed){this.domEl.value=val.toFixed(this.decimals);}
this.fireOnChangeEvents(this.domEl.value);},addOnChangeEvent:function(fn)
{this.changeEvents.push(fn);},fireOnChangeEvents:function(val)
{for(var i=(this.changeEvents.length-1);i>=0;i--){this.changeEvents[i].call(this,val);}},getValue:function()
{return this.domEl.value;},setValue:function(value)
{this.domEl.value=value;this.adjustValue(value);},setReadOnly:function(readOnly)
{InputWidgetType.prototype.setReadOnly.call(this,readOnly);if(this.domEl){if(readOnly===true){if(this.readOnlyEl){dfx.setHtml(this.readOnlyEl,this.domEl.value);}
dfx.addClass(this.container,'readOnly');}else{dfx.removeClass(this.container,'readOnly');}}}};dfx.inherits('SpinButton','Input');function TextFieldWidgetType(id,className,resizableX,cols,showLabel,numericOnly,readOnly,defaultText)
{InputWidgetType.call(this,id);this.widgetType='TextField';if(dfx.isset(className)===false){className='TextFieldWidgetType';}
this.resizableX=resizableX;if(className!=='TextFieldWidgetType'){this.resizableX=false;}
this.cols=cols||30;this.showLabel=showLabel||false;this.className=className;this.width=0;this.initialValue='';this.displayBlock=true;this.inputBox=null;this.input=null;this.value=this.initialValue;this.numericOnly=numericOnly;this.error=false;this.defaultText=defaultText||'';this.defaultTextClassName=this.widgetType+'WidgetType-defaultText';this.defaultTextMode=false;this.returnDefaultText=false;if(this.defaultText!==''){this.defaultTextMode=true;}
this.onChangeCallbacks=[];if(dfx.isset(dfx.getId(this.id))===true){this.domEl=dfx.getId(this.id);this.input=this.domEl;this.inputBox=this.domEl;if(this.defaultTextMode===true){this.input.value=this.defaultText;dfx.addClass(this.input,this.defaultTextClassName);}
this.addEvents();}}
TextFieldWidgetType.prototype={reset:function()
{this.input.value=this.initialValue;},setReadOnly:function(readOnly)
{InputWidgetType.prototype.setReadOnly.call(this,readOnly);if(this.domEl){var readOnlyDiv=dfx.getClass(this.className+'-readOnly',this.domEl.parentNode);if(readOnly){this.disable();if(readOnlyDiv.length>0){dfx.hideElement(this.domEl);dfx.showElement(readOnlyDiv[0]);}else{var div=document.createElement('div');dfx.addClass(div,this.className+'-readOnly');dfx.hideElement(this.domEl);dfx.setHtml(div,this.input.value);dfx.insertBefore(this.domEl,div);}}else if(!readOnly){this.enable();if(readOnlyDiv.length>0){dfx.hideElement(readOnlyDiv[0]);dfx.showElement(this.domEl);}}}},getWidgetArgs:function()
{var args=[];args.push(this.className);args.push(this.resizableX);args.push(this.cols);return args;},focus:function()
{this.addActiveClass();this.input.focus();},addActiveClass:function()
{if(this.error===false){dfx.addClass(this.inputBox,'active');}},blur:function()
{this.removeActiveClass();this.setValue(this.getValue());},removeActiveClass:function()
{if(this.error===false){dfx.removeClass(this.inputBox,'active');}},hasError:function(error)
{InputWidgetType.prototype.hasError.call(this,error);if(dfx.isset(this.error)===true){dfx.getId(this.id).className=this.className+'-Error';}else{dfx.getId(this.id).className=this.className;}},create:function(callback)
{var div=document.createElement('div');dfx.addClass(div,this.className+'-Container');div.setAttribute('id',this.id+'_container');if(this.showLabel===true){div.appendChild(this.createLabel(this.inline));}
var textbox=document.createElement('input');textbox.setAttribute('type','text');textbox.setAttribute('id',this.id);textbox.setAttribute('size',this.cols);if(this.defaultTextMode===true){textbox.value=this.defaultText;dfx.addClass(textbox,this.defaultTextClassName);}else{textbox.value=this.value;}
this.inputBox=textbox;dfx.addClass(textbox,this.className);if(this.width>0){dfx.setStyle(textbox,'width',this.width+'px');}
if(this.readOnly){var roDiv=document.createElement('div');dfx.addClass(roDiv,this.className+'-readOnly');dfx.setStyle(textbox,'display','none');dfx.setStyle(textbox,'visibility','hidden');dfx.setHtml(roDiv,this.value);div.appendChild(roDiv);}
div.appendChild(textbox);if(dfx.isset(this.displayBlock)===true&&this.displayBlock===true){dfx.setStyle(div,'float','none');}
this.input=textbox;this.domEl=this.input;this.inputBox=this.input;this._addEvents();if(callback){callback.call(this,div);}},_addEvents:function()
{var self=this;dfx.addEvent(this.inputBox,'focus',function(){if(self.defaultTextMode===true&&self.inputBox.value===self.defaultText){self.inputBox.value='';dfx.removeClass(self.inputBox,self.defaultTextClassName);}
self.focus();});dfx.addEvent(this.inputBox,'blur',function(){if(self.defaultTextMode===true&&dfx.trim(self.inputBox.value)===''){self.inputBox.value=self.defaultText;dfx.addClass(self.inputBox,self.defaultTextClassName);}
self.blur();});if(this.resizableX===1){this._enableResize();}
if(this.numericOnly===1){dfx.addEvent(this.inputBox,'keyup',function(){self.validateNumericValue();});}},_enableResize:function()
{if(this.inputBox.type!=='text'){return;}
var resizerX=dfx.getId(this.id+'_right');var textbox=dfx.getId(this.id);dfx.setStyle(resizerX,'cursor','e-resize');var origWidth=dfx.getElementWidth(textbox);var leftPos=dfx.getElementCoords(resizerX).x;var mouseMoveFn=function(e){var width=(origWidth+(dfx.getMouseEventPosition(e).x-leftPos));dfx.setStyle(textbox,'width',width);};dfx.addEvent(resizerX,'mousedown',function(e){dfx.setStyle(document.body,'cursor','e-resize');dfx.setStyle(textbox,'cursor','e-resize');dfx.addEvent(document,'mousemove',mouseMoveFn);});dfx.addEvent(document.body,'mouseup',function(e){dfx.setStyle(document.body,'cursor','default');dfx.setStyle(textbox,'cursor','text');dfx.removeEvent(document,'mousemove',mouseMoveFn);});},_createTextField:function()
{var div=document.createElement('div');dfx.addClass(div,this.className+'-Container');div.setAttribute('id',this.id+'_container');if(this.showLabel===true){div.appendChild(this.createLabel(this.inline));}
var textbox=document.createElement('input');textbox.setAttribute('type','text');textbox.setAttribute('id',this.id);textbox.setAttribute('size',this.cols);textbox.value=this.value;this.inputBox=textbox;dfx.addClass(textbox,this.className);if(this.width>0){dfx.setStyle(textbox,'width',this.width+'px');}
if(this.readOnly){var roDiv=document.createElement('div');dfx.addClass(roDiv,this.className+'-readOnly');dfx.setStyle(textbox,'display','none');dfx.setStyle(textbox,'visibility','hidden');dfx.setHtml(roDiv,this.value);div.appendChild(roDiv);}
div.appendChild(textbox);if(dfx.isset(this.displayBlock)===true&&this.displayBlock===true){dfx.setStyle(div,'float','none');}
this.input=textbox;this.domEl=this.input;return div;},setCols:function(cols)
{this.cols=cols;},setWidth:function(width)
{this.width=parseInt(width);if(dfx.isset(this.input)===true){dfx.setStyle(this.input,'width',width+'px');}},setInitialValue:function(val)
{this.initialValue=val;},setDisplayAsBlock:function(block)
{this.displayBlock=block;},setShowLabel:function(show)
{this.showLabel=show;},getInitialValue:function()
{return this.initialValue;},getWidth:function()
{var w=this.width;if(dfx.isset(dfx.getId(this.id))===true){w=dfx.getElementWidth(dfx.getId(this.id));}
return w;},enableEditing:function()
{InputWidgetType.prototype.enableEditing.call(this);this._enableResize();},exportWidget:function()
{var o=InputWidgetType.prototype.exportWidget.call(this);o.width=dfx.getElementWidth(dfx.getId(this.id));o.initialValue=this.getInitialValue();return o;},getWizardOptions:function(callback)
{var self=this;InputWidgetType.prototype.getWizardOptions.call(this,function(widgets){var widget=self.createWidget(self.id+'-options-width','TextField');widget.setLabel('Width');widget.setInline(true);widget.setValue(self.getWidth());widgets.push(widget);widget.setEvent('focus',function(){widget.setValue(self.getWidth());});widget.setEvent('keyup',function(e){var val=widget.getValue();val=val.replace(/[^\d]+/g,'');widget.setValue(val);self.setWidth(val);});var initValWidget=self.createWidget(self.id+'-options-initVal','TextField');initValWidget.setLabel('Initial Value');initValWidget.setInline(true);initValWidget.setValue(self.getInitialValue());initValWidget.setEvent('keyup',function(){var val=initValWidget.getValue();self.setValue(val);self.setInitialValue(val);});widgets.push(initValWidget);callback.call(self,widgets);});},setReturnDefaultText:function(returnDefaultText)
{this.returnDefaultText=returnDefaultText;},getValue:function()
{var el=this.input;var val=''
if(el){val=el.value||'';}else{val=this.value||'';}
if(this.defaultTextMode===true){if(val===this.defaultText){if(this.returnDefaultText===true){val=this.defaultText;}else{val='';}}}
return val;},setValue:function(val)
{val=val||'';if(val==='null'){val='';}
if(this.defaultTextMode===true&&(val===''||val===this.defaultText)){val=this.defaultText;dfx.addClass(this.input,this.defaultTextClassName);dfx.trigger(this.input,'keyup');}else{dfx.removeClass(this.input,this.defaultTextClassName);}
var el=dfx.getId(this.id);if(dfx.isset(el)===true){el.value=val;}else{this.value=val;if(dfx.isset(this.input)===true){this.input.value=val;}}
if(this.domEl){var readOnlyDiv=dfx.getClass(this.className+'-readOnly',this.domEl.parentNode);if(readOnlyDiv[0]){dfx.setHtml(readOnlyDiv[0],val);}}},setDefaultText:function(defaultText)
{this.defaultText=defaultText;if(defaultText!==''){this.defaultTextMode=true;}else{this.defaultTextMode=false;}},getDefaultText:function()
{return this.defaultText;},disable:function()
{if(dfx.isset(this.input)===true){this.input.disabled=true;dfx.setOpacity(this.input,0.6);}
this.enabled=false;},enable:function()
{if(dfx.isset(this.input)===true){this.input.disabled=false;dfx.setOpacity(this.input,1);}else{dfx.getId(this.id).disabled=false;}
this.enabled=true;},addOnChangeEvent:function(fn)
{var self=this;if(this.onChangeCallbacks.length===0){dfx.addEvent(this.input,'keyup',function(evt){var val=evt.target.value;var len=self.onChangeCallbacks.length;for(var i=0;i<len;i++){self.onChangeCallbacks[i].call(self,val,evt);}});}
this.onChangeCallbacks.push(fn);},removeOnChangeEvents:function()
{delete this.onChangeCallbacks;this.onChangeCallbacks=[];},show:function(visibilityOnly,displayType)
{var container=dfx.getId(this.id+'_container');if(visibilityOnly===true){dfx.setStyle(container,'visibility','visible');}else{dfx.setStyle(container,'visibility','visible');var dt='block';if(dfx.isset(displayType)===true){dt=displayType;}
dfx.setStyle(container,'display',dt);}},hide:function(visibilityOnly)
{var container=dfx.getId(this.id+'_container');if(visibilityOnly===true){dfx.setStyle(container,'visibility','hidden');}else{dfx.setStyle(container,'visibility','hidden');dfx.setStyle(container,'display','none');}},validateNumericValue:function()
{var value=this.inputBox.value;if(parseInt(value)!==value){var result='';var valueLen=value.length;for(var i=0;i<valueLen;i++){if((value.charAt(i)==='-'&&i===0)||(parseInt(value.charAt(i))===value.charAt(i))){result=result+value.charAt(i);}}
this.inputBox.value=result;}}};dfx.inherits('TextField','Input');function MetadataEditNumberWidgetType(id,defaultValue)
{MetadataEditTextWidgetType.call(this,id,defaultValue);this._init();}
MetadataEditNumberWidgetType.prototype={_init:function()
{var self=this;dfx.addEvent(dfx.getId(this.id+'-field'),'blur',function(){var warning=dfx.getId(self.id+'-warning');if(warning){dfx.hideElement(warning);}
var errorMsg=dfx.getId(self.id+'-errorMsg');if(errorMsg){dfx.hideElement(errorMsg);}
var valCheck=self.check();if(valCheck!==true){if(errorMsg){dfx.setHtml(errorMsg,valCheck);dfx.showElement(errorMsg);}
self.value='';self.setModified(true);}});},check:function()
{var result=true;var value=WidgetStore.get(this.id+'-field').getValue();if(value.length===0){return true;}
var val=Number(value);if(isNaN(val)===true){result='Please enter a valid number';}
var checkVal=parseInt(value,10);if(val===checkVal){return true;}
checkVal=parseFloat(value);if(val===checkVal){return true;}
if(value.match(/^[-+]?[ \d]+$/)===null){result='Please enter a valid number';}
return'Please enter a valid number';}};dfx.inherits('MetadataEditNumber','MetadataEditText');function MetadataEditSelectionWidgetType(id,defaultValue)
{defaultValue=defaultValue||[];MetadataEditTextWidgetType.call(this,id,defaultValue);}
MetadataEditSelectionWidgetType.prototype={init:function()
{this.multiple=false;this.hasDefault=false;if(this.field){if(this.field.select){this.multiple=this.field.select.multiple;}
if(this.multiple===true){this.value=this.field.getValue();}else{if(this.field.useDefault===true){this.value=[];}else{this.value=[this.field.getValue(true)];}}
if(dfx.isEmpty(this.defaultValue)===false){this.hasDefault=true;}}
var self=this;if(this.hasDefault===true){dfx.showElement(dfx.getId(this.id+'-def'));if(this.isUsingDefault()===true){this.field.setValue(this.defaultValue);dfx.addClass(this.container,'useDefault');}
dfx.addEvent(this.elem,'focus',function(){dfx.removeClass(self.container,'useDefault');});if(this.multiple===true){dfx.addEvent(this.elem,'blur',function(){self.toggleDefaultValue();});}else{var option=this.field.getOption(this.defaultValue[0]);this.field.addOption('Default: '+option.text,'useSchemaDefault');if(this.isUsingDefault()===true){this.field.setValue(['useSchemaDefault']);}
this.field.setSelectedEventValueType('value');this.field.addItemSelectedEvent(function(val){dfx.removeClass(self.container,'useDefault');if(val==='useSchemaDefault'){self.value=[];dfx.addClass(self.container,'useDefault');}else{self.value=[self.field.getValue(true)];}});dfx.addEvent(this.elem,'blur',function(){if(self.value==='useSchemaDefault'){dfx.addClass(self.container,'useDefault');}});}}
if(this.field){this.field.addItemSelectedEvent(function(){self.setModified(true);});}},toggleDefaultValue:function()
{var field=this.field;if(field){var selected=field.getValue();if(dfx.isEmpty(selected)===true){this.value=[];field.setValue(this.defaultValue);dfx.addClass(this.container,'useDefault');}else{this.value=selected;}
this.setModified(true);}},isUsingDefault:function()
{if(this.hasDefault===true&&dfx.isEmpty(this.value)===true){return true;}
return false;}};dfx.inherits('MetadataEditSelection','MetadataEditText');function AdjustModalDialogWidgetType(id,titleDivId,buttonHolderId,buttons)
{OverlayWidgetType.call(this,id);this.widgetType='AdjustModalDialog';this.orientation=Widget.CENTER;this.margin=0;this.size=0;this.fillScreen=true;this.styleSuffix={};this.styleSuffix[Widget.CENTER]='center';this.styleSuffix[Widget.TOP]='top';this.styleSuffix[Widget.BOTTOM]='bottom';this.styleSuffix[Widget.LEFT]='left';this.styleSuffix[Widget.RIGHT]='right';}
AdjustModalDialogWidgetType.prototype={setOrientation:function(ori)
{this.removeCurrentClass();this.orientation=ori||Widget.CENTER;dfx.addClass(this.el,this._getOrientationClassName(this.orientation));},removeCurrentClass:function(ori)
{var suffix='';var orientation=ori||this.orientation;dfx.removeClass(this.el,this._getOrientationClassName(orientation));},_getOrientationClassName:function(ori)
{var className=this.widgetType+'WidgetType-'+this.styleSuffix[ori];if(ori===Widget.CENTER&&this.fillScreen===false){className=className+'-float';}
return className;},setFillScreen:function(fill)
{if(this.orientation!==Widget.CENTER){return;}
if(fill!==this.fillScreen){dfx.removeClass(this.el,this._getOrientationClassName(Widget.CENTER));this.fillScreen=fill;dfx.addClass(this.el,this._getOrientationClassName(Widget.CENTER));}},setSize:function(sz)
{this.size=sz;switch(this.orientation){case Widget.CENTER:dfx.setStyle(this.el,'height','100%');break;case Widget.TOP:case Widget.BOTTOM:dfx.setStyle(this.el,'height',sz+'px');break;case Widget.LEFT:case Widget.RIGHT:dfx.setStyle(this.el,'width',sz+'px');dfx.setStyle(this.el,'height','100%');break;default:break;}},setMargin:function(mg)
{this.margin=mg;switch(this.orientation){case Widget.TOP:case Widget.BOTTOM:dfx.setStyle(this.el,'margin-left',mg+'px');dfx.setStyle(this.el,'margin-right',mg+'px');break;case Widget.LEFT:case Widget.RIGHT:dfx.setStyle(this.el,'margin-top',mg+'px');dfx.setStyle(this.el,'margin-bottom',mg+'px');break;default:break;}}};dfx.inherits('AdjustModalDialog','Overlay');function AssetPickerDialogWidgetType(id,siteid)
{OverlayWidgetType.call(this,id);this.widgetType='AssetPickerDialog';this.navBody=dfx.getId(this.id+'-body-nav');this.navList=null;this.navItems=[];this.currentNav=null;this.currentProject=null;this.footer=dfx.getId(this.id+'-content-footer');this.uniqueSelect=false;this.siteOnly=false;this.hideSite={};this.hideTopLevel={};this.projectBlackList={};this.projectWhiteList={};this.screenViews={};this.screenClass={};this.forceShowRoots={};this.noInitialSelect={};this.list=null;this.treeList=null;this.srchList=null;this.footerClass=null;this._setTitles();this.resultView=dfx.getId(this.id+'-body-tree-result');this.srchField=null;this.srchDiv=dfx.getId(this.id+'-search');this.prevVal=null;this.inResultView=false;this.rootNode=-1;this.selectedAssets=[];this.assetsSelectedActions=[];this.selectionChangedActions=[];this.openActions={};this.closeActions={};this.itemClickedEvents={};this.domElem=dfx.getId(this.id);this.screen=null;this.dialog=null;this.currentAssetid=null;this.viewTypes=['list','thumb','search'];this.viewWidgets={};this._viewButtons=[];this.previousView={};this.currentView={view:this.viewTypes[0],type:null};this.containers={};this.projects={};this.projectFolders={};this.projectid=null;this.projectFoldersFiltered=[];this.lineage=null;this.autoScrollLineage={};this.rootAsset=null;this.currentSelection=null;this.currentSelectionIcon=null;this.currentSelectionTitle=null;this.assetInfoCache={};this.assetChildrenInfoCache={};this.saveButtonCheck=false;this.selectButtonWdgt=null;this.noDialog=false;this.modalWidth=null;this.modalHeight=null;}
AssetPickerDialogWidgetType.prototype={_setTitles:function()
{this.title='Asset Finder';this.subTitle='Select the asset you want to view, edit or use';this.buttonTitle='Select';},getAsset:function(assetid,callback)
{var self=this;if(dfx.isset(this.assetInfoCache[assetid])===true){callback.call(this,this.assetInfoCache[assetid]);}else{var params={attributes:['name'],type:false,typeIcon:true,linking:[],urls:false};AssetManager.getAsset(assetid,function(asset){asset.children=null;self.assetInfoCache[assetid]=asset;callback.call(self,asset);},false,params);}},setForceShowRoots:function(screen,showRoots)
{this.forceShowRoots[screen]=showRoots;},getAssetWithChildren:function(assetid,callback)
{var self=this;if(dfx.isset(this.assetInfoCache[assetid])===true){if(this.assetInfoCache[assetid].children===null){var params={attributes:[],type:false,typeIcon:false,linking:['children'],urls:false};AssetManager.getAsset(assetid,function(asset){self.assetInfoCache[assetid].children=asset.children;callback.call(self,self.assetInfoCache[assetid]);},false,params);}else{callback.call(this,this.assetInfoCache[assetid]);}}else{var params={attributes:['name'],type:false,typeIcon:true,linking:['children'],urls:false};AssetManager.getAsset(assetid,function(asset){self.assetInfoCache[assetid]=asset;callback.call(self,asset);},false,params);}},getAssets:function(assetids,callback)
{var self=this;var nonCached=[];var result=[];var tmpResult={};dfx.foreach(assetids,function(idx){var aid=assetids[idx];if(dfx.isset(self.assetInfoCache[aid])===false){nonCached.push(aid);}else{tmpResult[aid]=self.assetInfoCache[aid];}
return true;});if(nonCached.length===0){callback.call(this,self._sortGetAssetsResult(assetids,tmpResult));}else{var params={attributes:['name','width','height','size'],type:false,typeIcon:true,linking:['children'],urls:false};AssetManager.getAssets(nonCached,function(assets){dfx.foreach(assets,function(idx){var aid=assets[idx].id;self.assetInfoCache[aid]=assets[idx];tmpResult[aid]=assets[idx];return true;});callback.call(self,self._sortGetAssetsResult(assetids,tmpResult));},false,params);}},_sortGetAssetsResult:function(assetids,results)
{var sortedResult=[];dfx.foreach(assetids,function(idx){sortedResult.push(results[assetids[idx]]);});return sortedResult;},create:function(callback)
{var id=this.id;var c=this.getClass();var wrapper=document.createElement('div');dfx.addClass(wrapper,c);var content='<div id="'+id+'-srchRes" class="'+c+'-srchRes"></div>';content+='<div id="'+id+'-topbar" class="'+c+'-topbar">';content+='<div id="'+id+'-viewButtons" class="'+c+'-viewButtons"></div>';content+='<div id="'+id+'-search" class="'+c+'-search"></div>';content+='</div>';content+='<div id="'+id+'-lineage" class="'+c+'-lineage"></div>';content+='<div id="'+id+'-content" class="'+c+'-content"></div>';content+='<div id="'+id+'-footer" class="'+c+'-footer"></div>';dfx.setHtml(wrapper,content);this.domElem=wrapper;callback.call(this,wrapper);},init:function(screen,callback)
{if(!this.domElem){this.create(function(){});}
if(!dfx.getId(this.id)){document.body.appendChild(this.domElem);}
dfx.setStyle(this.domElem,'display','none');this.screen=screen;var self=this;this.containers.viewButtons=dfx.getClass(this.getClass()+'-viewButtons',this.domElem)[0];dfx.empty(this.containers.viewButtons);this.containers.lineage=dfx.getClass(this.getClass()+'-lineage',this.domElem)[0];dfx.empty(this.containers.lineage);this.containers.content=dfx.getClass(this.getClass()+'-content',this.domElem)[0];dfx.empty(this.containers.content);this.containers.srchRes=dfx.getClass(this.getClass()+'-srchRes',this.domElem)[0];dfx.empty(this.containers.srchRes);this.footer=dfx.getClass(this.getClass()+'-footer',self.domElem)[0];AssetManager.getProject(function(ret){self.projectid=ret.id;self.projects=ret;var folders=ret.folders;var params={attributes:['name'],type:false,typeIcon:true,linking:['children'],urls:false};self.projectFolders=folders;var filtered=self.getLocations();var projectids=[];var siteid=folders.currentSite;if(self.hideSite[self.screen]!==true){projectids.push(siteid);}
dfx.foreach(folders,function(pName){if(dfx.inArray(pName,filtered)===true){projectids.push(folders[pName]);}
return true;});self.getAssets(projectids,function(assets){self.projectFoldersFiltered=assets;self.rootAsset=self.projectid;var includeWidgets=['AssetLineage','ModalDialog'];self.includeWidgets(includeWidgets,function(){self.setupDialog(function(){var hideProject=true;if(parseInt(ret.count,10)>1){hideProject=false;}
self._initLinage(hideProject,function(){self._initViews(0,function(){if(callback){callback.call(self,this.domElem);}});});});});},false,params);});},switchProject:function(projectid,callback)
{var self=this;AssetManager.getProject(function(ret){self.projectid=ret.id;self.projects=ret;var folders=ret.folders;var params={attributes:['name'],type:false,typeIcon:true,linking:['children'],urls:false};if(folders.hasOwnProperty('currentAssetLineage')===true){delete folders.currentAssetLineage;}
self.projectFolders=folders;var filtered=self.getLocations();var projectids=[];var siteid=folders.currentSite;if(self.hideSite[self.screen]!==true){projectids.push(siteid);}
dfx.foreach(folders,function(pName){if(dfx.inArray(pName,filtered)===true){projectids.push(folders[pName]);}
return true;});self.getAssets(projectids,function(assets){self.projectFoldersFiltered=assets;self.rootAsset=self.projectid;for(var type in this.viewWidgets){self.viewWidgets[type].setInitialRoots(filtered);}
if(dfx.isFn(callback)===true){callback.call(self);}},false,params);},projectid);},getLocations:function()
{var locs=[];var folders=this.projectFolders;var exclude=['currentSite','sites','currentAsset','currentAssetLineage'];var whiteList=this.projectWhiteList[this.screen];if(whiteList&&whiteList.length>0){var ln=whiteList.length;for(var i=0;i<ln;i++){if(folders[whiteList[i]]&&!dfx.inArray(whiteList[i],locs)&&dfx.inArray(whiteList[i],exclude)===false){locs.push(whiteList[i]);}}}else{var blackList=this.projectBlackList[this.screen];if(blackList&&blackList.length>0){for(var folder in folders){if(folders.hasOwnProperty(folder)===true){if(blackList.inArray(folder)!==true&&dfx.inArray(folder,exclude)===false){locs.push(folder);}}}}else{for(var folder in folders){if(dfx.inArray(folder,exclude)===false){locs.push(folder);}}}}
return locs;},getLocationsIds:function()
{var locs=this.getLocations();var ln=locs.length;var ids=[];for(var i=0;i<ln;i++){ids.push(this.projectFolders[locs[i]]);}
if(this.hideSite[this.screen]!==true){ids.push(this.projectFolders.currentSite);}
return ids;},setRoot:function(assetid)
{for(var type in this.viewWidgets){this.viewWidgets[type].setLineage([assetid]);}},setCurrentAsset:function(assetid,index)
{for(var type in this.viewWidgets){this.viewWidgets[type].setCurrentAsset(assetid);}},setAutoScrollLineage:function(lineage,screen)
{this.autoScrollLineage[screen]=lineage;},showSearchResults:function(resCount)
{resCount=resCount||0;dfx.setHtml(this.containers.srchRes,'Search Results <span>('+resCount+')</span>');dfx.addClass(this.containers.lineage,'hidden');dfx.removeClass(this.containers.srchRes,'hidden');},showLineage:function()
{dfx.addClass(this.containers.srchRes,'hidden');dfx.removeClass(this.containers.lineage,'hidden');},getSelectLineage:function()
{if(this.lineage){return this.lineage.assets;}else{return[];}},setSiteOnly:function(siteOnly)
{this.siteOnly=siteOnly||false;},_initLinage:function(hideProject,callback)
{var self=this;var assets=[this.projectid];self.lineage=self.createWidget(null,'AssetLineage',this);self.lineage.setAssets(assets);self.lineage.setHideProject(hideProject);self.lineage.create(function(el){self.containers.lineage.appendChild(el);callback.call(self);});self.lineage.addItemClickedEvent(function(assetid){if(parseInt(assetid,10)===parseInt(self.projectid,10)){assetid=self.projectFoldersFiltered[0].id;var scrollLineage=null;if(self.autoScrollLineage.hasOwnProperty(self.screen)===true){scrollLineage=self.autoScrollLineage[self.screen]}
self.viewWidgets.list.initAutoScroll(false,scrollLineage);}else{self.setCurrentAsset(assetid);}
var params={attributes:['name'],type:false,typeIcon:true,linking:[],urls:false};self.getAsset(assetid,function(asset){self._updateCurrentSelection(asset);},false,params);});},_initViews:function(index,callback)
{index=index||0;if(index>=this.viewTypes.length){this.showView(this.viewTypes[0],'list');if(callback){callback.call(this);}}else{var self=this;this._initView(this.viewTypes[index],function(){self._initViews(++index,callback);});}},_initView:function(viewType,callback)
{var self=this;var widgetName='AssetPicker'+dfx.ucFirst(viewType)+'View';this.includeWidget(widgetName,function(){var widget=self.createWidget(null,widgetName,this);self.viewWidgets[viewType]=widget;var buttons=widget.getButtons();var noEvent=false;if(buttons&&buttons._noEvent===true){noEvent=true;delete buttons._noEvent;}
for(var buttonType in buttons){if(buttons.hasOwnProperty(buttonType)===true){self._viewButtons.push({view:viewType,type:buttonType,button:buttons[buttonType]});dfx.addClass(buttons[buttonType],self.getClass()+'-viewButton '+viewType+'_'+buttonType);self.containers.viewButtons.appendChild(buttons[buttonType]);if(noEvent!==true){self._setViewButtonEvent(viewType,buttons[buttonType],buttonType);}}}
widget.addLoaderAction(function(started){if(started===true&&self.dialog){self.dialog.disable(true);}else if(self.dialog){self.dialog.enable();}});widget.addAssetSelectedAction(function(asset){self._updateCurrentSelection(asset);self._syncAssetSelection(asset.id);self.fireItemClickedEvents(asset.id);});widget.addLinageUpdatedAction(function(lineage,selectedAssets){self.lineage.setAssets(lineage);self._syncViewLineages(viewType,lineage,selectedAssets);});widget.addSwitchOffAction(function(){self.showPreviousView();});widget.setInitialRoots(self.getLocationsIds());widget.create(function(el){self.containers.content.appendChild(el);dfx.addClass(el,self.getClass()+'-viewContainer hidden');if(dfx.isset(self.forceShowRoots[self.screen])===false){self.forceShowRoots[self.screen]=false;}
if(self.forceShowRoots[self.screen]===false&&viewType==='list'&&(self.hideTopLevel[self.screen]===true||self.projectFoldersFiltered.length===1)){var cols=dfx.getClass('AssetPickerListViewWidgetType-col',el);dfx.hideElement(cols[0]);}
if(viewType==='list'){var noSelect=false;if(self.noInitialSelect.hasOwnProperty(self.screen)===true){noSelect=self.noInitialSelect[self.screen];}
var scrollLineage=null;if(self.autoScrollLineage.hasOwnProperty(self.screen)===true){scrollLineage=self.autoScrollLineage[self.screen]}
self.viewWidgets.list.initAutoScroll(noSelect,scrollLineage,function(){callback.call(self);});}else{callback.call(self);}});});},_setViewButtonEvent:function(viewType,button,buttonType)
{var self=this;dfx.addEvent(button,'click',function(){self.showView(viewType,buttonType);});},_syncViewLineages:function(view,lineage,selectedAssets)
{for(var v in this.viewWidgets){if(view!==v&&this.viewWidgets.hasOwnProperty(v)===true){this.viewWidgets[v].setLineage(lineage,selectedAssets);}}},showView:function(view,type)
{if(view!=='search'){this.showLineage();}
var buttons=dfx.getClass(this.getClass()+'-viewButton',this.containers.viewButtons);dfx.removeClass(buttons,'active');dfx.removeClass(buttons,'hidden');dfx.addClass(dfx.getClass(view+'_'+type,this.containers.viewButtons),'active');for(var v in this.viewWidgets){if(view!==v&&this.viewWidgets.hasOwnProperty(v)===true){dfx.addClass(this.viewWidgets[v].domElem,'hidden');this.viewWidgets[v].hide(type);}}
dfx.removeClass(this.viewWidgets[view].domElem,'hidden');this.viewWidgets[view].show(type);if(this.currentView.view!==view){this.previousView=this.currentView;}
this.currentView={view:view,type:type};},hideViewButtons:function()
{var ln=this._viewButtons.length;for(var i=0;i<ln;i++){if(this._viewButtons[i].view!=='search'){dfx.addClass(this._viewButtons[i].button,'hidden');}}},showPreviousView:function()
{if(this.previousView&&this.previousView.view){this.showView(this.previousView.view,this.previousView.type);var self=this;var view=this.currentView.view;var assets=this.viewWidgets[view].selectedAssets;var params={attributes:['name'],type:false,typeIcon:true,linking:[],urls:false};this.getAsset(assets[0],function(asset){self._updateCurrentSelection(asset);},false,params);}},_syncAssetSelection:function(assetid)
{var view=this.currentView.view;var assets=this.viewWidgets[view].selectedAssets;for(var v in this.viewWidgets){if(view!==v&&this.viewWidgets.hasOwnProperty(v)===true){if(this.viewWidgets[v].setSelectedAssets){this.viewWidgets[v].setSelectedAssets(assets);}}}},setTitle:function(title)
{this.title=title;},setSubTitle:function(title)
{this.subTitle=title;},setButtonTitle:function(buttonTitle)
{this.buttonTitle=buttonTitle;},setModalSize:function(width,height)
{this.modalWidth=width;this.modalHeight=height;},setupDialog:function(callback)
{if(this.noDialog===true){callback.call(this);return;}
var self=this;var modalDialog=self.createWidget('AssetPickerModalDialog','ModalDialog');modalDialog.setContent(self.domElem);dfx.setStyle(self.domElem,'position','relative');modalDialog.setTitle(self.title);var windowSize=dfx.getWindowDimensions();if(this.modalWidth===null){this.modalWidth=(windowSize.width-100);}
if(this.modalHeight===null){this.modalHeight=(windowSize.height-300);}
modalDialog.setSize(this.modalWidth+'px',this.modalHeight+'px');var listCont=dfx.getId(self.id+'-content');modalDialog.dialogResized=function(width,height){dfx.setStyle(listCont,'height',(parseInt(height)-65)+'px');};modalDialog.create(function(div){modalDialog.setSubTitle(self.subTitle,true);if(self.footerContent){modalDialog.setFooterContent(self.footerContent,self.footerClass);}
var body=dfx.getId(this.id);self.addDialogEvents(modalDialog);self.dialog=modalDialog;if(dfx.isFn(callback)===true){callback.call(self);}});},setDialog:function(modalDialog)
{this.dialog=modalDialog;},addDialogEvents:function(modalDialog)
{modalDialog=modalDialog||this.modalDialog;var self=this;modalDialog.addOnOpenCallback(function(){dfx.setStyle(self.domElem,'visibility','hidden');dfx.setStyle(self.domElem,'display','block');setTimeout(function(){modalDialog.adjustOrientation();dfx.showElement(self.domElem);self.fireOpenActions();},100);});modalDialog.addOnCloseCallback(function(){self.assetInfoCache={};self.assetChildrenInfoCache={};self.fireCloseActions();});modalDialog.addButton(self.buttonTitle,function(btnWidgt){self.selectButtonWdgt=btnWidgt;btnWidgt.addClickEvent(function(){if(self.saveButtonCheck===true){var saveBtn=WidgetStore.get('EditingSaveButton');var answer=true;if(saveBtn.isEnabled()===true){answer=confirm(WidgetStore.getUnsavedChangesStr());}
if(answer===true){self.fireAssetsSelectedActions();modalDialog.close();}}else{self.fireAssetsSelectedActions();modalDialog.close();}});});var btmMid=dfx.getClass('ModalDialogWidgetType-buttons-center',modalDialog.domElem)[0];dfx.setStyle(btmMid,'height','37px');var currentSelection=document.createElement('div');dfx.addClass(currentSelection,self.widgetType+'-currentSelectionWrap');var content='<div class="'+self.widgetType+'-currentSelectionLabel">Current Selection&nbsp;&nbsp;"</div>';content+='<div class="'+self.widgetType+'-currentSelectionIcon">&nbsp;</div>';content+='<div class="'+self.widgetType+'-currentSelectionTitle">&nbsp;</div>';content+='<div class="'+self.widgetType+'-currentSelectionLabel right">"</div>';dfx.setHtml(currentSelection,content);dfx.hideElement(currentSelection);btmMid.appendChild(currentSelection);self.currentSelection=currentSelection;self.currentSelectionIcon=dfx.getClass(self.widgetType+'-currentSelectionIcon',currentSelection)[0];self.currentSelectionTitle=dfx.getClass(self.widgetType+'-currentSelectionTitle',currentSelection)[0];dfx.setStyle(dfx.getId('AssetPickerModalDialog-buttons-1'),'margin-top','10px');},showCurrentSelectionInfo:function()
{if(this.currentSelection){dfx.showElement(this.currentSelection);}},hideCurrentSelectionInfo:function()
{if(this.currentSelection){dfx.hideElement(this.currentSelection);}},_updateCurrentSelection:function(asset)
{if(!this.currentSelectionTitle){return;}
var view=this.currentView.view;var widget=this.viewWidgets[view];var count=widget.selectedAssets.length;var iconUrl=asset.iconUrl;if(count>1){iconUrl=this.url+'?typeIcon=asset&size=small';dfx.setHtml(this.currentSelectionTitle,count+' Assets');}else{dfx.setHtml(this.currentSelectionTitle,dfx.ellipsize(asset.name,20)+' <span class="AssetPickerDialog-currentSelectionTitle-assetid">[#'+dfx.ellipsize((asset.id).toString(),10)+']</span>');this.currentSelectionTitle.setAttribute('title',asset.name);}
dfx.showElement(this.currentSelection);dfx.setStyle(this.currentSelectionIcon,'backgroundImage','url('+iconUrl+')');this.fireSelectionChanged(asset);},show:function()
{this.displayDisabledDiv(false);var disabledDiv=dfx.getId('_disabledDiv');dfx.setStyle(disabledDiv,'backgroundColor','#000');dfx.setOpacity(disabledDiv,'0.45');dfx.showElement(this.domElem);this.adjustOrientation();},hide:function()
{var disabledDiv=dfx.getId('_disabledDiv');dfx.setStyle(disabledDiv,'backgroundColor','#FFF');dfx.setOpacity(disabledDiv,'0.8');this.removeDisabledDiv();dfx.hideElement(this.domElem);},disableSelectButton:function()
{this.selectButtonWdgt.disable();},enableSelectButton:function()
{this.selectButtonWdgt.enable();},setView:function(screen,view)
{this.screenViews[screen]=view;},setSaveButtonCheck:function(saveButtonCheck)
{this.saveButtonCheck=saveButtonCheck;},setHideSite:function(screen,hideSite)
{if(dfx.isset(hideSite)===false){hideSite=true;}
this.hideSite[screen]=hideSite;},setNoInitialSelect:function(screen)
{this.noInitialSelect[screen]=true;},setHideTopLevel:function(screen)
{this.hideTopLevel[screen]=true;},setUniqueSelect:function(option)
{this.uniqueSelect=option;},addProjectFolderBlackList:function(screen,projectName)
{if(dfx.isset(this.projectBlackList[screen])===false){this.projectBlackList[screen]=[];}
if(dfx.inArray(projectName,this.projectBlackList[screen])===false){this.projectBlackList[screen].push(projectName);}},addProjectFolderWhiteList:function(screen,projectName)
{if(dfx.isset(this.projectWhiteList[screen])===false){this.projectWhiteList[screen]=[];}
if(dfx.inArray(projectName,this.projectWhiteList[screen])===false){this.projectWhiteList[screen].push(projectName);}},resetProjectFolderList:function(screen)
{this.projectWhiteList[screen]=[];this.projectBlackList[screen]=[];},getSelectedAssets:function()
{var assets=[];var widget=this.viewWidgets[this.currentView.view];if(widget){assets=widget.getSelectedAssets().sort();}
return assets;},setScreen:function(screen)
{this.screen=screen;},setClass:function(screen,className)
{this.screenClass[screen]=className;},_setClass:function(screen)
{for(var s in this.screenClass){if(s!==screen&&this.screenClass.hasOwnProperty(s)===true){dfx.removeClass(this.domElem,this.screenClass[s]);}}
dfx.addClass(this.domElem,this.screenClass[screen]);},showFooter:function(height)
{this.dialog.showFooter(height);},hideFooter:function()
{this.dialog.hideFooter();},setFooterContent:function(el,className)
{if(this.dialog){this.dialog.setFooterContent(el,className);}
this.footerContent=el;this.footerClass=className;},addAssetsSelectedAction:function(fn,reset,screenid)
{var screen=this.screen;if(dfx.isset(screenid)===true){screen=screenid;}
if(dfx.isset(this.assetsSelectedActions[screen])===false){this.assetsSelectedActions[screen]=[];}
if(reset===true){this.assetsSelectedActions[screen]=[];}
this.assetsSelectedActions[screen].push(fn);},fireAssetsSelectedActions:function()
{var aLen=this.assetsSelectedActions[this.screen].length;for(var i=0;i<aLen;i++){this.assetsSelectedActions[this.screen][i].call(this,this.getSelectedAssets());}
this._setTitles();},addSelectionChangedAction:function(fn,reset,screenid)
{var screen=this.screen;if(dfx.isset(screenid)===true){screen=screenid;}
if(dfx.isset(this.selectionChangedActions[screen])===false){this.selectionChangedActions[screen]=[];}
if(reset===true){this.selectionChangedActions[screen]=[];}
this.selectionChangedActions[screen].push(fn);},fireSelectionChanged:function(selectedAssets)
{if(this.selectionChangedActions[this.screen]){var aLen=this.selectionChangedActions[this.screen].length;for(var i=0;i<aLen;i++){this.selectionChangedActions[this.screen][i].call(this,selectedAssets);}}},addCloseAction:function(fn,reset,screenid)
{var screen=this.screen;if(dfx.isset(screenid)===true){screen=screenid;}
if(dfx.isset(this.closeActions[screen])===false){this.closeActions[screen]=[];}
if(reset===true){this.closeActions[screen]=[];}
this.closeActions[screen].push(fn);},fireCloseActions:function()
{if(this.closeActions[this.screen]){var aLen=this.closeActions[this.screen].length;for(var i=0;i<aLen;i++){this.closeActions[this.screen][i].call(this);}}
this._setTitles();},addOpenAction:function(fn,reset,screenid)
{var screen=this.screen;if(dfx.isset(screenid)===true){screen=screenid;}
if(dfx.isset(this.openActions[screen])===false){this.openActions[screen]=[];}
if(reset===true){this.openActions[screen]=[];}
this.openActions[screen].push(fn);},fireOpenActions:function()
{if(this.openActions[this.screen]){var aLen=this.openActions[this.screen].length;for(var i=0;i<aLen;i++){this.openActions[this.screen][i].call(this);}}},addItemClickedEvent:function(fn,reset)
{if(dfx.isset(this.itemClickedEvents[this.screen])===false){this.itemClickedEvents[this.screen]=[];}
if(reset===true){this.itemClickedEvents[this.screen]=[];}
this.itemClickedEvents[this.screen].push(fn);},fireItemClickedEvents:function(itemid,type,e)
{if(dfx.isset(this.itemClickedEvents[this.screen])===true){var aLen=this.itemClickedEvents[this.screen].length;for(var i=0;i<aLen;i++){this.itemClickedEvents[this.screen][i].call(this,itemid,type,e);}}}};dfx.inherits('AssetPickerDialog','Overlay');function ErrorDialogWidgetType(id,titleDivId,buttonHolderId,buttons)
{OverlayWidgetType.call(this,id);this.widgetType='ErrorDialog';this.containers={};this.modalTitle='';this.modalSubTitle='';this.parentDialog=null;this.content=null;this.dynamicParams=null;this.buttons=[];this.numOfButtons=0;this.onOpenCallbacks=[];this.onCloseCallbacks=[];this.closeConfirm=false;this.closeConfirmTitle='';this.closeConfirmText='';this.dims={width:'452px',height:'120px'};}
ErrorDialogWidgetType.openDialogs={};ErrorDialogWidgetType.count=0;ErrorDialogWidgetType.currentDialogId=null;ErrorDialogWidgetType.getCurrentDialog=function()
{if(ErrorDialogWidgetType.currentDialogId!==null){return ErrorDialogWidgetType.openDialogs[ErrorDialogWidgetType.currentDialogId];}
return null;};ErrorDialogWidgetType.registerOpenDialog=function(dialog)
{ErrorDialogWidgetType.count++;if(ErrorDialogWidgetType.currentDialogId!==null){dialog.parentDialog=ErrorDialogWidgetType.openDialogs[ErrorDialogWidgetType.currentDialogId];}
ErrorDialogWidgetType.currentDialogId=dialog.id;var div=document.getElementById(dialog.id);dfx.setStyle(div,'z-index',(1000+ErrorDialogWidgetType.count));ErrorDialogWidgetType.openDialogs[dialog.id]=dialog;};ErrorDialogWidgetType.removeOpenDialog=function(dialog)
{ErrorDialogWidgetType.count--;dfx.remove(dialog.el);delete ErrorDialogWidgetType.openDialogs[dialog.id];delete dialog;};ErrorDialogWidgetType.prototype={create:function(callback,noAppend)
{noAppend=noAppend||false;var main=document.createElement('div');this.el=main;main.id=this.id;var c=this.getClass();dfx.addClass(main,c);this.domElem=main;var content='<div class="'+c+'-top">';content+='<div class="'+c+'-top-left"></div>';content+='<div class="'+c+'-top-right"></div>';content+='<div class="'+c+'-top-mid">';content+='<div>';content+='<img class="'+c+'-icon"></imc>';content+='<div class="'+c+'-title">'+this.modalTitle+'</div>';content+='<div class="'+c+'-subtitle">'+this.modalSubTitle+'</div>';content+='</div>';content+='</div>';content+='</div>';content+='<div class="'+c+'-mid">';content+='<div class="'+c+'-mid-left"></div>';content+='<div class="'+c+'-mid-right"></div>';content+='<div class="'+c+'-mid-center" id="'+this.id+'-mid-center"></div>';content+='</div>';content+='<div class="'+c+'-footer">';content+='<div class="'+c+'-footer-left"></div>';content+='<div class="'+c+'-footer-right"></div>';content+='<div class="'+c+'-footer-center"></div>';content+='</div>';content+='<div class="'+c+'-buttons">';content+='<div class="'+c+'-buttons-left"></div>';content+='<div class="'+c+'-buttons-right"></div>';content+='<div class="'+c+'-buttons-center"></div>';content+='</div>';content+='<div class="'+c+'-bottom"><div class="'+c+'-bottom-left"></div><div class="'+c+'-bottom-right"></div><div class="'+c+'-bottom-center"></div></div>';dfx.setHtml(main,content);var contWrapper=dfx.getClass(c+'-mid',main)[0];var bodyContainer=dfx.getClass(c+'-mid-center',main)[0];var titleContainer=dfx.getClass(c+'-title',main)[0];var subTitleContiner=dfx.getClass(c+'-subtitle',main)[0];var iconContainer=dfx.getClass(c+'-icon',main)[0];var buttonsContainer=dfx.getClass(c+'-buttons-center',main)[0];var topContainer=dfx.getClass(c+'-top',main)[0];var footer=dfx.getClass(c+'-footer',main)[0];var footerContent=dfx.getClass(c+'-footer-center',main)[0];this.containers={body:bodyContainer,title:titleContainer,subTitle:subTitleContiner,icon:iconContainer,buttons:buttonsContainer,contWrapper:contWrapper,footer:footer,footerContent:footerContent};this.setSize(this.dims.width,this.dims.height);jQuery(main).draggable({handle:topContainer});var self=this;bodyContainer.appendChild(this.content);if(noAppend!==true){document.body.appendChild(main);}
dfx.setStyle(main,'visibility','hidden');callback.call(self,main);},update:function(callback)
{var self=this;this.disable(true);self.adjustOrientation();self.enable();},setTitle:function(title,now)
{this.modalTitle=title;if(now===true&&this.containers.title){dfx.setHtml(this.containers.title,this.modalTitle);}},setContent:function(el)
{this.content=el;if(this.containers.body){dfx.empty(this.containers.body);this.containers.body.appendChild(el);}},open:function()
{ErrorDialogWidgetType.registerOpenDialog(this);if(ErrorDialogWidgetType.count===1){this.displayDisabledDiv(false);}
this.adjustOrientation();this.fireOnOpenCallbacks();},show:function()
{dfx.setStyle(this.el,'display','block');dfx.setStyle(this.el,'visibility','visible');},close:function(win,force)
{if(this.closeConfirm===true&&dfx.isset(force)===false){var self=this;this.confirmDialog(this.closeConfirmText,this.closeConfirmTitle,function(){self.close(win,true);});}else{if(dfx.isset(force)===false||force===true){ErrorDialogWidgetType.removeOpenDialog(this);if(ErrorDialogWidgetType.count===0){this.removeDisabledDiv();}
this.fireOnCloseCallbacks(win);}}},adjustOrientation:function()
{var self=this;setTimeout(function(){var h=dfx.getElementHeight(self.el);var w=dfx.getElementWidth(self.el);dfx.setStyle(self.el,'margin-top',((h/2)*(-1))+'px');dfx.setStyle(self.el,'margin-left',((w/2)*(-1))+'px');dfx.setStyle(self.el,'visibility','visible');},100);},addOnOpenCallback:function(fn)
{this.onOpenCallbacks.push(fn);},addOnCloseCallback:function(fn)
{if(dfx.isFn(fn)===true){this.onCloseCallbacks.push(fn);}},fireOnOpenCallbacks:function()
{var len=this.onOpenCallbacks.length;for(var i=0;i<len;i++){this.onOpenCallbacks[i].call(this);}},fireOnCloseCallbacks:function(win)
{var len=this.onCloseCallbacks.length;for(var i=0;i<len;i++){this.onCloseCallbacks[i].call(this,win);}},disable:function(loader)
{loader=loader||false;this.disableButtons();this.hideCloseButton();this.displayDisabledDiv(loader,dfx.getClass(this.getClass()+'-mid-center',this.el)[0],'white','absolute');},enable:function()
{this.enableButtons();this.showCloseButton();this.removeDisabledDiv(dfx.getClass(this.getClass()+'-mid-center',this.el)[0]);},disableParentDialog:function()
{if(this.parentDialog!==null){this.parentDialog.disable();}},enableParentDialog:function()
{if(this.parentDialog!==null){this.parentDialog.enable();}},addButton:function(title,callback)
{var self=this;this.numOfButtons++;this.includeWidget('Button',function(){var buttonWidget=self.createWidget(self.id+'-buttons-'+self.numOfButtons,'Button','ButtonWidgetType',false,title);buttonWidget.create(function(div){self.containers.buttons.appendChild(div);self.buttons.push(buttonWidget);dfx.setStyle(buttonWidget.content,'width','100px');if(dfx.isFn(callback)===true){callback.call(self,buttonWidget);}});});},disableButtons:function()
{var bln=this.buttons.length;for(var i=0;i<bln;i++){this.buttons[i].disable();}},enableButtons:function()
{var bln=this.buttons.length;for(var i=0;i<bln;i++){this.buttons[i].enable();}},hideButtonsPanel:function()
{dfx.addClass(dfx.getClass('ErrorDialogWidgetType-buttons',this.el),'hidden');},showButtonsPanel:function()
{dfx.removeClass(dfx.getClass('ErrorDialogWidgetType-buttons',this.el),'hidden');},setSize:function(width,height)
{this.dims={width:width,height:height}
if(this.el){dfx.setStyle(this.el,'width',width);dfx.setStyle(this.containers.contWrapper,'height',height);this.dialogResized(width,height);}},dialogResized:function(width,height){},showFooter:function()
{dfx.addClass(this.containers.footer,'active');},hideFooter:function()
{dfx.removeClass(this.containers.footer,'active');},setFooterContent:function(el,className)
{dfx.empty(this.containers.footerContent);this.containers.footerContent.appendChild(el);if(className){dfx.addClass(this.containers.footer,className);}}};dfx.inherits('ErrorDialog','Overlay');function ModalDialogWidgetType(id,titleDivId,buttonHolderId,buttons)
{OverlayWidgetType.call(this,id);this.widgetType='ModalDialog';this.containers={};this.modalTitle='';this.modalSubTitle='';this.parentDialog=null;this.content=null;this.dynamicParams=null;this.useDynamicContent=false;this.buttons=[];this.numOfButtons=0;this.onOpenCallbacks=[];this.onCloseCallbacks=[];this.closeConfirm=false;this.closeConfirmTitle='';this.closeConfirmText='';this.allowResize=true;this.dims={width:'710px',height:'300px'};}
ModalDialogWidgetType.openDialogs={};ModalDialogWidgetType.count=0;ModalDialogWidgetType.currentDialogId=null;ModalDialogWidgetType.getCurrentDialog=function()
{if(ModalDialogWidgetType.currentDialogId!==null){return ModalDialogWidgetType.openDialogs[ModalDialogWidgetType.currentDialogId];}
return null;};ModalDialogWidgetType.registerOpenDialog=function(dialog)
{ModalDialogWidgetType.count++;if(ModalDialogWidgetType.currentDialogId!==null){dialog.parentDialog=ModalDialogWidgetType.openDialogs[ModalDialogWidgetType.currentDialogId];}
ModalDialogWidgetType.currentDialogId=dialog.id;var div=document.getElementById(dialog.id);dfx.setStyle(div,'z-index',(1000+ModalDialogWidgetType.count));ModalDialogWidgetType.openDialogs[dialog.id]=dialog;};ModalDialogWidgetType.removeOpenDialog=function(dialog)
{ModalDialogWidgetType.count--;dfx.remove(dialog.el);delete ModalDialogWidgetType.openDialogs[dialog.id];delete dialog;};ModalDialogWidgetType.prototype={create:function(callback,noAppend)
{noAppend=noAppend||false;var main=document.createElement('div');this.el=main;main.id=this.id;var c=this.getClass();dfx.addClass(main,c);this.domElem=main;var content='<div class="'+c+'-top">';content+='<div class="'+c+'-top-left"></div>';content+='<div class="'+c+'-top-right"></div>';content+='<div class="'+c+'-top-mid"><div class="'+c+'-top-close" title="Close"></div>';content+='<div>';content+='<img class="'+c+'-icon"></imc>';content+='<div class="'+c+'-title">'+this.modalTitle+'</div>';content+='<div class="'+c+'-subtitle">'+this.modalSubTitle+'</div>';content+='</div>';content+='</div>';content+='</div>';content+='<div class="'+c+'-mid">';content+='<div class="'+c+'-mid-left"></div>';content+='<div class="'+c+'-mid-right"></div>';content+='<div class="'+c+'-mid-center" id="'+this.id+'-mid-center"></div>';content+='</div>';content+='<div class="'+c+'-footer">';content+='<div class="'+c+'-footer-left"></div>';content+='<div class="'+c+'-footer-right"></div>';content+='<div class="'+c+'-footer-center"></div>';content+='</div>';content+='<div class="'+c+'-buttons">';content+='<div class="'+c+'-buttons-left"></div>';content+='<div class="'+c+'-buttons-right"></div>';content+='<div class="'+c+'-buttons-center"></div>';content+='</div>';content+='<div class="'+c+'-bottom"><div class="'+c+'-bottom-left"></div><div class="'+c+'-bottom-right"></div><div class="'+c+'-bottom-center"></div></div>';dfx.setHtml(main,content);var contWrapper=dfx.getClass(c+'-mid',main)[0];var bodyContainer=dfx.getClass(c+'-mid-center',main)[0];var closeContainer=dfx.getClass(c+'-top-close',main)[0];var titleContainer=dfx.getClass(c+'-title',main)[0];var subTitleContiner=dfx.getClass(c+'-subtitle',main)[0];var iconContainer=dfx.getClass(c+'-icon',main)[0];var buttonsContainer=dfx.getClass(c+'-buttons-center',main)[0];var topContainer=dfx.getClass(c+'-top',main)[0];var footer=dfx.getClass(c+'-footer',main)[0];var footerContent=dfx.getClass(c+'-footer-center',main)[0];this.containers={body:bodyContainer,closeBtn:closeContainer,title:titleContainer,subTitle:subTitleContiner,icon:iconContainer,buttons:buttonsContainer,contWrapper:contWrapper,footer:footer,footerContent:footerContent};this.setSize(this.dims.width,this.dims.height);jQuery(main).draggable({handle:topContainer});if(this.allowResize===true){this.enableResize(main,contWrapper,{handles:dfx.getClass(this.getClass()+'-bottom-right',main)[0],minWidth:parseInt(this.dims.width),minHeight:parseInt(this.dims.height)});}
var self=this;if(this.useDynamicContent===true){this.includeWidgets(['DynamicDiv','Button'],function(){var dynamicDiv=self.createWidget(this.id+'-dynamicDiv','DynamicDiv');dynamicDiv.create(function(el){bodyContainer.appendChild(el);if(noAppend!==true){document.body.appendChild(main);}
dfx.addEvent(closeContainer,'click',function(){self.close(true);});dfx.setStyle(main,'visibility','hidden');self.dynamicParams.mode='ModalDialogRequest';dynamicDiv.changeContent(self.dynamicParams,function(data){if(dfx.isFn(callback)===true){callback.call(self,main);return;}});});});}else if(dfx.isFn(callback)===true){bodyContainer.appendChild(this.content);if(noAppend!==true){document.body.appendChild(main);}
dfx.setStyle(main,'visibility','hidden');dfx.addEvent(closeContainer,'click',function(){self.close(true);});this.includeWidget('Button',function(){callback.call(self,main);return;});}},update:function(callback)
{var self=this;this.disable(true);if(this.useDynamicContent===true){this.dynamicParams.mode='ModalDialogRequest';var dynamicDiv=WidgetStore.get(this.id+'-dynamicDiv');dfx.setHtml(this.containers.title,this.modalTitle);dynamicDiv.changeContent(this.dynamicParams,function(data){if(dfx.isFn(callback)===true){callback.call(self,div);}
self.adjustOrientation();self.enable();});}else{self.adjustOrientation();self.enable();}},setTitle:function(title,now)
{this.modalTitle=title;if(now===true&&this.containers.title){dfx.setHtml(this.containers.title,this.modalTitle);}},setSubTitle:function(title,now)
{this.modalSubTitle=title;if(now===true&&this.containers.subTitle){dfx.setHtml(this.containers.subTitle,this.modalSubTitle);}},setIcon:function(icon)
{if(icon){this.iconUrl=icon;this.containers.icon.setAttribute('src',icon);dfx.addClass(this.containers.icon,'active');}else{dfx.removeClass(this.containers.icon,'active');}},setContent:function(el)
{this.useDynamicContent=false;this.content=el;if(this.containers.body){dfx.empty(this.containers.body);this.containers.body.appendChild(el);}},setDynamicParams:function(params)
{this.useDynamicContent=true;this.dynamicParams=params;},open:function(callback)
{ModalDialogWidgetType.registerOpenDialog(this);if(ModalDialogWidgetType.count===1){this.displayDisabledDiv(false);}
this.adjustOrientation(callback);this.fireOnOpenCallbacks();},show:function()
{dfx.setStyle(this.el,'display','block');dfx.setStyle(this.el,'visibility','visible');},close:function(win,force)
{if(this.closeConfirm===true&&dfx.isset(force)===false){var iwid=this.id+'_closeConfirm';var iw=WidgetStore.get(iwid);if(iw){iw.show(this.containers.closeBtn,'fixed');return;}
var self=this;self.includeWidget('Intervention',function(){iw=self.createWidget(iwid,'Intervention',function(){iw.close();},function(){WidgetStore.remove(iwid);self.close(win,true);});iw.create(function(){iw.setSize('250px','61px');iw.setMessage('Are you sure you want to close this window?');iw.show(self.containers.closeBtn,'fixed');});});}else{if(dfx.isset(force)===false||force===true){ModalDialogWidgetType.removeOpenDialog(this);if(ModalDialogWidgetType.count===0){this.removeDisabledDiv();}
this.fireOnCloseCallbacks(win);}}},adjustOrientation:function(callback)
{var self=this;setTimeout(function(){var h=dfx.getElementHeight(self.el);var w=dfx.getElementWidth(self.el);dfx.setStyle(self.el,'margin-top',((h/2)*(-1))+'px');dfx.setStyle(self.el,'margin-left',((w/2)*(-1))+'px');dfx.setStyle(self.el,'visibility','visible');if(callback){callback.call(self);}},100);},addOnOpenCallback:function(fn)
{this.onOpenCallbacks.push(fn);},addOnCloseCallback:function(fn)
{if(dfx.isFn(fn)===true){this.onCloseCallbacks.push(fn);}},fireOnOpenCallbacks:function()
{var len=this.onOpenCallbacks.length;for(var i=0;i<len;i++){this.onOpenCallbacks[i].call(this);}},fireOnCloseCallbacks:function(win)
{var len=this.onCloseCallbacks.length;for(var i=0;i<len;i++){this.onCloseCallbacks[i].call(this,win);}},disable:function(loader)
{loader=loader||false;this.disableButtons();this.hideCloseButton();this.displayDisabledDiv(loader,dfx.getClass(this.getClass()+'-mid-center',this.el)[0],'white','absolute');},enable:function()
{this.enableButtons();this.showCloseButton();this.removeDisabledDiv(dfx.getClass(this.getClass()+'-mid-center',this.el)[0]);},disableParentDialog:function()
{if(this.parentDialog!==null){this.parentDialog.disable();}},enableParentDialog:function()
{if(this.parentDialog!==null){this.parentDialog.enable();}},addButton:function(title,callback)
{var self=this;this.numOfButtons++;this.includeWidget('Button',function(){var buttonWidget=self.createWidget(self.id+'-buttons-'+self.numOfButtons,'Button','ButtonWidgetType',false,title);buttonWidget.create(function(div){self.containers.buttons.appendChild(div);dfx.addClass(div,self.getClass()+'-dialogButton');self.buttons.push(buttonWidget);if(dfx.isFn(callback)===true){callback.call(self,buttonWidget);}});});},disableButtons:function()
{var bln=this.buttons.length;for(var i=0;i<bln;i++){this.buttons[i].disable();}},enableButtons:function()
{var bln=this.buttons.length;for(var i=0;i<bln;i++){this.buttons[i].enable();}},hideCloseButton:function()
{dfx.setStyle(this.containers.closeBtn,'display','none');},showCloseButton:function()
{dfx.setStyle(this.containers.closeBtn,'display','block');},hideButtonsPanel:function()
{dfx.addClass(dfx.getClass('ModalDialogWidgetType-buttons',this.el),'hidden');},showButtonsPanel:function()
{dfx.removeClass(dfx.getClass('ModalDialogWidgetType-buttons',this.el),'hidden');},setSize:function(width,height)
{this.dims={width:width||this.dims.width,height:height||this.dims.height};if(this.el){dfx.setStyle(this.el,'width',width);dfx.setStyle(this.containers.contWrapper,'height',height);this.dialogResized(width,height);}},enableResize:function(widthElem,heightElem,options,start,stop)
{start=start||function(){};stop=stop||function(){};options=options||{};var self=this;dfx.addEvent(options.handles,'mousedown.modalResize',function(de){start.call(this);var width=dfx.getElementWidth(widthElem);var height=dfx.getElementHeight(heightElem);var startMPos=dfx.getMouseEventPosition(de);dfx.addEvent(document,'mousemove.modalResize',function(me){var mpos=dfx.getMouseEventPosition(me);var wdiff=(mpos.x-startMPos.x);var nwidth=(width+wdiff);var changed=false;if(nwidth>=options.minWidth){dfx.setStyle(widthElem,'width',(nwidth+'px'));changed=true;}else{nwidth=options.minWidth;}
var hdiff=(mpos.y-startMPos.y);var nheight=(height+hdiff);if(nheight>=options.minHeight){dfx.setStyle(heightElem,'height',(nheight+'px'));changed=true;}else{nheight=options.minHeight;}
if(changed===true){self.dialogResized(nwidth,nheight);}});dfx.addEvent(document,'mouseup.modalResize',function(){stop.call(this);dfx.removeEvent(document,'mousemove.modalResize');dfx.removeEvent(document,'mouseup.modalResize');});});},dialogResized:function(width,height){},showFooter:function(height)
{dfx.addClass(this.containers.footer,'active');if(height){dfx.setStyle(this.containers.footer,'height',height);}},hideFooter:function()
{dfx.removeClass(this.containers.footer,'active');},setFooterContent:function(el,className)
{dfx.empty(this.containers.footerContent);this.containers.footerContent.appendChild(el);if(className){dfx.addClass(this.containers.footer,className);}}};dfx.inherits('ModalDialog','Overlay');function ImageVersioningWidgetType(id,assetid,version,fileName,fileSize,imgWidth,imgHeight,hasImage)
{this.fileName=fileName;this.fileSize=fileSize;this.imgWidth=parseInt(imgWidth);this.imgHeight=parseInt(imgHeight);this.resizeWidth=972;this.hasImage=hasImage;FileVersioningWidgetType.call(this,id,assetid,version);this.widgetType='ImageVersioning';}
ImageVersioningWidgetType.prototype={init:function()
{this.widgetType='ImageVersioning';this.createBox();},createBox:function()
{var c='ImageVersioningWidgetType';var content='';content+='<div style="padding:10px;">';if(dfx.isNumeric(this.fileSize)===true){this.fileSize=parseInt(this.fileSize);var showResized=false;if(this.imgWidth>dfx.getWindowDimensions().width||this.fileSize>409600){showResized=true;}
this.fileSize=dfx.readableSize(this.fileSize)}
var self=this;this.createButton(function(buttonEl){dfx.addClass(buttonEl,'VersioningDownloadThisButton');if(showResized===true){var fileSize=self.fileSize+', '+self.imgWidth+' x '+self.imgHeight+' pixels';fileSize+=' (image resized for preview)';content+='<div id="'+self.id+'-top-resized" class="'+c+'-top-resized">';content+='<div class="'+c+'-top-resized-left">Large Image</div>';content+='<div class="'+c+'-top-resized-main">';content+='<div class="'+c+'-top-resized-main-left">';content+='<div class="'+c+'-top-left-name">'+self.fileName+'</div>';content+='<div class="'+c+'-top-left-size">'+fileSize+'</div>';content+='</div>';content+='<div class="'+c+'-top-right">';content+='</div>';content+='</div>';content+='</div>';}else{content+='<div id="'+self.id+'-top" class="'+c+'-top">';content+='<div class="'+c+'-top-left">';content+='<div class="'+c+'-top-left-name">'+self.fileName+'</div>';content+='<div class="'+c+'-top-left-size">'+self.fileSize+'</div>';content+='</div>';content+='<div class="'+c+'-top-right">';content+='</div>';content+='</div>';}
var qs='?widget='+self.getWidgetType()+'WidgetType&action=getImg&assetid='+self.assetid+'&version='+self.version;qs+='&r='+showResized;var imageURL=self.url+qs;dfx.getImage(imageURL,function(image){content+='<div id="'+self.id+'-bottom" class="'+c+'-bottom">';content+='</div>';content+='</div>';var elem=dfx.getId(self.id);dfx.setHtml(elem,content);if(image){dfx.getClass(c+'-bottom',elem)[0].appendChild(image);}else{var tmp=document.createElement('div');dfx.addClass(tmp,c+'-noSS');dfx.setHtml(tmp,'Screenshot for this version is not available');dfx.getClass(c+'-bottom',elem)[0].appendChild(tmp);}
dfx.getClass(c+'-top-right',elem)[0].appendChild(buttonEl);if(showResized===true){dfx.setStyle(elem,'width',self.resizeWidth+'px');}else if(image){dfx.setStyle(elem,'width',(image.width+22)+'px');}
if(this.imgWidth<this.resizeWidth){dfx.addClass(dfx.getClass(c+'-bottom',elem)[0],c+'-sm');}});});},createButton:function(callback)
{var self=this;this.includeWidget('Button',function(el){var button=self.createWidget(self.id+'_dl','Button','ButtonWidgetType',false,'Download this Version');if(self.hasImage===false){button.disable();}
button.create(function(el){self.addDownloadButtonClickEvent(button);callback.call(self,el);});});},getWidgetType:function()
{return'ImageVersioning';}};dfx.inherits('ImageVersioning','FileVersioning');function WorkflowTaskContainerWidgetType(id,collapsed,ani,taskid,userName)
{AdhocTaskContainerWidgetType.call(this,id,collapsed,ani,taskid,userName);this.widgetType='WorkflowTaskContainer';}
WorkflowTaskContainerWidgetType.prototype={init:function()
{this.approveButtonEvent();this.rejectButtonEvent();this.reassignButtonEvent();},approveButtonEvent:function()
{var approve=WidgetStore.get(this.id+'-action:approve');if(dfx.isset(approve)===true){var self=this;approve.addClickEvent(function(){self.approveTask();});}},approveTask:function()
{var self=this;this.sendAction('approve',null,function(data){if(data==='1'){dfx.remove(self.domElem);}else{alert('Failed to approve task');}});},rejectButtonEvent:function()
{var button=WidgetStore.get(this.id+'-action:reject');if(dfx.isset(button)===true){var self=this;button.addClickEvent(function(){self.rejectTask();});}},rejectTask:function()
{var self=this;this.sendAction('reject',null,function(data){if(data==='1'){dfx.remove(self.domElem);}else{alert('Failed to reject task');}});}};dfx.inherits('WorkflowTaskContainer','AdhocTaskContainer');function MenuTabPaneWidgetType(id,orientation,tabChangeInfo)
{DynamicTabPaneWidgetType.call(this,id,orientation,tabChangeInfo);this.widgetType='MenuTabPane';this.activeClass='MenuTabPaneWidgetType-tab-icon';this.inactiveClass='MenuTabPaneWidgetType-tab-icon-inactive';var elems=dfx.getClass('MenuTabPaneWidgetType-tab',dfx.getId(this.id));this.tabElems=elems;var ln=elems.length;for(var i=0;i<ln;i++){this.hoverEvent(elems[i],i);}
var self=this;this.addOnSelectHandler(function(index,prevIndex){self.displayDisabledDiv(true);var saveBtn=WidgetStore.get('EditingSaveButton');if(saveBtn.isEnabled()===true){var answer=confirm(WidgetStore.getUnsavedChangesStr());if(answer===false){self.removeDisabledDiv();return false;}}
var prevTab=this.tabElements[prevIndex];if(dfx.isset(prevTab)===true&&prevIndex!==index){dfx.swapClass(prevTab.firstChild,self.activeClass,self.inactiveClass);}
var currTab=this.tabElements[index];if(dfx.isset(currTab)===true){dfx.swapClass(currTab.firstChild,self.inactiveClass,self.activeClass);}});}
MenuTabPaneWidgetType.prototype={hoverEvent:function(elem,idx)
{var self=this;dfx.hover(elem,function(e){if(dfx.isset(self.blockedTabs[idx])&&self.blockedTabs[idx]===true){return;}
dfx.swapClass(elem.firstChild,self.inactiveClass,self.activeClass);},function(e){if(dfx.isset(self.blockedTabs[idx])&&self.blockedTabs[idx]===true){return;}
if(dfx.hasClass(elem,'MenuTabPaneWidgetType-o-top-tab-selected')===false){dfx.swapClass(elem.firstChild,self.activeClass,self.inactiveClass);}});},showScreen:function(screenid,data,force)
{if(!screenid){return;}
var index=this.getScreenIndex(screenid);if(index!==false){this.showTab(index,data,force);}},getScreenIndex:function(screenid)
{var tabid=this.id+'-tab-'+screenid;var len=this.tabElems.length;for(var i=0;i<len;i++){if(this.tabElems[i].id===tabid){if(dfx.isset(this.blockedTabs[i])===true){if(this.blockedTabs[i]===true){return false;}}
return i;}}
return false;}};dfx.inherits('MenuTabPane','DynamicTabPane');function JumperTreeWidgetType(id)
{AssetTreeWidgetType.call(this,id);}
JumperTreeWidgetType.prototype={addToggleButtonEvent:function(toggleButton,assetInfo)
{toggleButton.hide();toggleButton.setToggleOnTitle('Jump');var self=this;toggleButton.addToggleEvent(function(selected){self.jumpToAsset(assetInfo.id);});},fireItemHoverEvents:function(nodeid,li,on)
{var button=WidgetStore.get(this.id+'-button:'+nodeid);if(button){if(on===true){button.show();}else{button.hide();}}
AssetTreeWidgetType.prototype.fireItemHoverEvents.call(this,nodeid,li,on);},jumpToAsset:function(assetid)
{AssetManager.getAssetUrl(assetid,function(url){var editUrl=url+'/'+Widget.EDIT_SUFFIX;window.location=editUrl;});}};dfx.inherits('JumperTree','AssetTree');function AdminScreenModeWidgetType(id,screens,assetid,editableAssets,initialScreen)
{AbstractEditingScreenModeWidgetType.call(this,id,screens,assetid,editableAssets,initialScreen);this.widgetType='AdminScreenMode';this.modeType='Admin';this.currentScreenMode='AdminScreenModeWidget';}
AdminScreenModeWidgetType.prototype={tabLoaded:function()
{dfx.setStyle(dfx.getId(this.id+'_screen_dialog'),'position','relative');},displaySplashScreen:function()
{AbstractEditingScreenModeWidgetType.prototype.displaySplashScreen.call(this);this.ready();},displayNoAccessScreen:function()
{AbstractEditingScreenModeWidgetType.prototype.displayNoAccessScreen.call(this);this.ready();}};dfx.inherits('AdminScreenMode','AbstractEditingScreenMode');function EditScreenModeWidgetType(id,screens,assetid,editableAssets,initialScreen,dependencies,referenceExists,publishingWarning)
{this.modeType='Edit';AbstractEditingScreenModeWidgetType.call(this,id,screens,assetid,editableAssets,initialScreen);this.widgetType='EditScreenMode';this.currentScreenMode='EditScreenModeWidget';this.settingsInfoBox=WidgetStore.get(this.id+'-infobox');this.editableAssets=editableAssets;this.settingsModeDynamicTab=WidgetStore.get(this.id+'-tab_pane');WidgetStore.setData('editingAssetid',this.assetid);this._assetName=null;this.dependencies=dependencies;this.referenceExists=referenceExists;this.publishingWarning=publishingWarning;this.categoryClassname='dependency-category';this.contextClassname='dependency-usageContext';this.contextDescClassname='dependency-usageContextDesc';this.contextTagClassname='dependency-usageContextTag';this.contextCurvesClassname='dependency-usageContextCurves';this.contextTypeClassname='dependency-usageContextType';}
EditScreenModeWidgetType.prototype={_ready:function()
{var self=this;this.includeWidgets(['PlainList','Button'],function(){self.initSubInfoBox(function(){self.initInfoBox();});});},_setupNameInput:function(assetid,disable)
{var id=this.id+'-input-assetName';var input=dfx.getId(id);if(!input){return;}
var initVal='';if(this._assetName!==null){initVal=this._assetName;}else{initVal=input.value;this._assetName=initVal;}
var self=this;var resource='attr-name:'+assetid;var lockToken=false;var lockPopup=null;if(disable===true){input.disabled=true;return;}
dfx.addEvent(input,'focus',function(){Locking.acquire(resource,function(result){if(result!==true){dfx.setStyle(input,'cursor','not-allowed');input.blur();self.includeWidget('EditEditingModeLocking',function(){if(!lockPopup){lockPopup=self.createWidget(null,'EditEditingModeLocking');}
var errInfo=Locking.getError(result);errInfo.element=input;errInfo.modified=true;errInfo.callback=function(act){if(act==='revert'){input.value=initVal;input.blur();}else if(act===true){dfx.setStyle(input,'cursor','text');input.focus();}};if(lockPopup.isActive()===false){lockPopup.showMessage(errInfo);}});}else{dfx.setStyle(input,'cursor','text');lockToken=Locking.getToken(resource);if(initVal!==input.value){self.setModified(true,true);}}});});WidgetStore.addDataChangeListener('EditScreenMode','activeMode',function(newMode,prevMode){if(initVal!==input.value){input.value=initVal;}});WidgetStore.addDataChangeListener('EditScreenMode','activeScreen',function(newScreen,prevScreen){if(initVal!==input.value){input.value=initVal;}});dfx.addEvent(input,'keyup',function(){if(lockToken===false){return;}
if(initVal!==input.value){self.setModified(true,true);}else{self.setModified(false);}});this.setSaveButton(function(){self.displayDisabledDiv(true);var params={mode:'EditScreenMode',action:'updateAssetName',assetid:assetid,_assetName:input.value,_nameLockToken:lockToken};dfx.post(self.url,params,function(response){Locking.release([lockToken]);self.processSaveResponse(response,params,function(act){if(act===true){setTimeout(function(){var modeSwitcher=WidgetStore.get('EditingModeSwitcher');modeSwitcher.switchMode(dfx.getId('EditingModeSwitcher-EditScreenMode'),null,null,null,true);},1500);}else{self.setModified(true,true);}});});},function(){Locking.release([lockToken]);input.value=initVal;self.removeDisabledDiv();});WidgetStore.addDataChangeListener('EditScreenModeSplashScreen','activeMode',function(newMode,prevMode){Locking.release([lockToken]);input.value=initVal;});},updateSubInfoBox:function(assetid,callback)
{var self=this;var params={mode:'EditScreenMode',action:'getUsageData',assetid:assetid};dfx.post(this.url,params,function(response){var usageInfo=dfx.jsonDecode(response);var depDiv=dfx.getId(self.id+'-infobox-dependencies');var depTypeString={'embedded_media':'Embedded Media','content_references':'Content References','general_references':'General References','design_related':'Design Related'};dfx.foreach(depTypeString,function(key){var liElem=dfx.getId('EditScreenModeWidgetType-deps-'+key);var countSpan=dfx.getClass('dependency-usageContextType',liElem)[0];dfx.setHtml(countSpan,usageInfo.dependencies[key]);if(usageInfo.dependencies[key]===0){dfx.addClass(dfx.getClass('dependency-category',liElem)[0],'mask');dfx.addClass(dfx.getClass('dependency-usageContext',liElem)[0],'mask');}else{dfx.removeClass(dfx.getClass('dependency-category',liElem)[0],'mask');dfx.removeClass(dfx.getClass('dependency-usageContext',liElem)[0],'mask');}
return true;});if(usageInfo.displayPublishingWarning===true){self.showSubInfoPublishingWarning();}else{self.hideSubInfoPublishingWarning();}
if(callback){callback.call(self);}});},initSubInfoBox:function(callback)
{var self=this;var rows=[];var depTypeString={'embedded_media':'Embedded Media','content_references':'Content References','general_references':'General References','design_related':'Design Related'};dfx.foreach(self.dependencies,function(depType){var context=document.createElement('div');var contextTag=document.createElement('div');var contextCurves=document.createElement('span');var contextType=document.createElement('span');dfx.addClass(context,self.contextClassname);dfx.addClass(contextTag,self.contextTagClassname);dfx.addClass(contextCurves,self.contextCurvesClassname);dfx.addClass(contextType,self.contextTypeClassname);dfx.setHtml(contextType,self.dependencies[depType]+'');contextCurves.appendChild(contextType);contextTag.appendChild(contextCurves);context.appendChild(contextTag);var category=document.createElement('span');dfx.addClass(category,self.categoryClassname);dfx.setHtml(category,depTypeString[depType]);if(self.dependencies[depType]===0){dfx.addClass(context,'mask');dfx.addClass(category,'mask');}
rows.push({id:depType,left:category,right:context});return true;});var list=self.createWidget(self.id+'-deps','PlainList','235',false,false,false,rows);var pubWarnBtnWidget=self.createWidget(self.id+'-pubWarnBtn','Button','ButtonWidgetType-black',false,'View Report');pubWarnBtnWidget.create(function(bel){list.create(function(el){var depDiv=dfx.getId(self.id+'-infobox-dependencies');var depInner1=document.createElement('div');var depHeader=document.createElement('div');var depContent=document.createElement('div');dfx.addClass(depDiv,self.widgetType+'-infoBox-subBox');dfx.addClass(depInner1,self.widgetType+'-infoBox-subBox-inner1');dfx.addClass(depHeader,self.widgetType+'-infoBox-subBox-header');dfx.addClass(depContent,self.widgetType+'-infoBox-subBox-content');dfx.setHtml(depHeader,'Dependencies');var pubWarningWrap=document.createElement('div');var content='<span class="warning_icon">&nbsp;</span><span class="warning_text">';content+='<strong>Warning</strong><br />One or more dependencies need to be published</span>';dfx.setHtml(pubWarningWrap,content);dfx.addClass(pubWarningWrap,'InfoBoxWidgetType-Grey-warning');pubWarnBtnWidget.addClickEvent(function(){dfx.trigger(dfx.getId('EditScreenModeWidgetType-tab_pane-tab-publishing'),'click');});var pubWarningButtonWrap=document.createElement('div');dfx.addClass(pubWarningButtonWrap,'InfoBoxWidgetType-Grey-warning');pubWarningButtonWrap.appendChild(bel);depContent.appendChild(pubWarningWrap);depContent.appendChild(pubWarningButtonWrap);self.pubWarningWrap=pubWarningWrap;self.pubWarningButtonWrap=pubWarningButtonWrap;if(self.publishingWarning===true){self.showSubInfoPublishingWarning();}
depInner1.appendChild(depHeader);depInner1.appendChild(depContent);depDiv.appendChild(depInner1);dfx.addClass(el,self.widgetType+'-infoBox-subBox-list');depContent.appendChild(el);var list=dfx.getClass('PlainListWidgetType',el);dfx.setStyle(list[(list.length-1)],'border-bottom','none');if(callback){callback.call(self);}});});},initInfoBox:function()
{var self=this;AssetManager.getAsset(this.assetid,function(asset){var hideTrash=false;var aid=parseInt(self.assetid);if(Widget.CURRENT_USERID===aid){hideTrash=true;}else{dfx.foreach(Widget.CURRENT_USER_GROUPS,function(idx){if(aid===Widget.CURRENT_USER_GROUPS[idx]){hideTrash=true;return false;}
return true;});}
var disable=false;if(asset.type==='user'){disable=true;}
if(parseFloat(self.assetid)<0||(self.assetid+'').search('~')!==-1){disable=true;}
self._setupNameInput(self.assetid,disable);self.settingsInfoBox.addSection('preview',null,true);self.settingsInfoBox.setUlClassPrefix('Blue');var content='';var date=new Date();content+='<div class="'+self.getClass()+'-thumbnail-cont">';content+='<img src="'+Widget.BASE_URL+'/?tb=1&a='+asset.id+'&t='+date.getTime()+'" alt="'+asset.name+'" title="'+asset.name+'"/>';content+='</div>';var publishedDate=asset.getAttribute('published_datetime');if(publishedDate){publishedDate=dfx.date('d M Y',null,publishedDate);}else{publishedDate='Never';}
var updatedDate=asset.getAttribute('updated_datetime');if(updatedDate){var updatedDate=dfx.date('d M Y',null,updatedDate);}else{updatedDate='Never';}
var c=self.getClass();content+='<div class="'+c+'-assetInfo">';content+='<div class="'+c+'-assetPublishInfo">Published: '+publishedDate+'</div>';content+='<div class="'+c+'-assetUpdateInfo">Last Update: '+updatedDate+'</div>';if(hideTrash===false){content+='<div class="'+c+'-assetTrash" title="Move this asset to trash"></div>';content+='</div>';}
var cdiv=document.createElement('div');dfx.setHtml(cdiv,content);if(hideTrash===false){var trashIcon=dfx.getClass(c+'-assetTrash',cdiv)[0];var access=self.settingsModeDynamicTab.getScreenIndex('linking');dfx.addEvent(trashIcon,'click',function(){if(self.referenceExists===true){var as=WidgetStore.getData('activeScreen');if(as.id==='linking'){var iw=self.createWidget('inter','Intervention',function(){},function(){dfx.trigger(dfx.getId('EditScreenModeWidgetType-tab_pane-tab-linking'),'click');});iw.setCancelText('Ok');iw.setConfirmText(null);iw.create(function(){iw.setSize('200px','85px');iw.setMessage('This asset cannot be deleted as it is being used by other assets');iw.show(trashIcon);});}else{var iw=self.createWidget('inter','Intervention',function(){},function(){dfx.trigger(dfx.getId('EditScreenModeWidgetType-tab_pane-tab-linking'),'click');});iw.setCancelText('OK');iw.setConfirmText('Show References');iw.create(function(){iw.setSize('268px','65px');iw.setConfirmButtonSize('97');iw.setMessage('This asset cannot be deleted as it is being used by other assets');iw.show(trashIcon);});}}else{var assetType=asset.getType();if(access===false){self.includeWidget('Intervention',function(){var ipopup=self.createWidget(null,'Intervention',function(){},function(){});ipopup.confirmText=null;ipopup.cancelText='OK';ipopup.create(function(){ipopup.setSize('310px','50px');ipopup.setMessage('You do not have permission to delete this asset');ipopup.show(trashIcon);});});}else if(assetType!=='projectFolder'&&assetType!=='site'){var activeScreen=WidgetStore.getData('activeScreen');if(activeScreen.id==='linking'){var linkingScreen=WidgetStore.get('LinkingEditScreen');linkingScreen.markAllForDeletion();}else{self.settingsModeDynamicTab.showScreen('linking',{showLinksDeleted:true},true);}}else{self.includeWidget('Intervention',function(){var ipopup=self.createWidget(null,'Intervention',function(){},function(){});ipopup.confirmText=null;ipopup.cancelText='OK';ipopup.create(function(){ipopup.setSize('225px','50px');ipopup.setMessage('This asset cannot be deleted');ipopup.show(trashIcon);});});}}});}
self.settingsInfoBox.addItem('preview',self.id+'-previewThumb',cdiv,null,true);if(self.editableAssets.length>1){self.settingsInfoBox.addSection('content',null);AssetManager.getAssets(self.editableAssets,function(assets){var assetNum=assets.length;self.settingsInfoBox.setPreSelectCheckFn(function(){var saveBtn=WidgetStore.get('EditingSaveButton');if(saveBtn.isEnabled()===true){var answer=confirm(WidgetStore.getUnsavedChangesStr());return answer;}});self.settingsInfoBox.setSelected('content_'+self.assetid);for(var i=0;i<assetNum;i++){(function(idx){var sectionid='content';var assetid=assets[idx].id;var id='content_'+assetid;var name=dfx.ellipsize(assets[idx].name,22);var title='<div class="'+self.getClass()+'-contents-list">';title+='<div class="'+self.getClass()+'-contents-list-icon"><img src="'+assets[idx].iconUrl+'" /></div>';title+='<div class="'+self.getClass()+'-contents-list-name">'+name+'</div>';title+='<div class="'+self.getClass()+'-contents-list-assetid">#'+assetid+'</div>';title+='</div>';self.settingsInfoBox.addItem(sectionid,id,title,function(clickedId){var screenPerms=[];var scrnLen=self.screens.length;for(var i=0;i<scrnLen;i++){screenPerms.push('asset.edit.'+self.screens[i].id);}
self.assetid=assetid;AssetManager.getPermissions(assetid,screenPerms,null,function(perms){self.permissions[assetid]=perms;WidgetStore.setData('editingAssetid',assetid);if(self.screenid==='editingSplash'||self.screenid==='adminSplash'){self.displaySplashScreen();self.setNoPermissionMask(perms);}else{self.setNoPermissionMask(perms);var index=null;for(var j=0;j<scrnLen;j++){if(self.screenid===self.screens[j].id){index=j;break;}}
if(index!==null){self.settingsModeDynamicTab.switchToScreen(index,function(){self.swapScreens(index,index);},true);}}});});})(i);}
self.ready();},true,{attributes:['name','published_datetime','updated_datetime'],type:false,typeIcon:true,linking:[],urls:false});}else{self.ready();}},true,{attributes:['name','published_datetime','updated_datetime'],type:true,typeIcon:false,linking:[],urls:false});},showSubInfoPublishingWarning:function()
{dfx.showElement(this.pubWarningWrap);dfx.showElement(this.pubWarningButtonWrap);},hideSubInfoPublishingWarning:function()
{dfx.hideElement(this.pubWarningWrap);dfx.hideElement(this.pubWarningButtonWrap);},setNoPermissionMask:function(perms)
{var self=this;var scrnLen=this.screens.length;for(var i=0;i<scrnLen;i++){if(perms['asset.edit.'+this.screens[i].id]===false){var wrap=dfx.getId(this.mode+'WidgetType-tab_pane-tab-'+this.screens[i].id);var mask=dfx.getClass('EditScreenModeWidgetType-noAccessMask',wrap)[0];if(!mask){mask=document.createElement('div');var icon=document.createElement('div');dfx.addClass(mask,'EditScreenModeWidgetType-noAccessMask');dfx.addClass(icon,'EditScreenModeWidgetType-noAccessIcon');mask.appendChild(icon);wrap.appendChild(mask);self.tabPaneWidget.blockTabClick(i);dfx.setStyle(wrap,'cursor','auto');}}else if(perms['asset.edit.'+this.screens[i].id]===true){var wrap=dfx.getId(this.mode+'WidgetType-tab_pane-tab-'+this.screens[i].id);self.tabPaneWidget.unblockTabClick(i);dfx.setStyle(wrap,'cursor','pointer');var mask=dfx.getClass('EditScreenModeWidgetType-noAccessMask',wrap)[0];if(mask){dfx.remove(mask);}}}},getAutoSaveContents:function()
{saveContents=AbstractEditingScreenModeWidgetType.prototype.getAutoSaveContents.call(this);var id=this.id+'-input-assetName';var input=dfx.getId(id);if(input&&input.value!==this._assetName){saveContents.assetName=input.value;}
return saveContents;},loadAutoSaveContents:function(content,callback)
{if(content.assetName){var id=this.id+'-input-assetName';var input=dfx.getId(id);if(input&&input.value!==content.assetName){this._assetName=content.assetName;input.value=content.assetName;this.setModified(true);this.ready();return;}}
AbstractEditingScreenModeWidgetType.prototype.loadAutoSaveContents.call(this,content,callback);}};dfx.inherits('EditScreenMode','AbstractEditingScreenMode');function SystemConfigScreenModeWidgetType(id,screens,assetid,editableAssets,initialScreen)
{AbstractEditingScreenModeWidgetType.call(this,id,screens,assetid,editableAssets,initialScreen);this.widgetType='SystemConfigScreenMode';this.modeType='SystemConfig';this.currentScreenMode='SystemConfigScreenModeWidget';}
SystemConfigScreenModeWidgetType.prototype={tabLoaded:function()
{dfx.setStyle(dfx.getId(this.id+'_screen_dialog'),'position','relative');},displaySplashScreen:function()
{AbstractEditingScreenModeWidgetType.prototype.displaySplashScreen.call(this);this.ready();},displayNoAccessScreen:function()
{AbstractEditingScreenModeWidgetType.prototype.displayNoAccessScreen.call(this);this.ready();}};dfx.inherits('SystemConfigScreenMode','AbstractEditingScreenMode');function ImageAssetEditContentsWidgetType(id,assetid,extraAttrs,hasPerm)
{FileAssetEditContentsWidgetType.call(this,id,assetid,extraAttrs,hasPerm);this.widgetType='ImageAssetEditContents';this.assetid=assetid;dfx.addClass(document.body,'ImageAssetEditContentsWidgetType-body');}
ImageAssetEditContentsWidgetType.prototype={init:function()
{this.createBox();},createBox:function()
{var c='ImageAssetEditContentsWidgetType';var content='<div style="padding:10px;">';var self=this;content+='<div class="'+c+'-top">';content+='<div class="'+c+'-top-left">';content+='<div class="'+c+'-top-left-name">'+self.extraAttrs.fileName+'</div>';content+='<div class="'+c+'-top-left-size">'+self.extraAttrs.fileSize+'</div>';content+='</div>';content+='<div class="'+c+'-top-right"></div></div>';var qs='?widget='+c+'&action=getImg&assetid='+self.assetid+'&version='+self.version;var imageURL=self.url+qs;content+='<div class="'+c+'-bottom">';content+='<img src="'+imageURL+'?_'+dfx.getUniqueId()+'" /></div></div>';var elem=dfx.getId(self.id);dfx.setHtml(elem,content);var width=parseInt(this.extraAttrs.imageWidth)+22;dfx.setStyle(elem,'width',width+'px');if(width<this.resizeWidth){dfx.addClass(dfx.getClass(c+'-bottom',elem)[0],c+'-sm');}
this.removeDisabledDiv();}};dfx.inherits('ImageAssetEditContents','FileAssetEditContents');function MovieAssetEditContentsWidgetType(id,assetid,extraAttrs)
{FileAssetEditContentsWidgetType.call(this,id,assetid,extraAttrs,true);this.widgetType='MovieAssetEditContents';this.assetid=assetid;this.thumbInput=null;this._selectedThumb=null;this.fileCheckInput=null;this.currentMode=WidgetStore.get('EditingModeSwitcher').currentMode;dfx.addClass(document.body,'FileAssetEditContentsWidgetType-body');}
MovieAssetEditContentsWidgetType.prototype={init:function()
{if(this.currentMode==='EditEditingMode'){this._initEditMode();}else{this._initPreviewMode();}},_initEditMode:function()
{if(this.readOnly===false){if(Widget.IS_REMOTE_ASSET===true||Widget.IS_SHADOW_ASSET===true){this.readOnly=true;}
this._addThumbClickEvent();this._setupForm();}
this.ready();},setScreenLock:function()
{var self=this;var upload=dfx.getId(this.id+'-uploadBox');dfx.hideElement(upload);WidgetStore.get(this.id+'-name').disable();this.displayAssetEditReadOnlyWarning(function(el){dfx.insertBefore(dfx.getClass('FileAssetEditContentsWidgetType-Wrapper')[0],el);},function(){self._forceEdit();});},_forceEdit:function()
{var upload=dfx.getId(this.id+'-uploadBox');dfx.showElement(upload);WidgetStore.get(this.id+'-name').enable();this._addThumbClickEvent();this._setupForm();},_setupForm:function()
{var self=this;var widget=WidgetStore.get(this.id+'-uploadFileInput');this.formWidget=widget;if(dfx.isset(widget)===true){var form=dfx.getId(this.id+'-uploadFileForm');this.form=form;var qs='?widget='+this.widgetType+'WidgetType&action=updateMovie&assetid='+this.assetid;form.setAttribute('action',Widget.EDIT_URL+qs);widget.setForm(form);this.thumbInput=document.createElement('input');dfx.attr(this.thumbInput,'type','hidden');dfx.attr(this.thumbInput,'name','thumb');form.appendChild(this.thumbInput);}
var fileInput=dfx.getId(self.id+'-uploadFileInput');var nameField=WidgetStore.get(self.id+'-name');if(fileInput){dfx.addEvent(fileInput,'change',function(){self._disableThumbSelection();self.setModified(true);self.fileCheckInput=1;self.form.action+='&fileCheck=1';});}
if(nameField){nameField.addOnChangeEvent(function(){self.setModified(true);});}
dfx.foreach(self.extraAttrs,function(idx){var wdgt=WidgetStore.get(self.id+'-'+self.extraAttrs[idx]);if(wdgt){(function(extraAttrWdgt){extraAttrWdgt.addOnChangeEvent(function(){self.setModified(true);});})(wdgt);}
return true;});self.setSaveButton(function(){self.save();},function(){var modeSwitcher=WidgetStore.get('EditingModeSwitcher');modeSwitcher.switchMode(dfx.getId('EditingModeSwitcher-EditEditingMode'),null,null,null,true);});if(this.readOnly===true){dfx.hideElement(dfx.getClass('FileAssetEditContentsWidgetType-uploadBox',document.body)[0]);nameField.setReadOnly(true);}},_disableThumbSelection:function()
{var parent=dfx.getId(this.id);var el=dfx.getClass(this.getClass()+'-thumbsListWrapper-disable',parent)[0];if(el){dfx.addClass(el,'active');}
var info=dfx.getClass(this.getClass()+'-thumbSelTxt',parent)[0];if(info){dfx.setHtml(info,'Unable to choose a thumbnail until new movie is uploaded');}},_addThumbClickEvent:function()
{var self=this;var c=this.getClass();var elems=dfx.getClass(c+'-thumbWrapper');dfx.foreach(elems,function(i){var elem=elems[i];dfx.addEvent(elem,'click',function(){dfx.removeClass(elems,'picked');dfx.addClass(elem,'picked');self.setModified(true);self._selectedThumb=dfx.attr(elem,'thumb');if(self.thumbInput){self.thumbInput.value=self._selectedThumb;}});});},_getFormResult:function(iframe)
{var result=dfx.getHtml(iframe);return result;},_checkFileConversion:function()
{var params={widget:this.widgetType+'WidgetType',action:'checkProgress',assetid:this.assetid};var self=this;var it=null;it=setInterval(function(){dfx.post(self.url,params,function(data){if(data==='done'){clearInterval(it);self._showSaveSuccess();var modeSwitcher=WidgetStore.get('EditingModeSwitcher');setTimeout(function(){modeSwitcher.switchMode(dfx.getId('EditingModeSwitcher-EditEditingMode'),null,null,null,true);},1000);}else if(data==='conversion failed'){clearInterval(it);self.showError(['Failed to convert movie'],function(){self.setModified(true);});}});},3000);},save:function()
{var self=this;this.displayDisabledDiv(true);this.formWidget.setEndFunction(function(iframe){var result=self._getFormResult(iframe);if(result==='success'){self._showSaveSuccess();self.removeDisabledDiv(null,true);}else if(result==='processing'){self._checkFileConversion();}else{self.showError([result],function(){self.setModified(true);});}});this.form.submit();},_initPreviewMode:function()
{var button=WidgetStore.get(this.id+'_dl');this.addDownloadButtonClickEvent(button);},addDownloadButtonClickEvent:function(button)
{if(button){var self=this;button.addClickEvent(function(){self.downloadFileVersion();});}},downloadFileVersion:function()
{window.location.href=this.url+'?widget=FileAssetEditContentsWidgetType&action=dlf&a='+escape(this.assetid);}};dfx.inherits('MovieAssetEditContents','FileAssetEditContents');function OptionListWidgetType(id)
{CheckBoxListWidgetType.call(this,id);this.options={};this.optionWidgets={};this.onChangeCallbacks=[];this.domElem=dfx.getId(this.id);this.selected=null;if(this.domElem){this.addClickEvent();}}
OptionListWidgetType.prototype={create:function(callback)
{var self=this;var main=document.createElement('div');this.domElem=main;var i=0;this.includeWidget('RadioButton',function(){for(var optVal in self.options){if(self.options.hasOwnProperty(optVal)!==true){continue;}
var id=self.id+'-option-'+i;var widget=self.createWidget(id,'RadioButton');widget.setLabel(self.options[optVal]);widget.setShowLabel(true);self.optionWidgets[id]=optVal;widget.create(function(el){if(optVal===self.selected){widget.check();}
main.appendChild(el);});i++;}
self.addClickEvent();callback.call(self,main);return;});},setSelected:function(selected)
{this.selected=selected;},setOptions:function(options)
{this.options=options;},getOptionElements:function()
{return dfx.getClass('RadioButtonWidgetType',this.domElem,'input');},addClickEvent:function()
{var options=this.getOptionElements();var len=options.length;var parentId=this.id;var self=this;dfx.removeEvent(options,'click');dfx.addEvent(options,'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.isset(target)===true){for(var i=0;i<len;i++){var widgetId=parentId+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){if(target.id!==widgetId){widget.uncheck();}else{widget.check();var length=self.onChangeCallbacks.length;for(var j=0;j<length;j++){self.onChangeCallbacks[j].call(self,target.value,self.optionWidgets[widgetId]);}}}}}});},getValue:function()
{var len=this.getOptsLength();for(var i=0;i<len;i++){var widgetId=this.id+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){if(widget.isChecked()===true){return widget.getValue();}}}
return'';},setValue:function(value)
{var vals=value.split(';');var option=vals.shift();var len=this.getOptsLength();for(var i=0;i<len;i++){var widgetId=this.id+'-option-'+i;var widget=WidgetStore.get(widgetId);if(dfx.isset(widget)===true){widget.uncheck();if(widget.getValue()===option){widget.check();}}}},addOnChangeAction:function(fn)
{this.onChangeCallbacks.push(fn);}};dfx.inherits('OptionList','CheckBoxList');function RadioButtonWidgetType(id,target,checked)
{CheckBoxWidgetType.call(this,id,target,checked);this.widgetType='RadioButton';this.type='radio';this.className='RadioButtonWidgetType';}
RadioButtonWidgetType.prototype={disable:function()
{var disableClass=this.className+'-disabled';dfx.addClass(dfx.getId(this.id+'_wrapper'),disableClass);CheckBoxWidgetType.prototype.disable.call(this);},enable:function()
{var disableClass=this.className+'-disabled';dfx.removeClass(dfx.getId(this.id+'_wrapper'),disableClass);CheckBoxWidgetType.prototype.enable.call(this);},getValue:function()
{return dfx.getId(this.id).value;}};dfx.inherits('RadioButton','CheckBox');function AssetTypeSelectWidgetType(id,items,selectedItem,minWidth,mainWidth)
{SelectWidgetType.call(this,id,items,selectedItem,minWidth,mainWidth);}
AssetTypeSelectWidgetType.prototype={addType:function(typeid,typeName,parentTypeid)
{var parentIndex=this.getOptionIndex(parentTypeid);var parentEl=this.getOptionElement(parentTypeid).firstChild.firstChild;var clone=parentEl.cloneNode(true);var parentPadding=parseInt(dfx.getStyle(parentEl,'padding-left'));dfx.setHtml(clone,typeName);dfx.setStyle(clone,'padding-left',(parentPadding+20)+'px');var bgpos=dfx.getStyle(parentEl,'background-position').split(' ');var x=parseInt(bgpos[0]);var y=bgpos[1];dfx.setStyle(clone,'background-position',(x+20)+'px '+y);this.addOption({content:clone,text:typeName},typeid,(parentIndex+1));}};dfx.inherits('AssetTypeSelect','Select');function UserGroupSelectWidgetType(id,items,selectedItem,minWidth,mainWidth,readOnly,includeRoot)
{SelectWidgetType.call(this,id,items,selectedItem,minWidth,mainWidth,readOnly);this.includeRoot=includeRoot;this.widgetType='UserGroupSelect';}
UserGroupSelectWidgetType.prototype={reset:function()
{var self=this;var args={widget:'UserGroupSelectWidget',type:'groupList',includeRoot:dfx.jsonEncode(this.includeRoot)};var html='<option value="0">&nbsp;</option>';dfx.getJSON(this.url,args,function(options){dfx.foreach(options,function(key){html+='<option value="'+key+'">'+options[key]+'</option>';return true;});dfx.setHtml(dfx.getId(self.id),html);});}};dfx.inherits('UserGroupSelect','Select');function PasswordFieldWidgetType(id,className,resizableX,rows,cols,showLabel)
{TextFieldWidgetType.call(this,id);}
PasswordFieldWidgetType.prototype={create:function(callback)
{var div=document.createElement('div');dfx.addClass(div,this.className+'-Container');if(this.showLabel===true){div.appendChild(this.createLabel(this.inline));}
var textbox=document.createElement('input');textbox.setAttribute('type','password');textbox.setAttribute('id',this.id);textbox.value=this.value;this.inputBox=textbox;dfx.addClass(textbox,this.className);if(this.width>0){dfx.setStyle(textbox,'width',this.width+'px');}
div.appendChild(textbox);if(this.displayBlock){dfx.setStyle(div,'float','none');}
this.input=textbox;this.domEl=this.input;if(callback){callback.call(this,div);}}};dfx.inherits('PasswordField','TextField');function JumperWidgetType(id)
{AssetPickerDialogWidgetType.call(this,id);this.widgetType='Jumper';this.treeWidget='JumperTree';this.visible=false;this.prevItem=null;var self=this;WidgetStore.registerShortcutKey('CTRL+J',this.id,'Jumper',function(){self.toggleJumper();});}
JumperWidgetType.prototype={createOkButton:function(){},createOverlay:function()
{var self=this;self.create(function(el){document.body.appendChild(el);self.orientation='CUSTOM';self.open();self.visible=true;});},toggleJumper:function()
{if(this.visible===false){this.createOverlay();}else{this.close();this.visible=false;}},createSearchListItemIcon:function(itemid,callback)
{var widgetId=this.id+'-button:'+itemid;var toggleButton=this.createWidget(widgetId,'ToggleButton');toggleButton.create(function(el){callback.call(this,el);});toggleButton.hide();toggleButton.addToggleEvent(function(selected){JumperTreeWidgetType.prototype.jumpToAsset(itemid);});},searchListItemHoverEvent:function(itemid,on)
{if(dfx.isset(this.prevItem)===true){this.prevItem.hide();}
var widgetId=this.id+'-button:'+itemid;var widget=WidgetStore.get(widgetId);this.prevItem=widget;if(dfx.isset(widget)===true){if(on===true){widget.show();}else{widget.hide();}}}};dfx.inherits('Jumper','AssetPickerDialog');function MovieVersioningWidgetType(id,assetid,version,fileName,fileSize,imgWidth,imgHeight,hasImage)
{ImageVersioningWidgetType.call(this,id,assetid,version,fileName,fileSize,imgWidth,imgHeight,hasImage);this.widgetType='MovieVersioning';}
MovieVersioningWidgetType.prototype={init:function()
{this.widgetType='MovieVersioning';this.createBox();},getWidgetType:function()
{return'MovieVersioning';}};dfx.inherits('MovieVersioning','ImageVersioning');function PageVersioningWidgetType(id,assetid,version,fileName,assetType,imgWidth,imgHeight,hasPdf)
{ImageVersioningWidgetType.call(this,id,assetid,version,fileName,assetType,imgWidth,imgHeight,hasPdf);this.widgetType='PageVersioning';}
PageVersioningWidgetType.prototype={init:function()
{this.resizeWidth=949;this.widgetType='PageVersioning';ImageVersioningWidgetType.prototype.init.call(this);},getWidgetType:function()
{return'PageVersioning';}};dfx.inherits('PageVersioning','ImageVersioning');function Viper(options,callback)
{this.scripts=['ViperSelection','ViperDOMRange','ViperElementMetrics','ViperTextMetrics','ViperIERange','ViperMozRange','XPath','ViperPlugin','ViperPluginManager','ViperUndoManager','ViperChangeTracker'];this.caretInterval=null;this.caret=null;this.CARET_LEFT=1;this.CARET_RIGHT=2;this.currRange=null;this.enabled=false;this.caretContainer=null;this.caretHeight=0;this.caretAtStart=true;this.caretInterval=null;this.inlineMode=false;this._caretColour='#000';this._browserType=null;this._document=document;this._fireNodesChanged=false;this._settings={changeTracking:false};this._subElementActive=false;this._mainElem=null;this.callbacks={};this.stylesURL='';this.viperURL='';if(!options){options={};}
var viperURL=options.viperURL||'./viper';var self=this;this.load(viperURL,function(){if(options){self._processOptions(options,function(){callback.call(self,self);});}});}
Viper.document=document;Viper.window=window;Viper.prototype={load:function(url,callback)
{var self=this;this.loadScripts(url,dfx.clone(this.scripts),function(){self.setViperURL(url);self.setStylesURL(url);self.init();callback.call(self);});},loadScripts:function(url,scripts,callback)
{if(scripts.length===0){callback.call(this);return;}
var script=scripts.shift();if(window[script]){this.loadScripts(url,scripts,callback);}else{var self=this;dfx.includeScript(url+'/'+script+'.js',function(){self.loadScripts(url,scripts,callback);});}},_processOptions:function(options,callback)
{var self=this;for(var op in options){var fn='set'+dfx.ucFirst(op);if(fn==='setSetting'){delete options[op];continue;}
if(dfx.isFn(this[fn])===true){this[fn](options[op],function(){delete options[op];self._processOptions(options,callback);});return;}else{this.setSetting(op,options[op]);delete options[op];self._processOptions(options,callback);return;}}
callback.call(this);},setPluginSets:function(sets,callback)
{var self=this;for(var setName in sets){var set=sets[setName];ViperPluginManager.addPluginSet(setName,set.plugins,true,function(){delete sets[setName];self.setPluginSets(sets,callback);});return;}
if(callback){callback.call(this);}},setSetting:function(setting,value)
{this._settings[setting]=value;},getSetting:function(setting)
{return this._settings[setting];},init:function()
{ViperUndoManager.init(this);ViperPluginManager.init(this);ViperChangeTracker.init(this,false);this._setupCoreTrackChangeActions();ViperChangeTracker.addChangeType('textRemoved','Deleted','remove');ViperChangeTracker.addChangeType('textAdded','Inserted','insert');ViperChangeTracker.addChangeType('merged','Merged','remove');},setMode:function(mode)
{if(mode==='inline'){this.inlineMode=true;}else{this.inlineMode=false;}},getBrowserType:function()
{if(this._browserType===null){var tests=['msie','firefox','chrome','safari'];var tln=tests.length;for(var i=0;i<tln;i++){var r=new RegExp(tests[i],'i');if(r.test(navigator.userAgent)===true){this._browserType=tests[i];return this._browserType;}}
this._browserType='other';}
return this._browserType;},isBrowser:function(browser)
{return(this.getBrowserType()===browser);},_addEvents:function(elem)
{if(!elem){elem=this.element;}
this._document=elem.ownerDocument;Viper.document=this._document;if(this._document.defaultView){Viper.window=this._document.defaultView;}else{Viper.window=window;}
this._removeEvents(elem);var self=this;dfx.addEvent(elem,'mouseup.viper',function(e){setTimeout(function(){self.mouseUp(e);},200);});dfx.addEvent(this._document,'mousedown.viper',function(e){return self.mouseDown(e);});dfx.addEvent(elem,'keypress.viper',function(e){return self.keyPress(e);});dfx.addEvent(elem,'keydown.viper',function(e){return self.keyDown(e);});dfx.addEvent(elem,'keyup.viper',function(e){self.fireCallbacks('Viper:keyup');self.fireCaretUpdated();if(self._fireNodesChanged){self._fireNodesChanged=false;self.fireNodesChanged('Viper:insertNode');}});},_removeEvents:function(elem)
{if(!elem){elem=this.element;}
dfx.removeEvent(this._document,'.viper');dfx.removeEvent(elem,'.viper');},setEnabled:function(enabled)
{if(enabled===true&&this.enabled===false){this._addEvents();var range=this.getCurrentRange();this.element.focus();this.setRange(range._getFirstSelectableChild(this.element),0);this.enabled=true;this.fireCallbacks('viperEnabled');this.element.setAttribute('contentEditable',true);dfx.setStyle(this.element,'outline','none');}else if(enabled===false&&this.enabled===true){ViperChangeTracker.activateFinalMode();this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');this._removeEvents();this.enabled=false;this.fireCallbacks('viperDisabled');ViperChangeTracker.disableChangeTracking();ViperChangeTracker.cleanUp();}},isEnabled:function()
{return this.enabled;},setEditableElement:function(elem)
{if(this.element){this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');}
ViperChangeTracker.cleanUp();this.setSubElementState(null,false);ViperChangeTracker.init(this,false);this.setEnabled(false);this.element=elem;this.initEditableElement();this.setEnabled(true);ViperUndoManager.setActiveElement(elem);this.inlineMode=false;elem.setAttribute('contentEditable',true);dfx.setStyle(elem,'outline','none');if(this.getSetting('changeTracking')===true){ViperChangeTracker.enableChangeTracking();}
this.focus();},initEditableElement:function()
{var elem=this.element;if(!elem){return;}
var tmp=Viper.document.createElement('div');dfx.setHtml(tmp,this.getContents());if(dfx.trim(dfx.getNodeTextContent(tmp)).length===0||dfx.getHtml(tmp)==='&nbsp;'){var tags=dfx.getTag('*',tmp);var hasStubElems=false;dfx.foreach(tags,function(i){if(dfx.isStubElement(tags[i])===true){hasStubElems=true;return false;}});if(hasStubElems!==true){var range=this.getCurrentRange();if(this.inlineMode!==true&&dfx.getStyle(this.element,'display')==='block'){dfx.setHtml(this.element,'<p>&nbsp;</p>');range.setStart(this.element.firstChild.firstChild);}else{dfx.setHtml(this.element,'&nbsp;');range.setStart(this.element.firstChild);}}}},setSubElementState:function(elem,active)
{if(active===true){if(this._subElementActive===true&&this.element!==elem){this.setSubElementState(this.element,false);}
if(this._subElementActive!==true){this._mainElem=this.element;this.element=elem;this._subElementActive=true;this.element.setAttribute('contentEditable',true);dfx.setStyle(this.element,'outline','none');this._addEvents();this.fireCallbacks('subElementEnabled',elem);}}else if(this.element){this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');this._removeEvents();var pelem=this.element;this.element=this._mainElem;this._subElementActive=false;this._mainElem=null;this.fireCallbacks('subElementDisabled',pelem);}},getCurrentRange:function()
{return ViperSelection.getRangeAt(0);},getCaretCoords:function()
{var coords={};try{var bookmark=this.createBookmark();dfx.setStyle(bookmark.end,'display','inline');coords=dfx.getElementCoords(bookmark.end);dfx.remove(bookmark.start);dfx.remove(bookmark.end);}catch(e){coords={x:-1,y:-1};}
return coords;},rangeInViperBounds:function()
{var range=this.getCurrentRange();if(range===null||this.isOutOfBounds(range.startContainer)||this.isOutOfBounds(range.endContainer)){return false;}
return true;},isOutOfBounds:function(element)
{if(element===this.element||dfx.isChildOf(element,this.element)===true){return false;}else if(this._subElementActive===true&&(element===this._mainElem||dfx.isChildOf(element,this._mainElem)===true)){return false;}
return true;},insertNodeAtCaret:function(node)
{var range=this.getCurrentRange();if(range.collapsed!==true){this.deleteContents();this.initEditableElement();range=this.getCurrentRange();if(range.startContainer===range.endContainer&&this.element===range.startContainer){dfx.empty(this.element);this.initEditableElement();var firstSelectable=range._getFirstSelectableChild(this.element);range.setStart(firstSelectable,0);range.collapse(true);}}else if(dfx.isStubElement(range.startContainer.parentNode)===true){var newNode=Viper.document.createTextNode('');dfx.insertBefore(range.startContainer.parentNode,newNode);dfx.remove(range.startContainer.parentNode);range.setStart(newNode,0);range.collapse(true);ViperSelection.addRange(range);}
if(typeof node==='string'){var newNode=Viper.document.createTextNode(node);var noBlock=true;var newRange=this.ctmInsertNodeAtCaret(range,newNode);if(newRange!==false){noBlock=false;}else{newRange=range;}
if(ViperPluginManager.fireNodeInserted(newNode,newRange)===false){noBlock=false;}
if(noBlock===false){return false;}
this.fireNodesChanged('Viper:insertNode');this._fireNodesChanged=true;return;}else{if(node.nodeType===dfx.DOCUMENT_FRAGMENT_NODE){if(this.isBrowser('msie')===true){range.rangeObj.pasteHTML('<span id="__viperMarker"></span>');var marker=dfx.getId('__viperMarker');dfx.insertAfter(marker,node);dfx.remove(marker);range.collapse(false);return;}else{var newNode=null;var clen=node.childNodes.length;for(var i=0;i<clen;i++){var child=node.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){if(dfx.trim(child.data)===''){continue;}}
newNode=Viper.document.importNode(child,true);range.insertNode(newNode);range.selectNode(newNode);range.collapse(false);}
node=newNode;range.moveEnd('character',-1);range.moveEnd('character',1);range.collapse(false);return;}}else if(dfx.isStubElement(range.startContainer)===true){dfx.insertBefore(range.startContainer,node);}else{range.insertNode(node);}
range.setEndAfter(node,(this._getNodeOffset(node)+1));range.collapse(false);}},ctmInsertNodeAtCaret:function(range,node)
{if(ViperChangeTracker.isTracking()===true){if(range.collapsed===false){return range;}
var offset=range.startOffset;var ctNode=null;var startNode=range.getStartNode();if(ViperChangeTracker.getCTNode(startNode,'textRemoved')!==null){return false;}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode===null){if(offset===0){while(startNode){startNode=startNode.previousSibling;if(startNode&&(startNode.nodeType!==dfx.TEXT_NODE||startNode.data.length!==0)){break;}}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode!==null){var newNode=Viper.document.createTextNode('');ctNode.appendChild(newNode);range.setStart(newNode,0);range.collapse(true);}}else if(offset===startNode.data.length){while(startNode){startNode=startNode.nextSibling;if(startNode&&(startNode.nodeType!==dfx.TEXT_NODE||startNode.data.length!==0)){break;}}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode!==null){var newNode=Viper.document.createTextNode('');dfx.insertBefore(ctNode.firstChild,newNode);range.setStart(newNode,0);range.collapse(true);}}}
if(ctNode===null){ctNode=ViperChangeTracker.createCTNode('ins','textAdd',node);ViperChangeTracker.addChange('textAdded',[ctNode]);range.insertNode(ctNode);range.setEnd(node,1);range.collapse(false);ViperSelection.addRange(range);}else{return false;}}else{return false;}
return range;},insertTextAtCaret:function(text)
{if(typeof text!=='string'){throw('InvalidArgumentException: text must be a string');}
return this.insertNodeAtCaret(text);},getInverseColor:function(color)
{color=color.toLowerCase();var forward='0123456789abcdef#';var backward='fedcba9876543210#';var color=color.replace(/./gi,function(chr){return backward.charAt(forward.indexOf(chr));});return color;},_getNodeOffset:function(node)
{var nodes=node.parentNode.childNodes;var ln=nodes.length;for(var i=0;i<ln;i++){if(nodes[i]===node){return i;}}},_getInsertedInfo:function(node)
{return{type:2,node:node,path:XPath.getPath(node)};},_parentWillBeDeleted:function(node)
{if(node.parentNode){var parentContent=dfx.trim(dfx.getNodeTextContent(node.parentNode));if(parentContent===''||parentContent==='&nbsp;'){return true;}else{return false;}}
return false;},_getRangeInfo:function(range)
{var commEl=range.getCommonElement();var info={startOffset:range.startOffset,endOffset:range.endOffset,before:dfx.getHtml(commEl),path:XPath.getPath(commEl),after:'',startContainer:XPath.getPath(range.startContainer),endContainer:XPath.getPath(range.endContainer),collapsed:range.collapsed};return info;},getBlockParent:function(node)
{if(node){while(node.parentNode){node=node.parentNode;if(node===this.element){return null;}
if(dfx.isBlockElement(node)===true){return node;}}}
return null;},getTextContentFromElements:function(elements)
{var text=[];dfx.foreach(elements,function(i){if(elements[i].nodeType===dfx.TEXT_NODE){text.push(elements[i].data);}else{text.push(dfx.getNodeTextContent(elements[i]));}});return text;},deleteContents:function(right)
{var range=this.getCurrentRange();if(range.collapsed===false){this._deleteFromSelection(range);}else{var container=range.startContainer;if(container.nodeType===dfx.ELEMENT_NODE){this._deleteNode(range);}else if(container.nodeType===dfx.TEXT_NODE){if(right===true){this._deleteFromRight(range);}else{this._deleteFromLeft(range);}}}
ViperSelection.addRange(range);this.fireNodesChanged();},_deleteNode:function(range)
{var container=range.startContainer;if(dfx.isStubElement(container)===true){this.removeElem(container);return;}else if(container===this.element&&range.startOffset===0){if(this.inlineMode!==true&&dfx.getStyle(this.element,'display')==='block'){dfx.setHtml(this.element,'<p>&nbsp;</p>');}else{dfx.setHtml(this.element,'&nbsp;');}
range.setStart(this.element.firstChild.firstChild,0);range.collapse(true);return;}},_deleteFromSelection:function(range)
{var bookmark=this.createBookmark();var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);if(ViperChangeTracker.isTracking()===true){var removedText=(this.getTextContentFromElements(elements)).join('');var changeid=ViperChangeTracker.addChange('textRemoved');var eln=elements.length;for(var i=0;i<eln;i++){var elem=elements[i];if(ViperChangeTracker.getCTNode(elem,'textRemoved')===null){if(dfx.isBlockElement(elem)===true){var del=Viper.document.createElement('del');dfx.insertBefore(elem,del);del.appendChild(elem);ViperChangeTracker.addNodeToChange(changeid,del);}else{this._wrapElement(elem,'del',function(newElem){ViperChangeTracker.addNodeToChange(changeid,newElem);});}}}
var startEl=bookmark.start.previousSibling;if(!startEl){startEl=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,startEl);this.selectBookmark(bookmark);range=this.getCurrentRange();range.setStart(startEl,0);}else{this.selectBookmark(bookmark);range=this.getCurrentRange();range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.moveStart(ViperDOMRange.CHARACTER_UNIT,1);}
range.collapse(true);return;}
this.removeElem(elements);var parent=bookmark.start.parentNode;var endParent=bookmark.end.parentNode;this.selectBookmark(bookmark);if(parent&&dfx.getHtml(parent)===''){dfx.setHtml(parent,'&nbsp;');range.setStart(parent.firstChild,0);}
if(endParent&&parent!==endParent&&dfx.getHtml(endParent)===''){dfx.remove(endParent);}
range.collapse(true);},_deleteFromRight:function(range)
{var container=range.startContainer;if(range.endOffset===container.data.length){var cRange=range.cloneRange();cRange.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);var eParent=this.getBlockParent(cRange.endContainer);if(eParent){if(dfx.isChildOf(eParent,this.element)===false){return;}
var sParent=this.getBlockParent(cRange.startContainer);if(eParent!==sParent){this.mergeContainers(eParent,sParent);range.setStart(cRange.startContainer,cRange.startContainer.data.length);range.collapse(true);return;}}
var nextContainer=range.getNextContainer(container);if(dfx.isChildOf(nextContainer,this.element)===false){return false;}
var firstSelectable=range._getFirstSelectableChild(nextContainer);range.setStart(firstSelectable,0);range.collapse(true);range.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);range.deleteContents();range.collapse(true);if(this._parentWillBeDeleted(container)===true){dfx.remove(container.parentNode);}}else{range.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);range.deleteContents();}},_deleteFromLeft:function(range)
{var container=range.startContainer;if(range.startOffset===0){var cRange=range.cloneRange();cRange.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);var sParent=this.getBlockParent(cRange.startContainer);if(sParent){if(dfx.isChildOf(sParent,this.element)===false){return false;}
var eParent=this.getBlockParent(cRange.endContainer);if(eParent!==sParent){this.mergeContainers(eParent,sParent);range.setStart(cRange.startContainer,cRange.startContainer.data.length);range.collapse(true);return;}}
var previousContainer=range.getPreviousContainer(container);if(dfx.isChildOf(previousContainer,this.element)===false){return false;}
if(dfx.isStubElement(previousContainer)===true){if(ViperChangeTracker.isTracking()===true){range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);dfx.addClass(previousContainer,ViperChangeTracker.getCTNodeClass('textRemoved'));dfx.attr(previousContainer,'title','Content removed');}else{dfx.remove(previousContainer);}
range.collapse(true);}else{var lastSelectable=range._getLastSelectableChild(previousContainer);range.setStart(lastSelectable,lastSelectable.data.length);if(ViperChangeTracker.isTracking()===true){this._addTextNodeTracking(lastSelectable,range);}else{range.collapse(true);range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.deleteContents();if(this._parentWillBeDeleted(container)===true){dfx.remove(container.parentNode);}}}}else{var textNode=range.getStartNode();var isTracking=ViperChangeTracker.isTracking();var textAddNode=null
if(isTracking===true){textAddNode=ViperChangeTracker.getCTNode(textNode,'textAdd');}
if(isTracking===true&&textAddNode===null){this._addTextNodeTracking(textNode,range);}else{range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.deleteContents();if(dfx.isBlank(dfx.getNodeTextContent(textAddNode))===true){var prevSibling=textAddNode.previousSibling;if(!prevSibling||prevSibling.nodeType!==dfx.TEXT_NODE){prevSibling=Viper.document.createTextNode('');dfx.insertBefore(textAddNode,prevSibling);}
range.setStart(prevSibling,prevSibling.data.length);dfx.remove(textAddNode);}}}},_addTextNodeTracking:function(textNode,range,del)
{if(range.startOffset===0||ViperChangeTracker.getCTNode(textNode,'textRemoved')!==null){return;}
var beforeText=textNode.nodeValue.substring(0,(range.startOffset-1));var removedChar=textNode.nodeValue.substr((range.startOffset-1),1);var afterText=textNode.nodeValue.substring(range.startOffset);if(range.startOffset===1){var ctNode=ViperChangeTracker.getCTNode(textNode.previousSibling,'textRemoved');if(ctNode){if(ctNode.lastChild&&ctNode.lastChild.nodeType===dfx.TEXT_NODE){ctNode.lastChild.nodeValue+=removedChar;range.setStart(ctNode.lastChild,(ctNode.lastChild.nodeValue.length-1));}else{var charNode=Viper.document.createTextNode(removedChar);ctNode.appendChild(charNode);range.setStart(charNode,0);}
textNode.nodeValue=beforeText+afterText;range.collapse(true);return;}}
if(range.startOffset===textNode.nodeValue.length){var ctNode=ViperChangeTracker.getCTNode(textNode.nextSibling,'textRemoved');if(ctNode){if(ctNode.firstChild&&ctNode.firstChild.nodeType===dfx.TEXT_NODE){ctNode.firstChild.nodeValue=removedChar+ctNode.firstChild.nodeValue;}else{var charNode=Viper.document.createTextNode(removedChar);dfx.insertBefore(ctNode.firstChild,charNode);}
textNode.nodeValue=beforeText;range.setStart(textNode,textNode.nodeValue.length);range.collapse(true);return;}}
var ctNode=ViperChangeTracker.createCTNode('del','textRemoved');var newNode=textNode.splitText(range.startOffset-1);newNode.nodeValue=newNode.nodeValue.substring(1);ViperChangeTracker.addChange('textRemoved',[ctNode]);dfx.insertAfter(textNode,newNode);ctNode.firstChild.nodeValue=removedChar;dfx.insertAfter(textNode,ctNode);range.setStart(textNode,textNode.nodeValue.length);range.collapse(true);},getNextSiblingElementNode:function(node)
{while(node.nextSibling){if(node.nextSibling.nodeType===dfx.ELEMENT_NODE){return node.nextSibling;}
node=node.nextSibling;}
return false;},mergeContainers:function(node,mergeToNode)
{if(!node||!mergeToNode){return false;}
if(ViperChangeTracker.isTracking()===true){var del=Viper.document.createElement('del');mergeToNode.appendChild(del);ViperChangeTracker.addChange('merged',[del]);}
if(node.nodeType===dfx.TEXT_NODE||dfx.isStubElement(node)===true){mergeToNode.appendChild(node);}else if(node.nodeType===dfx.ELEMENT_NODE){while(node.firstChild){mergeToNode.appendChild(node.firstChild);}
dfx.remove(node);}
return true;},surroundContents:function(tag)
{var range=this.getCurrentRange();var otag=tag;if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.getCurrentMode()==='original'){tag='span';}
if(range.collapsed!==true){var startContainer=range.getStartNode();var endContainer=range.getEndNode();if(startContainer===endContainer){if(startContainer.nodeType===dfx.TEXT_NODE){var node=Viper.document.createElement(tag);var rangeContent=range.toString();dfx.setNodeTextContent(node,rangeContent);if(ViperChangeTracker.isTracking()===true){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(node,'tagName',otag);}
ViperChangeTracker.addChange('formatChange',[node]);}
range.deleteContents();range.insertNode(node);range.setStart(node.firstChild,0);range.setEnd(node.firstChild,node.firstChild.length);ViperSelection.addRange(range);}else{var self=this;var changeid=null;if(ViperChangeTracker.isTracking()===true){changeid=ViperChangeTracker.addChange('formatChange',[newElem]);}
this._wrapElement(startContainer.childNodes[range.startOffset],tag,function(newElem){if(changeid!==null){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(newElem,'tagName',otag);}
ViperChangeTracker.addNodeToChange(changeid,newElem);}});}}else{var bookmark=this.createBookmark();var startContainer=null;var endContainer=null;startContainer=bookmark.start.previousSibling;endContainer=bookmark.end.nextSibling;if(!endContainer){endContainer=Viper.document.createTextNode('');dfx.insertAfter(bookmark.end,endContainer);}
if(!startContainer){startContainer=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,startContainer);}
var elements=dfx.getElementsBetween(startContainer,endContainer);var c=elements.length;var self=this;var changeid=null;if(ViperChangeTracker.isTracking()===true){changeid=ViperChangeTracker.addChange('formatChange');}
for(var i=0;i<c;i++){this._wrapElement(elements[i],tag,function(newElem){if(changeid!==null){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(newElem,'tagName',otag);}
ViperChangeTracker.addNodeToChange(changeid,newElem);}});}
this.selectBookmark(bookmark);}}},_wrapElement:function(parent,tag,callback)
{if(!parent){return;}else if(dfx.attr(parent,'viperbookmark')){return;}
if(parent.nodeType===dfx.TEXT_NODE){if(parent.textContent!==''){if(parent.previousSibling&&parent.previousSibling.nodeType===dfx.TEXT_NODE){if(parent.previousSibling.nodeValue===''){dfx.remove(parent.previousSibling);}}
if(parent.previousSibling&&parent.previousSibling.tagName&&parent.previousSibling.tagName.toLowerCase()===tag&&!dfx.attr(parent.previousSibling,'viperbookmark')){parent.previousSibling.appendChild(parent);}else{var elem=Viper.document.createElement(tag);dfx.setNodeTextContent(elem,parent.nodeValue);dfx.insertBefore(parent,elem);dfx.remove(parent);if(callback){callback.call(this,elem);}}}}else if(dfx.isStubElement(parent)===false){if(dfx.isBlockElement(parent)===false&&this.hasBlockChildren(parent)===false){if(parent.tagName.toLowerCase()!==tag){if(parent.previousSibling&&parent.previousSibling.tagName&&parent.previousSibling.tagName.toLowerCase()===tag&&dfx.isBlockElement(parent)===false&&!dfx.attr(parent.previousSibling,'viperbookmark')){parent.previousSibling.appendChild(parent);}else{var elem=Viper.document.createElement(tag);dfx.insertBefore(parent,elem);elem.appendChild(parent);this.removeTagFromChildren(elem,tag);if(callback){callback.call(this,elem);}}}}else{var c=parent.childNodes.length;for(var i=0;i<c;i++){this._wrapElement(parent.childNodes[i],tag,callback);}}}},removeTagFromChildren:function(parent,tag,incParent)
{if(parent.tagName&&parent.tagName.toLowerCase()==='span'&&dfx.hasClass(parent,'_my4_keyword')===true){return;}
var c=parent.childNodes.length;var childNodes=[];for(var i=0;i<c;i++){childNodes.push(parent.childNodes[i]);}
for(var i=0;i<c;i++){var child=childNodes[i];if(child.nodeType===dfx.ELEMENT_NODE){this.removeTagFromChildren(child,tag,true);}}
if(incParent===true){this.removeTag(parent,tag);}},removeTag:function(elem,tag)
{if(elem.parentNode&&elem.parentNode.nodeType===dfx.ELEMENT_NODE){if(elem.nodeType===dfx.ELEMENT_NODE){if(elem.tagName.toLowerCase()===tag){var span=null;if(ViperChangeTracker.isTracking()===true){span=Viper.document.createElement('span');ViperChangeTracker.setCTData(span,'tagName',tag);dfx.insertBefore(elem,span);ViperChangeTracker.addChange('removedFormat',[span]);}
while(elem.firstChild){if(span!==null){span.appendChild(elem.firstChild);}else{dfx.insertBefore(elem,elem.firstChild);}}
dfx.remove(elem);}}}},removeStylesBetweenElems:function(start,end,style)
{var elems=dfx.getElementsBetween(start,end);elems.unshift(start);var len=elems.length;for(var i=0;i<len;i++){this.removeTagFromChildren(elems[i],style,true);}},_getOuterTag:function(node,right)
{if(right!==true){if(!node.previousSibling||(node.previousSibling.nodeType===dfx.TEXT_NODE&&dfx.isBlank(node.previousSibling.data)===true)){var parent=node.parentNode;if(parent&&dfx.isBlockElement(parent)===false){return this._getOuterTag(parent,right);}}}else{if(!node.nextSibling||(node.nextSibling.nodeType===dfx.TEXT_NODE&&dfx.isBlank(node.nextSibling.data)===true)){var parent=node.parentNode;if(parent&&dfx.isBlockElement(parent)===false){return this._getOuterTag(parent,right);}}}
return node;},removeStyle:function(style)
{var range=this.getCurrentRange();var startNode=range.getStartNode();var endNode=range.getEndNode();var startParents=dfx.getParents(startNode,style,this.element);var endParents=dfx.getParents(endNode,style,this.element);this.removeStylesBetweenElems(startNode,endNode,style);if(startParents.length===0&&endParents.length===0){ViperSelection.addRange(range);return;}
var bookmark=this.createBookmark(range);var startTopParent=startParents.pop();var endTopParent=endParents.pop();if(startTopParent===endTopParent){var start=startTopParent.cloneNode(true);var selection=startTopParent.cloneNode(true);var end=startTopParent.cloneNode(true);var lastChild=dfx.getLastChild(start);var elemsBetween=dfx.getElementsBetween(this.getBookmark(start,'start'),lastChild);elemsBetween.push(this.getBookmark(start,'start'));elemsBetween.push(this.getBookmark(start,'end'));elemsBetween.push(lastChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(end);var elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(end,'end'));elemsBetween.push(this.getBookmark(end,'end'));elemsBetween.push(this.getBookmark(end,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(selection);var elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(selection,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var lastChild=dfx.getLastChild(selection);var elemsBetween=dfx.getElementsBetween(this.getBookmark(selection,'end'),lastChild);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(selection);this.removeTagFromChildren(div,style,true);dfx.removeEmptyNodes(start);dfx.removeEmptyNodes(end);dfx.removeEmptyNodes(div,function(elToDel){if(dfx.isTag(elToDel,'span')===true&&dfx.hasClass(elToDel,'viperBookmark')===true){return false;}});if(start.firstChild){dfx.insertBefore(startTopParent,start);}
dfx.insertBefore(startTopParent,div.childNodes);if(end.firstChild){dfx.insertBefore(startTopParent,end);}
dfx.remove(startTopParent);var originalBookmark={start:this.getBookmark(this.element,'start'),end:this.getBookmark(this.element,'end')};this.selectBookmark(originalBookmark);return;}
if(startTopParent){var clone=startTopParent.cloneNode(true);var lastChild=dfx.getLastChild(startTopParent);var elemsBetween=dfx.getElementsBetween(bookmark.start,lastChild);elemsBetween.push(bookmark.start);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(clone);elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(clone,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(clone);this.removeTagFromChildren(div,style);dfx.insertAfter(startTopParent,div.childNodes);}
if(endTopParent){var clone=endTopParent.cloneNode(true);var firstChild=dfx.getFirstChild(endTopParent);var elemsBetween=dfx.getElementsBetween(firstChild,bookmark.end);elemsBetween.push(bookmark.end);elemsBetween.push(firstChild);dfx.remove(elemsBetween);var lastChild=dfx.getLastChild(clone);elemsBetween=dfx.getElementsBetween(this.getBookmark(clone,'end'),lastChild);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(clone);this.removeTagFromChildren(div,style);dfx.insertBefore(endTopParent,div.childNodes);}
var originalBookmark={start:this.getBookmark(this.element,'start'),end:this.getBookmark(this.element,'end')};this.selectBookmark(originalBookmark);},selectBookmark:function(bookmark)
{if(this.element){this.element.focus();}
var range=this.getCurrentRange();var startPos=null;var endPos=null;var startOffset=0;var endOffset=null;if(bookmark.start.nextSibling===bookmark.end||dfx.getElementsBetween(bookmark.start,bookmark.end).length===0){if(bookmark.end.nextSibling){startPos=dfx.getFirstChild(bookmark.end.nextSibling);}else if(bookmark.start.previousSibling){startPos=dfx.getFirstChild(bookmark.start.previousSibling);if(startPos.nodeType===dfx.TEXT_NODE){startOffset=startPos.length;}}else{bookmark.end.parentNode.appendChild(Viper.document.createTextNode(''));startPos=dfx.getFirstChild(bookmark.end.nextSibling);}}else{if(bookmark.start.nextSibling){startPos=dfx.getFirstChild(bookmark.start.nextSibling);}else{if(!bookmark.start.previousSibling){var tmp=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,tmp);}
startPos=dfx.getLastChild(bookmark.start.previousSibling);startOffset=startPos.length;}
if(bookmark.end.previousSibling){endPos=dfx.getLastChild(bookmark.end.previousSibling);}else{endPos=dfx.getFirstChild(bookmark.end.nextSibling);endOffset=0;}}
dfx.remove([bookmark.start,bookmark.end]);if(endPos===null){range.setEnd(startPos,startOffset);range.collapse(false);}else{range.setStart(startPos,startOffset);if(endOffset===null){endOffset=(endPos.length||0);}
range.setEnd(endPos,endOffset);}
try{ViperSelection.addRange(range);}catch(e){}},getBookmark:function(parent,type)
{var elem=dfx.getClass('viperBookmark_'+type,parent)[0];return elem;},removeBookmarks:function(elem)
{dfx.remove(dfx.getClass('viperBookmark',elem,'span'));},createBookmark:function(range,keepOldBookmarks)
{if(keepOldBookmarks!==true){this.removeBookmarks(this.element);}
var currRange=range||this.getCurrentRange();var range=currRange.cloneRange();var startContainer=range.startContainer;var endContainer=range.endContainer;var startOffset=range.startOffset;var endOffset=range.endOffset;range.collapse(false);var endBookmark=Viper.document.createElement('span');endBookmark.style.display='none';dfx.setHtml(endBookmark,'&nbsp;');dfx.addClass(endBookmark,'viperBookmark viperBookmark_end');endBookmark.setAttribute('viperBookmark','end');range.insertNode(endBookmark);if(dfx.isChildOf(endBookmark,this.element)===false){this.element.appendChild(endBookmark);}
range.setStart(startContainer,startOffset);range.collapse(true);var startBookmark=Viper.document.createElement('span');startBookmark.style.display='none';dfx.addClass(startBookmark,'viperBookmark viperBookmark_start');dfx.setHtml(startBookmark,'&nbsp;');startBookmark.setAttribute('viperBookmark','start');try{range.insertNode(startBookmark);if(startBookmark.previousSibling===endBookmark){var tmp=startBookmark;startBookmark=endBookmark;endBookmark=tmp;}}catch(e){dfx.insertBefore(endBookmark,startBookmark);}
if(dfx.isChildOf(startBookmark,this.element)===false){if(this.element.firstChild){dfx.insertBefore(this.element.firstChild,startBookmark);}else{this.element.appendChild(startBookmark);}}
if(!endBookmark.previousSibling){var tmp=Viper.document.createTextNode('');dfx.insertBefore(endBookmark,tmp);}
if(!startBookmark.nextSibling){var tmp=Viper.document.createTextNode('');dfx.insertAfter(startBookmark,tmp);}
currRange.setStart(startBookmark.nextSibling,0);currRange.setEnd(endBookmark.previousSibling,(endBookmark.previousSibling.length||0));var bookmark={start:startBookmark,end:endBookmark};return bookmark;},insertNodeAtBookmark:function(node,bookmark,noSelect)
{if(!bookmark||!node){return;}
dfx.insertBefore(bookmark.start,node);if(noSelect!==true){this.selectBookmark(bookmark);}},splitNodeAtRange:function(tag,range,copyMidTags)
{range=range||this.getCurrentRange();var bookmark=this.createBookmark(range);return this.splitNodeAtBookmark(tag,bookmark,copyMidTags);},splitNodeAtBookmark:function(tag,bookmark,copyMidTags)
{if(!bookmark){return;}
var node=bookmark.start.parentNode;var foundNode=null;while(node&&node!==this.element){if(dfx.isTag(node,tag)===true){foundNode=node;}
node=node.parentNode;}
var prevNode=null;var nextNode=null;var midNode=null;if(foundNode===null){prevNode=bookmark.start.previousSibling;nextNode=bookmark.end.nextSibling;if(!prevNode&&!nextNode){prevNode=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,prevNode);nextNode=prevNode;}else if(!prevNode&&nextNode){prevNode=nextNode;}else if(!nextNode&&prevNode){nextNode=prevNode;}}else{var prevElem=null;var newElem=null;var midElem=null;var toRemove=[];var parents=[];var prevLvl=null;dfx.walk(foundNode,function(elem,lvl){if(elem===bookmark.start){return false;}
if(elem.nodeType===dfx.TEXT_NODE){toRemove.push(elem);parents[(lvl-1)].appendChild(elem.cloneNode(false));}else{var clone=elem.cloneNode(false);if(prevLvl===null){newElem=clone;parents.push(clone);}else if(lvl===prevLvl){parents[(lvl-1)].appendChild(clone);parents.push(clone);}else if(lvl>prevLvl){parents[prevLvl]=prevElem;}else if(lvl<prevLvl){parents.pop();parents.push(clone);parents[(lvl-1)].appendChild(clone);}
if(copyMidTags===true){if(dfx.isTag(elem,tag)===false){if(midElem===null){midElem=elem.cloneNode(false);}else{midElem.appendChild(elem.cloneNode(false));}}}
prevElem=clone;}
prevLvl=lvl;});dfx.remove(toRemove);toRemove=null;if(this.elementIsEmpty(newElem)===false){dfx.insertBefore(foundNode,newElem);}else{newElem=null;}
if(midElem!==null){dfx.insertBefore(foundNode,midElem);}
prevNode=newElem;nextNode=foundNode;midNode=midElem;}
this.selectBookmark(bookmark);return{prevNode:prevNode,nextNode:nextNode,midNode:midNode};},hasBlockChildren:function(parent)
{var c=parent.childNodes.length;for(var i=0;i<c;i++){if(parent.childNodes[i].nodeType===dfx.ELEMENT_NODE){if(dfx.isBlockElement(parent.childNodes[i])===true){return true;}}}
return false;},elementIsEmpty:function(elem)
{if(dfx.isBlank(dfx.getNodeTextContent(elem))===true){var tags=dfx.getTag('*',elem);var ln=tags.length;for(var i=0;i<ln;i++){if(dfx.isStubElement(tags[i])===true){return false;}}
return true;}
return false;},_handleAncillaryKey:function(e)
{var key=e.keyCode;var preventDefault=true;var shiftKey=e.shiftKey;switch(key){case dfx.DOM_VK_DELETE:this.deleteContents();ViperPluginManager.fireKeyPressed(e);break;case dfx.DOM_VK_DOWN:case dfx.DOM_VK_UP:case dfx.DOM_VK_LEFT:case dfx.DOM_VK_RIGHT:ViperPluginManager.fireCaretPositioned();preventDefault=false;break;default:preventDefault=false;break;}
if(preventDefault===true){dfx.preventDefault(e);return false;}
if(key===46){this._fireNodesChanged=true;}
return true;},keyDown:function(e)
{if(this.pluginActive()===true&&ViperPluginManager.allowTextInput!==true){return;}
if(!ViperPluginManager.fireKeyDown(e)){return false;}
var preventDefaul=false;if(this._handleSpecialKey(e)===false){if(this.isBrowser('msie')!==true){this._preventKeyPress=true;}
return false;}else if((e.ctrlKey===true||e.metaKey===true)&&(this.isBrowser('msie')===true||this.isBrowser('chrome')===true)){if(!ViperPluginManager.fireKeyPressed(e)){return false;}}
switch(e.keyCode){case 27:this.fireClickedOutside();break;default:if(/Firefox/.test(navigator.userAgent)!==true){preventDefaul=!(this._handleAncillaryKey(e));}
break;}
if(preventDefaul===true){dfx.preventDefault(e);return false;}
return true;},keyPress:function(e)
{if(this._preventKeyPress===true){this._preventKeyPress=false;return;}
if(this.enabled!==true){return;}
if(this.pluginActive()===true&&ViperPluginManager.allowTextInput!==true){return;}
if(!this.rangeInViperBounds()){var range=this.getCurrentRange();if(range===null){return true;}
var commEl=range.getCommonElement();if(dfx.isChildOf(this.element,commEl)===true){var startNode=range.getStartNode();var endNode=range.getEndNode();if(dfx.isChildOf(startNode,this.element)!==true){range.setStart(range._getFirstSelectableChild(this.element),0);}
if(dfx.isChildOf(endNode,this.element)!==true){var lastSelectable=range._getLastSelectableChild(this.element);range.setEnd(lastSelectable,lastSelectable.length);}
ViperSelection.addRange(range);}else{if(e.keyCode===8){return false;}
return true;}}
if(!ViperPluginManager.fireKeyPressed(e)){return false;}
var char=null;if(e.which===null){char=String.fromCharCode(e.keyCode);}else if(e.which>0){char=String.fromCharCode(e.which);}
if(char!==null&&e.ctrlKey!==true&&e.metaKey!==true){switch(e.keyCode){case dfx.DOM_VK_DELETE:return this._handleAncillaryKey(e);break;default:if(this.insertTextAtCaret(char)===false){return false;}
break;}}
return this._handleAncillaryKey(e);},_handleSpecialKey:function(e)
{var keyCode=e.which;if(keyCode===null){keyCode=e.keyCode;}
var preventDefault=false;switch(keyCode){case 65:if(e.ctrlKey===true||e.metaKey===true){preventDefault=true;var range=this.getCurrentRange();if(this.isBrowser('msie')===true){var selStart=Viper.document.createTextNode('');var selEnd=Viper.document.createTextNode('');if(this.element.firstChild){dfx.insertBefore(this.element.firstChild,selStart);}else{this.element.appendChild(selStart);}
this.element.appendChild(selEnd);range.setStart(selStart,0);range.setEnd(selEnd,0);}else{range.setStart(range._getFirstSelectableChild(this.element),0);var lastSelectable=range._getLastSelectableChild(this.element);range.setEnd(lastSelectable,lastSelectable.length);}
ViperSelection.addRange(range);}
break;default:break;}
if(preventDefault===true){dfx.preventDefault(e);return false;}
return true;},focus:function()
{if(this.element){try{this.element.focus();this.fireCaretUpdated();}catch(e){}}},setRange:function(elem,pos)
{var range=this.getCurrentRange();range.setStart(elem,pos);range.collapse(true);return range;},mouseUp:function(e,target)
{if(ViperPluginManager.fireClicked(e)===false){return false;}
var range=this.getCurrentRange();if(!range){var target=dfx.getMouseEventTarget(e);if(dfx.isStubElement(target)===true){var range=ViperSelection.createRange();range.selectNodeContents(target);ViperSelection.addRange(range);}}else if(range.collapsed===true){var target=dfx.getMouseEventTarget(e);if(dfx.isStubElement(target)===true){range.selectNodeContents(target);}else if(range.startContainer.nodeType!==dfx.TEXT_NODE){var startCont=range.startContainer;var elem=startCont.childNodes[range.startOffset];var selNode=null;if(elem){if(elem.firstChild){selNode=range._getFirstSelectableChild(elem);if(selNode&&dfx.isBlank(selNode.data)===true){selNode.data='';}}else{dfx.setHtml(elem,'&nbsp;');selNode=elem.firstChild;}
if(selNode){range.setStart(selNode,0);range.collapse(true);}}}else if(range.startOffset===1&&range.startContainer.data===String.fromCharCode(160)){range.setStart(range.startContainer,0);range.collapse(true);}}
ViperSelection._lastRange=null;if(this.caret){this.caret.style.visibility='hidden';}
ViperPluginManager.fireSelectionChanged(range);this.fireCallbacks('caretPositioned',{range:range});},setStylesURL:function(url)
{this.stylesURL=url;var viperCSS=this.stylesURL+'/viper.css';dfx._includeCss(viperCSS);},setViperURL:function(url,callback)
{this.viperURL=url;ViperPluginManager.pluginsURL=url+'/plugins/';if(callback){callback.call(this);}},getStylesURL:function()
{return this.stylesURL;},fireCaretUpdated:function()
{ViperPluginManager.fireCaretUpdated();},fireNodesChanged:function(type,noFocus)
{type=type||'text_change';this.fireCallbacks('nodesChanged');ViperUndoManager.add('viper',type);ViperChangeTracker.updatePositionMarkers(true);if(noFocus!==true){this.focus();}},isChildOfElems:function(el,parents)
{while(el&&el.parentNode){if(parents.inArray(el.parentNode)===true){return true;}
el=el.parentNode;}
return false;},isChildOfClass:function(el,className,checkSelf)
{if(checkSelf===true&&el&&dfx.hasClass(el.parentNode,className)===true){return true;}
while(el&&el.parentNode){if(dfx.hasClass(el.parentNode,className)===true){return true;}
el=el.parentNode;}
return false;},mouseDown:function(e,target)
{if(e){if(ViperPluginManager.fireMouseDown(e)===false){return false;}}
if(!target){target=dfx.getMouseEventTarget(e);}
if(target!==this.element){if(dfx.isTag(target,'html')===true){return;}
var elems=[this.element,dfx.getId('Help'),dfx.getId('HelpEditingToolbarIcon')];if(this._subElementActive===true){if(target===this._mainElem||dfx.isChildOf(target,this._mainElem)===true){this.setSubElementState(null,false);return;}}
if(this.isChildOfElems(target,elems)===false){if(this.isChildOfClass(target,'_viper-CT-marker',true)===false&&this.isChildOfClass(target,'_viper-CT-infoBoxHolder',true)===false){this.fireClickedOutside(target);}}else{this.fireCaretUpdated();}}},_setupCoreTrackChangeActions:function()
{var self=this;ViperChangeTracker.setApproveCallback('textRemoved',function(clone,node){self.removeElem(node);});ViperChangeTracker.setRejectCallback('textRemoved',function(clone,node){while(node.firstChild){if(node.firstChild.nodeType===dfx.ELEMENT_NODE&&ViperChangeTracker.isTrackingNode(node.firstChild)){dfx.remove(node.firstChild);}else{dfx.insertBefore(node,node.firstChild);}}
self.removeElem(node);});ViperChangeTracker.setApproveCallback('textAdded',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
self.removeElem(node);});ViperChangeTracker.setRejectCallback('textAdded',function(clone,node){self.removeElem(node);});ViperChangeTracker.setApproveCallback('merged',function(clone,node){self.removeElem(node);});ViperChangeTracker.setDescriptionCallback('merged',function(node){return'Text';});ViperChangeTracker.setRejectCallback('merged',function(clone,node){var newParent=node.parentNode.cloneNode(false);dfx.insertAfter(node.parentNode,newParent);var elems=dfx.getElementsBetween(node,newParent);var elem=null;while(elem=elems.shift()){newParent.appendChild(elem);}
self.removeElem(node);});ViperChangeTracker.setApproveCallback('viperComment',function(clone,node){ViperChangeTracker.removeTrackChanges(node,false);});},fireClickedOutside:function(clickedElement)
{if(this.isPluginElement(clickedElement)===true){return;}
if(this.pluginActive()===true){return;}
this.setEnabled(false);this.fireCallbacks('clickedOutside');},pluginActive:function()
{return(ViperPluginManager.getActivePlugin()!==null);},isPluginElement:function(element)
{return ViperPluginManager.isPluginElement(element);},registerCallback:function(type,namespace,callback)
{if(dfx.isFn(callback)===false){return;}
if(!this.callbacks[type]){this.callbacks[type]={namespaces:{},others:[]};}
if(namespace){if(!this.callbacks[type].namespaces[namespace]){this.callbacks[type].namespaces[namespace]=[];}
this.callbacks[type].namespaces[namespace]=callback;}else{this.callbacks[type].others.push(callback);}},fireCallbacks:function(type,data,doneCallback)
{if(this.callbacks[type]){var callbackList=[];for(var namespace in this.callbacks[type].namespaces){if(this.callbacks[type].namespaces.hasOwnProperty(namespace)===true){var callback=this.callbacks[type].namespaces[namespace];if(callback){callbackList.push(callback);}}}
var len=this.callbacks[type].others.length;for(var i=0;i<len;i++){callbackList.push(this.callbacks[type].others[i]);}
this._fireCallbacks(callbackList,data,doneCallback);}},_fireCallbacks:function(callbacks,data,doneCallback)
{if(callbacks.length===0){if(doneCallback){doneCallback.call(this,data);}
return;}
var callback=callbacks.shift();if(dfx.isFn(callback)===true){var self=this;var retVal=callback.call(this,data,function(){self._fireCallbacks(callbacks,data,doneCallback);});if(retVal!==false){this._fireCallbacks(callbacks,data,doneCallback);}}},removeCallback:function(type,namespace)
{if(!type){if(namespace){for(var type in this.callbacks){if(this.callbacks.hasOwnProperty(type)===true){this.removeCallback(type,namespace);}}}}else if(this.callbacks[type]){if(namespace){if(this.callbacks[type].namespaces[namespace]){this.callbacks[type].namespaces[namespace]=[];}}else{delete this.callbacks[type];}}},getHtml:function(elem)
{elem=elem||this.element;if(typeof elem==='string'){var tmp=elem;elem=Viper.document.createElement('div');dfx.setHtml(elem,tmp);}
var clone=elem.cloneNode(true);this.removeEmptyNodes(clone);this._removeViperElements(clone);this.fireCallbacks('getHtml',{element:clone});var html=dfx.getHtml(clone);html=this._fixHtml(html);return html;},getSaveContent:function(elem)
{if(this.element===elem){ViperChangeTracker.activateFinalMode();}
var html=this.getHtml(elem);var info=ViperChangeTracker.getTrackingInfo(elem);if(info){html+='<!--viperTrackInfo='+dfx.jsonEncode(info)+'-->';}
return html;},getContents:function(elem)
{elem=elem||this.element;var clone=elem.cloneNode(true);this._removeViperElements(clone);this.fireCallbacks('getContents',{element:clone});var html=dfx.getHtml(clone);return html;},_removeViperElements:function(elem)
{var bookmarks=dfx.getClass('viperBookmark',elem);if(bookmarks){dfx.remove(bookmarks);}
var caret=dfx.getClass('viper_caret',elem);if(caret){dfx.remove(caret);}
caret=dfx.getId('caret');dfx.remove(caret);},setContents:function(contents)
{if(typeof contents==='string'){this.element.innerHTML=contents;}else if(contents){this.element.appendChild(contents);}
this.fireCallbacks('setContents',{element:this.element});this.initEditableElement();},setHtml:function(contents,callback)
{var clone=Viper.document.createElement('div');if(typeof contents==='string'){dfx.setHtml(clone,contents);}else if(contents){clone.appendChild(contents);}
this.removeEmptyNodes(clone);var self=this;this.fireCallbacks('setHtml',{element:clone},function(){dfx.setHtml(self.element,dfx.getHtml(clone));self.initEditableElement();if(callback){callback.call(this);}});},_cleanDOM:function(elem)
{if(!elem)return;if(elem.firstChild){this._cleanDOM(elem.firstChild);}
var nextSibling=elem.nextSibling;this._cleanNode(elem);if(nextSibling){this._cleanDOM(nextSibling);}},_cleanNode:function(node)
{if(node.nodeType===dfx.ELEMENT_NODE){switch(node.tagName.toLowerCase()){case'br':if(!node.nextSibling&&node.hasAttribute&&node.hasAttribute('_moz_dirty')){dfx.remove(node);}
break;}}else if(node.nodeType===dfx.TEXT_NODE){if(dfx.trim(node.data)===''&&dfx.isTag(node.parentNode,'td')===false){dfx.remove(node);}}},removeEmptyNodes:function(element,content)
{if(!content){if(!element){element=this.element;}
this._cleanDOM(element);content=dfx.getHtml(element);}
var rep=content.replace(/<(\w+)(?![^>]*(changeid))[^>]*>\s*<\/\1>/g,'');if(rep&&rep!==content){return this.removeEmptyNodes(element,rep);}else{dfx.setHtml(element,rep);}},_fixHtml:function(html)
{return dfx.fixHtml(html);},removeElem:function(elem)
{if(dfx.isArray(elem)===true){var eln=elem.length;for(var i=0;i<eln;i++){this.removeElem(elem[i]);}}else if(elem){var parent=elem.parentNode;dfx.remove(elem);if(parent){for(var node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType!==dfx.TEXT_NODE||node.nodeValue.length!==0){return;}}
dfx.remove(parent);}}}};var ViperChangeTracker={_className:'_viper-CT',_nodeClassName:'_viper-CTNode',_tracking:false,_nodeTypeVisibility:{},_viper:null,_updateTimer:null,_updateDelay:600,_infoBoxHolder:null,_markerHolder:null,_processingMarkers:false,_changes:{},_changeSeq:0,_users:{},_descCallbacks:{},_changeTypes:{},_colours:['green','blue','red','yellow','orange','purple','pink'],_userColours:{},_rejectCallbacks:{},_approveCallbacks:{},_comments:{},_batchChangeid:null,_actionTypes:{remove:'Deletes',insert:'Inserts',format:'Format',comment:'Comments'},_actionTypeDisplayStates:{insert:false,remove:true,format:true,comment:true},_currentMode:null,_orientation:'right',_tmpData:{},init:function(viper,trackChanges)
{var self=this;this._viper=viper;this._tracking=trackChanges||false;this.cleanUp();this._viper.registerCallback('nodesChanged','ViperChangeTracker',function(){if(self._viper._subElementActive===true){var commentElemId=self._viper.element.id;var changeid=commentElemId.replace('viperComment-','');self._comments[changeid]=self._viper.getHtml(self._viper.element);}});this._viper.registerCallback('viperEnabled','ViperChangeTracker',function(){self._processingMarkers=false;var childNodes=self._viper.element.childNodes;for(var node=self._viper.element.lastChild;node;node=node.previousSibling){if(node.nodeType===8&&node.data.indexOf('viperTrackInfo=')===0){var loadedData=node.data.replace('viperTrackInfo=','');try{loadedData=dfx.jsonDecode(loadedData);}catch(e){loadedData=[];}
dfx.foreach(loadedData,function(changeid){if(dfx.isset(loadedData[changeid].comment)===true){self._comments[changeid]=loadedData[changeid].comment;}});dfx.remove(node);break;}}
var changes=self.loadCTNodes(self._viper.element);var foundChanges=false;dfx.foreach(changes,function(changeid){self._changes[changeid]=changes[changeid];foundChanges=true;});ViperChangeTracker.activateFinalMode();if(foundChanges===true){self.updatePositionMarkers(false);ViperChangeTracker._enableChangeTracking();}});this._viper.registerCallback('ViperUndoManager:undo','ViperChangeTracker',function(){self.reLoad();});this._viper.registerCallback('ViperUndoManager:redo','ViperChangeTracker',function(){self.reLoad();});jQuery(window).resize(function(){self.updatePositionMarkers(true);});},reLoad:function()
{this.cleanUp();var self=this;var changes=this.loadCTNodes(this._viper.element);var foundChanges=false;dfx.foreach(changes,function(changeid){self._changes[changeid]=changes[changeid];foundChanges=true;});if(foundChanges===true){var currMode=self.getCurrentMode();if(currMode==='original'){self.activateOriginalMode();}else{self.activateFinalMode();}
self.updatePositionMarkers(false);}},cleanUp:function()
{this._changes={};this._changeSeq=0;this._userColours=[];this._tmpData={};this._orientation='right';if(this._infoBoxHolder){dfx.remove(this._infoBoxHolder);this._infoBoxHolder=null;}
if(this._markerHolder){dfx.remove(this._markerHolder);this._markerHolder=null;}},hasChanges:function()
{return(dfx.isEmpty(this._changes)!==true);},isTracking:function()
{var tracking=(this._viper._subElementActive!==true&&this._tracking===true);return tracking;},isTrackingNode:function(node,ctNodeType)
{if(node&&node.nodeType===dfx.ELEMENT_NODE&&dfx.hasClass(node,this._nodeClassName)===true){if(!ctNodeType||dfx.hasClass(node,'CT-'+ctNodeType)===true||node.tagName.toLowerCase()==='ins'||node.tagName.toLowerCase()==='del'||this.isInsertType(this.getCTNTypeFromNode(node))===true){return true;}}
return false;},_enableChangeTracking:function()
{this._tracking=true;this._viper.fireCallbacks('ViperChangeTracker:tracking',true);},enableChangeTracking:function()
{this._infoBoxHolder=this._createInfoboxHolder();this._markerHolder=this._createMarkerHolder();if(this._viper.element){this._enableChangeTracking();this.loadChanges(this._viper.element);this.updatePositionMarkers(false);}},disableChangeTracking:function()
{this._tracking=false;this._viper.fireCallbacks('ViperChangeTracker:tracking',false);},loadChanges:function(elem)
{var changes=this.loadCTNodes(this._viper.element);},setNodeTypeVisibility:function(nodeType,visible)
{this._nodeTypeVisibility[nodeType]=visible;var elems=dfx.getClass('CT-'+nodeType,this._viper.element);if(visible===false){dfx.addClass(elems,'CT-disabled');}else{dfx.removeClass(elems,'CT-disabled');}},activateFinalMode:function()
{this.setNodeTypeVisibility('textRemoved',false);this.setNodeTypeVisibility('textAdd',true);this.setActionDisplayState('insert',false);this.setActionDisplayState('remove',true);this._viper.fireCallbacks('ViperChangeTracker:modeChange','final');this._currentMode='final';},activateOriginalMode:function()
{this.setNodeTypeVisibility('textRemoved',true);this.setNodeTypeVisibility('textAdd',false);this.setActionDisplayState('insert',true);this.setActionDisplayState('remove',false);this._viper.fireCallbacks('ViperChangeTracker:modeChange','original');this._currentMode='original';},getCurrentMode:function()
{return this._currentMode;},isNodeTypeVisible:function(ctNodeType)
{if(dfx.isset(this._nodeTypeVisibility[ctNodeType])===true&&this._nodeTypeVisibility[ctNodeType]!==true){return false;}
return true;},isNodeVisible:function(ctNode)
{if(ctNode){for(var ctType in this._nodeTypeVisibility){if(this._nodeTypeVisibility.hasOwnProperty(ctType)===false){continue;}
if(dfx.hasClass(ctNode,'CT-'+ctType)===true){return this._nodeTypeVisibility[ctType];}}}
return true;},isInsertType:function(ctnType)
{if(this._changeTypes[ctnType]&&this._changeTypes[ctnType].actionType==='insert'){return true;}
return false;},canShowType:function(ctnType)
{var actionType=null;if(this._changeTypes[ctnType]){actionType=this._changeTypes[ctnType].actionType;}
return(this._actionTypeDisplayStates[actionType]===true);},setActionDisplayState:function(actionType,display,nodelay)
{nodelay=nodelay||false;this._actionTypeDisplayStates[actionType]=display;this.updatePositionMarkers(!nodelay);},getActionDisplayStates:function()
{return this._actionTypeDisplayStates;},addChangeType:function(typeName,title,actionType)
{if(!this._actionTypes[actionType]){return;}
this._changeTypes[typeName]={title:title,actionType:actionType};},getActionTypes:function()
{return this._actionTypes;},getTypeTitle:function(typeName)
{var title='';if(this._changeTypes[typeName]&&this._changeTypes[typeName].title){title=this._changeTypes[typeName].title;}
return title;},getCTNode:function(node,ctnType)
{while(node&&node!==this._viper.element){if(dfx.hasClass(node,'_viper-CTNode')===true){if(ctnType){if(dfx.hasClass(node,'CT-'+ctnType)===true){return node;}}else{return node;}}
node=node.parentNode;}
return null;},getCTNTypeFromNode:function(node)
{var ctnType='';dfx.foreach(this._changeTypes,function(type){if(dfx.hasClass(node,'CT-'+type)===true){ctnType=type;return false;}});return ctnType;},createCTNode:function(nodeType,ctnType,childNode)
{var node=Viper.document.createElement(nodeType);dfx.addClass(node,this._nodeClassName+' CT-'+ctnType);if(!childNode){var textNode=Viper.document.createTextNode('');node.appendChild(textNode);}else{node.appendChild(childNode);}
if(this.isNodeTypeVisible(ctnType)===false){dfx.addClass(node,'CT-disabled');}
return node;},trackNodes:function(nodes,ctnType)
{var ctnClass=this.getCTNodeClass(ctnType);dfx.foreach(nodes,function(i){dfx.addClass(nodes[i],ctnClass);});},getCTNodeClass:function(ctnType)
{var className=this._nodeClassName+' CT-'+ctnType;if(this.isNodeTypeVisible(ctnType)===false){className+=' CT-disabled';}
return className;},getCTNodes:function(ctnType,parentElement)
{parentElement=parentElement||this._viper.element;var className=this._nodeClassName;if(ctnType){className='CT-'+ctnType;}
var nodes=dfx.getClass(className,parentElement);return nodes;},getPreviousVisibleContainer:function(range,node)
{while(node){var ctNode=this.getCTNode(node);if(ctNode&&this.isNodeVisible(ctNode)===false){node=range.getPreviousContainer(ctNode);}else{break;}}
return node;},getNextVisibleContainer:function(range,node)
{while(node){var ctNode=this.getCTNode(node);if(ctNode&&this.isNodeVisible(ctNode)===false){node=range.getNextContainer(ctNode);}else{break;}}
return node;},getColour:function(colourIndex)
{return this._colours[colourIndex];},getMarker:function(changeid)
{if(!changeid){return;}
var elemid=this._className+'-marker-'+changeid;var marker=dfx.getId(elemid);if(!marker){return null;}
return marker;},_createMarker:function(ctnType,posX,posY,colourIndex,show,changeid)
{var colour=this._colours[colourIndex];var rect=null;if(!this._tmpData.viperElemRect){rect=dfx.getBoundingRectangle(this._viper.element);this._tmpData.viperElemRect=rect;}else{rect=this._tmpData.viperElemRect;}
var elem=Viper.document.createElement('div');var c=this._className+'-marker';elem.id=this._className+'-marker-'+changeid;dfx.addClass(elem,c+' CT-'+ctnType+' CT-'+colour);if(this._orientation==='left'){dfx.setStyle(elem,'left',parseInt(rect.x1-26)+'px');}else{dfx.setStyle(elem,'left',parseInt(posX)+'px');}
dfx.setStyle(elem,'top',parseInt(posY)+'px');if(show!==true){dfx.addClass(elem,'CT-ins');}
var orientation='';if(this._orientation==='left'){orientation=' orientationLeft';}
var content='<div class="'+c+'-teardrop'+orientation+'"></div>';dfx.setHtml(elem,content);var width=0;if(this._orientation==='left'){width=parseInt(posX-(rect.x1-30));}else{width=parseInt((rect.x2+30)-posX);}
dfx.setStyle(elem,'width',width+'px');return elem;},getParentCTNode:function(node,type)
{while(node&&node!==this._viper.element){node=node.parentNode;if(this.isTrackingNode(node,type)===true){return node;}}
return false;},addPositionMarkers:function(ctNodes,index,displayed,callback)
{if(!ctNodes&&!index){if(this._processingMarkers===true){return;}
this._processingMarkers=true;this.removePositionMarkers();this.removeInfoBoxPosition();this._createMarkerHolder();this.updateInfoBoxPosition();ctNodes=this.getCTNodes();index=0;displayed={};}
var self=this;var node=ctNodes[index];if(!node){if(callback){callback.call(this);}
this._processingMarkers=false;return;}
if(!node.parentNode){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
var ctNodeType=this.getCTNTypeFromNode(node);var parentCTNode=this.getParentCTNode(node,ctNodeType);if(parentCTNode){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
var changeid=node.getAttribute('viperChangeid');if(displayed[changeid]===true){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
displayed[changeid]=true;var change=self.getChange(changeid);if(change){var idParts=changeid.split('-');colourIndex=parseInt(idParts[2]);this.setUserColour(parseInt(idParts[0]),idParts[2]);var isInsertType=this.isInsertType(change.type);var canShowType=this.canShowType(change.type);var tmp=Viper.document.createElement('span');dfx.setHtml(tmp,'&nbsp;');if(dfx.isBlockElement(node)===true){if(node.firstChild){dfx.insertBefore(node.firstChild,tmp);}else{node.appendChild(tmp);}}else{dfx.insertBefore(node,tmp);}
var tmpPos=dfx.getBoundingRectangle(tmp);var marker=self._createMarker(change.type,tmpPos.x1,tmpPos.y2,colourIndex,canShowType,changeid);dfx.remove(tmp);this._markerHolder.appendChild(marker);this.getChangeInfo(changeid,function(changeInfo){if(!self._infoBoxHolder){self._processingMarkers=false;return;}
var infoBox=self._createInfoBox(changeInfo,colourIndex);self._setMouseEvents(infoBox,marker,node,isInsertType,changeid);self._infoBoxHolder.appendChild(infoBox);try{self._positionInfoBox(infoBox,tmpPos,canShowType);}catch(e){}
self._viper.fireCallbacks('ViperChangeTracker:infoBoxAdded',changeid);self.addPositionMarkers(ctNodes,(index+1),displayed,callback);});}},removePositionMarkers:function()
{dfx.remove(dfx.getClass(this._className+'-marker'));},updatePositionMarkers:function(delayed,force,callback)
{if(force!==true&&this._viper._subElementActive===true){return;}
if(this._updateTimer){clearTimeout(this._updateTimer);this._updateTimer=null;}
if(delayed!==true){this.addPositionMarkers(null,null,null,callback);}else{var self=this;this._updateTimer=setTimeout(function(){try{self.addPositionMarkers(null,null,null,callback);}catch(e){};},this._updateDelay);}},_createMarkerHolder:function()
{if(this._markerHolder){dfx.remove(this._markerHolder);}
var holder=Viper.document.createElement('div');dfx.addClass(holder,this._className+'-markerHolder');Viper.document.body.appendChild(holder);this._markerHolder=holder;return holder;},_createInfoBox:function(data,colourIndex)
{if(!data){return;}
var colour=this._colours[colourIndex];var lineBox=Viper.document.createElement('div');dfx.addClass(lineBox,this._className+'-lineBox CT-'+colour);var c=this._className+'-infoBox';var infoBox=Viper.document.createElement('div');dfx.addClass(infoBox,c);var description='';if(dfx.isObj(data.desc)!==true){description=data.desc;}
var isComment='';if(data.typeid==='viperComment'){isComment=' isComment';}
var content='<div class="'+c+'-top">';if(data.typeid==='viperComment'){content+='<div class="clickToReject">Click to remove comment</div>';}else{content+='<div class="clickToAccept">Click to accept change</div>';content+='<div class="clickToReject">Click to reject change</div>';}
content+='<div class="changeBoxTitle"><strong>'+data.ownerName+'</strong> <span>'+data.time+'</span></div>';content+='<div class="'+c+'-actionBtns'+isComment+'">';if(data.typeid!=='viperComment'){content+='<div class="'+c+'-actionBtns-approve"></div>';}
content+='<div class="'+c+'-actionBtns-reject"></div>';content+='</div></div>';content+='<div class="'+c+'-bottom"><strong>'+data.typeName+':</strong> ';content+=description;content+='</div>';dfx.setHtml(infoBox,content);if(dfx.isObj(data.desc)===true){if(dfx.isArray(data.desc)!==true){data.desc=[data.desc];}
dfx.foreach(data.desc,function(i){dfx.getClass(c+'-bottom',infoBox)[0].appendChild(data.desc[i]);});}
lineBox.appendChild(infoBox);return lineBox;},removeInfoBoxPosition:function()
{dfx.empty(this._infoBoxHolder);},_positionInfoBox:function(infoBox,dim,show)
{var height=0;var offset=35;var prevBox=infoBox;while(prevBox=prevBox.previousSibling){var prevRect=dfx.getBoundingRectangle(prevBox.firstChild);if(parseInt(prevRect.y2-prevRect.y1)>0){height=parseInt(prevRect.y2-dim.y2)+offset;break;}}
if(show!==true){dfx.addClass(infoBox,'CT-ins');}
if(this._orientation==='left'){dfx.setStyle(infoBox,'left','auto');dfx.setStyle(infoBox,'right',0);}else{dfx.setStyle(infoBox,'right','auto');dfx.setStyle(infoBox,'left',0);}
dfx.setStyle(infoBox,'top',parseInt(dim.y2)+'px');if(height>0){dfx.setStyle(infoBox,'height',height+'px');}
dfx.addClass(infoBox,'visible');},_createInfoboxHolder:function()
{var id=this._className+'-infoBoxHolder';var holder=dfx.getId(id);if(holder){dfx.remove(holder);}
holder=Viper.document.createElement('div');holder.id=id;dfx.addClass(holder,this._className+'-infoBoxHolder');Viper.document.body.appendChild(holder);return holder;},updateInfoBoxPosition:function()
{if(!this._infoBoxHolder){this._infoBoxHolder=this._createInfoboxHolder();}
var rect=dfx.getBoundingRectangle(this._viper.element);var windowDim=dfx.getWindowDimensions();var leftPos=rect.x2;if(windowDim){var infoWidth=parseInt(dfx.getStyle(this._infoBoxHolder,'width'));if((windowDim.width<(rect.x2+infoWidth))&&(rect.x1>infoWidth)){leftPos=(rect.x1-infoWidth-26);dfx.addClass(this._infoBoxHolder,'orientationLeft');this._orientation='left';}else{this._orientation='right';dfx.removeClass(this._infoBoxHolder,'orientationLeft');}}else{this._orientation='right';dfx.removeClass(this._infoBoxHolder,'orientationLeft');}
dfx.setStyle(this._infoBoxHolder,'left',leftPos+'px');},getUserAsset:function(userid,callback)
{if(!userid){if(!Widget.CURRENT_USERID){return null;}
userid=Widget.CURRENT_USERID;}
if(this._users[userid]){callback.call(this,this._users[userid]);}else if(!window['AssetManager']){callback.call(this,null);}else{var self=this;AssetManager.getAsset(userid,function(asset){self._users[userid]=asset;callback.call(self,asset);});}},getUserColour:function(userid)
{var colourIndex=null;if(dfx.isset(this._userColours[userid])===true){colourIndex=this._userColours[userid];}else{colourIndex=this.getAvailableColour();this.setUserColour(userid,colourIndex);}
return colourIndex;},setUserColour:function(userid,colourIndex)
{this._userColours[userid]=colourIndex;},getAvailableColour:function()
{var self=this;var cln=this._colours.length;for(var i=0;i<cln;i++){var found=false;dfx.foreach(this._userColours,function(userid){if(parseInt(self._userColours[userid])===i){found=true;return false;}});if(found===false){return i;}}
return-1;},getChangeId:function()
{var id=Widget.CURRENT_USERID+'-'+(++this._changeSeq)+'-';id+=this.getUserColour(Widget.CURRENT_USERID)+'-'+Math.ceil(Math.random()*999);if(this._changes[id]){id=this.getChangeId();}
return id;},addChange:function(ctnType,ctNodes,desc)
{if(ViperChangeTracker.isTracking()!==true){return null;}
var changeid=this._batchChangeid;if(changeid===null){if(!this._changes){this._changes={};}
changeid=this.getChangeId();this._changes[changeid]={type:ctnType,nodes:[],time:(new Date()).getTime(),userid:Widget.CURRENT_USERID,desc:desc};}
var self=this;dfx.foreach(ctNodes,function(i){self.addNodeToChange(changeid,ctNodes[i]);});return changeid;},addNodeToChange:function(changeid,ctNode,replaceNode)
{if(this._batchChangeid!==null){changeid=this._batchChangeid;}
var change=this.getChange(changeid);if(!change){return;}
if(!ctNode.getAttribute('viperChangeid')){ctNode.setAttribute('viperChangeid',changeid);}
if(!ctNode.getAttribute('time')){ctNode.setAttribute('time',parseInt(change.time));}
if(dfx.hasClass(ctNode,ViperChangeTracker.getCTNodeClass(change.type))===false){dfx.addClass(ctNode,ViperChangeTracker.getCTNodeClass(change.type));}
var colourIndex=ViperChangeTracker.getUserColour(change.userid);var colour=ViperChangeTracker.getColour(colourIndex);if(dfx.hasClass(ctNode,'CT-'+colour)===false){dfx.addClass(ctNode,'CT-'+colour);}
if(replaceNode){var nl=change.nodes.length;for(var i=0;i<nl;i++){if(change.nodes[i]===replaceNode){dfx.removeArrayIndex(change.nodes,i);break;}}}
change.nodes.push(ctNode);},getChange:function(changeid)
{var change=null;if(this._changes[changeid]){change=this._changes[changeid];}
return change;},startBatchChange:function(ctnType)
{if(this.isTracking()!==true){return null;}
this._batchChangeid=this.addChange(ctnType);return this._batchChangeid;},endBatchChange:function(changeid)
{if(this.isTracking()===true){if(changeid!==this._batchChangeid){return;}
this._batchChangeid=null;}},getChangeInfo:function(changeid,callback)
{var change=this.getChange(changeid);if(!change){callback.call(this,null);return;}
var userid=change.userid;if(this._users[userid]){var userAsset=this._users[userid];var info={ownerName:dfx.ellipsize(userAsset.name,13),ownerid:userAsset.id,time:dfx.date('d/M/y h:ia',parseInt(change.time)),typeName:ViperChangeTracker.getTypeTitle(change.type),typeid:change.type,desc:ViperChangeTracker.getDescription(change.type,change.nodes[0],changeid)};callback.call(this,info);return;}else{var self=this;ViperChangeTracker.getUserAsset(userid,function(asset){if(asset){this._users[userid]=asset;}else{this._users[userid]={ownerName:'N/A',ownerid:'N/A'};}
self.getChangeInfo(changeid,callback);return;});}},setDescriptionCallback:function(ctnType,callback)
{this._descCallbacks[ctnType]=callback;},getDescription:function(ctnType,node,changeid)
{var desc='';if(dfx.isFn(this._descCallbacks[ctnType])===true){desc=this._descCallbacks[ctnType].call(this,node,ctnType,changeid);}else{var change=this.getChange(changeid);if(change&&change.desc){desc=change.desc;}else{var cnode=node.cloneNode(true);dfx.remove(dfx.getTag('del',cnode));var textContent='';if(node.innerText){textContent=cnode.innerText;}else if(node.textContent){textContent=cnode.textContent;}else{textContent=dfx.getHtml(cnode);}
desc=dfx.ellipsize(textContent,30);cnode=null;}}
return desc;},getDescriptionForNode:function(node)
{var changeid=node.getAttribute('viperchangeid');if(!changeid){return'';}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType){return;}
return this.getDescription(ctnType,node,changeid);},setApproveCallback:function(ctnType,callback)
{this._approveCallbacks[ctnType]=callback;},approveChanges:function(changeid,node)
{if(!changeid&&!node){return;}else if(!node){var change=this.getChange(changeid);if(!change){return;}
var nodes=change.nodes;var ln=nodes.length;for(var i=0;i<ln;i++){this.approveChanges(changeid,nodes[i]);}
this.updatePositionMarkers(false);return;}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType||!this._approveCallbacks[ctnType]){return;}
var clone=node.cloneNode(true);var tmp=Viper.document.createElement('div');tmp.appendChild(clone);if(this.isInsertType(ctnType)===true){var self=this;var ctNodes=this.getCTNodes(null,node);dfx.foreach(ctNodes,function(i){self.approveChanges(ctNodes[i].getAttribute('changeid'),ctNodes[i]);});}
this._approveCallbacks[ctnType].call(this,tmp,node);this._viper.fireNodesChanged('ViperChangeTracker:approve');},setRejectCallback:function(ctnType,callback)
{this._rejectCallbacks[ctnType]=callback;},rejectChanges:function(changeid,node)
{if(!changeid&&!node){return;}else if(!node){var change=this.getChange(changeid);if(!change){return;}
var nodes=change.nodes;var ln=nodes.length;for(var i=0;i<ln;i++){this.rejectChanges(changeid,nodes[i]);}
this.updatePositionMarkers(false,true);return;}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType||!this._rejectCallbacks[ctnType]){return;}
var clone=node.cloneNode(true);var tmp=Viper.document.createElement('div');tmp.appendChild(clone);this._rejectCallbacks[ctnType].call(this,tmp,node);this._viper.fireNodesChanged('ViperChangeTracker:reject');},showInfoBox:function(marker,infoBox)
{var elems=dfx.getClass('_viper-CT-lineBox',this._infoBoxHolder);dfx.removeClass(elems,'visible');dfx.removeClass(elems,'show');var melems=dfx.getClass('_viper-CT-marker',this._markerHolder);dfx.addClass(melems,'CT-hidden');dfx.removeClass(melems,'show');dfx.addClass(infoBox,'visible');dfx.removeClass(marker,'CT-hidden');var dim=dfx.getBoundingRectangle(marker);dfx.addClass([marker,infoBox],'show');this._positionInfoBox(infoBox,dim,true);var self=this;dfx.addEvent(document,'click.ViperChangeTracker',function(){dfx.removeEvent(document,'click.ViperChangeTracker');self.updatePositionMarkers(false);});},_positionInfoBoxes:function()
{var elems=dfx.getClass(this._className+'-lineBox',this._infoBoxHolder);var eln=elems.length;if(elems.length===0){return;}
var offset=35;var prevBox=null;for(var i=0;i<eln;i++){var box=elems[i];var height=0;var boxRect=dfx.getBoundingRectangle(box);if((boxRect.y2-boxRect.y1)<=0){continue;}else if(prevBox===null){prevBox=box;continue;}
var prevRect=dfx.getBoundingRectangle(prevBox.firstChild);if(parseInt(prevRect.y2-prevRect.y1)>0){height=parseInt(prevRect.y2-boxRect.y1)+offset;dfx.setStyle(box,'height',height+'px');}
prevBox=box;}},_setMouseEvents:function(infoBox,marker,node,isInsertType,changeid)
{var self=this;dfx.addEvent([infoBox,marker,node],'mouseover',function(){dfx.addClass([infoBox,marker],'selected');});dfx.addEvent(marker,'click',function(e){self.showInfoBox(marker,infoBox);self._positionInfoBoxes();dfx.preventDefault(e);return false;});var c=this._className+'-infoBox-actionBtns';var rejectBtn=dfx.getClass(c+'-reject',infoBox)[0];var approveBtn=dfx.getClass(c+'-approve',infoBox)[0];var parentNode=null;if(!approveBtn&&!rejectBtn){return;}
if(rejectBtn){parentNode=rejectBtn.parentNode.parentNode;}else{parentNode=approveBtn.parentNode.parentNode;}
dfx.addEvent([infoBox,marker,node],'mouseout',function(){dfx.removeClass([infoBox,marker],'selected');dfx.removeClass(parentNode,'approve');dfx.removeClass(parentNode,'reject');});if(rejectBtn){dfx.addEvent(rejectBtn,'mouseover',function(){dfx.addClass(parentNode,'reject');dfx.removeClass(parentNode,'approve');});dfx.addEvent(rejectBtn,'click',function(e){self.rejectChanges(changeid);dfx.preventDefault(e);return false;});}
if(approveBtn){dfx.addEvent(approveBtn,'mouseover',function(){dfx.addClass(parentNode,'approve');dfx.removeClass(parentNode,'reject');});dfx.addEvent(approveBtn,'click',function(e){self.approveChanges(changeid);dfx.preventDefault(e);return false;});}},removeTrackChanges:function(node,nodeOnly)
{var elems=[];if(nodeOnly!==true){elems=dfx.getClass(this._nodeClassName,node);}
elems.push(node);var r=new RegExp('_viper-|\\s*CTN?[a-zA-Z-]*','g');var self=this;dfx.foreach(elems,function(i){if(!elems[i].parentNode){return;}
var classAttr=dfx.attr(elems[i],'class');classAttr=classAttr.replace(r,'');dfx.attr(elems[i],'class',classAttr);if(dfx.attr(elems[i],'class')===''){dfx.removeAttr(elems[i],'class');}
dfx.removeAttr(elems[i],'viperchangeid');dfx.removeAttr(elems[i],'time');if(dfx.isTag(elems[i],'del')===true||dfx.isTag(elems[i],'ins')===true){dfx.insertBefore(elems[i],elems[i].childNodes);dfx.remove(elems[i]);}else if(ViperChangeTracker.getCurrentMode()==='original'){var ctdata=self.getCTData(elems[i],'tagName');if(ctdata){var newTag=Viper.document.createElement(ctdata);while(elems[i].firstChild){newTag.appendChild(elems[i].firstChild);}
dfx.insertBefore(elems[i],newTag);dfx.remove(elems[i]);}}
dfx.removeAttr(elems[i],'ctdata');});},setCTData:function(node,type,value)
{if(!node||!type){return false;}
var ctdata=this.getCTData(node);if(!ctdata){if(value===null){return true;}
ctdata={};ctdata[type]=value;}else if(value===null){if(dfx.isset(ctdata[type])===true){delete ctdata[type];}else{return true;}}else{ctdata[type]=value;}
ctdata=dfx.jsonEncode(ctdata);if(ctdata==='{}'){dfx.removeAttr(node,'ctdata');return true;}
dfx.attr(node,'ctdata',ctdata);return true;},getCTData:function(node,type)
{if(!node){return null;}
var ctdata=dfx.attr(node,'ctdata');if(!ctdata){return null;}
ctdata=dfx.jsonDecode(ctdata);if(!type){return ctdata;}
return ctdata[type];},removeCTData:function(node,type)
{if(node){if(!type){dfx.removeAttr(node,'ctdata');}else{this.setCTData(node,type,null);}}},getTrackingInfo:function(elem)
{var info=null;var changes=this.loadCTNodes(elem);dfx.foreach(changes,function(changeid){if(info===null){info={};}
if(dfx.isset(changes[changeid].comment)===true){info[changeid]={comment:changes[changeid].comment};}});return info;},loadCTNodes:function(elem)
{var ctNodes=this.getCTNodes(null,elem);var changes={};var self=this;dfx.foreach(ctNodes,function(i){var node=ctNodes[i];var changeid=node.getAttribute('viperchangeid');if(changes[changeid]){changes[changeid].nodes.push(node);}else{var type=self.getCTNTypeFromNode(node);changes[changeid]={type:type,time:node.getAttribute('time'),nodes:[node],userid:(changeid.split('-')).shift()};if(type==='viperComment'){changes[changeid].comment=(self._comments[changeid]||'');}}});return changes;}};function ViperDOMRange(rangeObj)
{this.rangeObj=rangeObj;this.startContainer=null;this.endContainer=null;this.startOffset=0;this.endOffset=0;this.collapsed=true;this.commonAncestorContainer=null;this.anchorToStart='undefined';}
ViperDOMRange.START_TO_START=0;ViperDOMRange.START_TO_END=1;ViperDOMRange.END_TO_END=3;ViperDOMRange.END_TO_START=4;ViperDOMRange.CHARACTER_UNIT='character';ViperDOMRange.WORD_UNIT='word';ViperDOMRange.LINE_UNIT='line';ViperDOMRange.prototype={setStart:function(node,offset){},setEnd:function(node,offset){},setStartBefore:function(node){},setStartAfter:function(node){},setEndBefore:function(node){},setEndAfter:function(node){},selectNode:function(node){},selectNodeContents:function(node){},surroundContents:function(node){},collapse:function(toStart){},compareBoundaryPoints:function(how,sourceRange){},deleteContents:function(){},extractContents:function(){},cloneContents:function(){},insertNode:function(node){},cloneRange:function(){},toString:function(){},detach:function(){},getCommonElement:function(){},moveStart:function(unitType,units){},moveEnd:function(unitType,units){},setAnchor:function(toStart){},setFocus:function(node,offset){},moveFocus:function(unitType,units){},getRangeCoords:function(toStart){},getBoundingClientRect:function(){},getPreviousContainer:function(container,skippedBlockElem)
{if(!container){return null;}
while(container.previousSibling){container=container.previousSibling;if(container.nodeType!==dfx.TEXT_NODE){if(dfx.isStubElement(container)===true){return container;}else{var child=this._getLastSelectableChild(container);if(child!==null){return child;}}}else if(this._isSelectable(container)===true){return container;}}
while(container&&!container.previousSibling){container=container.parentNode;}
if(!container){return null;}
container=container.previousSibling;if(this._isSelectable(container)===true){return container;}else if(skippedBlockElem&&dfx.isBlockElement(container)===true){skippedBlockElem.push(container);}
var selChild=this._getLastSelectableChild(container);if(selChild!==null){return selChild;}
return this.getPreviousContainer(container,skippedBlockElem);},_isSelectable:function(container)
{if(container&&container.nodeType===dfx.TEXT_NODE&&container.data.length!==0){return true;}
return false;},getNextContainer:function(container,skippedBlockElem)
{if(!container){return null;}
while(container.nextSibling){container=container.nextSibling;if(container.nodeType!==dfx.TEXT_NODE){var child=this._getFirstSelectableChild(container);if(child!==null){return child;}}else if(this._isSelectable(container)===true){return container;}}
while(container&&!container.nextSibling){container=container.parentNode;}
if(!container){return null;}
container=container.nextSibling;if(this._isSelectable(container)===true){return container;}else if(skippedBlockElem&&dfx.isBlockElement(container)===true){skippedBlockElem.push(container);}
var selChild=this._getFirstSelectableChild(container);if(selChild!==null){return selChild;}
return this.getNextContainer(container,skippedBlockElem);},_getFirstSelectableChild:function(element)
{if(element){if(element.nodeType!==dfx.TEXT_NODE){var child=element.firstChild;while(child){if(this._isSelectable(child)===true){return child;}else if(child.firstChild){var res=this._getFirstSelectableChild(child);if(res!==null){return res;}else{child=child.nextSibling;}}else{child=child.nextSibling;}}}else{return element;}}
return null;},_getLastSelectableChild:function(element)
{if(element){if(element.nodeType!==dfx.TEXT_NODE){var child=element.lastChild;while(child){if(this._isSelectable(child)===true){return child;}else if(child.lastChild){var res=this._getLastSelectableChild(child);if(res!==null){return res;}else{child=child.previousSibling;}}else{child=child.previousSibling;}}}else{return element;}}
return null;},_normalizeNode:function(node)
{if(node.nodeType===dfx.ELEMENT_NODE){var c=node.childNodes.length;var str='';var mChild=null;for(var i=0;i<c;i++){var child=node.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){str+=child.data;if(mChild===null){mChild=child;}else{dfx.remove(child);}}else if(mChild!==null){mChild.data=str;mCHild=null;}}
if(mChild!==null){mChild.nodeValue=str;}}else if(node.nodeType===dfx.TEXT_NODE){this._normalizeNode(node.parentNode);}},getNodeIndex:function(node)
{if(!node||!node.parentNode){return;}
var index=0;var prev=node.previousSibling;while(prev){prev=prev.previousSibling;index++;}
return index;},getStartNode:function()
{if(!this.startContainer){return null;}
if(this.startContainer.nodeType===dfx.ELEMENT_NODE){return this.startContainer.childNodes[this.startOffset];}
return this.startContainer;},getEndNode:function()
{if(!this.endContainer){return null;}
if(this.endContainer.nodeType===dfx.ELEMENT_NODE){return this.endContainer.childNodes[this.endOffset];}
return this.endContainer;}};function ViperElementMetrics(){}
ViperElementMetrics.getStyles=function(element)
{if(element===document){return[];}
if(Viper.document.defaultView&&Viper.document.defaultView.getComputedStyle){return Viper.document.defaultView.getComputedStyle(element,'');}else if(element.currentStyle){return element.currentStyle;}};ViperElementMetrics.getBackgroundColor=function(element)
{var backgroundColor;while(element){var styles=ViperElementMetrics.getStyles(element);if(styles.backgroundColor!=='transparent'&&styles.backgroundColor!=='rgba(0, 0, 0, 0)'){backgroundColor=styles.backgroundColor;break;}
element=element.parentNode;}
if(backgroundColor){return backgroundColor;}
return'#FFFFFF';};ViperElementMetrics.getBorderInsets=function(element)
{var border=0;while(element){try{var styles=ViperElementMetrics.getStyles(element);}catch(e){break;}
if(styles.marginTop!==''){border+=parseInt(styles.marginTop);}
element=element.parentNode;}
return border;};ViperElementMetrics.getInsets=function(element)
{var styles=ViperElementMetrics.getStyles(element);return{'top':parseInt(styles.borderTopWidth),'left':parseInt(styles.marginLeft),'bottom':parseInt(styles.marginBottom),'right':parseInt(styles.marginRight)};};function ViperIERange(rangeObj)
{ViperDOMRange.call(this,rangeObj);this._initContainerInfo();this._setCollapsed();this.shy=Viper.document.createElement('span');this.shy.innerHTML='&nbsp;';this._prevHeight=null;this._prevContainer=null;ViperDOMRange.START_TO_START='StartToStart';ViperDOMRange.START_TO_END='StartToEnd';ViperDOMRange.END_TO_END='EndToEnd';ViperDOMRange.END_TO_START='EndToStart';}
ViperIERange.prototype={_initContainerInfo:function()
{var clone=this.rangeObj.duplicate();var eclone=this.rangeObj.duplicate();clone.collapse(true);var info=this._getContainerInfo(clone);this.startContainer=info.container;this.startOffset=info.offset;eclone.collapse(false);var einfo=this._getContainerInfo(eclone);this.endContainer=einfo.container;this.endOffset=einfo.offset;},setStart:function(node,offset)
{var moveTo=node;if(moveTo.nodeType===dfx.TEXT_NODE){moveTo=moveTo.parentNode;}
var clone=this.rangeObj.duplicate();clone.moveToElementText(moveTo);clone.collapse(true);var charOffset=this._getCharOffsetWithinParent(node,offset);clone.move(ViperDOMRange.CHARACTER_UNIT,charOffset);this.rangeObj.setEndPoint('StartToStart',clone);this.startContainer=node;this.startOffset=offset;if(this.endContainer===null&&this.endOffset===null){this.endContainer=node;this.endOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setEnd:function(node,offset)
{var moveTo=node;if(moveTo.nodeType===dfx.TEXT_NODE){moveTo=moveTo.parentNode;}
var clone=this.rangeObj.duplicate();clone.moveToElementText(moveTo);clone.collapse(true);var charOffset=this._getCharOffsetWithinParent(node,offset);clone.move(ViperDOMRange.CHARACTER_UNIT,charOffset);this.rangeObj.setEndPoint('EndToEnd',clone);this.endContainer=node;this.endOffset=offset;if(this.startContainer===null&&this.startOffset===null){this.startContainer=node;this.startOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setStartBefore:function(node)
{this.setStart(node,0);},setStartAfter:function(node)
{var next=this.getNextContainer(node);this.setStart(next,0);this._setCollapsed();this._setCommonAncestorContainer();},setEndBefore:function(node)
{var previous=this.getPreviousContainer(node);if(previous.nodeType===dfx.TEXT_NODE){this.setEnd(previous,previous.length);}else{var clone=this.rangeObj.duplicate();clone.moveToElementText(previous);clone.collapse(false);this.rangeObj.setEndPoint('EndToEnd',clone);this._setCollapsed();this._setCommonAncestorContainer();}},setEndAfter:function(node)
{this.setEnd(node.parentNode,this.getNodeIndex(node)+1);},selectNode:function(node)
{if(node.nodeType===dfx.TEXT_NODE){this.setStart(node,0);this.setEnd(node,node.length);}else{if(node.innerHTML&&node.innerHTML.length===0){node.innerText=' ';}
this.rangeObj.moveToElementText(node);this.endContainer=node.parentNode;this.startContainer=node.parentNode;this.startOffset=this._findElementNodeOffset(node);this.endOffset=this.startOffset+1;this._setCollapsed();this._setCommonAncestorContainer();}},_findElementNodeOffset:function(node)
{if(node.nodeType!==dfx.ELEMENT_NODE){return;}
var parent=node.parentNode;var l=parent.childNodes.length;for(var i=0;i<l;i++){if(parent.childNodes[i]===node){return i;}}
return-1;},selectNodeContents:function(node)
{if(node.nodeType===dfx.TEXT_NODE){this.setStart(node,0);this.setEnd(node,node.length);}else{this.rangeObj.moveToElementText(node);this.rangeObj.moveStart('character',1);this.rangeObj.moveStart('character',-1);this.rangeObj.moveEnd('character',-1);this.rangeObj.moveEnd('character',1);}},surroundContents:function(node)
{var contents=this.extractContents();node.appendChild(contents);this.insertNode(node);},collapse:function(toStart)
{this.rangeObj.collapse(toStart);this.collapsed=true;if(toStart){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;}},compareBoundaryPoints:function(how,sourceRange)
{return this.rangeObj.compareEndPoints(how,sourceRange.rangeObj);},deleteContents:function()
{if(this.startContainer.nodeType===dfx.TEXT_NODE){var nodeValue=this.startContainer.nodeValue;var before=nodeValue.substr(0,this.startOffset);if(this.startContainer===this.endContainer){var after=this.startContainer.nodeValue.substr(this.endOffset,this.startContainer.nodeValue.length);this.startContainer.data=before+after;this.setStart(this.startContainer,this.startOffset);this.collapse(true);return;}else{this.startContainer.nodeValue=before;this.setStart(this.startContainer,this.startOffset);this.collapse(true);this._setCommonAncestorContainer();return;}}else if(this.startContainer.nodeType===dfx.ELEMENT_NODE){var node=this.getNextContainer(this.startContainer);dfx.remove(this.startContainer);if(this.startContainer===this.endContainer){this.setStart(node,0);this.collapse(true);return;}}
this.rangeObj.text='';this.collapse(true);this._setCommonAncestorContainer();this.rangeObj.select();},comparePoint:function(node,offset)
{var clone=this.cloneRange();clone.setStart(node,offset);clone.collapse();return this.rangeObj.compareEndPoints('StartToStart',clone.rangeObj);},extractContents:function()
{var fragment=Viper.document.createDocumentFragment();var div=Viper.document.createElement('div');dfx.setHtml(div,this.rangeObj.htmlText);var c=div.childNodes.length;for(var i=0;i<c;i++){var child=div.childNodes[i].cloneNode(true);fragment.appendChild(child);}
this.rangeObj.text='';return fragment;},createDocumentFragment:function(str)
{var fragment=Viper.document.createDocumentFragment();var div=Viper.document.createElement('div');div.innerHTML=str;var c=div.childNodes.length;for(var i=0;i<c;i++){var child=div.childNodes[i].cloneNode(true);fragment.appendChild(child);}
return fragment;},cloneContents:function()
{var fragment=this.createDocumentFragment(this.rangeObj.htmlText);return fragment;},insertNode:function(node)
{var before=null;if(this.startContainer.nodeType===dfx.ELEMENT_NODE){if(this.startContainer.childNodes.length===this.startOffset){this.startContainer.appendChild(node);}else{this.startContainer.insertBefore(node,this.startContainer.childNodes[this.startOffset]);this.setStart(this.startContainer,this.startOffset+1);}
return;}else if(this.startContainer.nodeType===dfx.TEXT_NODE){if(this.startOffset===0){before=this.startContainer;}else{var length=this.startContainer.data.length;if(length>this.startOffset){before=this.startContainer.splitText(this.startOffset);}else if(this.startContainer.nextSibling){before=this.startContainer.nextSibling;}else{this.startContainer.parentNode.appendChild(node);}}}
if(before!==null){dfx.insertBefore(before,node);}
this.setStart(node,0);this.collapse(true);this._setCommonAncestorContainer();},cloneRange:function()
{var range=new ViperIERange(this.rangeObj.duplicate());range.startContainer=this.startContainer;range.startOffset=this.startOffset;range.endContainer=this.endContainer;range.endOffset=this.endOffset;range.commonAncestorContainer=this.commonAncestorContainer;range.collapsed=this.collapsed;return range;},detach:function()
{this.rangeObj=null;this.commonAncestorContainer=null;},_setCollapsed:function()
{if(this.startContainer===this.endContainer&&this.startOffset===this.endOffset){this.collapsed=true;}else{this.collapsed=false;}},_setCommonAncestorContainer:function()
{if(this.startContainer===this.endContainer){this.commonAncestorContainer=this.startContainer;}else{this.commonAncestorContainer=dfx.getCommonAncestor(this.startContainer,this.endContainer);}},_getContainerInfo:function(textRange)
{var element=textRange.parentElement();var range=element.ownerDocument.body.createTextRange();range.moveToElementText(element);try{range.setEndPoint("EndToStart",textRange);}catch(e){}
var rangeLength=range.text.length;var nodeLength=0;if(rangeLength<(element.innerText.length/2)){var direction=1;var node=element.firstChild;}else{direction=-1;node=element.lastChild;range.moveToElementText(element);try{range.setEndPoint("StartToStart",textRange);}catch(e){}
rangeLength=range.text.length;}
while(node){switch(node.nodeType){case dfx.TEXT_NODE:nodeLength=node.data.length;if(nodeLength<rangeLength){var difference=(rangeLength-nodeLength);if(direction===1){range.moveStart("character",difference);}else{range.moveEnd("character",-difference);}
rangeLength=difference;}else{if(direction===1){return{container:node,offset:rangeLength};}else{return{container:node,offset:(nodeLength-rangeLength)};}}
break;case dfx.ELEMENT_NODE:if(dfx.isStubElement(node)===true){nodeLength=2;}else{nodeLength=node.innerText.length;}
if(direction===1){range.moveStart("character",nodeLength);}else{range.moveEnd("character",-nodeLength);}
rangeLength=(rangeLength-nodeLength);if(rangeLength<0){rangeLength=0;}
break;default:break;}
if(direction===1){node=node.nextSibling;}else{node=node.previousSibling;}}
return{container:element,offset:0};},getStartOffset:function(incSpaces)
{return this.startOffset;},_getCharOffsetWithinParent:function(node,offset)
{var move=null;var tmpNode=null;if(node.nodeType===dfx.TEXT_NODE){move=offset;tmpNode=node.previousSibling;}else if(node.nodeType===dfx.ELEMENT_NODE){move=0;if(offset>0){tmpNode=node.childNodes[(offset-1)];}else{return 0;}}
while(tmpNode){var nodeLength=0;if(tmpNode.nodeType===dfx.ELEMENT_NODE){nodeLength=tmpNode.innerText.length;if(dfx.isStubElement(tmpNode)===true){nodeLength=1;}else if(dfx.isBlockElement(tmpNode)===true){nodeLength++;}}else if(tmpNode.nodeType===dfx.TEXT_NODE){nodeLength=tmpNode.data.length;}
move+=nodeLength;tmpNode=tmpNode.previousSibling;}
return move;},moveStart:function(unitType,units,updateInfo)
{switch(unitType){case ViperDOMRange.CHARACTER_UNIT:case ViperDOMRange.WORD_UNIT:this.rangeObj.moveStart(unitType,units);var text=this.rangeObj.text;var match=text.match(/\r\n/g,'');if(match!==null&&match.length>0){var u=match.length;if(units<0){u=(u*-1);}
this.rangeObj.moveStart(ViperDOMRange.CHARACTER_UNIT,u);}
break;case ViperDOMRange.LINE_UNIT:this._moveLine(true,units);break;default:throw Error('InvalidArgumentException: unitType "'+unitType+'" not valid.');break;}
if(updateInfo!==false){this._initContainerInfo();}},moveEnd:function(unitType,units)
{switch(unitType){case ViperDOMRange.CHARACTER_UNIT:case ViperDOMRange.WORD_UNIT:this.rangeObj.moveEnd(unitType,units);var text=this.rangeObj.text;var match=text.match(/\r\n/g,'');if(match!==null&&match.length>0){this.rangeObj.moveEnd(ViperDOMRange.CHARACTER_UNIT,match.length);}
break;case ViperDOMRange.LINE_UNIT:this._moveLine(false,units);break;default:throw Error('InvalidArgumentException: unitType "'+unitType+'" not valid.');break;}
this._initContainerInfo();},_moveLine:function(moveStart,units)
{var clone=this.cloneRange();clone.collapse(moveStart);var startCoords=clone.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var passed=false;var unitType=ViperDOMRange.WORD_UNIT;units*=2;if(units<0){while(true){clone.moveStart(unitType,units);coords=clone.getRangeCoords(true);if(passed===false){if(coords.y<startCoords.y&&coords.x<=startCoords.x){passed=true;units=1;unitType=ViperDOMRange.CHARACTER_UNIT}}else if(coords.x>=startCoords.x){if(Math.abs(coords.x-startCoords.x)>Math.abs(startCoords.x-prevXCoord)){clone.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);}
break;}else{prevXCoord=coords.x;}}}else{while(true){clone.moveStart(unitType,units);coords=clone.getRangeCoords(true);if(passed===false){if(coords.y>startCoords.y&&coords.x>=startCoords.x){passed=true;units=-1;unitType=ViperDOMRange.CHARACTER_UNIT}}else if(coords.x<=startCoords.x){if(Math.abs(coords.x-startCoords.x)>Math.abs(startCoords.x-prevXCoord)){clone.moveStart(ViperDOMRange.CHARACTER_UNIT,1);}
break;}else{prevXCoord=coords.x;}}}
clone.collapse(true);if(moveStart===true){this.rangeObj.setEndPoint(ViperDOMRange.START_TO_START,clone.rangeObj);this.startContainer=clone.startContainer;this.startOffset=clone.startOffset;}else{this.rangeObj.setEndPoint(ViperDOMRange.END_TO_START,clone.rangeObj);this.endContainer=clone.endContainer;this.endOffset=clone.endOffset;}
this._setCommonAncestorContainer();this._setCollapsed();},getCommonElement:function()
{return this.rangeObj.parentElement();},getRangeCoords:function(toStart)
{var clone=this.cloneRange();clone.collapse(toStart);var normalize=true;if(clone.startContainer.nodeType===dfx.TEXT_NODE){if(clone.startOffset===0){normalize=false;}else if(clone.endOffset===clone.startContainer.data.length){normalize=false;}}else{normalize=false;}
var shy=this.shy;clone.insertNode(shy);var previous=shy.previousSibling;var next=shy.nextSibling;var c=jQuery(shy).position();var coords={x:c.left,y:c.top};if(this.startContainer===this._prevContainer){var height=dfx.getElementHeight(shy);if(this._prevHeight===null){this._prevHeight=height;}else if(height!==this._prevHeight){coords.y=(coords.y+height-this._prevHeight);}}else{this._prevHeight=null;this._prevContainer=this.startContainer;}
dfx.remove(shy);if(normalize&&previous){if(next&&next.nodeType===dfx.TEXT_NODE){if(next===this.endContainer){this.endContainer=previous;}
dfx.remove(next);previous.data+=next.data;}
this.setEnd(this.endContainer,this.endOffset);this.setStart(this.startContainer,this.startOffset);}
return coords;},getBoundingClientRect:function()
{return this.rangeObj.getBoundingClientRect();},getHTMLContents:function()
{return this.rangeObj.htmlText.replace(/\r\n/g,'');},getHTMLContentsObj:function()
{var div=Viper.document.createElement('div');dfx.setHtml(div,this.rangeObj.htmlText);return div;},toString:function()
{var text=this.rangeObj.text;text=text.replace(/\r\n/g,'');return text;}};dfx.noInclusionInherits('ViperIERange','ViperDOMRange',true);function ViperMozRange(rangeObj)
{ViperDOMRange.call(this,rangeObj);this.startContainer=rangeObj.startContainer;this.startOffset=rangeObj.startOffset;this.endContainer=rangeObj.endContainer;this.endOffset=rangeObj.endOffset;this.collapsed=rangeObj.collapsed;this.commonAncestorContainer=rangeObj.commonAncestorContainer;this.posSpan=Viper.document.createElement('span');ViperDOMRange.START_TO_START=Range.START_TO_START;ViperDOMRange.START_TO_END=Range.END_TO_START;ViperDOMRange.END_TO_END=Range.END_TO_END;ViperDOMRange.END_TO_START=Range.START_TO_END;}
ViperMozRange.prototype={setStart:function(node,offset)
{this.rangeObj.setStart(node,offset);this.startContainer=node;this.startOffset=offset;if(this.endContainer===null){this.endContainer=node;this.endOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setEnd:function(node,offset)
{this.rangeObj.setEnd(node,offset);this.endContainer=node;this.endOffset=offset;if(this.startContainer===null){this.startContainer=node;this.startOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setStartBefore:function(node)
{this.rangeObj.setStartBefore(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setStartAfter:function(node)
{this.rangeObj.setStartAfter(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setEndBefore:function(node)
{this.rangeObj.setEndBefore(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setEndAfter:function(node)
{this.rangeObj.setEndAfter(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},selectNode:function(node)
{this.rangeObj.selectNode(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},selectNodeContents:function(node)
{this.rangeObj.selectNodeContents(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},surroundContents:function(node)
{this.rangeObj.surroundContents(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endtOffset;this._setCollapsed();this._setCommonAncestorContainer();},collapse:function(toStart)
{this.rangeObj.collapse(toStart);this.collapsed=true;if(toStart){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;}},compareBoundaryPoints:function(how,sourceRange)
{return this.rangeObj.compareBoundaryPoints(how,sourceRange.rangeObj);},deleteContents:function()
{var startContainer=this.startContainer;var startOffset=this.startOffset;this.rangeObj.deleteContents();var nextSibling=startContainer.nextSibling;while(nextSibling){if(nextSibling&&nextSibling.nodeType===dfx.TEXT_NODE){startContainer.data+=nextSibling.data;dfx.remove(nextSibling);nextSibling=startContainer.nextSibling;}else{break;}}
this.setStart(startContainer,startOffset);this.collapse(true);this._setCommonAncestorContainer();},extractContents:function()
{return this.rangeObj.extractContents();},createDocumentFragment:function(str)
{return this.rangeObj.createContextualFragment(str);},cloneContents:function()
{return this.rangeObj.cloneContents();},insertNode:function(node)
{if(this.startContainer.nodeType===dfx.ELEMENT_NODE){if(dfx.isStubElement(this.startContainer)===true){throw Error('HIERARCHY_REQUEST_ERR');}}
this.rangeObj.insertNode(node);if(node.previousSibling&&node.previousSibling.nodeType===dfx.TEXT_NODE){if(node.previousSibling.data===''){dfx.remove(node.previousSibling);}}
if(node.nextSibling&&node.nextSibling.nodeType===dfx.TEXT_NODE){if(node.nextSibling.data===''){dfx.remove(node.nextSibling);}}
this.startContainer=this.rangeObj.startContaier;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},cloneRange:function()
{var clone=this.rangeObj.cloneRange();return new ViperMozRange(clone);},toString:function()
{return this.rangeObj.toString();},detach:function()
{this.rangeObj.detach();},comparePoint:function(node,offset)
{return this.rangeObj.comparePoint(node,offset);},_setCommonAncestorContainer:function()
{this.commonAncestorContainer=this.rangeObj.commonAncestorContainer;},_setCollapsed:function()
{if(this.startContainer===this.endContainer&&this.startOffset===this.endOffset){this.collapsed=true;}else{this.collapsed=false;}},getStartNode:function()
{if(this.startContainer.nodeType===dfx.ELEMENT_NODE){return this.startContainer.childNodes[this.startOffset];}
return this.startContainer;},getCommonElement:function()
{if(this.commonAncestorContainer.nodeType===dfx.ELEMENT_NODE){return this.commonAncestorContainer;}
return this.commonAncestorContainer.parentNode;},getRangeCoords:function(toStart)
{var clone=this.rangeObj.cloneRange();clone.collapse(toStart);var normalize=true;if(clone.startContainer.nodeType===dfx.TEXT_NODE){if(clone.startOffset===0){if(clone.startContainer.previousSibling&&clone.startContainer.previousSibling.nodeType!==dfx.TEXT_NODE){normalize=false;}}}else{normalize=false;}
var posSpan=this.posSpan;clone.insertNode(posSpan);var previous=posSpan.previousSibling;var next=posSpan.nextSibling;var c=jQuery(posSpan).position();var coords={x:c.left,y:c.top};dfx.remove(posSpan);if(normalize){previous.data+=next.data;dfx.remove(next);this.setEnd(this.endContainer,this.endOffset);this.setStart(this.startContainer,this.startOffset);}
return coords;},moveStart:function(unitType,units)
{if(units===0){throw Error('InvalidArgumentException: units cannot be 0');}
switch(unitType){case ViperDOMRange.CHARACTER_UNIT:if(units>0){this._moveCharRight(true,units);}else{this._moveCharLeft(true,units);}
break;case ViperDOMRange.LINE_UNIT:if(units>0){this._moveLineDown(true);}else{this._moveLineUp(true);}
break;case ViperDOMRange.WORD_UNIT:default:break;}
this._setCommonAncestorContainer();this._setCollapsed();},moveEnd:function(unitType,units)
{if(units===0){throw Error('InvalidArgumentException: units cannot be 0');}
switch(unitType){case ViperDOMRange.CHARACTER_UNIT:if(units>0){this._moveCharRight(false,units);}else{this._moveCharLeft(false,units);}
break;case ViperDOMRange.LINE_UNIT:if(units>0){this._moveLineDown(false);}else{this._moveLineUp(false);}
break;case ViperDOMRange.WORD_UNIT:default:break;}
this._setCommonAncestorContainer();this._setCollapsed();},_setRange:function(start,container,offset)
{if(start){this.setStart(container,offset);}else{this.setEnd(container,offset);}},_moveCharLeft:function(moveStart,units)
{var container,offset;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
offset+=units;if(container.nodeType===dfx.ELEMENT_NODE){if(container.hasChildNodes()){container=container.childNodes[offset];offset=0;}}
if(offset<0){while(offset<0){var skippedBlockElem=[];container=this.getPreviousContainer(container,skippedBlockElem);if(container.nodeType===dfx.ELEMENT_NODE){continue;}
offset=container.data.length;if(container.nodeType===dfx.TEXT_NODE&&skippedBlockElem.length===0){offset--;}}}
this._setRange(moveStart,container,offset);},getStartOffset:function(incSpaces)
{if(incSpaces===true){return this.startOffset;}
var spaces=0;var container=this.startContainer;var cc=container.data.charCodeAt(0);while(cc===10||cc===32){spaces++;cc=container.data.charCodeAt(spaces);}
var offset=(this.startOffset-spaces);return offset;},_getNextTextNode:function(container)
{if(container.nodeType===dfx.ELEMENT_NODE){if(container.childNodes.length!==0){return this._getFirstSelectableChild(container);}}
container=this.getNextContainer(container);if(container.nodeType===dfx.TEXT_NODE){return container;}
return this._getNextTextNode(container);},_moveCharRight:function(moveStart,units)
{var container,offset;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=container.childNodes[offset];if(container.nodeType!==dfx.TEXT_NODE){container=this._getNextTextNode(container);}
offset=units;}else{offset+=units;}
var diff=(offset-container.data.length);if(diff>0){var skippedBlockElem=[];while(diff>0){container=this.getNextContainer(container,skippedBlockElem);if(container.nodeType===dfx.ELEMENT_NODE){continue;}
if(container.data.length>=diff){break;}else if(container.data.length>0){diff-=container.data.length;}}
offset=0;if(container.nodeType===dfx.TEXT_NODE&&skippedBlockElem.length===0){offset++;}}
this._setRange(moveStart,container,offset);},_filterWords:function(words)
{var wc=words.length;var fwords=[];for(var i=0;i<wc;i++){if(words[i].length>0){fwords.push(words[i]);}}
return fwords;},_moveLineUp:function(moveStart)
{var container=null;var offset=null;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=this.getPreviousContainer(container);}
var words=container.data.substr(offset).split(/\s+/);var startCoords=this.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var nextLine=0;var wordLen=0;var prevYCoord=0;var prevCont=null;var prevOffset=0;while(true){prevOffset=offset;prevCont=container;if(nextLine===0&&words.length>0){offset-=words.pop().length;}else{offset--;}
if(offset<=0){var found=false;while(found===false){container=this.getPreviousContainer(container);if(container!==null&&container.nodeType===dfx.TEXT_NODE&&container.data.length!==0){found=true;}}
offset=container.data.length;}
if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}
coords=this.getRangeCoords(moveStart);if(startCoords.y!==coords.y){if(prevYCoord!==coords.y){prevYCoord=coords.y;nextLine++;if(nextLine>1){if(prevCont!==container){prevOffset=prevCont.data.length;}
if(moveStart){this.setStart(prevCont,prevOffset);}else{this.setEnd(prevCont,prevOffset);}
break;}}
if(coords.x<=startCoords.x){if(offset<container.data.length&&Math.abs(coords.x-startCoords.x)>Math.abs(prevXCoord-startCoords.x)){offset++;if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}}
break;}else{prevXCoord=coords.x;}}}},_moveLineDown:function(moveStart)
{var container=null;var offset=null;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=this.getNextContainer(container);}
var words=container.data.substr(offset).split(/\s+/);var startCoords=this.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var nextLine=0;var wordLen=0;var prevYCoord=0;var prevCont=null;var prevOffset=0;while(true){prevOffset=offset;prevCont=container;if(nextLine===0&&words.length>0){offset+=words.shift().length;}else{offset++;}
if(offset>=container.data.length){var found=false;while(found===false){container=this.getNextContainer(container);if(container.data.length!==0){found=true;}}
offset=0;}
if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}
coords=this.getRangeCoords(moveStart);if(startCoords.y!==coords.y){if(prevYCoord!==coords.y){prevYCoord=coords.y;nextLine++;if(nextLine>1){if(prevCont!==container){prevOffset=prevCont.data.length;}
if(moveStart){this.setStart(prevCont,prevOffset);}else{this.setEnd(prevCont,prevOffset);}
break;}}
if(coords.x>=startCoords.x){if(offset>1&&Math.abs(coords.x-startCoords.x)>Math.abs(prevXCoord-startCoords.x)){offset--;if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}}
break;}else{prevXCoord=coords.x;}}}},getHTMLContents:function(clonedSelection)
{if(!clonedSelection){clonedSelection=this.rangeObj.cloneContents();}
var div=Viper.document.createElement('div');div.appendChild(clonedSelection.cloneNode(true));return div.innerHTML;},getHTMLContentsObj:function()
{return this.rangeObj.cloneContents();}};dfx.noInclusionInherits('ViperMozRange','ViperDOMRange',true);function ViperPlugin(viper)
{this.viper=viper;}
ViperPlugin.ALL_EVENTS=0;ViperPlugin.NODES_DELETED=1;ViperPlugin.NODES_INSERTED=2;ViperPlugin.NODES_CHANGED=3;ViperPlugin.SELECTION_CHANGED=4;ViperPlugin.prototype={start:function(){},clicked:function(e)
{return true;},mouseDown:function(e)
{return true;},keyDown:function(e)
{return true;},keyPress:function(e)
{return true;},selectionChanged:function(range){},setEnabled:function(enabled){},saving:function(){},caretUpdated:function(){},nodeInserted:function(node,range){},caretPositioned:function(){},remove:function()
{ViperPluginManager.removeKeyPressListener(this);},setSettings:function(settings){}};dfx.noInclusionInherits('ViperPlugin','AbstractWidgetWidgetType',true);var ViperPluginManager={plugins:{},pluginConstructors:{},keyPressListeners:{},viper:null,activePlugin:null,pluginSets:{},activePluginSet:null,pluginsURL:'',callbacks:{},allowTextInput:false,init:function(viper)
{this.viper=viper;this.loadAllPluginStyles();},getPluginNames:function()
{var plugins=[];for(var name in this.plugins){plugins.push(name);}
return plugins;},loadAllPluginStyles:function()
{var self=this;dfx.foreach(this.pluginConstructors,function(pluginName){self.loadPluginStyles(pluginName);});},loadPluginStyles:function(plugin)
{if(dfx.isset(plugin)===true){var url=this.getPluginStylesURL(plugin)+'/'+plugin+'.css';dfx._includeCss(url);}},getPluginStylesURL:function(plugin)
{var url=this.pluginsURL+plugin;return url;},addPluginObject:function(pluginName,pluginObj)
{this.plugins[pluginName]=pluginObj;},addPlugin:function(name,pluginConstructor)
{if(typeof pluginConstructor!=='function'){throw Error('ViperPluginException: plugin must be a constructor function');}
if(dfx.isset(this.pluginConstructors[name])===false){this.pluginConstructors[name]=pluginConstructor;this.loadPluginStyles(name);}},loadPluginScripts:function(plugins,callback)
{if(plugins.length===0){callback.call(this);}else{var plugin=plugins.shift();if(typeof plugin==='object'){plugin=plugin.name;}
if(dfx.isset(window[plugin])===true){if(dfx.isset(window[plugin])===true){ViperPluginManager.addPlugin(plugin,window[plugin]);}
this.loadPluginScripts(plugins,callback);}else{var self=this;var url=this.pluginsURL+plugin+'/'+plugin+'.js';dfx.includeScript(url,function(){if(dfx.isset(window[plugin])===true){ViperPluginManager.addPlugin(plugin,window[plugin]);}
self.loadPluginScripts(plugins,callback);});}}},setActivePlugin:function(name,allowTextInput)
{allowTextInput=allowTextInput||false;this.activePlugin=name;this.allowTextInput=allowTextInput;},getActivePlugin:function()
{return this.activePlugin;},_getPluginName:function(pluginConstructor)
{var fn=pluginConstructor.toString();var start='function '.length;var name=fn.substr(start,(fn.indexOf('(')-start));return name;},removePlugin:function(plugin)
{if(this.plugins[plugin]){this.plugins[plugin].remove();this.removeKeyPressListener(this.plugins[plugin]);this.fireCallbacks('pluginRemoved',plugin);}},getPlugin:function(name)
{return this.plugins[name];},addPluginSet:function(name,plugins,load,callback)
{if(dfx.isset(plugins)===true){this.pluginSets[name]=plugins;}else{this.pluginSets[name]=[];}
if(load===true){var clone=this.pluginSets[name].concat([]);this.loadPluginScripts(clone,function(){if(callback){callback.call(this);}});}else if(callback){callback.call(this);}},removePluginSet:function(name)
{if(this.pluginSetExists(name)===true){delete this.pluginSets[name];}},addPluginToSet:function(setName,pluginName)
{if(this.pluginSetExists(name)===true){this.pluginSets[setName].push(pluginName);}},pluginSetExists:function(name)
{return dfx.isset(this.pluginSets[name]);},usePluginSet:function(setName,disableOnly,callback)
{if(this.pluginSetExists(setName)===true){var self=this;var clone=this.pluginSets[setName].concat([]);this.loadPluginScripts(clone,function(){if(self.activePluginSet!==null){self._removeSet(self.activePluginSet);}
self._enableSet(setName);if(dfx.isFn(callback)===true){callback.call(this,setName);}});}else if(this.activePluginSet!==null){this._removeSet(this.activePluginSet);}},_removeSet:function(name)
{var pSetLen=this.pluginSets[name].length;for(var i=0;i<pSetLen;i++){var plugin=this.pluginSets[name][i];if(typeof plugin==='object'){plugin=plugin.name;}
this.removePlugin(plugin);}
this.activePluginSet=null;},_enableSet:function(name)
{this.activePluginSet=name;var pSetLen=this.pluginSets[name].length;for(var i=0;i<pSetLen;i++){var plugin=this.pluginSets[name][i];var pluginName='';if(typeof plugin==='object'){pluginName=plugin.name;}else{pluginName=plugin;}
var pluginConstructor=this.pluginConstructors[pluginName];if(pluginConstructor){var pluginObj=new pluginConstructor(this.viper);this.plugins[pluginName]=pluginObj;if(dfx.isset(plugin.settings)===true){pluginObj.setSettings(plugin.settings);}
pluginObj.start();}}},disablePlugin:function(name)
{this.plugins[name].disable();},isPluginElement:function(element)
{for(var i in this.plugins){if(this.plugins[i].isPluginElement){if(this.plugins[i].isPluginElement(element)===true){return true;}}}
return false;},addKeyPressListener:function(keys,plugin,evtFunction,data)
{var keysArray=keys.toLowerCase().split('+').sort();var listener={plugin:plugin,fn:evtFunction,data:data};var keysStr=keysArray.join('+');if(!this.keyPressListeners[keysStr]){this.keyPressListeners[keysStr]=[];}
this.keyPressListeners[keysStr].push(listener);},removeKeyPressListener:function(plugin,keys)
{if(plugin&&keys&&this.keyPressListeners[keys]){var ln=this.keyPressListeners[keys].length;for(var i=0;i<ln;i++){var listener=this.keyPressListeners[keys][i];if(listener.plugin===plugin){this.keyPressListeners[keys].splice(i,1);break;}}}else if(plugin){for(var k in this.keyPressListeners){if(this.keyPressListeners.hasOwnProperty(k)===false){continue;}
var ln=this.keyPressListeners[k].length;if(ln===0){delete this.keyPressListeners[k];}else{for(var i=0;i<ln;i++){var listener=this.keyPressListeners[k][i];if(listener.plugin===plugin){this.keyPressListeners[k].splice(i,1);break;}}}}}},fireKeyPressed:function(e)
{if(this._fireKeyPressFns(e,'all_keys')===false){return false;}
var eKeys=[];if(e.ctrlKey===true||e.metaKey===true){eKeys.push('ctrl');}
if(e.shiftKey===true){eKeys.push('shift');}
if(e.altKey===true){eKeys.push('alt');}
switch(e.keyCode){case 13:eKeys.push('enter');break;case dfx.DOM_VK_LEFT:eKeys.push('left');break;case dfx.DOM_VK_RIGHT:eKeys.push('right');break;case dfx.DOM_VK_UP:eKeys.push('up');break;case dfx.DOM_VK_DOWN:eKeys.push('down');break;case 9:eKeys.push('tab');break;case dfx.DOM_VK_DELETE:eKeys.push('delete');break;default:var code;if(e.keyCode){code=e.keyCode;}else if(e.which){code=e.which;}
if(code){eKeys.push(String.fromCharCode(code).toLowerCase());}
break;}
var eKeysStr=eKeys.sort().join('+');return this._fireKeyPressFns(e,eKeysStr);},_fireKeyPressFns:function(e,eKeysStr)
{if(this.keyPressListeners[eKeysStr]){var ln=this.keyPressListeners[eKeysStr].length;for(var i=0;i<ln;i++){var listener=this.keyPressListeners[eKeysStr][i];var eventFn=listener.fn;var plugin=listener.plugin;var data=listener.data;if(eventFn){if(dfx.isFn(eventFn)===true){if(eventFn.call(plugin,e,data)===true){dfx.preventDefault(e);return false;}}else if(plugin[eventFn]&&plugin[eventFn].call(plugin,e,data)===true){dfx.preventDefault(e);return false;}}}}
return true;},fireSelectionChanged:function(range)
{for(var i in this.plugins){this.plugins[i].selectionChanged(range);}},fireNodeInserted:function(node,range)
{for(var i in this.plugins){if(this.plugins[i].nodeInserted(node,range)===false){return false;}}},fireCaretPositioned:function()
{for(var i in this.plugins){this.plugins[i].caretPositioned()}},fireClicked:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].clicked(e)===false){val=false;}}
return val;},fireMouseDown:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].mouseDown(e)===false){val=false;}}
return val;},fireKeyDown:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].keyDown(e)===false){val=false;}}
return val;},fireKeyPress:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].keyPress(e)===false){val=false;}}
return val;},fireEnabled:function(enabled)
{for(var i in this.plugins){this.plugins[i].setEnabled(enabled);}},fireSaving:function(elem)
{for(var i in this.plugins){if(this.plugins[i].saving){this.plugins[i].saving(elem);}}},fireCaretUpdated:function()
{for(var i in this.plugins){if(this.plugins[i].caretUpdated){this.plugins[i].caretUpdated();}}},registerCallback:function(type,id,callback)
{if(dfx.isFn(callback)===false){return;}
if(dfx.isset(this.callbacks[type])===false){this.callbacks[type]={};}
this.callbacks[type][id]=callback;},fireCallbacks:function(type,data)
{if(dfx.isset(this.callbacks[type])===true){for(var id in this.callbacks[type]){this.callbacks[type][id].call(type,data);}}},removeCallback:function(type,id)
{delete this.callbacks[type][id];}};var ViperSelection={_lastRange:null,_lastTextRange:null,_selection:null,_getSelection:function()
{if(Viper.window.getSelection){return Viper.window.getSelection();}else if(Viper.document.getSelection){return Viper.document.getSelection();}else if(Viper.document.selection){return Viper.document.selection;}else{return null;}},createRange:function()
{var rangeObj=null;if(Viper.document.body.createTextRange){rangeObj=Viper.document.body.createTextRange();return new ViperIERange(rangeObj);}else if(Viper.document.createRange){rangeObj=Viper.document.createRange();return new ViperMozRange(rangeObj);}else{throw Error('UnsupportedOperationException: createRange() not supported.');}},getRangeAt:function(pos)
{this._selection=ViperSelection._getSelection();var selection=this._selection;if(selection.getRangeAt){try{if(selection.rangeCount>0){var range=selection.getRangeAt(pos);var mozRange=new ViperMozRange(range);}else{var mozRange=this.createRange();}
return mozRange;}catch(e){return null;}}else{var rangeObj=selection.createRange();if(!rangeObj.duplicate){rangeObj=Viper.document.body.createTextRange();}
var range=new ViperIERange(rangeObj);this._lastRange=range;return this._lastRange;}},addRange:function(range)
{this._selection=ViperSelection._getSelection();if(this._selection.addRange){if(this._selection.rangeCount>0){this._selection.removeAllRanges();}
this._selection.addRange(range.rangeObj);}else if(range.rangeObj.select){try{range.rangeObj.select();}catch(e){}}},removeRange:function(range)
{var selection=ViperSelection._getSelection();if(selection){if(selection.removeRange){selection.removeRange(range.rangeObj);}else if(selection.empty){selection.empty();}}}};function ViperTextMetrics(){}
ViperTextMetrics.appendToBody=function(element)
{Viper.document.getElementsByTagName('body')[0].appendChild(element);};ViperTextMetrics.getCharWidth=function(chr)
{var clone=ViperTextMetrics.workNode;var text=clone.innerHTML;clone.innerHTML=chr;var insets=ViperElementMetrics.getInsets(clone);var width=(clone.offsetWidth-insets.left-insets.right);clone.innerHTML=text;return width;};var isInteger=function(num)
{return(!isNaN(parseInt(num))&&parseInt(num).toString()==num);};ViperTextMetrics.getCharHeight=function(element)
{var styles=ViperElementMetrics.getStyles(element);var size=styles.fontSize;var bodyStyles=ViperElementMetrics.getStyles(Viper.document.body);if(bodyStyles.fontSize){var bodyFontSize=parseInt(bodyStyles.fontSize);}
if(size!==''){if(!isInteger(size)){var idx=0;if((idx=size.indexOf('em'))>0){size=size.substring(0,idx);size=(size*bodyFontSize*1.3333);}else if((idx=size.indexOf('pt'))>0){size=size.substring(0,idx);size=(size*1.3333);}else if((idx=size.indexOf('%'))>0){size=parseInt(size.substring(0,idx));size=((size/7)-1);if(size>174){size=(size-1);}}}}
return parseInt(size);};ViperTextMetrics.getWordsBeforeOffset=function(offset)
{return ViperTextMetrics.workNode.innerHTML.substr(0,offset).split(/\s+/);};ViperTextMetrics.getFirstWordOnLine=function(offset)
{var clone=ViperTextMetrics.workNode;var words=ViperTextMetrics.getWordsBeforeOffset(offset);var firstWord=0;var currHeight=0;var text=clone.innerHTML;clone.innerHTML='';var wLen=words.length;for(var i=0;i<wLen;i++){clone.innerHTML=clone.innerHTML+words[i]+' ';if(clone.offsetHeight>currHeight){currHeight=clone.offsetHeight;firstWord=i;}}
clone.innerHTML=text;return firstWord;};ViperTextMetrics.getLineCount=function(offset)
{var clone=ViperTextMetrics.workNode;var words=ViperTextMetrics.getWordsBeforeOffset(offset);var lines=0;var currHeight=0;var text=clone.innerHTML;clone.innerHTML='';var wLen=words.length;for(var i=0;i<wLen;i++){clone.innerHTML=clone.innerHTML+words[i]+' ';if(clone.offsetHeight>currHeight){currHeight=clone.offsetHeight;lines++;}}
clone.innerHTML=text;return lines;};ViperTextMetrics.getLineWidth=function(offset)
{var clone=ViperTextMetrics.element.cloneNode(true);ViperTextMetrics.appendToBody(clone);var words=ViperTextMetrics.getWordsBeforeOffset(offset);var firstWord=ViperTextMetrics.getFirstWordOnLine(offset);clone.innerHTML=words.slice(firstWord).join(' ');clone.style.display='inline';var insets=ViperElementMetrics.getInsets(clone);var coords=dom.getElementCoords(ViperTextMetrics.element);var left=(insets.left-coords.x);if(words[(words.length-1)]===''){width=(clone.offsetWidth-left)+ViperTextMetrics.getCharWidth('&nbsp;');}else{width=(clone.offsetWidth-left);}
return width;};ViperTextMetrics.getCharacterCoords=function(offset)
{var clone=ViperTextMetrics.workNode;var coords=dom.getElementCoords(ViperTextMetrics.element);var insets=ViperElementMetrics.getInsets(clone);clone.style.width=(clone.offsetWidth-insets.left-insets.right)+'px';var x=ViperTextMetrics.getLineWidth(offset);var y=(coords.y+insets.top-ViperTextMetrics.getCharHeight());y=y+(ViperTextMetrics.getCharHeight()*(ViperTextMetrics.getLineCount(offset)-1));return{'x':x,'y':y};};var ViperUndoManager={undoHistory:[],redoHistory:[],undoHandlers:{},redoHandlers:{},batchCount:0,batch:null,viper:null,_textChangeCount:0,historyStore:{},_activeElement:null,historyLimit:30,init:function(viper)
{this.viper=viper;this.handles={};this.undoHistory=[];this.redoHisotory=[];this.historyStore={};var self=this;this.registerUndoHandler('viper',function(action,data){self.handleUndo(action,data);});this.registerRedoHandler('viper',function(action,data){self.handleRedo(action,data);});},registerUndoHandler:function(source,callback)
{this.undoHandlers[source]=callback;},registerRedoHandler:function(source,callback)
{this.redoHandlers[source]=callback;},setActiveElement:function(elem)
{if(this._activeElement){if(this.historyStore[this._activeElement]&&this.historyStore[this._activeElement].element!==elem){this._saveHistory(this._activeElement);}else{this.viper.fireCallbacks('ViperUndoManager:newUndoTask');return;}}
var self=this;var loaded=false;dfx.foreach(this.historyStore,function(key){if(self.historyStore[key].element===elem){self._loadHistory(key);loaded=true;return false;}});if(loaded===false){var key=dfx.getUniqueId();this.historyStore[key]={undo:[],redo:[],element:elem};this._loadHistory(key);this.add('viper','change_node');}else{this.viper.fireCallbacks('ViperUndoManager:newUndoTask');}},_loadHistory:function(key)
{if(this.historyStore[key]){this._activeElement=key;this.undoHistory=this.historyStore[key].undo;this.redoHistory=this.historyStore[key].redo;this._textChangeCount=0;this.batch=null;this.batchCount=0;}},_saveHistory:function(key)
{if(this.historyStore[key]){this.historyStore[key].undo=this.undoHistory;this.historyStore[key].redo=this.redoHistory;}},getUndoHistory:function()
{return this.undoHistory;},modify:function(undoIndex,task)
{this.undoHistory[undoIndex]=task;},begin:function()
{this.batchCount++;if(this.batch===null){this.batch=true;}},end:function()
{this.batchCount--;if(this.batchCount===0&&this.batch!==null){if(this.batch!==true){this.undoHistory.push(this.batch);}
this.batch=null;}},add:function(source,action)
{if(this.viper._subElementActive===true){return;}
var modify=false;if(action==='text_change'){this._textChangeCount++;if(this._textChangeCount>1){if(this._textChangeCount<30){modify=true;}else{this._textChangeCount=1;}}}else{this._textChangeCount=0;}
var data={content:dfx.getHtml(this.viper.element),range:this._getRangeInfo()};var task={source:source,action:action,data:data};if(this.batch===null){if(modify===true){this.undoHistory[(this.undoHistory.length-1)]=task;}else{this.undoHistory.push(task);if(this.undoHistory.length>this.historyLimit){this.undoHistory.shift();}}
this.redoHistory=[];}else{this.batch=task;}
this.viper.fireCallbacks('ViperUndoManager:newUndoTask');},undo:function()
{if(this.viper._subElementActive===true){return;}
var undoLength=this.undoHistory.length;if(undoLength===1){return;}
this._textChangeCount=0;var task=this.undoHistory.pop();this.redoHistory.push(task);undoLength=this.undoHistory.length;var undoTask=this.undoHistory[(undoLength-1)];if(undoTask){this.undoHandlers[undoTask.source].call(this,undoTask);}
this.viper.fireCallbacks('nodesChanged');this.viper.fireCallbacks('ViperUndoManager:undo');return undoLength;},redo:function()
{if(this.viper._subElementActive===true){return;}
if(this.redoHistory.length===0){return;}
var task=this.redoHistory.pop();this.undoHistory.push(task);this.redoHandlers[task.source].call(this,task);this.viper.fireCallbacks('nodesChanged');this.viper.fireCallbacks('ViperUndoManager:redo');return this.redoHistory.length;},getUndoCount:function()
{return this.undoHistory.length;},getRedoCount:function()
{return this.redoHistory.length;},handleUndo:function(task)
{this.handleUndoChange(task);},handleRedo:function(task)
{this.handleRedoChange(task);},handleUndoChange:function(task)
{if(task.data.content){dfx.setHtml(this.viper.element,task.data.content);this._setCaretPositon(task);}},handleRedoChange:function(task)
{if(task.data.content){dfx.setHtml(this.viper.element,task.data.content);this._setCaretPositon(task);}},_setCaretPositon:function(task)
{if(task&&task.data&&task.data.range){var taskRange=task.data.range;if(taskRange.startCont&&taskRange.endCont){var range=this.viper.getCurrentRange();try{var startNode=XPath.getNode(taskRange.startCont);var endNode=XPath.getNode(taskRange.endCont);if(startNode&&endNode){range.setStart(startNode,taskRange.startOffset);range.setEnd(endNode,taskRange.endOffset);ViperSelection.addRange(range);this.viper.focus();}}catch(e){}}}},createNodeChangeInfo:function(node,range)
{if(!range){range=this.viper.getCurrentRange();}
var info={before:dfx.getHtml(node),path:XPath.getPath(node)};try{if(range){info.startContainer=XPath.getPath(range.startContainer);info.startOffset=range.startOffset;info.endContainer=XPath.getPath(range.endContainer);info.endOffset=range.endOffset;}}catch(e){};return info;},_getRangeInfo:function()
{var rangeInfo={};try{var range=this.viper.getCurrentRange();var rangeInfo={startCont:XPath.getPath(range.startContainer),startOffset:range.startOffset,endCont:XPath.getPath(range.endContainer),endOffset:range.endOffset};}catch(e){};return rangeInfo;}};var XPath={getPath:function(node)
{var path,step;path='/node()['+this.getPosition(node,false)+']';node=node.parentNode;while(node.parentNode){step='/';switch(node.nodeType){case dfx.ELEMENT_NODE:step+=node.nodeName.toLowerCase()+'['+this.getPosition(node,true)+']';break;default:break;}
path=step+path;node=node.parentNode;}
return path;},getPosition:function(node,matchType)
{var childNodes=node.parentNode.childNodes;var pos=1;var cln=childNodes.length;for(var i=0;i<cln;i++){if(childNodes[i]===node){break;}
if(!matchType){pos++;continue;}
switch(node.nodeType){case dfx.ELEMENT_NODE:if(childNodes[i].nodeType===dfx.ELEMENT_NODE&&childNodes[i].nodeName===node.nodeName){pos++;}
break;case dfx.TEXT_NODE:if(childNodes[i].nodeType===dfx.TEXT_NODE){pos++;}
break;default:break;}}
return pos;},getNode:function(path)
{if(Viper.document.evaluate){var node=Viper.document.evaluate(path,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);return node.singleNodeValue;}else{return this._getNodeFromPath(path);}},_getNodeFromPath:function(path)
{var paths=path.split('/');var parent=document;var pln=paths.length;for(var i=0;i<pln;i++){if(dfx.trim(paths[i])===''){continue;}
parent=this._getNodeFromPathSegment(parent,paths[i]);}
return parent;},_getNodeFromPathSegment:function(parent,path)
{var pos=path.match(/\[(\d+)\]/);pos=parseInt(pos[1]);if(!pos){pos=1;}
var brPos=path.indexOf('[')||path.length;var type=path.substr(0,brPos);var node,found=1;var cln=parent.childNodes.length;for(var i=0;i<cln;i++){node=parent.childNodes[i];if(type==='node()'){if(found===pos){return node;}
found++;}else if(node.tagName&&type===node.tagName.toLowerCase()){if(found===pos){return node;}
found++;}}
throw Error('XPath: node could not be found');},getPreviousNode:function(path)
{var paths=path.split('/');var lastStep=paths.pop();var pos=lastStep.match(/\[(\d+)\]/)[1];lastStep=lastStep.replace(/\[(\d+)\]/,'['+(parseInt(pos)-1)+']');path=paths.join('/')+'/'+lastStep;return this.getNode(path);}};function ViperContentSharingPlugin(viper)
{ViperPlugin.call(this,viper);this.data=[];this.listContainer=null;this.titleWidget=null;this.previewPane=null;this.selected=null;this.canAdd=false;this.newid=null;this.contentSharingWidget=null;}
ViperContentSharingPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('ContentSharing','content-sharing','Manage Shared Content',function(){self.showManager();});},_isSharedContent:function(el,elemOnly)
{do{if(el.tagName==='SPAN'){if(dfx.hasClass(el,'ContentSharing-sharedContent')){return true;}}
if(elemOnly===true){return false;}
el=el.parentNode;}while(el.parentNode!=null&&el.parentNode.tagName!='BODY');return false;},showManager:function()
{var selectedHtml='';var range=this.viper.getCurrentRange();if(range.collapsed!==true){this.canAdd=true;selectedHtml=range.getHTMLContentsObj();}
var bookmark=this.viper.createBookmark();this.displayDisabledDiv(true);ViperPluginManager.setActivePlugin('ViperContentSharingPlugin');var self=this;this.includeWidgets(['ModalDialog','TextField','Button','EditingContentSharing'],function(){var modalDialog=self.createWidget('ViperContentSharingDialog','ModalDialog');var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-left">';content+='<div class="'+c+'-left-title">Available Content Items</div>';content+='<div class="'+c+'-left-list"></div>';content+='</div>';content+='<div class="'+c+'-right">';content+='<div class="'+c+'-right-top">';content+='<div class="'+c+'-right-top-title">Name</div>';content+='</div>';content+='<div class="'+c+'-right-titleText"></div>';content+='<div class="'+c+'-right-titleField"></div>';content+='<div class="'+c+'-right-prevTitle">Preview</div>';content+='<div class="'+c+'-right-preview"></div>';content+='</div>';dfx.setHtml(main,content);self.titleFieldCont=dfx.getClass(c+'-right-titleField',main)[0];self.titleTextCont=dfx.getClass(c+'-right-titleText',main)[0];self.listContainer=dfx.getClass(c+'-left-list',main)[0];self.previewPane=dfx.getClass(c+'-right-preview',main)[0];if(self.canAdd===true){var titleWidget=self.createWidget(null,'TextField');self.titleWidget=titleWidget;titleWidget.create(function(el){self.titleFieldCont.appendChild(el);});var addBtnWidget=self.createWidget(null,'Button','ButtonWidgetType-liteGrey');addBtnWidget.setName('Add Keyword');addBtnWidget.addClickEvent(function(){var newid=self.newid;var title=self.titleWidget.getValue();var content=range.getHTMLContents(self._fixNestedKeywords(selectedHtml));self.contentSharingWidget.add(newid,title,unescape(content),function(result){if(result.error){alert(result.error);return;}else if(result.key){self.newid=null;self.selected=null;self.data[newid].title=title;self.data[newid].key=result.key;dfx.setHtml(dfx.getId(newid),title);self.selectKeyword(newid);}});});addBtnWidget.create(function(btnel){self.titleFieldCont.appendChild(btnel);});}
modalDialog.setContent(main);modalDialog.setTitle('Content Sharing');modalDialog.setSubTitle('Insert shared content elements');modalDialog.create(function(){modalDialog.addButton('Close',function(button){button.addClickEvent(function(){modalDialog.close(true);},true);});modalDialog.addButton('Insert Content',function(button){button.addClickEvent(function(){if(self.data[self.selected]){var keyword=self.data[self.selected].key;self.insertKeyword(keyword,bookmark);modalDialog.close(true);}},true);});self.contentSharingWidget=self.createWidget(null,'EditingContentSharing');if(self.canAdd===true){var kid=self._createListItem(null,null,range.getHTMLContents(selectedHtml));self.selectKeyword(kid);}
self.contentSharingWidget.getKeywordsList(function(keywords){self.updateKeywordList(keywords);modalDialog.open();});modalDialog.addOnCloseCallback(function(){ViperPluginManager.setActivePlugin(null);self.selected=null;});});});},_fixNestedKeywords:function(contentElem)
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');keywordPlugin.normalizeKeywords(contentElem);return contentElem;},insertKeyword:function(keywordid,bookmark)
{if(!this.data[keywordid]){return;}
var title=this.data[keywordid].title;var content=this.data[keywordid].content;var keyword='%contentSharing~'+keywordid+'%';var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');keywordPlugin.insertKeyword(keyword,content,bookmark);this.selected=null;},updateKeywordList:function(keywords)
{var first=true;for(var id in keywords){if(keywords.hasOwnProperty(id)===true){this._createListItem(id,keywords[id].title,keywords[id].content);if(first===true&&this.canAdd!==true){first=false;this.selectKeyword(id);}}}},_createListItem:function(id,title,content)
{content=content||'';title=title||'Current Selection';if(!id){id=dfx.getUniqueId();this.newid=id;}
var main=document.createElement('div');var c=this.getClass()+'-listItem';main.id=id;dfx.addClass(main,c);var mcontent='<div class="'+c+'-title">'+title+'</div>';dfx.setHtml(main,mcontent);this.setData(id,title,content);this.listContainer.appendChild(main);var self=this;dfx.addEvent(main,'click',function(){self.selectKeyword(id);});return id;},setData:function(id,title,content)
{this.data[id]={title:title,content:content,key:id};},selectKeyword:function(id)
{if(!this.data[id]||this.selected===id){return;}
if(id===this.newid){this.titleWidget.setValue(this.data[id].title);dfx.setStyle(this.titleFieldCont,'display','block');dfx.setStyle(this.titleTextCont,'display','none');}else{dfx.setHtml(this.titleTextCont,this.data[id].title);dfx.setStyle(this.titleFieldCont,'display','none');dfx.setStyle(this.titleTextCont,'display','block');}
dfx.setHtml(this.previewPane,this.data[id].content);if(this.selected!==null){dfx.removeClass(dfx.getId(this.selected),'selected');}
dfx.addClass(dfx.getId(id),'selected');this.selected=id;},getClass:function()
{return'ViperContentSharingPlugin';}};dfx.noInclusionInherits('ViperContentSharingPlugin','ViperPlugin',true);function ViperCopyPastePlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.pasteElement=null;this.pasteValue=null;this.rangeObj=null;this.pasteType='formatted';this.cutType='formatted';this._tmpNode=null;}
ViperCopyPastePlugin.prototype={setSettings:function(settings)
{if(dfx.isset(settings.pasteType)===true){this.pasteType=settings.pasteType;}
if(dfx.isset(settings.cutType)===true){this.cutType=settings.cutType;}},start:function()
{this.createPasteDiv();},keyDown:function(e)
{this.handlePaste(e);},handleCut:function(e)
{if(this.cutType==='formatted'){return this.handleFormattedCut();}
var range=this.viper.getCurrentRange();if(range.collapsed===true){return false;}
var startCont=range.startContainer;var startOffset=range.startOffset;var bookmark=this.viper.createBookmark();var textInput=document.createElement('input');dfx.setStyle(textInput,'top','100px');dfx.setStyle(textInput,'left','100px');dfx.setStyle(textInput,'position','fixed');dfx.setStyle(textInput,'width','0px');dfx.setStyle(textInput,'height','0px');dfx.setStyle(textInput,'border','0px');textInput.value=range.toString();this.viper.deleteContents();document.body.appendChild(textInput);textInput.focus();textInput.select();this.viper.selectBookmark(bookmark);this.viper.fireNodesChanged('ViperCopyPastePlugin:cut');return false;},handleFormattedCut:function()
{var range=this.viper.getCurrentRange();if(range.collapsed===true){return false;}
var contents=range.getHTMLContents();this.viper.deleteContents();var bookmark=this.viper.createBookmark();var div=document.createElement('div');div.setAttribute('class','editable_attribute');div.setAttribute('contentEditable',true);dfx.setStyle(div,'width','0px');dfx.setStyle(div,'height','0px');dfx.setStyle(div,'overflow','hidden');dfx.setStyle(div,'position','fixed');dfx.setStyle(div,'top','90px');dfx.setStyle(div,'left','50px');document.body.appendChild(div);dfx.setHtml(div,contents);div.focus();range.selectNode(div);ViperSelection.addRange(range);this.viper.selectBookmark(bookmark);setTimeout(function(){dfx.remove(div);},100);this.viper.fireNodesChanged('ViperCopyPastePlugin:cut');return false;},handlePaste:function(e)
{if(e.metaKey!==true&&e.ctrlKey!==true){return;}if(e.keyCode!==86){return;}else if(this.viper.pluginActive()===true&&ViperPluginManager.allowTextInput!==true){return;}
var range=this.viper.getCurrentRange();this.rangeObj=range.cloneRange();this._tmpNode=document.createTextNode('');this.viper.insertNodeAtCaret(this._tmpNode);switch(this.pasteType){case'formatted':this.handleFormattedPaste();break;case'formattedClean':this.handleFormattedPaste(true);break;default:this.handleRawPaste(e);break;}
return true;},handleRawPaste:function(e)
{var textInput=document.createElement('input');this.pasteElement=textInput;dfx.setStyle(textInput,'top','0px');dfx.setStyle(textInput,'left','0px');dfx.setStyle(textInput,'position','fixed');dfx.setStyle(textInput,'width','0px');dfx.setStyle(textInput,'height','0px');dfx.setStyle(textInput,'border','0px');document.body.appendChild(textInput);textInput.focus();var self=this;textInput.onpaste=function(){setTimeout(function(){self.handleRawPasteValue();},100);};return true;},handleRawPasteValue:function(e)
{if(this.pasteElement!==null){this.pasteValue=this.pasteElement.value;dfx.insertBefore(this._tmpNode,document.createTextNode(this.pasteValue));this._updateSelection();this.viper.fireNodesChanged('ViperCopyPastePlugin:paste');}},createPasteDiv:function()
{var oldEl=dfx.getId('ViperPasteDiv');if(oldEl){dfx.empty(oldEl);return oldEl;}
var div=document.createElement('div');div.id='ViperPasteDiv';div.setAttribute('contentEditable',true);dfx.setStyle(div,'width','0px');dfx.setStyle(div,'height','0px');dfx.setStyle(div,'overflow','hidden');dfx.setStyle(div,'position','fixed');dfx.setStyle(div,'top','10px');dfx.setStyle(div,'left','10px');document.body.appendChild(div);return div;},handleFormattedPaste:function(stripTags)
{div=this.createPasteDiv();this.pasteElement=div;div.focus();var self=this;div.onpaste=function(){setTimeout(function(){self.handleFormattedPasteValue(stripTags);},100);};return true;},handleFormattedPasteValue:function(stripTags)
{if(stripTags===true){jQuery(this.pasteElement).find('[style]').removeAttr('style');jQuery(this.pasteElement).find('[class]').removeAttr('class');}
this._removeEditableAttrs(this.pasteElement);var html=dfx.getHtml(this.pasteElement);html=this._cleanWordPaste(html);if(stripTags===true){html=dfx.stripTags(html,['table','tr','td','th','ul','li','ol','br','p','a','img','form','input','select','option']);}
var fragment=this.rangeObj.createDocumentFragment(html);dfx.insertBefore(this._tmpNode,fragment);this._updateSelection();this.viper.fireNodesChanged('ViperCopyPastePlugin:paste');},_cleanWordPaste:function(content)
{content=content.replace(/<(meta|link)[^>]+>/g,"");content=content.replace(/<!--(.|\s)*?-->/g,'');content=content.replace(/<style>[\s\S]*?<\/style>/g,'');content=content.replace(/<\/?span[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,'');content=content.replace(/<\\?\?xml[^>]*>/gi,'');content=this._cleanPaste(content);content=this._convertWordPasteList(content);content=content.replace(/<(\w[^>]*) (class|lang)=([^ |>]*)([^>]*)/gi,"<$1$4");content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(new RegExp('<(\\w[^>]*) _viperlistst="([^"]*)"([^>]*)','gi'),"<$1 style=\"$2\"$3");content=this._convertDelNInsTags(content);return content;},_convertDelNInsTags:function(content)
{var tmp=document.createElement('div');dfx.setHtml(tmp,content);var delTags=dfx.getTag('del',tmp);dfx.remove(delTags);var insTags=dfx.getTag('ins',tmp);var ins=null;while(ins=insTags.shift()){while(ins.firstChild){dfx.insertBefore(ins,ins.firstChild);}
dfx.remove(ins);}
content=dfx.getHtml(tmp);return content;},_getListType:function(elem,listTypes)
{var elContent=dfx.getHtml(elem);var info=null;dfx.foreach(listTypes,function(k){dfx.foreach(listTypes[k],function(j){dfx.foreach(listTypes[k][j],function(m){if((new RegExp(listTypes[k][j][m])).test(elContent)===true){info={html:elContent.replace(new RegExp(listTypes[k][j][m]),''),listType:k,listStyle:j};return false;}});if(info!==null){return false;}});if(info!==null){return false;}});return info;},_convertWordPasteList:function(content)
{var div=document.createElement('div');var ul=null;var prevMargin=null;var indentLvl={};var li=null;var newList=true;var listTypes={ul:{circle:['^o(\s|&nbsp;)+'],disc:['^'+String.fromCharCode(183)+'(\\s|&nbsp;)+'],square:['^'+String.fromCharCode(167)+'(\\s|&nbsp;)+'],auto:['^'+String.fromCharCode(8226)+'(\\s|&nbsp;)+']},ol:{decimal:['^\\d+\\.(\s|&nbsp;)+'],'lower-roman':['^[ivxlcdm]+\\.(\\s|&nbsp;)+'],'upper-roman':['^[IVXLCDM]+\\.(\\s|&nbsp;)+'],'lower-alpha':['^[a-z]+\\.(\\s|&nbsp;)+'],'upper-alpha':['^[A-Z]+\\.(\\s|&nbsp;)+']}};dfx.setHtml(div,content);var pElems=dfx.getTag('p',div);var pln=pElems.length;for(var i=0;i<pln;i++){var pEl=pElems[i];var listTypeInfo=this._getListType(pEl,listTypes);if(listTypeInfo!==null){var marginLeft=parseInt(dfx.getStyle(pEl,'margin-left'));var listType=listTypeInfo.listType;var listStyle=listTypeInfo.listStyle;dfx.setHtml(pEl,listTypeInfo.html);if(!listType){listType='ol';}
if(newList===true){ul=document.createElement(listType);indentLvl={};dfx.attr(ul,'_viperlistst','list-style-type:'+listStyle);indentLvl[marginLeft]=ul;dfx.insertBefore(pEl,ul);}else{if(marginLeft!==prevMargin){if(dfx.isset(indentLvl[marginLeft])===true){ul=indentLvl[marginLeft];}else if(marginLeft>prevMargin){ul=document.createElement(listType);dfx.attr(ul,'_viperlistst','list-style-type:'+listStyle);li.appendChild(ul);indentLvl[marginLeft]=ul;}}}
li=this._createListItemFromElement(pEl);ul.appendChild(li);prevMargin=marginLeft;dfx.remove(pEl);newList=false;}else{newList=true;}}
content=dfx.getHtml(div);return content;},_createListItemFromElement:function(elem)
{var li=document.createElement('li');while(elem.firstChild){li.appendChild(elem.firstChild);}
return li;},_cleanPaste:function(content)
{content=content.replace(/<b(\s+|>)/g,"<strong$1");content=content.replace(/<\/b(\s+|>)/g,"</strong$1");content=content.replace(/<i(\s+|>)/g,"<em$1");content=content.replace(/<\/i(\s+|>)/g,"</em$1");return content;},_removeEditableAttrs:function(container)
{var editables=dfx.getClass('editable_attribute',container);var el=editables.length;for(var i=0;i<el;i++){this._moveChildren(editables[i]);dfx.remove(editables[i]);}},_moveChildren:function(cont)
{while(dfx.isset(cont.firstChild)===true){dfx.insertBefore(cont,cont.firstChild);}},_updateSelection:function()
{var range=this.viper.getCurrentRange();range.setStart(this._tmpNode,0);range.collapse(true);dfx.remove(this.pasteElement);this._tmpNode=null;}};dfx.noInclusionInherits('ViperCopyPastePlugin','ViperPlugin',true);function ViperCoreStylesPlugin(viper)
{ViperPlugin.call(this,viper);this.styleTags=['strong','em','u','sub','sup','strike'];this.buttons=['strong','emphasise','underline','subscript','superscript','strikethrough'];this.toolbarPlugin=null;this.activeStyles=[];this._caretUpdatedTimeout=null;this._onChangeAddStyle=null;}
ViperCoreStylesPlugin.prototype={handleKeyPress:function(e,type)
{if(type){return this.handleStyle(type);}},start:function()
{var name='CoreStylesKBS';var self=this;var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')>=0){ctrlName='CMD';}
this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton(name,'strong','Strong ('+ctrlName+' + B)',function(){self.handleStyle('strong');});this.toolbarPlugin.setButtonShortcut(this,'strong','CTRL+B','handleKeyPress','strong');this.toolbarPlugin.addButton(name,'emphasise','Emphasise ('+ctrlName+' + I)',function(){self.handleStyle('em');});this.toolbarPlugin.setButtonShortcut(this,'emphasise','CTRL+I','handleKeyPress','em');this.toolbarPlugin.addButton(name,'underline','Underline ('+ctrlName+' + U)',function(){self.handleStyle('u');});this.toolbarPlugin.setButtonShortcut(this,'underline','CTRL+U','handleKeyPress','u');this.toolbarPlugin.addButton(name,'remove-format','Remove Format',function(){self.removeFormat();});this.toolbarPlugin.addButton(name,'subscript','Subscript',function(){self.handleStyle('sub');});this.toolbarPlugin.addButton(name,'superscript','Superscript',function(){self.handleStyle('sup');});this.toolbarPlugin.addButton(name,'strikethrough','Strikethrough',function(){self.handleStyle('strike');});this.toolbarPlugin.addButton(name,'align-left','Left Justfy',function(){self.handleJustfy('left');});this.toolbarPlugin.addButton(name,'align-center','Center Justfy',function(){self.handleJustfy('center');});this.toolbarPlugin.addButton(name,'align-right','Right Justfy',function(){self.handleJustfy('right');});this.toolbarPlugin.addButton(name,'align-justify','Block Justfy',function(){self.handleJustfy('justify');});var tagNames={em:'Italic',strong:'Bold',u:'Underline',sub:'Subscript',sup:'Superscript',strike:'Strikethrough'};this.viper.registerCallback('ViperChangeTracker:modeChange','ViperCoreStylesPlugin',function(mode){var nodes=ViperChangeTracker.getCTNodes('formatChange');var copyAttr=['class','viperchangeid','time'];if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var span=Viper.document.createElement('span');dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});ViperChangeTracker.setCTData(span,'tagName',node.tagName.toLowerCase());while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'tagName');if(!origTag){return;}
var span=Viper.document.createElement(origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}
var nodes=ViperChangeTracker.getCTNodes('alignmentChange');if(nodes){if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var align=ViperChangeTracker.getCTData(node,'text-align');if(!align){align='';}
ViperChangeTracker.setCTData(node,'fin-text-align',dfx.getStyle(node,'text-align'));dfx.setStyle(node,'text-align',align);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var align=ViperChangeTracker.getCTData(node,'fin-text-align');if(!align){align='';}
dfx.setStyle(node,'text-align',align);});}}
var nodes=ViperChangeTracker.getCTNodes('removedFormat');if(nodes){if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'tagName');if(!origTag){return;}
var span=Viper.document.createElement(origTag);ViperChangeTracker.setCTData(span,'formatRemoved',origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'formatRemoved');if(!origTag){return;}
var span=Viper.document.createElement('span');ViperChangeTracker.setCTData(span,'tagName',origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}}});ViperChangeTracker.addChangeType('formatChange','Formatted','format');ViperChangeTracker.addChangeType('alignmentChange','Formatted','format');ViperChangeTracker.addChangeType('removedFormat','Formatted','format');ViperChangeTracker.setDescriptionCallback('removedFormat',function(node){var changes=[];var desc='';var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);dfx.foreach(ctNodes,function(i){if(dfx.isTag(ctNodes[i],'span')===true){var ctdata=ViperChangeTracker.getCTData(ctNodes[i],'tagName');if(tagNames[ctdata]){changes.push('Not '+tagNames[ctdata]);}}});desc+=changes.join(', ');return desc;});ViperChangeTracker.setDescriptionCallback('formatChange',function(node){var desc='';var changes=[];var ctNodes=ViperChangeTracker.getCTNodes('formatChange',node);ctNodes.unshift(node);dfx.foreach(ctNodes,function(i){var tagName=ctNodes[i].tagName.toLowerCase();if(tagNames[tagName]){changes.push(tagNames[tagName]);}else{tagName=ViperChangeTracker.getCTData(ctNodes[i],'tagName');if(tagNames[tagName]){changes.push(tagNames[tagName]);}}});desc+=changes.join(', ');return desc;});ViperChangeTracker.setDescriptionCallback('alignmentChange',function(node){var style='';if(ViperChangeTracker.getCurrentMode()==='original'){style=ViperChangeTracker.getCTData(node,'fin-text-align')||'';}else{style=dfx.getStyle(node,'text-align')||'';}
if(style){style='Aligned '+dfx.ucFirst(style);}
return style;});ViperChangeTracker.setApproveCallback('formatChange',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('formatChange',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedFormat',function(clone,node){var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);var mode=ViperChangeTracker.getCurrentMode();dfx.foreach(ctNodes,function(i){var elem=ctNodes[i];if(!elem.parentNode){return;}
var ctdata='';if(mode==='original'){ctdata=ViperChangeTracker.getCTData(elem,'removedFormat');}else{ctdata=ViperChangeTracker.getCTData(elem,'tagName');}
if(ctdata){var newElem=Viper.document.createElement(ctdata);while(elem.firstChild){newElem.appendChild(elem.firstChild);}
dfx.insertBefore(elem,newElem);dfx.remove(elem);}});});ViperChangeTracker.setApproveCallback('removedFormat',function(clone,node){var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);var mode=ViperChangeTracker.getCurrentMode();dfx.foreach(ctNodes,function(i){var elem=ctNodes[i];if(mode==='original'){var tag=ViperChangeTracker.getCTData(elem,'formatRemoved');if(tag){dfx.insertBefore(elem,elem.childNodes);dfx.remove(elem);}}else if(dfx.isTag(elem,'span')===true&&elem.getAttribute('ctdata')){dfx.insertBefore(elem,elem.childNodes);dfx.remove(elem);}});});ViperChangeTracker.setApproveCallback('alignmentChange',function(clone,node){if(ViperChangeTracker.getCurrentMode()==='original'){var finAlignment=ViperChangeTracker.getCTData(node,'fin-text-align')||'';dfx.setStyle(node,'text-align',finAlignment);}
ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('alignmentChange',function(clone,node){var style=ViperChangeTracker.getCTData(node,'text-align');if(!style){style='left';}
dfx.setStyle(node,'text-align',style);ViperChangeTracker.removeTrackChanges(node);});},handleJustfy:function(type)
{var range=this.viper.getCurrentRange();var start=range.startContainer;var end=range.endContainer;var node=start;var next=null;var common=range.getCommonElement();common=this.getFirstBlockParent(common);if(dfx.isChildOf(common,this.viper.element)===true){this.setJustfyChangeTrackInfo(common);dfx.setStyle(common,'text-align',type);}else{var parent=null;var bookmark=null;var elemsBetween=[];if(range.collapsed!==true||dfx.isStubElement(start)===false){bookmark=this.viper.createBookmark();elemsBetween=dfx.getElementsBetween(bookmark.start,bookmark.end);}else{elemsBetween=dfx.getElementsBetween(start,end);elemsBetween.unshift(start);elemsBetween.push(end);}
while(node=elemsBetween.shift()){if(dfx.isBlockElement(node)===true){this.setJustfyChangeTrackInfo(node);dfx.setStyle(node,'text-align',type);parent=null;}else if(parent===null&&(parent=this.getFirstBlockParent(node))){this.setJustfyChangeTrackInfo(parent);dfx.setStyle(parent,'text-align',type);parent=null;}else{if(parent===null){parent=Viper.document.createElement('p');this.setJustfyChangeTrackInfo(parent);dfx.setStyle(parent,'text-align',type);dfx.insertBefore(node,parent);}
parent.appendChild(node);}
if(node===end){break;}}
if(bookmark!==null){this.viper.selectBookmark(bookmark);}}
this.viper.fireNodesChanged('ViperCoreStylesPlugin:justify');},setJustfyChangeTrackInfo:function(node)
{if(node&&ViperChangeTracker.isTrackingNode(node)===false){var style=dfx.getStyle(node,'text-align');if(style&&(style==='left'||style==='right'||style==='center'||style==='justify')){if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.setCTData(node,'text-align',style);}}
ViperChangeTracker.addChange('alignmentChange',[node]);}},getFirstBlockParent:function(elem)
{if(dfx.isBlockElement(elem)===true){return elem;}
var parents=dfx.getParents(elem);var parent=null;var pln=parents.length;for(var i=0;i<pln;i++){parent=parents[i];if(parent===this.viper.element){return null;}
if(dfx.isBlockElement(parent)===true){return parent;}}},getAlignment:function(element)
{var parent=this.getFirstBlockParent(element);if(parent!==null){return dfx.getStyle(parent,'text-align');}},removeFormat:function()
{var range=this.viper.getCurrentRange().cloneRange();var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var keywordClass=keywordPlugin.keywordClass;var startNode=range.getStartNode();if(dfx.isChildOf(startNode,this.viper.element)===false){range.setStart(this.viper.element,0);}
var endNode=range.getEndNode();if(dfx.isChildOf(endNode,this.viper.element)===false){range.setEnd(this.viper.element,this.viper.element.childNodes.length);}
ViperSelection.addRange(range);var bookmark=this.viper.createBookmark();startNode=dfx.getFirstBlockParent(bookmark.start);if(dfx.isChildOf(startNode,this.viper.element)===false){startNode=bookmark.start;}
dfx.walk(startNode,function(elem){if(elem===bookmark.end){return false;}
if(elem!==bookmark.start){if(elem.nodeType===dfx.ELEMENT_NODE&&keywordPlugin.isKeyword(elem)!==true){dfx.removeAttr(elem,'style');dfx.removeAttr(elem,'class');}}});this.viper.selectBookmark(bookmark);var tags=this.styleTags.concat(['font']);var changeid=ViperChangeTracker.startBatchChange('removedFormat');var tln=tags.length;for(var i=0;i<tln;i++){this.viper.removeStyle(tags[i]);}
ViperChangeTracker.endBatchChange(changeid);this.caretUpdated();this.viper.fireNodesChanged('ViperCoreStylesPlugin:removeFormat');},nodeInserted:function(node,range)
{return this._wrapNodeWithActiveStyle(node,range);},mouseDown:function()
{this._onChangeAddStyle=null;},caretPositioned:function()
{this._onChangeAddStyle=null;},_wrapNodeWithActiveStyle:function(node,range)
{if(!node||!this._onChangeAddStyle||!range){return;}
var style=this._onChangeAddStyle;var nodes=this.viper.splitNodeAtRange(style,range,true);this._onChangeAddStyle=null;if(dfx.isTag(nodes.prevNode,style)===true||dfx.isTag(nodes.nextNode,style)===true){if(nodes.midNode===null){dfx.insertAfter(nodes.prevNode,node);}else{var tmpnode=nodes.midNode;while(tmpnode.firstChild){tmpnode=tmpnode.firstChild;}
tmpnode.appendChild(node);}
if(dfx.getNodeTextContent(nodes.nextNode).length===0){dfx.remove(nodes.nextNode);}
range.setStart(node,1);range.collapse(true);ViperSelection.addRange(range);}else{var styleTag=Viper.document.createElement(style);dfx.insertAfter(nodes.prevNode,styleTag);styleTag.appendChild(node);range.setStart(node,1);range.collapse(true);ViperSelection.addRange(range);}
return false;},handleStyle:function(style)
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;if(range.collapsed===true){this._onChangeAddStyle=style;}else{if(dfx.getParents(startNode,style).length>0){if(dfx.getParents(endNode,style).length>0){var changeid=ViperChangeTracker.startBatchChange('removedFormat');this.viper.removeStyle(style);ViperChangeTracker.endBatchChange(changeid);dfx.removeEmptyNodes(this.viper.element);this.viper.fireNodesChanged('ViperCoreStylesPlugin:removeStyle');return true;}}
dfx.removeEmptyNodes(this.viper.element);this.applyTag(style);this.caretUpdated();}
this.viper.fireNodesChanged('ViperCoreStylesPlugin:applyStyle');this.viper.focus();return true;},getStyleTags:function()
{var range=this.viper.getCurrentRange();var tags=dfx.getParents(range.startContainer,this.styleTags.join(','));return tags;},applyTag:function(tag)
{ViperUndoManager.begin();this.viper.surroundContents(tag);ViperUndoManager.end();},selectionChanged:function()
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;var boldFound=false;var emFound=false;startNode=startNode.parentNode;while(startNode.parentNode){if(startNode===document){break;}
switch(startNode.tagName.toLowerCase()){case'strong':this.toolbarPlugin.setButtonActive('bold');boldFound=true;break;case'em':this.toolbarPlugin.setButtonActive('italic');emFound=true;break;default:break;}
startNode=startNode.parentNode;}
if(!emFound){this.toolbarPlugin.setButtonInactive('italic');}
if(!boldFound){this.toolbarPlugin.setButtonInactive('bold');}},caretUpdated:function()
{var self=this;clearTimeout(this._caretUpdatedTimeout);this._caretUpdatedTimeout=setTimeout(function(){var tags=self.getStyleTags();var asln=self.activeStyles.length;for(var i=0;i<asln;i++){self.setStyleButtonState(self.activeStyles[i],'inactive');}
var tln=tags.length;for(var i=0;i<tln;i++){var tag=tags[i].tagName.toLowerCase();var index=self.styleTags.find(tag);if(index!==-1){self.setStyleButtonState(self.buttons[index],'active');}}
var range=self.viper.getCurrentRange();var style=self.getAlignment(range.startContainer);if(style){if(style==='start'){style='left';}
self.setStyleButtonState('align-'+style,'active');}},200);},setStyleButtonState:function(style,state)
{if(state==='active'){this.toolbarPlugin.setButtonActive(style);this.activeStyles.push(style);}else{this.toolbarPlugin.setButtonInactive(style);}}};dfx.noInclusionInherits('ViperCoreStylesPlugin','ViperPlugin',true);function ViperFormatPlugin(viper)
{ViperPlugin.call(this,viper);this.styleTags={h1:'Heading 1',h2:'Heading 2',h3:'Heading 3',h4:'Heading 4',h5:'Heading 5',h6:'Heading 6',p:'Paragraph',pre:'Preformatted',address:'Address'};this.toolbarPlugin=null;this.activeStyles=[];this._range=null;}
ViperFormatPlugin.prototype={start:function()
{var name='Format';var self=this;ViperChangeTracker.addChangeType('textFormatChange','Formatted','format');ViperChangeTracker.setDescriptionCallback('textFormatChange',function(node){var format=self._getFormat(node);return self.styleTags[format];});var menu=document.createElement('div');dfx.addClass(menu,'ViperFormatPlugin-menu');this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');var button=this.toolbarPlugin.addButton(name,'format','Format',function(e){dfx.addEvent(document,'click.ViperFormatPlugin',function(){dfx.setStyle(menu,'display','none');self._range=null;dfx.removeEvent(document,'click.ViperFormatPlugin');});if(subToolbarPlugin.isActive()===true){dfx.setStyle(menu,'margin-top','30px');}else{dfx.setStyle(menu,'margin-top','0px');}
dfx.setStyle(menu,'display','block');self._range=self.viper.getCurrentRange();var currentFormat=self._getFormat(self._range.startContainer);if(currentFormat!==null){dfx.removeClass(dfx.getClass('ViperFormatPlugin-menu-item',menu),'active');dfx.addClass(dfx.getClass('ViperFormatPlugin-menu-'+currentFormat,menu)[0],'active');}
dfx.preventDefault(e);dfx.stopPropagation(e);return false;});dfx.setStyle(menu,'display','none');button.appendChild(menu);var shadow=document.createElement('div');menu.appendChild(shadow);dfx.addClass(shadow,'ViperFormatPlugin-menu-shadow');var fsize=24;for(var tag in this.styleTags){if(this.styleTags.hasOwnProperty(tag)===false){continue;}
var item=document.createElement('div');dfx.addClass(item,'ViperFormatPlugin-menu-item ViperFormatPlugin-menu-'+tag);menu.appendChild(item);dfx.setHtml(item,this.styleTags[tag]);dfx.setStyle(item,'font',fsize+'px arial');if(fsize>12){fsize-=2;}
(function(el,tagName){dfx.addEvent(el,'click',function(){self.handleFormat(tagName);});})(item,tag);}
dfx.hover(menu.childNodes,function(e){var target=dfx.getMouseEventTarget(e);dfx.addClass(target,'hover');},function(e){dfx.removeClass(menu.childNodes,'hover');});ViperChangeTracker.setApproveCallback('textFormatChange',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('textFormatChange',function(clone,node){if(node.parentNode===self.viper.element){var elem=document.createElement('p');while(node.firstChild){elem.appendChild(node.firstChild);}
dfx.insertBefore(node,elem);}else{while(node.firstChild){dfx.insertBefore(node,node.firstChild);}}
dfx.remove(node);});},_addChangeTrackInfo:function(node)
{if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange('textFormatChange',[node]);}},handleFormat:function(type)
{this.viper.focus();var range=this.viper.getCurrentRange();range.setStart(this._range.startContainer,this._range.startOffset);range.setEnd(this._range.endContainer,this._range.endOffset);var startNode=range.getStartNode();if(dfx.isChildOf(startNode,this.viper.element)===false){range.setStart(this.viper.element,0);range.setEnd(this.viper.element,this.viper.element.childNodes.length);}
ViperSelection.addRange(range);var info=ViperUndoManager.createNodeChangeInfo(this.viper.element,range);var bookmark=this.viper.createBookmark();var elemsBetween=dfx.getElementsBetween(bookmark.start,bookmark.end);if(range.collapsed===true){elemsBetween.unshift(bookmark.start);}
var s=this.styleTags;s.div=1;var self=this;dfx.foreach(elemsBetween,function(i){var elem=elemsBetween[i];var tagName=dfx.getTagName(elem);if(s[tagName]){self._createNewNode(elem,type);}else{var textNodes=null;if(elem.nodeType===dfx.TEXT_NODE){textNodes=[elem];}else{textNodes=dfx.getTextNodes(elem);}
dfx.foreach(textNodes,function(k){var textNode=textNodes[k];var blockParent=self.getFirstBlockParent(textNode);if(blockParent===null){return;}
var t=dfx.getTagName(blockParent);if(s[t]){self._createNewNode(blockParent,type);}else if(type!==t){var newElem=document.createElement(type);self._addChangeTrackInfo(newElem);self._moveChildElements(blockParent,newElem);blockParent.appendChild(newElem);}});}});if(bookmark){this.viper.selectBookmark(bookmark);}
info.after=dfx.getHtml(this.viper.element);this.viper.fireNodesChanged('ViperFormatPlugin:format');},_createNewNode:function(node,type)
{var newElem=document.createElement(type);this._addChangeTrackInfo(newElem);this._moveChildElements(node,newElem);dfx.insertAfter(node,newElem);dfx.remove(node);return newElem;},_moveChildElements:function(source,dest)
{while(source.firstChild){dest.appendChild(source.firstChild);}},getFirstBlockParent:function(elem)
{if(dfx.isBlockElement(elem)===true){return elem;}
var parents=dfx.getParents(elem);var parent=null;var ln=parents.length;for(var i=0;i<ln;i++){parent=parents[i];if(parent===this.viper.element){return null;}
if(dfx.isBlockElement(parent)===true){return parent;}}},selectionChanged:function()
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;var boldFound=false;var emFound=false;startNode=startNode.parentNode;this.toolbarPlugin.setButtonInactive('format');var tagName=this._getFormat(startNode);if(tagName!==null&&tagName!=='p'){this.toolbarPlugin.setButtonActive('format');}},_getFormat:function(startNode)
{while(startNode.parentNode){if(startNode===document){return null;}
if(startNode.tagName){var tagName=startNode.tagName.toLowerCase();if(this.styleTags[tagName]){return tagName;}}
startNode=startNode.parentNode;}
return null;}};dfx.noInclusionInherits('ViperFormatPlugin','ViperPlugin',true);function ViperImageGalleryPlugin(viper)
{ViperPlugin.call(this,viper);this.image=null;this.toolbarPlugin=null;this.imageBorder=null;this._movieEl=null;this._viperBoookmark=null;}
ViperImageGalleryPlugin.prototype={start:function()
{var self=this;if(Widget.CSS_MINIFIED===false&&typeof WidgetStore.getData('imageGalleryBackendCSSLoaded')==='undefined'){var data={EditingContents:true,action:'loadDesignCss',list:dfx.jsonEncode(['Systems/ImageGallery/ImageGallery.css'])};dfx.post(window.location.href,data,function(cssContents){dfx.addCssToStyle(dfx.jsonDecode(cssContents),'assetStyle');dfx.addCssToStyle(dfx.jsonDecode(cssContents).replace(/#EditingAsset/gi,'#EditingScreenModes'),'backendStyle');dfx.addCssToStyle(dfx.jsonDecode(cssContents).replace(/#EditingAsset/gi,'#EditEditingModeWidgetType-assetSettings'),'backendStyle');dfx.addCssToStyle(dfx.jsonDecode(cssContents).replace(/#EditingAsset/gi,'#ViperContentSharingDialog'),'backendStyle');WidgetStore.setData('imageGalleryBackendCSSLoaded',true);});}
this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('ImageGallery','imageGallery','Insert/Edit Image Gallery',function(){self.editImageGallery();});this.viper.registerCallback('clickedOutside','ViperImageGalleryPlugin',function(){self.removeMovieHandles();});dfx.includeScript(Widget.WEB_URL+'Systems/ImageGallery/ImageGallery.js',function(){self.includeWidgets(['Select','TextField'],null);});},editImageGallery:function()
{var self=this;self.inserteditImageGalleryDialog(self._movieEl);},inserteditImageGalleryDialog:function(elem)
{var self=this;if(elem===null){this.removeMovieHandles();this.bookmark=this.viper.createBookmark();}else{this.bookmark=elem;}
this.displayDisabledDiv(true);this.dialog=Widget.prototype.createWidget('ViperImageGalleryPluginDialog','ViperImageGalleryPlugin');this.dialog.setAssetSelectedEvent(function(selectedAssets){AssetManager.getAsset(selectedAssets[0],function(cached){var folderid=selectedAssets[0];var allowedRoot=['folder','projectFolder','fileConnection'];if(dfx.inArray(cached.type,allowedRoot)===false){folderid=WidgetStore.get('ViperImageGalleryPluginDialog').currentSelection;}
var url=null;var internal=self.dialog.optWidgets.internal;var galleryT=internal.type.getValue()||'normal';var width=internal.width.getValue()||'';var height=internal.height.getValue()||'';var heightL=internal.heightLight.getValue()||'small';var ops={galleryT:galleryT,galleryW:parseInt(width,10),galleryH:parseInt(height,10),galleryHL:heightL};self.insertKeyword(self.bookmark,folderid,ops);},true,{attributes:['name'],type:true,typeIcon:false,linking:[],urls:false});});this.dialog.create(function(){self.dialog.setClosedEvent(function(win){if(win===true){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}else if(elem){var range=self.viper.getCurrentRange();range.setStart(elem,0);range.collapse(true);}
self.end();}});ViperPluginManager.setActivePlugin('ImageGallery');self.dialog.open(elem);});},insertKeyword:function(bookmark,assetid,options)
{var self=this;if(!assetid||!options.galleryW||!options.galleryH){return;}
if(options.galleryT==='lightbox'){var keyword='imageGallery~embedGallery-'+options.galleryW+'-'+options.galleryHL+':'+assetid;}else{var keyword='imageGallery~embedGallery-'+options.galleryW+'-'+options.galleryH+':'+assetid;}
var params={widget:'KeywordWidget',action:'getKeywordReplacement',keyword:keyword,mode:'htmlVersion'};dfx.get(window.location.href,params,function(c){if(self.bookmark.start){var parents=dfx.getParents(self.bookmark.start,'p',self.viper.element);if(parents.length>0){var split=self.viper.splitNodeAtBookmark('p',self.bookmark,true);self.bookmark=document.createElement('div');dfx.insertBefore(split.nextNode,self.bookmark);}}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){keywordPlugin.insertKeyword('%'+keyword+'%',c,self.bookmark);}});},_calculateGallerySize:function(options)
{var smallThumb=(options.galleryH<=400);var imageDisplayWidth=(options.galleryW-20);var imageDisplayHeight=(options.galleryH-135);if(smallThumb===true){imageDisplayHeight+=30;}
var imageW=options.imageW;var imageH=options.imageH;options.nW=imageW;options.nH=imageH;if(imageW>imageDisplayWidth||imageH>imageDisplayHeight){var sizes=mig.Gallery.prototype._scaleDownImage.call(this,imageDisplayWidth,imageDisplayHeight,imageW,imageH);options.nW=sizes.nW;options.nH=sizes.nH;}
options.imageDisplayWidth=imageDisplayWidth;options.imageDisplayHeight=imageDisplayHeight;if(options.nH<imageDisplayHeight){options.marginTop=(Math.floor((imageDisplayHeight-options.nH)/2));}else{options.marginTop=0;}
return options;},_adjustGallerySize:function(elem,options,type)
{var smallThumb=false;if(options.galleryH<=400){smallThumb=true;}
var thumbImageHeight=75;var imageDisplayWidth=(options.galleryW-20);var imageDisplayHeight=(options.galleryH-135);if(smallThumb===true){thumbImageHeight=45;imageDisplayHeight+=30;}
if(type==='full'){dfx.setStyle(elem,'width',options.galleryW+'px');dfx.setStyle(elem,'height',options.galleryH+'px');var galleryImgDiv=dfx.getClass('galleryImage',elem)[0];dfx.setStyle(galleryImgDiv,'height',options.imageDisplayHeight+'px');var imgElem=dfx.getClass('imageContainer',elem)[0];imgElem.setAttribute('width',options.nW);imgElem.setAttribute('height',options.nH);dfx.setStyle(imgElem,'margin-top',options.marginTop+'px');}else if(type==='slider'){if(options.galleryH==='small'){smallThumb=true;}else if(options.galleryH==='big'){smallThumb=false;}}
var thumbs=dfx.getClass('thumbImage',elem);if(smallThumb===true){dfx.foreach(thumbs,function(idx){if(thumbs[idx].height===45){return false;}
var ntw=Math.ceil((thumbs[idx].width*45)/75);thumbs[idx].setAttribute('height',45);thumbs[idx].setAttribute('width',ntw);return true;});}else{dfx.foreach(thumbs,function(idx){if(thumbs[idx].height===75){return false;}
var ntw=Math.ceil((thumbs[idx].width*75)/45);thumbs[idx].setAttribute('height',75);thumbs[idx].setAttribute('width',ntw);return true;});}},end:function()
{ViperPluginManager.setActivePlugin(null);},isImageGallery:function(elem)
{if(!elem){var range=this.viper.getCurrentRange();if(range.startContainer.nodeType===dfx.ELEMENT_NODE){elem=range.startContainer.childNodes[range.startOffset];}else{return false;}}
if(elem.nodeType===dfx.ELEMENT_NODE){if(dfx.hasClass(elem,'imageGalleryEditMask')===true){return elem;}}
return false;},isPluginElement:function(element)
{if(element!==this.imageBorder&&dfx.isChildOf(element,this.imageBorder)===false){return false;}
return true;},mouseDown:function(e,elem)
{if(!elem){elem=dfx.getMouseEventTarget(e);}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var isCSKeyword=false;if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true);}
if(this.isImageGallery(elem)!==false&&isCSKeyword===false){dfx.remove(dfx.getClass('galleryImageNext',elem.parentNode)[0]);dfx.remove(dfx.getClass('galleryImagePrev',elem.parentNode)[0]);dfx.remove(dfx.getClass('thumbSliderRight',elem.parentNode)[0]);dfx.remove(dfx.getClass('thumbSliderLeft',elem.parentNode)[0]);var spanTag=elem;while(spanTag.nodeName!=='SPAN'){spanTag=spanTag.parentNode;}
var range=this.viper.getCurrentRange();var start=document.createTextNode('');var end=document.createTextNode('');dfx.insertBefore(spanTag,start);dfx.insertAfter(spanTag,end);range.setStart(start,0);range.setEnd(end,0);if(this.showImageGalleryHandles(elem.parentNode)===false){if(e){dfx.preventDefault(e);}
return false;}}},showImageGalleryHandles:function(igWrap)
{if(this.imageBorder!==null){this.removeMovieHandles();}
if(igWrap===null){return;}
this._movieEl=igWrap.parentNode;var mvWrapBorder=document.createElement('div');this.imageBorder=mvWrapBorder;var width=dfx.getElementWidth(igWrap);var height=dfx.getElementHeight(igWrap);var coords=dfx.getElementCoords(igWrap);var currMode=WidgetStore.getData('activeMode');var currScreen=WidgetStore.getData('activeScreen')
var handleParentId='EditingAsset';if(currMode.id==='AdminScreenMode'&&currScreen.id==='contentsharing'){handleParentId='EditingScreenModes';}
var editingAsset=dfx.getId(handleParentId);if(editingAsset){if(handleParentId==='EditingAsset'){coords.y-=parseInt(dfx.getComputedStyle(editingAsset,'margin-top'));}}
if(handleParentId==='EditingAsset'){coords.y-=38;}
dfx.setStyle(mvWrapBorder,'position','absolute');dfx.setStyle(mvWrapBorder,'width',width+'px');dfx.setStyle(mvWrapBorder,'height',height+'px');dfx.setStyle(mvWrapBorder,'top',(coords.y-1)+'px');dfx.setStyle(mvWrapBorder,'left',(coords.x-1)+'px');dfx.setStyle(mvWrapBorder,'border','1px solid #000');var ghostMovie=igWrap.cloneNode(true);dfx.setStyle(ghostMovie,'opacity','0.7');dfx.setStyle(ghostMovie,'width','100%');dfx.setStyle(ghostMovie,'height','100%');mvWrapBorder.appendChild(ghostMovie);var info={};var self=this;var ops={knobHandles:true,handles:'all',minWidth:200,stop:function(e,info){var newWidth=parseInt(info.size.width);var newHeight=parseInt(info.size.height);var imgElem=dfx.getClass('imageContainer',igWrap)[0];if(dfx.isset(imgElem)===false){if(newHeight===70){newHeight='small';}else{newHeight='big';}
dfx.setStyle(igWrap,'width',newWidth+'px');var newSize={galleryW:newWidth,galleryH:newHeight};self._adjustGallerySize(igWrap,newSize,'slider');}else{var oriImgWidth=imgElem.getAttribute('oriWidth');var oriImgHeight=imgElem.getAttribute('oriHeight');var options={galleryW:newWidth,galleryH:newHeight,imageW:oriImgWidth,imageH:oriImgHeight};var newSize=self._calculateGallerySize(options);newSize.galleryW=newWidth;newSize.galleryH=newHeight;newSize.imageW=oriImgWidth;newSize.imageH=oriImgHeight;self._adjustGallerySize(igWrap,newSize,'full');}
self._updateKeyword(igWrap.parentNode,newWidth,newHeight,width,height);self.removeMovieHandles();self.viper.fireNodesChanged('ViperImageGalleryPlugin:insert');self.showImageGalleryHandles(igWrap);}};if((igWrap.id.length-6)===igWrap.id.search('-small')){ops.minHeight=70;ops.maxHeight=70;ops.handles='e,w';}else if((igWrap.id.length-4)===igWrap.id.search('-big')){ops.minHeight=100;ops.maxHeight=100;ops.handles='e,w';}else{ops.minHeight=200;}
jQuery(mvWrapBorder).resizable(ops);editingAsset.appendChild(mvWrapBorder);dfx.addEvent(document,'click.ViperMoviePluginGh',function(e){var target=dfx.getMouseEventTarget(e);if(target!==igWrap&&target!==mvWrapBorder&&dfx.isChildOf(target,mvWrapBorder)===false){dfx.removeEvent(document,'click.ViperMoviePluginGh');self.removeMovieHandles();}});return false;},removeMovieHandles:function()
{this._movieEl=null;if(this.imageBorder!==null){jQuery(this.imageBorder).resizable('destroy');dfx.remove(this.imageBorder);this.imageBorder=null;}},caretUpdated:function()
{this.removeMovieHandles();},handleKeyPress:function()
{if(this.imageBorder!==null){this.removeMovieHandles();}},_updateKeyword:function(keywordEl,nwidth,nheight,owitdh,oheight)
{if(nheight==='small'||nheight==='big'){var keyword=dfx.attr(keywordEl,'keyword');keyword=keyword.replace(/-\d+-(small|big)/,'-'+nwidth+'-'+nheight);dfx.attr(keywordEl,'keyword',keyword);dfx.attr(keywordEl,'title','Keyword:'+keyword);}else{var keyword=dfx.attr(keywordEl,'keyword');keyword=keyword.replace(/-\d+-\d+/,'-'+nwidth+'-'+nheight);dfx.attr(keywordEl,'keyword',keyword);dfx.attr(keywordEl,'title','Keyword:'+keyword);}}};dfx.noInclusionInherits('ViperImageGalleryPlugin','ViperPlugin',true);function ViperImageGalleryPluginWidgetType(id)
{Widget.call(this,id);this.name='editingImageGalleryEditor';this.assetPicker=null;this.optWidgets={'internal':{}};this.optionsCont=null;this.internalImageGalleryEl=null;this.closedEvent=null;this.assetSelectedEvent=null;this.optionsDiv=null;this.currentSelection=null;}
ViperImageGalleryPluginWidgetType.prototype={create:function(callback)
{this.init(callback);},init:function(callback)
{var self=this;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen(this.name);this.assetPicker.setView(this.name,'thumbs');this.assetPicker.setTitle('Insert Image Gallery');this.assetPicker.setSubTitle('Select the folder that contains the image for the gallery');this.assetPicker.setButtonTitle('Insert Image Gallery');this.assetPicker.addProjectFolderWhiteList(this.name,'Images');this.assetPicker.setHideSite(this.name);this.assetPicker.setUniqueSelect(true);this.assetPicker.setClass(this.name,this.getClass()+'-dialog');this.assetPicker.setModalSize(710,370);this.assetPicker.addItemClickedEvent(function(itemid,type,e){self.setSelectedItemValues(itemid);},true);this.assetPicker.setHideTopLevel(this.name);this.createOptionsContainer(function(el){self.assetPicker.setFooterContent(el);callback.call(self);});this.assetPicker.addAssetsSelectedAction(this.assetSelectedEvent,true);},getValuesFromElem:function(elem)
{var values={};var keyword=dfx.attr(elem,'keyword');if(keyword){var parts=keyword.match(/-(\d+)-(\d+):(\d+)/);if(parts===null){parts=keyword.match(/-(\d+)-(small|big):(\d+)/);if(parts===null){}else{values.width=parts[1];values.height=parts[2];values.assetid=parts[3];}}else if(parts.length===4){values.width=parts[1];values.height=parts[2];values.assetid=parts[3];}}
return values;},open:function(elem)
{var self=this;if(elem){var values=self.getValuesFromElem(elem);AssetManager.getAsset(values.assetid,function(asset){if(asset){self.setValues(asset,values);var c=self.getClass();var optionsDiv=dfx.getClass(c+'-imageInfoCont',elem)[0];dfx.showElement(optionsDiv);if(asset.hasOwnProperty('id')===true){AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.setAutoScrollLineage(lineage,self.name);self.assetPicker.init(self.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});});}}},true,{attributes:['name'],type:true,typeIcon:false,linking:[],urls:false});return;}else{var imageFolderid=null;dfx.foreach(self.assetPicker.projectFolders,function(key){if(key==='Images'){imageFolderid=self.assetPicker.projectFolders[key];return false;}
return true;});var asset={id:imageFolderid,name:'Images'};var values={width:580,height:523};self.setValues(asset,values);}
this.assetPicker.setAutoScrollLineage(null,this.name);this.assetPicker.init(this.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){var allowedRoot=['folder','projectFolder','fileConnection'];if(allowedRoot.indexOf(asset.type)!==-1){dfx.showElement(self.optionsDiv);self.setValues(asset);}}},true,{attributes:['name'],type:true,typeIcon:false,linking:[],urls:false});},setValues:function(asset,values)
{var c=this.getClass();var name=dfx.getClass(c+'-assetInfo-value',this.internalImageGalleryEl)[0];var assetNameHTML=asset.name;assetNameHTML+='&nbsp;<span class="AssetPickerDialog-currentSelectionTitle-assetid">[#';assetNameHTML+=asset.id+']</span>';dfx.setHtml(name,assetNameHTML);if(dfx.isset(values)===true){var heightOutt=dfx.getClass(c+'-height',this.internalImageGalleryEl)[0];var lightHeightOutt=dfx.getClass(c+'-heightLightbox',this.internalImageGalleryEl)[0];if(values.height==='small'||values.height==='big'){WidgetStore.get(this.id+'-width').setValue(values.width);WidgetStore.get(this.id+'-heightLightbox').setValue(values.height,true);WidgetStore.get(this.id+'-type').setValue('lightbox',true);dfx.showElement(lightHeightOutt);dfx.hideElement(heightOutt);}else{WidgetStore.get(this.id+'-width').setValue(values.width);WidgetStore.get(this.id+'-height').setValue(values.height);dfx.showElement(heightOutt);dfx.hideElement(lightHeightOutt);}
var optionsDiv=dfx.getClass(c+'-imageInfoCont',this.internalImageGalleryEl)[0];dfx.showElement(optionsDiv);this.currentSelection=asset.id;}},setAssetSelectedEvent:function(fn)
{this.assetSelectedEvent=fn;},setClosedEvent:function(fn)
{this.closedEvent=fn;},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var self=this;this.includeWidget('TextField',function(){self._createTabs(function(internal){self.internalImageGalleryEl=container;container.appendChild(internal);callback.call(self,container);});});},_createTabs:function(callback)
{var self=this;this._createInternalTab(function(internal){callback.call(this,internal);});},_createInternalTab:function(callback)
{var main=document.createElement('div');var c=this.getClass();dfx.addClass(main,c+'-settings');var content='<div class="'+c+'-imageInfoCont">';content+='<div class="'+c+'-assetInfo">';content+='<label class="'+c+'-label">Folder</label>';content+='<div class="'+c+'-assetInfo-value"></div>';content+='</div>';content+='<div class="'+c+'-type">';content+='<label class="'+c+'-label">Type</label>';content+='<div class="'+c+'-type-text"></div>';content+='<div class="'+c+'-type-value"></div>';content+='</div>';content+='<div class="'+c+'-width">';content+='<label class="'+c+'-label">Width</label>';content+='<div class="'+c+'-width-text"></div>';content+='<div class="'+c+'-width-value"></div>';content+='</div>';content+='<div class="'+c+'-height">';content+='<label class="'+c+'-label">Height</label>';content+='<div class="'+c+'-height-text"></div>';content+='<div class="'+c+'-height-value"></div>';content+='</div>';content+='<div class="'+c+'-heightLightbox">';content+='<label class="'+c+'-label">Height</label>';content+='<div class="'+c+'-heightLightbox-text"></div>';content+='<div class="'+c+'-heightLightbox-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);this.optionsDiv=dfx.getClass(c+'-imageInfoCont',main)[0];var widthCont=dfx.getClass(c+'-width-value',main)[0];var heightOutt=dfx.getClass(c+'-height',main)[0];var heightCont=dfx.getClass(c+'-height-value',main)[0];var lightHeightOutt=dfx.getClass(c+'-heightLightbox',main)[0];var lightHeightCont=dfx.getClass(c+'-heightLightbox-value',main)[0];var typeCont=dfx.getClass(c+'-type-value',main)[0];var self=this;var width=self.createWidget(self.id+'-width','TextField');var height=self.createWidget(self.id+'-height','TextField');var lightHeight=self.createWidget(self.id+'-heightLightbox','Select');lightHeight.addItems({small:'Small',big:'Big'});var gType=self.createWidget(self.id+'-type','Select');gType.addItems({normal:'Normal',lightbox:'Light Box'});self.optWidgets.internal.width=width;self.optWidgets.internal.height=height;self.optWidgets.internal.heightLight=lightHeight;self.optWidgets.internal.type=gType
width.create(function(widthEl){width.setValue('580');widthCont.appendChild(widthEl);});height.create(function(heightEl){height.setValue('523');heightCont.appendChild(heightEl);});lightHeight.create(function(lHeightEl){lightHeightCont.appendChild(lHeightEl);dfx.hideElement(lightHeightOutt);});gType.create(function(typeEl){typeCont.appendChild(typeEl);gType.setSelectedEventValueType('value');gType.addItemSelectedEvent(function(val){if(val==='lightbox'){dfx.showElement(lightHeightOutt);dfx.hideElement(heightOutt);}else if(val==='normal'){dfx.showElement(heightOutt);dfx.hideElement(lightHeightOutt);}});});callback.call(this,main);},_setPreviewMovie:function(cont,url,callback)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;this._getMovie(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;image=self._resizeMovie(image);}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}else{}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_getMovie:function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;},_resizeMovie:function(img)
{var h=img.height;var w=img.width;if(h>w){w=(105/(h/w));dfx.attr(img,'height','105');dfx.attr(img,'width',w);}else{h=(150/(w/h));dfx.attr(img,'height',h);dfx.attr(img,'width','150');}
return img;},_setOptCont:function(opt,cont)
{var c=this.getClass()+'-opts';dfx.getClass(c+'-'+opt,this.optionsCont)[0].appendChild(cont);},getClass:function()
{return'ViperImageGalleryPlugin';}};dfx.inherits('ViperImageGalleryPlugin','Widget');function ViperImagePlugin(viper)
{ViperPlugin.call(this,viper);this.image=null;this.toolbarPlugin=null;this.imageBorder=null;this.subToolbar=null;this.imageToolbar=null;this._viperBoookmark=null;}
ViperImagePlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Image','image','Insert/Edit Image',function(){self.editImage();});this.viper.registerCallback('clickedOutside','ViperImagePlugin',function(){self.removeImageHandles();});this.viper.registerCallback('getHtml','ViperImagePlugin',function(data){if(data.element){self.normaliseImageTags(data.element);}});ViperPluginManager.addKeyPressListener('all_keys',this,this.handleKeyPress);ViperChangeTracker.addChangeType('insertImage','Inserted','insert');ViperChangeTracker.addChangeType('removedImage','Deleted','remove');ViperChangeTracker.setNodeTypeVisibility('removedImage',false);ViperChangeTracker.setDescriptionCallback('insertImage',function(node){var desc='';var img=null;if(dfx.isTag(node,'img')===true){img=node;}else{img=dfx.getTag('img',node)[0];}
if(img){desc=img.cloneNode(false);dfx.setStyle(desc,'width','100%');dfx.setStyle(desc,'height','100%');}
return desc;});ViperChangeTracker.setApproveCallback('insertImage',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setRejectCallback('insertImage',function(clone,node){dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('removedImage',function(node){var desc='';var img=null;if(dfx.isTag(node,'img')===true){img=node;}else{img=dfx.getTag('img',node)[0];}
if(img){desc=img.cloneNode(false);dfx.setStyle(desc,'width','100%');dfx.setStyle(desc,'height','100%');}
return desc;});ViperChangeTracker.setApproveCallback('removedImage',function(clone,node){var parent=node.parentNode;dfx.remove(node);if(parent&&parent.childNodes.length===0){dfx.remove(parent);}});ViperChangeTracker.setRejectCallback('removedImage',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
var parent=node.parentNode;dfx.remove(node);if(parent&&parent.childNodes.length===0){dfx.remove(parent);}});},normaliseImageTags:function(parent)
{var imgs=dfx.getTag('img',parent);if(!imgs){return;}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){dfx.foreach(imgs,function(key){var img=imgs[key];keywordPlugin.convertKeywordAttribute(img);});}},handleKeyPress:function(e)
{if(ViperChangeTracker.isTracking()===true){var range=this.viper.getCurrentRange();var startNode=range.getStartNode();if(dfx.isTag(startNode,'img')===true){return this._removeImage(startNode);}}
if(this.imageBorder!==null){this.removeImageHandles();}},_removeImage:function(img)
{var del=document.createElement('del');var insNode=ViperChangeTracker.getParentCTNode(img,'insertImage');if(insNode){dfx.remove(insNode);return false;}else{var del=document.createElement('del');dfx.insertBefore(img,del);del.appendChild(img);ViperChangeTracker.addChange('removedImage',[del]);if(this.imageBorder!==null){this.removeImageHandles();}
this.viper.fireNodesChanged('ViperImagePlugin:removeImage');this.viper.focus();return true;}},editImage:function()
{var elem=this.isImage();this.insertImageDialog(elem);},insertImageDialog:function(elem)
{if(elem===false){this.removeImageHandles();this._viperBoookmark=this.viper.createBookmark();}else{this._viperBoookmark=null;}
var self=this;this.displayDisabledDiv(true);this.dialog=Widget.prototype.createWidget('ViperImagePluginDialog','ViperImagePlugin');this.dialog.create(function(){self.dialog.setClickEvent(function(src,alt,title,width,height,keywords,selElem){if(src===null){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}
self.end();}else{self.insertImage(src,alt,title,width,height,keywords,selElem);}});self.dialog.setClosedEvent(function(win){if(win===true){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}else if(elem){var range=self.viper.getCurrentRange();range.setStart(elem,0);range.collapse(true);}
self.end();}});ViperPluginManager.setActivePlugin('Image');self.dialog.open(elem);});},insertImage:function(src,alt,title,width,height,keywords,elem)
{if(this._viperBoookmark&&!elem){this.viper.selectBookmark(this._viperBoookmark);}
if(elem){width=elem.getAttribute('width');height=elem.getAttribute('height');}
var img=null;if(elem){img=elem.cloneNode(false);}else{img=document.createElement('img');}
img.setAttribute('alt',alt);img.setAttribute('title',title);img.setAttribute('src',src);img.setAttribute('width',width);img.setAttribute('height',height);if(keywords){img.setAttribute('keywords',dfx.jsonEncode(keywords));}
if(elem){this.removeImageHandles();if(ViperChangeTracker.isTracking()===true&&!ViperChangeTracker.getParentCTNode(elem,'insertImage')){dfx.insertBefore(elem,img);this._removeImage(elem);ViperChangeTracker.addChange('insertImage',[img]);}else{dfx.insertBefore(elem,img);dfx.remove(elem);}
this.showImageHandles(img);}else{var changeid=ViperChangeTracker.startBatchChange('insertImage');this.viper.insertNodeAtCaret(img);ViperChangeTracker.endBatchChange(changeid);}
this.viper.fireNodesChanged('ViperImagePlugin:insert');this.viper.focus();this.end();},end:function()
{ViperPluginManager.setActivePlugin(null);},isImage:function(elem)
{if(!elem){var range=this.viper.getCurrentRange();if(range.startContainer.nodeType===dfx.ELEMENT_NODE){elem=range.startContainer.childNodes[range.startOffset];}else{return false;}}
if(elem.nodeType===dfx.ELEMENT_NODE){if(elem.tagName.toLowerCase()==='img'&&!dfx.attr(elem,'noSelect')){return elem;}}
return false;},isPluginElement:function(element)
{if(element!==this.imageBorder&&dfx.isChildOf(element,this.imageBorder)===false){return false;}
return true;},mouseDown:function(e,elem)
{if(this.viper.isBrowser('msie')===true){var rangeObj=Viper.document.selection.createRange();if(rangeObj&&rangeObj.remove){rangeObj.remove(0);rangeObj.select();}
return;}
if(!elem){elem=dfx.getMouseEventTarget(e);}
var isCSKeyword=false;var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true)}
if(isCSKeyword===false&&this.isImage(elem)!==false&&dfx.isChildOf(elem,this.viper.element)===true){var range=this.viper.getCurrentRange();range.selectNode(elem);ViperSelection.addRange(range);if(this.showImageHandles(elem)===false){if(e){dfx.preventDefault(e);}
return false;}}else if(dfx.isChildOf(elem,this.imageBorder)){return true;}else if(dfx.isChildOf(elem,dfx.getId('subToolbar-ImageToolbar'))===true){return false;}else{this.removeImageHandles();}},clicked:function(e)
{if(this.viper.isBrowser('msie')!==true){return;}
var elem=dfx.getMouseEventTarget(e);var isCSKeyword=false;var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true)}
if(isCSKeyword===false&&this.isImage(elem)!==false&&dfx.isChildOf(elem,this.viper.element)===true){var rangeObj=Viper.document.selection.createRange();if(rangeObj&&rangeObj.remove){rangeObj.remove(0);rangeObj.select();}
if(this.showImageHandles(elem)===false){var range=this.viper.getCurrentRange();range.selectNode(elem);ViperSelection.addRange(range);if(e){dfx.preventDefault(e);}
return false;}}else if(dfx.isChildOf(elem,this.imageBorder)){return true;}else if(dfx.isChildOf(elem,dfx.getId('subToolbar-ImageToolbar'))===true){return false;}else{this.removeImageHandles();}},_adjustGhostImage:function(original,ghost)
{var width=dfx.getElementWidth(original);var height=dfx.getElementHeight(original);var coords=dfx.getElementCoords(original);var borders={left:0,right:0,top:0,bottom:0};dfx.foreach(borders,function(type){var border=parseInt(dfx.getComputedStyle(original,'border-'+type+'-width'));if(isNaN(border)===true){border=0;}
borders[type]=border;});width-=(borders.left+borders.right);height-=(borders.top+borders.bottom);coords.y+=borders.top;coords.x+=borders.left;dfx.setStyle(ghost,'width',width+'px');dfx.setStyle(ghost,'height',height+'px');dfx.setStyle(ghost,'top',(coords.y-1)+'px');dfx.setStyle(ghost,'left',(coords.x-1)+'px');},showImageHandles:function(img)
{if(this.imageBorder!==null){this.removeImageHandles();}
this.showImageToolbar(img);var imgBorder=document.createElement('div');this.imageBorder=imgBorder;this._adjustGhostImage(img,imgBorder);dfx.setStyle(imgBorder,'position','absolute');dfx.setStyle(imgBorder,'border','1px solid #000');var ghostImage=img.cloneNode(true);dfx.setStyle(ghostImage,'opacity','0.7');dfx.setStyle(ghostImage,'width','100%');dfx.setStyle(ghostImage,'height','100%');imgBorder.appendChild(ghostImage);var info={};var self=this;jQuery(imgBorder).resizable({knobHandles:true,handles:'all',stop:function(e,info){var newWidth=parseInt(info.size.width);var newHeight=parseInt(info.size.height);var keywords=img.getAttribute('keywords');img.setAttribute('width',newWidth);img.setAttribute('height',newHeight);self.removeImageHandles();self.viper.fireNodesChanged('ViperImagePlugin:resize');self.showImageHandles(img);}});document.body.appendChild(imgBorder);return false;},removeImageHandles:function()
{if(this.imageBorder!==null){jQuery(this.imageBorder).resizable('destroy');dfx.remove(this.imageBorder);this.imageBorder=null;}
if(this.subToolbar){this.subToolbar.hideToolbar('ImageToolbar');}},showImageToolbar:function(img)
{if(!this.subToolbar){var self=this;this.setupImageToolbar(function(){self.showImageToolbar(img);});return;}
this.image=img;var url=dfx.attr(img,'src');if(url){var name='';name=(url.split('/')).pop();dfx.setHtml(dfx.getClass('ViperImageToolbar-left',this.imageToolbar)[0],dfx.ellipsize(name,30));var dim=dfx.getElementDimensions(img);dfx.setHtml(dfx.getTag('strong',this.imageToolbar),dim.width+'x'+dim.height);}
this.subToolbar.showToolbar('ImageToolbar');},setupImageToolbar:function(callback)
{var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('ImageToolbar');this.imageToolbar=toolbar;var imgTypeIconURL=AssetManager.getAssetTypeIconUrl('image','small');var c='ViperImageToolbar';var contents='<div class="'+c+'-left" style="background-image:url('+imgTypeIconURL+')">zombie.png</div>';contents+='<div class="'+c+'-right">';contents+='<div class="'+c+'-right-dim">Dimensions: <strong>300x238</strong></div>';contents+='<div class="'+c+'-right-btns"></div>';contents+='</div>';dfx.setHtml(toolbar,contents);var self=this;this.includeWidget('Button',function(){var resetDimensions=self.createWidget(c+'-resetDimensions','Button');resetDimensions.setName('Reset Dimensions');resetDimensions.setButtonIconClassName(c+'-switch');resetDimensions.create(function(el){(dfx.getClass(c+'-right-btns',toolbar)[0]).appendChild(el);});resetDimensions.addClickEvent(function(){self.resetImageDimensions();});var changeImage=self.createWidget(c+'-changeImage','Button','ButtonWidgetType-black');changeImage.setName('Change Image');changeImage.create(function(el){(dfx.getClass(c+'-right-btns',toolbar)[0]).appendChild(el);});changeImage.addClickEvent(function(){if(self.image){self.insertImageDialog(self.image);}});self.subToolbar=subToolbarPlugin;callback.call(self,subToolbarPlugin);return;});},resetImageDimensions:function()
{if(this.image){dfx.removeAttr(this.image,'width');dfx.removeAttr(this.image,'height');this.viper.fireNodesChanged('ViperImagePlugin:resetDim');this.mouseDown(null,this.image);}},caretUpdated:function()
{this.removeImageHandles();}};dfx.noInclusionInherits('ViperImagePlugin','ViperPlugin',true);function ViperImagePluginWidgetType(id)
{Widget.call(this,id);this.name='editingImageEditor';this.assetPicker=null;this.optWidgets={internal:{},external:{}};this.optionsCont=null;this.internal=null;this.external=null;this.tabPane=null;this.closedEvent=null;this.selectedElem=null;this.selectedElemid=null;this.selectedAsset=null;this._externalPreview=null;this._skinURL=WidgetStore.get('viper').getStylesURL()+'/Plugins/ViperImagePlugin';}
ViperImagePluginWidgetType.prototype={create:function(callback)
{this.init(callback);},init:function(callback)
{var self=this;this.includeWidgets(['TabPane','ModalDialog','AssetPickerDialog'],function(){var assetPicker=self.createWidget('InserImageAssetPicker','AssetPickerDialog');self.assetPicker=assetPicker;assetPicker.noDialog=true;assetPicker.setScreen(self.name);assetPicker.setView(self.name,'thumbs');assetPicker.setButtonTitle('Insert Image');assetPicker.addProjectFolderWhiteList(self.name,'Images');assetPicker.setHideSite(self.name);assetPicker.setUniqueSelect(true);assetPicker.setHideTopLevel(self.name);assetPicker.addSelectionChangedAction(function(selectedAsset){if(selectedAsset){self.setSelectedItemValues(selectedAsset.id);}},true);assetPicker.init(self.name,function(contentEl){var externalTab=document.createElement('div');var tabs={'Internal Images':contentEl,'External Images':externalTab};var tabPane=self.createWidget(self.id+'-tabPane','TabPane','3',tabs);self.tabPane=tabPane;tabPane.create(function(tabPaneElem){var dialog=self.createWidget('InserImagePluginDialog','ModalDialog');dialog.setContent(tabPaneElem);dialog.setTitle('Insert Image');dialog.setSubTitle('Select the image you want to insert',true);dialog.setSize('710px','370px');assetPicker.setDialog(dialog);dialog.create(function(el){assetPicker.addDialogEvents(dialog);var listCont=dfx.getId(assetPicker.id+'-content');dialog.dialogResized=function(width,height){dfx.setStyle(listCont,'height',(parseInt(height,10)-87)+'px');};var currHeight=dfx.getStyle(dialog.containers.contWrapper,'height');dfx.setStyle(listCont,'height',(parseInt(currHeight.substr(0,(currHeight.length-2)),10)-87)+'px');assetPicker.getAsset(assetPicker.projectFoldersFiltered[0].id,function(asset){assetPicker._updateCurrentSelection(asset);var footer=document.createElement('div');dfx.addClass(footer,self.getClass()+'-dialog-footer internal');tabPane.addOnChangeHandler(function(index){if(index===0){self.assetPicker.showCurrentSelectionInfo();dialog.setSize('710px','370px');dfx.removeClass(footer,'external');dfx.addClass(footer,'internal');self.assetPicker.showFooter('160px');}else{self.assetPicker.hideCurrentSelectionInfo();dialog.setSize('710px','220px');dfx.removeClass(footer,'internal');dfx.addClass(footer,'external');self.assetPicker.showFooter('310px');}});self.createOptionsContainer(function(intFooterCont){footer.appendChild(intFooterCont);self._createExternalTab(externalTab,function(extFooterCont){footer.appendChild(extFooterCont);dialog.setFooterContent(footer,self.getClass()+'-dialog-footer');callback.call(self);});});});});});});});},getValuesFromElem:function(elem)
{var values={};var attrs=['title','alt','src'];var i=attrs.length;while(i-->0){if(dfx.isset(elem.getAttribute(attrs[i]))===true){values[attrs[i]]=elem.getAttribute(attrs[i]);}else{values[attrs[i]]='';}}
return values;},open:function(elem)
{var self=this;if(elem){this.selectedElem=elem;var values=this.getValuesFromElem(elem);AssetManager.getAssetFromUrl(elem.src,function(asset){if(asset){self.selectedAsset=asset;self.selectedElemid=asset.id;var name=asset.getAttribute('name');var title=values.title;var alt=values.alt;if(asset.getAttribute('title')===title){title='';}
if(asset.getAttribute('alt')===alt){alt='';}
self.setValues(asset,'',title,alt);if(asset.hasOwnProperty('id')===true){AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.viewWidgets.list.initAutoScroll(true,lineage);self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('160px');self.tabPane.selectTab(0);self.assetPicker.showCurrentSelectionInfo();self.assetPicker.dialog.open();});}}else{self.setValues(null,values.src,values.title,values.alt);self.assetPicker.setAutoScrollLineage(null,self.name);self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.tabPane.selectTab(1);self.assetPicker.hideCurrentSelectionInfo();self.assetPicker.dialog.open();}},{attributes:['name','alt','title','width','height','size'],type:false,typeIcon:false,linking:[],urls:false});}else{dfx.addClass(this.optionsCont,'notSelected');this.assetPicker.setAutoScrollLineage(null,this.name);self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('160px');self.assetPicker.dialog.open();}},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){AssetManager.isAssetType(itemid,'image',function(isImage){if(isImage===true){var name=asset.getAttribute('name');var title='';var alt='';if(parseInt(asset.id)===parseInt(self.selectedElemid)){var vals=self.getValuesFromElem(self.selectedElem);if(asset.getAttribute('title')!==vals.title){title=vals.title;}
if(asset.getAttribute('alt')!==vals.alt){alt=vals.alt;}}
self.setValues(asset,'',title,alt);}else{dfx.addClass(self.optionsCont,'notSelected');}});}else{dfx.addClass(self.optionsCont,'notSelected');}},true,{attributes:['name','alt','title','width','height','size'],type:false,typeIcon:false,linking:[],urls:false});},setValues:function(asset,src,title,alt)
{if(!asset){this.optWidgets.external.title.setValue(title);this.optWidgets.external.altText.setValue(alt);this.optWidgets.external.url.setValue(src);this._updatePreviewImage(src);dfx.removeClass(this.optionsCont,'notSelected');return;}
this.selectedAsset=asset;var c=this.getClass()+'-internalOpts';var titleCont=dfx.getClass(c+'-input-title',this.internal)[0];var altTextCont=dfx.getClass(c+'-input-alt',this.internal)[0];var name=dfx.getClass(c+'-assetInfo',this.internal)[0];var assetNameHTML='#'+dfx.ellipsize(asset.id.toString(),10)+' ('+dfx.ellipsize(asset.name,20)+')';dfx.setHtml(name,assetNameHTML);var titleEl=dfx.getClass(c+'-title',this.internal)[0];var titleValue=asset.getAttribute('title');if(titleValue===''){titleValue='[no default value]';}
dfx.setHtml(titleEl,titleValue);var altText=dfx.getClass(c+'-alt',this.internal)[0];var altTextValue=asset.getAttribute('alt');if(altTextValue===''){titleValue='[no default value]';}
dfx.setHtml(altText,titleValue);this.optWidgets.internal.title.setValue(title);this.optWidgets.internal.altText.setValue(alt);dfx.setStyle([titleCont,altTextCont],'display','block');var imgInf=dfx.getClass(c+'-img-size',this.internal)[0];var rawSize=asset.getAttribute('size');var size='';if(rawSize<1024){size=rawSize+'B';}else{rawSize=Math.floor(rawSize/1024);if(rawSize<1024){size=rawSize+'KB';}else{rawSize=Math.floor(rawSize/1024);size=rawSize+'MB';}}
dfx.setHtml(imgInf,asset.getAttribute('width')+' x '+asset.getAttribute('height')+' ('+size+')');var url=Widget.BASE_URL+'?tb=1&a='+asset.id+'&t=_'+(new Date).getTime();var imgCont=dfx.getClass(c+'-thumbCont',this.internal)[0];var self=this;this._setPreviewImage(imgCont,url,function(){dfx.removeClass(self.optionsCont,'notSelected');});},setClosedEvent:function(fn)
{this.closedEvent=fn;},setClickEvent:function(callback)
{var self=this;this.assetPicker.addAssetsSelectedAction(function(selectedAssets){var selectedAsset=null;if(self.selectedAsset!==null){selectedAsset=self.selectedAsset.id;}
if(selectedAsset!==null&&self.tabPane.getCurrentTabIndex()===0){AssetManager.getAsset(selectedAsset,function(asset){var internal=self.optWidgets.internal;var title=internal.title.getValue()||'';var keywords={};if(title.length===0){title=asset.getAttribute('title')||'';keywords.title='%attribute~title:'+asset.id+'%';}
var altText=internal.altText.getValue()||'';if(altText.length===0){altText=asset.getAttribute('alt')||'';keywords.alt='%attribute~alt:'+asset.id+'%';}
var url=asset.getUrl();var width=asset.getAttribute('width');var height=asset.getAttribute('height');keywords.src='%lookup~url:'+asset.id+'%';callback.call(self,url,altText,title,width,height,keywords,self.selectedElem);},false,{attributes:['name','alt','title','width','height','size'],type:false,typeIcon:false,linking:[],urls:true});}else{var external=self.optWidgets.external;if(external.url.getValue()!==''){callback.call(self,external.url.getValue(),external.altText.getValue(),external.title.getValue(),null,null,null,self.selectedElem);}}},true,this.name);},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var self=this;this._createInternalOptions(function(el){container.appendChild(el);callback.call(self,container);});},_createInternalOptions:function(callback)
{var c=this.getClass()+'-internalOpts';var elem=document.createElement('div');dfx.addClass(elem,c);this.internal=elem;var content='<div class="'+c+'-wrapper">';content+='<div class="'+c+'-left">';content+='<div class="'+c+'-thumbCont">';content+='<img class="'+c+'-thumb" src="http://beta.mini.labs.squiz.net/?tb=1&a=41" width="150px" />';content+='</div>';content+='<div class="'+c+'-img-size">500 x 375 (71KB)</div>';content+='</div>';content+='<div class="'+c+'-right">';content+='<div class="'+c+'-right-opt">';content+='<div class="'+c+'-label">Asset</div>';content+='<div class="'+c+'-assetInfo"></div>';content+='</div>';content+='<div class="'+c+'-right-opt">';content+='<div class="'+c+'-label">Title</div>';content+='<div class="'+c+'-title"></div>';content+='<div class="'+c+'-input '+c+'-input-title"></div>';content+='</div>';content+='<div class="'+c+'-right-opt">';content+='<div class="'+c+'-label">Alt Text</div>';content+='<div class="'+c+'-alt"></div>';content+='<div class="'+c+'-input '+c+'-input-alt"></div>';content+='</div>';content+='</div></div>';content+='<div class="'+c+'-notSelected">No image is selected for preview</div>';dfx.setHtml(elem,content);var titleCont=dfx.getClass(c+'-input-title',elem)[0];var altTextCont=dfx.getClass(c+'-input-alt',elem)[0];var self=this;this.includeWidget('TextField',function(){var title=self.createWidget(self.id+'-title','TextField');var altText=self.createWidget(self.id+'-altText','TextField');self.optWidgets.internal.title=title;self.optWidgets.internal.altText=altText;title.create(function(titleEl){titleCont.appendChild(titleEl);});altText.create(function(altTextEl){altTextCont.appendChild(altTextEl);});callback.call(self,elem);});},_createExternalTab:function(main,callback)
{var c=this.getClass()+'-externalOpts';dfx.addClass(main,c);this.external=main;var content='<div class="'+c+'-imageInfoCont">';content+='<div class="'+c+'-url">';content+='<span class="'+c+'-label">URL</span>';content+='<div class="'+c+'-url-value"></div>';content+='<div class="'+c+'-url-check"></div>';content+='<div class="'+c+'-url-tick"></div>';content+='</div>';content+='<div class="'+c+'-title">';content+='<span class="'+c+'-label">Title</span>';content+='<div class="'+c+'-title-input"></div>';content+='</div>';content+='<div class="'+c+'-altText">';content+='<span class="'+c+'-label">Alt Text</span>';content+='<div class="'+c+'-altText-input"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var urlCont=dfx.getClass(c+'-url-value',main)[0];var titleCont=dfx.getClass(c+'-title-input',main)[0];var altTextCont=dfx.getClass(c+'-altText-input',main)[0];var preview=document.createElement('div');dfx.addClass(preview,c+'-preview enterUrlMsg');var prevCont='<div class="'+c+'-enterUrlMsg">Enter a URL above to automatically see a preview here</div>';prevCont+='<div class="'+c+'-loading">';prevCont+='<img class="'+c+'-loadingAnim" src="'+this._skinURL+'/preview-spinner.gif"></img>';prevCont+='<span class="'+c+'-loadingText">Loading image ...</span>';prevCont+='</div>';prevCont+='<div class="'+c+'-imagePreview">';prevCont+='<div class="'+c+'-imagePreview-imgCont"></div>';prevCont+='<div class="'+c+'-imagePreview-text"></div>';prevCont+='</div>';prevCont+='<div class="'+c+'-error">';prevCont+='<div class="'+c+'-errorText">Image cannot be found please check the URL</div>';prevCont+='</div>';dfx.setHtml(preview,prevCont);this._externalPreview=preview;var imgCont=dfx.getClass(c+'-imagePreview-imgCont',preview)[0];var imgInf=dfx.getClass(c+'-imagePreview-text',preview)[0];var self=this;this.includeWidgets('TextField',function(){var url=self.createWidget(self.id+'-ex-url','TextField');var title=self.createWidget(self.id+'-ex-title','TextField');var altText=self.createWidget(self.id+'-ex-altText','TextField');self.optWidgets.external.url=url;self.optWidgets.external.title=title;self.optWidgets.external.altText=altText;url.create(function(urlEl){urlCont.appendChild(urlEl);url.addOnChangeEvent(function(val){self._updatePreviewImage(val);});});title.create(function(titleEl){titleCont.appendChild(titleEl);});altText.create(function(altTextEl){altTextCont.appendChild(altTextEl);});callback.call(self,preview);});},_updatePreviewImage:function(val)
{val=dfx.trim(val);var c=this.getClass()+'-externalOpts';var imgCont=dfx.getClass(c+'-imagePreview-imgCont',this._externalPreview)[0];var imgInf=dfx.getClass(c+'-imagePreview-text',this._externalPreview)[0];var url=this.createWidget(this.id+'-ex-url','TextField');var self=this;if(dfx.isBlank(val)===false){self._showCont('loading');self._setPreviewImage(imgCont,url.getValue(),function(img,w,h){if(img===false){self._showCont('error');dfx.setHtml(imgInf,'');}else{var nh=h;var maxH=250;var maxW=650;if(h>maxH||w>maxW){dfx.resizeImage(img,250);nh=parseInt(dfx.attr(img,'height'));}
self._showCont('imagePreview');dfx.setStyle(imgCont,'margin-top',(parseInt(nh/2)*-1)+'px');dfx.setHtml(imgInf,w+' x '+h);}},true);}},_showCont:function(className)
{var prevCont=this._externalPreview;var conts=['enterUrlMsg','loading','imagePreview','error'];dfx.foreach(conts,function(i){if(className!==conts[i]){dfx.removeClass(prevCont,conts[i]);}else{dfx.addClass(prevCont,className);}});},_setPreviewImage:function(cont,url,callback,noResize)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;this._getImage(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;if(noResize!==true){image=self._resizeImage(image);}}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_getImage:function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;},_resizeImage:function(img)
{var max={height:105,width:125}
return dfx.resizeImage(img,max);},_setOptCont:function(opt,cont)
{var c=this.getClass()+'-opts';dfx.getClass(c+'-'+opt,this.optionsCont)[0].appendChild(cont);},getClass:function()
{return'ViperImagePlugin';}};dfx.inherits('ViperImagePlugin','Widget');function ViperKeyboardEditorPlugin(viper)
{ViperPlugin.call(this,viper);ViperPluginManager.addKeyPressListener('SHIFT+ENTER',this,'handleSoftEnter');ViperPluginManager.addKeyPressListener('ENTER',this,'handleEnter');ViperPluginManager.addKeyPressListener('TAB',this,'handleTab');}
ViperKeyboardEditorPlugin.prototype={start:function()
{var self=this;ViperChangeTracker.addChangeType('splitContainer','Insert','format');ViperChangeTracker.setDescriptionCallback('splitContainer',function(node){return self._getChangeDescription(node,'splitContainer');});ViperChangeTracker.setApproveCallback('splitContainer',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('splitContainer',function(clone,node){var prev=node.previousSibling;if(!prev){return;}
while(node.firstChild){prev.appendChild(node.firstChild);}
dfx.remove(node);});ViperChangeTracker.addChangeType('createContainer','Insert','insert');ViperChangeTracker.setDescriptionCallback('createContainer',function(node){return self._getChangeDescription(node);});ViperChangeTracker.setApproveCallback('createContainer',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('createContainer',function(clone,node){dfx.remove(node);});},_getChangeDescription:function(node,changeType)
{var pImgURL=this.viper.getStylesURL()+'/icon-p_tag.png';var pImg=Viper.document.createElement('img');dfx.attr(pImg,'src',pImgURL);dfx.attr(pImg,'title','Paragraph Break');var desc=pImg;if(changeType!=='splitContainer'){for(var child=node.firstChild;child;child=child.nextSibling){if(child.nodeType===dfx.TEXT_NODE&&dfx.trim(child.nodeValue).length===0){continue;}else if(ViperChangeTracker.isTrackingNode(child)===true){var ctnType=ViperChangeTracker.getCTNTypeFromNode(child);if(ViperChangeTracker.isInsertType(ctnType)===true){var extraDesc=ViperChangeTracker.getDescriptionForNode(child);if(dfx.isObj(extraDesc)===false){extraDesc=Viper.document.createTextNode(extraDesc);}
desc=[desc,extraDesc];}}
break;}}
return desc;},_isKeyword:function()
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(!keywordPlugin){return false;}
var range=this.viper.getCurrentRange();if(keywordPlugin._isKeyword(range.startContainer)===false&&keywordPlugin._isKeyword(range.startContainer)===false){return false;}
return true;},handleTab:function()
{if(this._isKeyword()===true){return true;}
var numSpaces=4;var sp=String.fromCharCode(160);var c='';while(numSpaces-->0){c+=sp;}
this.viper.insertNodeAtCaret(c);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:tab');return true;},handleEnter:function()
{if(this.viper.inlineMode===true){return this.handleSoftEnter();}
var range=this.viper.getCurrentRange();if(range.collapsed!==true){this.viper.deleteContents();}
if(range.startContainer.nodeType===dfx.TEXT_NODE){var parent=range.startContainer.parentNode;while(parent){if(parent.tagName.toLowerCase()==='li'){var listPlugin=ViperPluginManager.getPlugin('ViperListPlugin');if(listPlugin&&listPlugin.handleEnter(parent)===false){return true;}
break;}else if(dfx.isBlockElement(parent)===true){break;}
if(parent.parentNode&&parent.parentNode===this.viper.element){break;}
parent=parent.parentNode;}}else{parent=range.startContainer;}
var tag=parent.tagName.toLowerCase();if(dfx.isChildOf(parent,this.viper.element)===false){var node=range.endContainer;while(dfx.isset(node.nextSibling)===true){if(dfx.isBlockElement(node.nextSibling)===true){break;}
node=node.nextSibling;}
range.setEndAfter(node);var elem=Viper.document.createElement('p');var docFrag=range.extractContents('p');this.viper.deleteContents();elem.appendChild(docFrag);dfx.insertAfter(range.startContainer,elem);range.collapse(true);node=range.startContainer;while(dfx.isset(node.previousSibling)===true){if(dfx.isBlockElement(node.previousSibling)===true){break;}
node=node.previousSibling;}
range.setStartBefore(node);var felem=Viper.document.createElement('p');docFrag=range.extractContents('p');felem.appendChild(docFrag);dfx.insertBefore(elem,felem);range.setStart(elem.firstChild,0);range.collapse(true);return;}else if(tag==='pre'){this.handleSoftEnter();return;}else if(tag==='td'||tag==='th'){var bookmark=this.viper.createBookmark(range);var p=Viper.document.createElement('P');while(parent.firstChild){p.appendChild(parent.firstChild);}
parent.appendChild(p);tag='p';parent=p;this.viper.selectBookmark(bookmark);}
if(range.startContainer.nodeType===dfx.TEXT_NODE&&range.startOffset===range.startContainer.data.length){if(!range.startContainer.nextSibling){var newTextNode=Viper.document.createTextNode('');dfx.insertAfter(range.startContainer.parentNode,newTextNode);range.setStart(newTextNode,0);range.collapse(true);}}
try{range.setEndAfter(parent.lastChild);}catch(e){}
ViperSelection.addRange(range);var elem=parent.cloneNode(false);var docFrag=range.extractContents(tag);elem.appendChild(docFrag);var elemClone=elem.cloneNode(true);dfx.remove(dfx.getTag('del',elemClone));if(dfx.isBlank(dfx.getNodeTextContent(elemClone))===true){elem=null;}
if(elem===null||(elem.tagName&&elem.tagName.toLowerCase()!=='li'&&dfx.isBlockElement(elem)===false)){var newTag='p';if(tag==='li'){newTag=tag;}
var pelem=Viper.document.createElement(newTag);if(elem!==null){pelem.appendChild(elem);}else{dfx.setHtml(pelem,'&nbsp;');}
elem=pelem;ViperChangeTracker.addChange('createContainer',[elem]);}else{ViperChangeTracker.removeTrackChanges(elem,true);ViperChangeTracker.addChange('splitContainer',[elem]);}
if(this.viper.elementIsEmpty(parent)===true){dfx.setHtml(parent,'&nbsp;');}
dfx.insertAfter(parent,elem);range.setStart(elem,0);range.setStart(elem,0);try{range.moveStart('character',1);range.moveStart('character',-1);}catch(e){}
range.collapse(true);ViperSelection.addRange(range);if(dfx.isBlockElement(parent)===true&&dfx.trim(dfx.getHtml(parent))===''){dfx.setHtml(parent,'&nbsp;');}
this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:enter');return true;},handleSoftEnter:function(e)
{if(this._isKeyword()===true){return true;}
var range=this.viper.getCurrentRange();if(e){var startNode=range.getStartNode();if(startNode&&dfx.isTag(startNode.parentNode,'pre')===true){var p=Viper.document.createElement('p');dfx.setHtml(p,'&nbsp;');dfx.insertAfter(startNode.parentNode,p);range.setStart(p.firstChild,0);range.collapse(true);ViperSelection.addRange(range);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:softEnter');return;}}
var node=Viper.document.createElement('br');this.viper.insertNodeAtCaret(node);range=this.viper.getCurrentRange();if(dfx.isTag(node.previousSibling,'br')===true){var text=Viper.document.createTextNode(String.fromCharCode(160));dfx.insertAfter(node.previousSibling,text);}
if(!node.nextSibling||node.nextSibling.nodeType!==dfx.TEXT_NODE){var text=Viper.document.createTextNode(String.fromCharCode(160));dfx.insertAfter(node,text);}
range.setStart(node.nextSibling,0);range.collapse(true);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:softEnter');return true;},_changeInfo:function()
{var info={before:dfx.getHtml(this.viper.element),path:XPath.getPath(this.viper.element)};return info;}};dfx.noInclusionInherits('ViperKeyboardEditorPlugin','ViperPlugin',true);function ViperKeywordPlugin(viper)
{ViperPlugin.call(this,viper);this.keywordClass='_my4_keyword';this.allowReplace=true;this.domElem=null;this.dialog=null;this.selectedScope=null;this.selectedKeyword=null;this.selectedFormat=null;this.assetTypeSelect=null;this.viewType='Assets';this.renderKeywords=true;}
ViperKeywordPlugin.prototype={start:function()
{var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')>=0){ctrlName='CMD';}
var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Keyword','keyword','Insert Keyword',function(){self.handleInsertKey();});this.toolbarPlugin.setButtonShortcut(this,'keyword','CTRL+K','handleInserKey');this.viper.registerCallback('getHtml','InsertKeywordPlugin',function(data){if(data.element){self.keywordsToText(data.element);}});this.viper.registerCallback('setHtml','InsertKeywordPlugin',function(data,callback){if(data.element){return self.convertKeywords(data.element,callback);}});this.viper.registerCallback('toolbarButtonClicked','InsertKeywordPlugin',function(){self.toolbarButtonClicked();});this._processKeywords();ViperChangeTracker.addChangeType('insertedKeyword','Inserted','insert');ViperChangeTracker.addChangeType('removedKeyword','Deleted','remove');ViperChangeTracker.setNodeTypeVisibility('removedKeyword',false);ViperChangeTracker.setDescriptionCallback('insertedKeyword',function(node){return'Internal Keyword';});ViperChangeTracker.setApproveCallback('insertedKeyword',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('insertedKeyword',function(clone,node){dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('removedKeyword',function(node){return'Internal Keyword';});ViperChangeTracker.setApproveCallback('removedKeyword',function(clone,node){dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedKeyword',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});},setSettings:function(settings)
{if(dfx.isset(settings.renderKeywords)===true){this.renderKeywords=settings.renderKeywords;}},toolbarButtonClicked:function()
{var range=this.viper.getCurrentRange();var start=range.startContainer;var end=range.endContainer;if(start&&end){var skeywordEl=this.isKeyword(start,null,true);if(skeywordEl!==false){var prevSibling=document.createTextNode('');dfx.insertBefore(skeywordEl,prevSibling);range.setStart(prevSibling,0);}
var ekeywordEl=skeywordEl;if(start!==end){ekeywordEl=this.isKeyword(end,null,true);}
if(ekeywordEl){var nextSibling=document.createTextNode('');dfx.insertAfter(ekeywordEl,nextSibling);range.setEnd(nextSibling,0);}
ViperSelection.addRange(range);}},_processKeywords:function(elem)
{if(this.renderKeywords===false){this.keywordsToText();return;}},keywordsToText:function(element)
{var keyElems=dfx.getClass(this.keywordClass,element);var kln=keyElems.length;for(var i=0;i<kln;i++){var elem=keyElems[i];var text=document.createTextNode(elem.getAttribute('keyword'));dfx.insertBefore(elem,text);dfx.remove(elem);}
var elems=dfx.find(element,'*');var eln=elems.length;for(var i=0;i<eln;i++){var el=elems[i];this.convertKeywordAttribute(el);}},convertKeywordAttribute:function(element)
{if(element){var attr=element.getAttribute('keywords');if(!attr){return;}
attr=dfx.jsonDecode(attr);dfx.foreach(attr,function(key){if(key==='src'||key==='href'){element.setAttribute(key,escape(attr[key]));}else{element.setAttribute(key,attr[key]);}});dfx.removeAttr(element,'keywords');}},convertKeywords:function(element,callback)
{if(this.renderKeywords===false){return;}
var content=this.viper.getHtml(element);var params={widget:'KeywordWidget',action:'replaceKeywords',content:content};var currMode=WidgetStore.getData('activeMode');var currScreen=WidgetStore.getData('activeScreen');if(typeof currMode!=='undefined'){params.currMode=currMode.id;}
if(typeof currScreen!=='undefined'){params.currScreen=currScreen.id;}
var self=this;dfx.post(this.url,params,function(content){dfx.setHtml(element,content);var linkPlugin=ViperPluginManager.getPlugin('ViperLinkPlugin');if(linkPlugin){linkPlugin.convertLinks(element);}
self._processKeywords(element);callback.call(this);});return false;},handleInsertKey:function()
{var range=this.viper.getCurrentRange();if(range.collapsed===false){if(this.allowReplace===false){alert('Cannot replace selected text with a keyword.');return;}}
this.showDialog(range);},keyDown:function(e)
{var code;if(e.keyCode){code=e.keyCode;}else if(e.which){code=e.which;}
if(code===dfx.DOM_VK_DELETE&&ViperChangeTracker.isTracking()===true){var range=this.viper.getCurrentRange();var startNode=range.getStartNode();var keyword=this._isKeyword(startNode,false,true);if(!keyword){keyword=this._isKeyword(startNode.nextSibling,true,true);}
if(keyword){var del=document.createElement('del');dfx.insertBefore(keyword,del);del.appendChild(keyword);var info={keyword:keyword,changeType:'removedKeyword'}
this.viper.fireCallbacks('ViperKeywordPlugin:keywordRemoved',info);ViperChangeTracker.addChange(info.changeType,[del]);this.viper.fireNodesChanged('ViperKeywordPlugin:removed');return false;}}
if(code!==dfx.DOM_VK_DOWN&&code!==dfx.DOM_VK_UP&&code!==dfx.DOM_VK_LEFT&&code!==dfx.DOM_VK_RIGHT){var range=this.viper.getCurrentRange();if(range){if(range.collapsed===true){var startCont=range.startContainer;if(startCont.nodeType===dfx.TEXT_NODE){if(code===dfx.DOM_VK_DELETE){var keywordEl=this.isKeyword(startCont,null,true);if(keywordEl){dfx.remove(keywordEl);return;}}}}
var el=range.getCommonElement();if(el&&this._isKeyword(el)===true){return false;}else if(this._isKeyword(range.startContainer)===true){var cont=this.getNonKeywordContainer(range.startContainer,range,'next');if(dfx.isset(cont)===true){range.setEnd(cont,0);range.setStart(cont,0);return true;}
return false;}else if(this._isKeyword(range.endContainer)===true){var cont=this.getNonKeywordContainer(range.endContainer,range,'prev');if(dfx.isset(cont)===true){range.setEndAfter(cont);return true;}
return false;}}}
return true;},getNonKeywordContainer:function(cont,range,dir)
{var clone=range.cloneRange();var container=null;while(cont){if(dir==='next'){container=clone.getNextContainer(cont);}else{container=clone.getPreviousContainer(cont);}
if(this._isKeyword(container)===false){return container;}
cont=container;}
return null;},isContentSharingKeyword:function(el,elemOnly,getElement)
{if(!el){return false;}
do{if(el.tagName==='SPAN'||el.tagName==='DIV'){if(dfx.hasClass(el,this.keywordClass)){var keyword=el.getAttribute('keyword');if(keyword!==null&&keyword.search(/%contentSharing~/)===0){if(getElement===true){return el;}
return true;}}}
if(elemOnly===true){return false;}
el=el.parentNode;}while(el&&el!==this.viper.element);return false;},isKeyword:function(node,elemOnly,getElement)
{return this._isKeyword(node,elemOnly,getElement);},_isKeyword:function(el,elemOnly,getElement)
{if(!el){return false;}
do{if(el.tagName==='SPAN'||el.tagName==='DIV'){if(dfx.hasClass(el,this.keywordClass)){if(getElement===true){return el;}
return true;}}
if(elemOnly===true){return false;}
el=el.parentNode;}while(el&&el!==this.viper.element);return false;},createDocumentFragment:function(keyword,contentStr)
{var fragment=document.createDocumentFragment();var div=document.createElement('div');div.innerHTML=contentStr;var c=div.childNodes.length;var tagType='';var prevType='';var keywordElem=null;for(var i=0;i<c;i++){prevType=tagType;var child=div.childNodes[i].cloneNode(true);if(child.nodeType===dfx.ELEMENT_NODE&&dfx.isBlockElement(child)===true){tagType='div';}else{tagType='span';}
if(prevType!==tagType||keywordElem===null){keywordElem=document.createElement(tagType);keywordElem.className=this.keywordClass;keywordElem.setAttribute('keyword',keyword);keywordElem.setAttribute('title','Keyword: '+keyword);fragment.appendChild(keywordElem);}
keywordElem.appendChild(child);}
return fragment;},insertKeyword:function(keyword,content,bookmark)
{var keywordElem=null;if(this.renderKeywords===false){keywordElem=document.createTextNode(keyword);}else{var title='Keyword: '+keyword;keywordElem=document.createElement('span');dfx.addClass(keywordElem,this.keywordClass);dfx.setHtml(keywordElem,content);keywordElem.setAttribute('title',title);keywordElem.setAttribute('keyword',keyword);var cln=keywordElem.childNodes.length;for(var i=0;i<cln;i++){if(dfx.isBlockElement(keywordElem.childNodes[i])===true){dfx.setStyle(keywordElem,'display','block');break;}}}
if(ViperChangeTracker.isTracking()===true){var ins=document.createElement('ins');ins.appendChild(keywordElem);var info={keyword:ins,changeType:'insertedKeyword'}
this.viper.fireCallbacks('ViperKeywordPlugin:keywordInserted',info);ViperChangeTracker.addChange(info.changeType,[ins]);keywordElem=ins;}
if(bookmark.start){dfx.insertBefore(bookmark.start,keywordElem);this.viper.selectBookmark(bookmark);}else{dfx.insertBefore(bookmark,keywordElem);if(ViperChangeTracker.isTracking()===true){var del=document.createElement('del');dfx.insertBefore(bookmark,del);del.appendChild(bookmark);var info={keyword:bookmark,changeType:'removedKeyword'}
this.viper.fireCallbacks('ViperKeywordPlugin:keywordRemoved',info);ViperChangeTracker.addChange(info.changeType,[del]);}else{dfx.remove(bookmark);}}
this.viper.fireNodesChanged('ViperKeywordPlugin:insert');},normalizeKeywords:function(element)
{var keyElems=[];var child=element.firstChild;while(child){if(dfx.hasClass(child,this.keywordClass)===true){keyElems.push(child);}else{var elems=dfx.getClass(this.keywordClass,child);keyElems=keyElems.concat(elems);}
child=child.nextSibling;}
var kln=keyElems.length;for(var i=0;i<kln;i++){var elem=keyElems[i];var text=document.createTextNode(escape(elem.getAttribute('keyword')));dfx.insertBefore(elem,text);dfx.remove(elem);}},showDialog:function(range)
{this.displayDisabledDiv(true);var selectedHtml='';var range=this.viper.getCurrentRange();if(range.collapsed!==true){this.canAdd=true;selectedHtml=range.getHTMLContentsObj();}
var bookmark=this.viper.createBookmark();ViperPluginManager.setActivePlugin('ViperKeywordPlugin');var self=this;this.includeWidgets(['ModalDialog','Select','AssetPicker','TabPane','TextField'],function(){var modalDialog=self.createWidget('InsertKeywordPluginDialog','ModalDialog');modalDialog.setSize('765px','290px');self.dialog=modalDialog;var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-left">';content+='<div class="'+c+'-left-assetTypePicker"></div>';content+='<div class="'+c+'-left-lists"></div>';content+='</div>';content+='<div class="'+c+'-right">';content+='</div>';dfx.setHtml(main,content);self.domElem=main;modalDialog.setContent(main);modalDialog.setTitle('Insert Keyword');modalDialog.create(function(){modalDialog.addButton('Insert Keyword',function(button){button.addClickEvent(function(){self.getSelectedKeywordReplacement(function(rep,keyword){if(rep!==false&&keyword!==false){keyword='%'+keyword.replace('%','')+'%';self.insertKeyword(keyword,rep,bookmark);}});modalDialog.close(true);},true);});self._createTabs();self.showAssetsKeywords();self._createRightPanel();modalDialog.open();modalDialog.addOnCloseCallback(function(){ViperPluginManager.setActivePlugin(null);});});});},_createTabs:function()
{var tabNames=['Assets','Attributes','Metadata'];var tabs=['<span id="'+this.dialog.id+'-mainTabs-assets">Assets</span>','<span id="'+this.dialog.id+'-mainTabs-attrs">Attributes</span>','<span id="'+this.dialog.id+'-mainTabs-metadata">Metadata</span>'];var c=this.getClass()+'-typeTabs';var tabCont=document.createElement('div');dfx.addClass(tabCont,c);var tln=tabs.length;c+='-tab';var self=this;var tabElems=[];for(var i=0;i<tln;i++){var tab=document.createElement('div');tabElems.push(tab);dfx.addClass(tab,c);tabCont.appendChild(tab);var content='<div class="'+c+'-left"></div><div class="'+c+'-mid">';content+=tabs[i]+'</div><div class="'+c+'-right"></div>';dfx.setHtml(tab,content);(function(tabElem,name){dfx.addEvent(tabElem,'click',function(){self.viewType=name;dfx.removeClass(dfx.getClass(self.getClass()+'-list',self.domElem),'active');dfx.removeClass(tabElems,'active');dfx.removeClass(dfx.getClass(self.getClass()+'-left-assetTypePicker')[0],'active');dfx.addClass(tabElem,'active');self['show'+name+'Keywords'].call(self);});})(tab,tabNames[i]);if(i===0){dfx.addClass(tab,'active');}}
var elem=dfx.getClass('ModalDialogWidgetType-top-mid',this.dialog.domElem)[0];elem.appendChild(tabCont);},showAssetsKeywords:function()
{var c=this.getClass()+'-list-assets';var listElem=dfx.getClass(c,this.domElem)[0];if(listElem){if(this.viewType==='Assets'){dfx.addClass(listElem,'active');}}else{listElem=document.createElement('div');dfx.addClass(listElem,this.getClass()+'-list');dfx.addClass(listElem,c);var listsElem=dfx.getClass(this.getClass()+'-left-lists')[0];listsElem.appendChild(listElem);var self=this;this.getKeywordList('asset',function(keywords){self.populateList(listElem,keywords,'assets');self.showAssetsKeywords();});}},showAttributesKeywords:function()
{if(!this.selectedAssetType){this.selectedAssetType='asset';}
var c=this.getClass()+'-list-attributes';var listElem=dfx.getClass(c,this.domElem)[0];var attrListElem=dfx.getClass(c+'-'+this.selectedAssetType,this.domElem)[0];var assetPickercont=dfx.getClass(this.getClass()+'-left-assetTypePicker')[0];if(attrListElem){if(this.viewType==='Attributes'){dfx.removeClass(dfx.getClass(this.getClass()+'-alist',listElem),'active');dfx.addClass(assetPickercont,'active');dfx.addClass(attrListElem,'active');dfx.addClass(listElem,'active');}}else if(listElem){attrListElem=document.createElement('div');dfx.addClass(attrListElem,c+'-'+this.selectedAssetType);dfx.addClass(attrListElem,this.getClass()+'-alist');listElem.appendChild(attrListElem);var self=this;this.getKeywordList('attribute',function(keywords){self.populateList(attrListElem,keywords,'assets');self.showAttributesKeywords();},{assetType:self.selectedAssetType});}else{listElem=document.createElement('div');dfx.addClass(listElem,this.getClass()+'-list');dfx.addClass(listElem,c);var listsElem=dfx.getClass(this.getClass()+'-left-lists')[0];listsElem.appendChild(listElem);var label=document.createElement('label');dfx.setHtml(label,'Choose Asset Type');dfx.addClass(label,c+'-label');assetPickercont.appendChild(label);var select=this.createWidget(null,'Select');var params={widget:'KeywordWidget',action:'getAssetTypes'};this.assetTypeSelect=select;var self=this;select.setSelectedEventValueType('value');select.addItemSelectedEvent(function(selected){self.setSelectedAssetType(selected);});dfx.post(this.url,params,function(data){select.addItems(dfx.jsonDecode(data));select.create(function(sel){assetPickercont.appendChild(sel);self.showAttributesKeywords();});});}},setSelectedAssetType:function(type)
{this.selectedAssetType=type;this.showAttributesKeywords();},showMetadataKeywords:function()
{var c=this.getClass()+'-list-metadata';var listElem=dfx.getClass(c,this.domElem)[0];if(listElem){if(this.viewType==='Metadata'){dfx.addClass(listElem,'active');}}else{listElem=document.createElement('div');dfx.addClass(listElem,this.getClass()+'-list');dfx.addClass(listElem,c);var listsElem=dfx.getClass(this.getClass()+'-left-lists')[0];listsElem.appendChild(listElem);var self=this;this.getKeywordList('metadata',function(keywords){if(keywords.length===0){dfx.setHtml(listElem,'<div style="text-align:center;font:12px arial;margin-top:10px;">There are no metadata fields</div>');}else{self.populateList(listElem,keywords);}
self.showMetadataKeywords();});}},populateList:function(listElem,keywords)
{var self=this;var c=this.getClass()+'-keyItem';for(var i in keywords){if(keywords.hasOwnProperty(i)===false){continue;}
var item=document.createElement('div');dfx.addClass(item,c);dfx.setHtml(item,keywords[i].friendlyName);listElem.appendChild(item);(function(elem,keyword){dfx.addEvent(elem,'click',function(){self.selectedKeyword=keyword;dfx.removeClass(dfx.getClass(c,self.domElem),'selected');dfx.addClass(elem,'selected');self.updatePreview();});})(item,keywords[i]);}},getKeywordList:function(type,callback,data)
{var params={widget:'KeywordWidget',action:'getKeywordList',type:type};if(data){params.data=dfx.jsonEncode(data);}
dfx.post(this.url,params,function(data){if(data){callback.call(this,dfx.jsonDecode(data));}});},_createRightPanel:function()
{var parent=dfx.getClass(this.getClass()+'-right',this.domElem)[0];var main=document.createElement('div');parent.appendChild(main);var tabs={'Format & Preview':this._createFormatPreviewTab(),'Keyword Scope':this._createScopeTab()};var tabPane=this.createWidget(this.dialog.id+'-format_PrevTabs','TabPane','top',tabs);tabPane.create(function(el){tabPane.selectTab(1);tabPane.selectTab(0);main.appendChild(el);});},_createFormatPreviewTab:function()
{var c=this.getClass()+'-formatTab';var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-title ViperKeywordPlugin-formatSection">Format</div>';content+='<div class="'+c+'-top formatSection">';content+='<div class="'+c+'-formatSel"></div>';content+='<div class="'+c+'-formatArg"></div></div>';content+='<div class="'+c+'-formatDesc"></div>';content+='<div class="'+c+'-title ViperKeywordPlugin-previewSection">Preview</div>';content+='<div class="'+c+'-preview"></div>';dfx.setHtml(main,content);var formatArgCont=dfx.getClass(c+'-formatArg',main)[0];var formatSelCont=dfx.getClass(c+'-formatSel',main)[0];var formatDescCont=dfx.getClass(c+'-formatDesc',main)[0];var previewCont=dfx.getClass(c+'-preview',main)[0];this.previewCont=previewCont;var self=this;this.formatArgs=this.createWidget(this.dialog.id+'-formatArgsField','TextField');this.formatArgs.setValue('Arguments...');this.formatArgs.create(function(el){formatArgCont.appendChild(el);dfx.addEvent(self.formatArgs.input,'blur',function(){if(self.formatArgs.getValue().length===0){self.formatArgs.setValue('Arguments...');}else{self.updatePreview();}});dfx.addEvent(self.formatArgs.input,'focus',function(){if(self.formatArgs.getValue()==='Arguments...'){self.formatArgs.setValue('');}});});var descriptions={};var formatSel=this.createWidget(null,'Select');formatSel.setSelectedEventValueType('value');formatSel.addItemSelectedEvent(function(selected){self.selectedFormat=selected;self.updatePreview();if(descriptions[selected]){dfx.setHtml(formatDescCont,descriptions[selected]);}});var params={widget:'KeywordWidget',action:'getKeywordFormats'};dfx.post(this.url,params,function(data){data=dfx.jsonDecode(data);if(data){if(data.descs){descriptions=data.descs;}
if(data.formats){formatSel.addItems(data.formats);formatSel.create(function(el){formatSelCont.appendChild(el);});}}});return main;},getCurrentKeyword:function()
{if(!this.selectedKeyword){return false;}
var system=this.selectedKeyword.system;var key=this.selectedKeyword.key;var keyword=system+'~'+key;if(this.selectedScope!==null){keyword+=':'+this.selectedScope;}
if(this.selectedFormat){if(this.selectedScope===null){keyword+=':';}
keyword+=':string~'+this.selectedFormat;var argStr=this.formatArgs.getValue().replace('%','');if(this.formatArgs.getValue()!==argStr){this.formatArgs.setValue(argStr);}
if(argStr.length>0&&argStr!=='Arguments...'){keyword+='~'+argStr;}}
return keyword;},getSelectedKeywordReplacement:function(callback)
{var currKey=this.getCurrentKeyword();if(!currKey){callback.call(this,false,false);return;}
var params={widget:'KeywordWidget',action:'getKeywordReplacement',keyword:currKey};dfx.post(this.url,params,function(data){var rep='';if(data){rep=data;}
callback.call(this,rep,currKey);});},updatePreview:function()
{var previewCont=this.previewCont;this.getSelectedKeywordReplacement(function(rep){dfx.setHtml(previewCont,rep);});},_createScopeTab:function()
{var c=this.getClass()+'-scopeTab';var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-top">';content+='<div class="'+c+'-desc"></div>';content+='<div class="'+c+'-opts"></div></div>';content+='<div class="'+c+'-picker"></div>';dfx.setHtml(main,content);var descCont=dfx.getClass(c+'-desc',main)[0];var optsCont=dfx.getClass(c+'-opts',main)[0];var pickerCont=dfx.getClass(c+'-picker',main)[0];var picker=this.createWidget(null,'AssetPicker');picker.setProjectFolderWhiteList(['Documents','Images','Movies']);picker.setPickerTitle('Select Keyword Scope');picker.setPickerSubTitle('Select an asset to use as Keyword Scope');var insertKeywordZindex=null;picker.addPickerOpenedCallback(function(){var disabledDivZindex=parseInt(dfx.getStyle(dfx.getId('_disabledDiv'),'z-index'),10);var popup=dfx.getId('InsertKeywordPluginDialog');insertKeywordZindex=parseInt(dfx.getStyle(popup,'z-index'),10);dfx.setStyle(popup,'z-index',(disabledDivZindex-1));});picker.create(function(el){pickerCont.appendChild(el);});picker.addSelectedCallback(function(assetid){self.selectedScope=assetid;self.updatePreview();var popup=dfx.getId('InsertKeywordPluginDialog');dfx.setStyle(popup,'z-index',insertKeywordZindex);});var params={widget:'KeywordWidget',action:'getScopeInfo'};var self=this;dfx.post(this.url,params,function(data){var scopeInfo=dfx.jsonDecode(data);self.includeWidget('OptionList',function(){var optList=self.createWidget(null,'OptionList');var options={};for(var scope in scopeInfo){if(scopeInfo.hasOwnProperty(scope)===false){continue;}
options[scope]='<span class="'+c+'-scope-'+scope+'">'+scopeInfo[scope].title+'</span>';}
dfx.setHtml(descCont,scopeInfo.def.desc);optList.setOptions(options);optList.setSelected('def');optList.addOnChangeAction(function(v,selected){if(selected==='spec'){self.selectedScope=picker.getValue();}else{self.selectedScope=selected;}
self.updatePreview();dfx.setHtml(descCont,scopeInfo[selected].desc);if(selected!=='def'){if(selected==='spec'){dfx.addClass(pickerCont,'active');}else{dfx.removeClass(pickerCont,'active');}
if(self.assetTypeSelect){self.assetTypeSelect.setValue(selected,true);self.setSelectedAssetType(scopeInfo[selected].type);}}});optList.create(function(el){optsCont.appendChild(el);});});});return main;},getClass:function()
{return'ViperKeywordPlugin';}};dfx.noInclusionInherits('ViperKeywordPlugin','ViperPlugin',true);function ViperLinkPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.linkAttributes=['href','target','class','style','id'];this.linkColor='';}
ViperLinkPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Link','link-insert','Insert/Edit Link',function(){self.editLink();});this.toolbarPlugin.addButton('Link','link-remove','Remove Link',function(){self.removeLink();});this.toolbarPlugin.setButtonDisabled('link-remove');this.convertLinks(this.viper.element);this.viper.registerCallback('getHtml','InsertLinkPlugin',function(data){if(data.element){self.toNormalLinks(data.element);}});this.viper.registerCallback('setHtml','InsertLinkPlugin',function(data){if(data.element){self.convertLinks(data.element);}});this.viper.registerCallback('getContents','InsertLinkPlugin',function(data){if(data.element){self.convertLinks(data.element);}});this.viper.registerCallback('setContents','InsertLinkPlugin',function(data){if(data.element){self.convertLinks(data.element);}});this.viper.registerCallback('viperEnabled','InsertLinkPlugin',function(data){self.convertLinks(self.viper.element);});var prevCollapsed=null;this.viper.registerCallback('caretPositioned','InsertLinkPlugin',function(data){if(data&&data.range){c=false;if(data.range.startContainer&&self.getLink(data.range.startContainer)!==false){self.toolbarPlugin.setButtonActive('link-insert');self.toolbarPlugin.setButtonActive('link-remove');}else{self.toolbarPlugin.setButtonInactive('link-insert');self.toolbarPlugin.setButtonInactive('link-remove');c=true;}
if(c===true||prevCollapsed!==data.range.collapsed){self.toolbarPlugin.setButtonInactive('link-insert');}}});ViperChangeTracker.addChangeType('insertedLink','Inserted Link','format');ViperChangeTracker.addChangeType('removedLink','Deleted Link','remove');ViperChangeTracker.addChangeType('insertedLinkAndText','Inserted Link','format');ViperChangeTracker.setDescriptionCallback('insertedLink',function(node,ctnType){var desc='';if(ctnType==='insertedLink'){desc=dfx.attr(node,'viper_href');if(!desc){desc=dfx.attr(node,'href');}}
return desc;});ViperChangeTracker.setRejectCallback('insertedLink',function(clone,node){self.removeLink(node);});ViperChangeTracker.setApproveCallback('insertedLink',function(clone,node){ViperChangeTracker.removeTrackChanges(node);dfx.setStyle(node,'color','');});ViperChangeTracker.setDescriptionCallback('insertedLinkAndText',function(node,ctnType){var desc='';if(ctnType==='insertedLinkAndText'){desc=dfx.attr(node,'viper_href');if(!desc){desc=dfx.attr(node,'href');}}
return desc;});ViperChangeTracker.setRejectCallback('insertedLinkAndText',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('insertedLinkAndText',function(clone,node){ViperChangeTracker.removeTrackChanges(node);dfx.setStyle(node,'color','');});ViperChangeTracker.setDescriptionCallback('removedLink',function(node,ctnType){var desc='';if(ctnType==='removedLink'){desc=dfx.attr(node,'viper_href');}
return desc;});ViperChangeTracker.setRejectCallback('removedLink',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('removedLink',function(clone,node){self.removeLink(node);});},toNormalLinks:function(elem)
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var links=dfx.getTag('a',elem);var ln=links.length;for(var i=0;i<ln;i++){var link=links[i];var keyword=link.getAttribute('keywords');if(keyword){keywordPlugin.convertKeywordAttribute(link);}else{var href=link.getAttribute('viper_href');if(href){link.setAttribute('href',href);}}
dfx.removeAttr(link,'viper_href');dfx.removeAttr(link,'keywords');dfx.setStyle(link,'color','');}},removeLink:function(elem)
{var info=ViperUndoManager.createNodeChangeInfo(this.viper.element);var link=this.getLink(elem);if(link===false){this.viper.removeStyle('a');}else{if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.isTrackingNode(link)===false){ViperChangeTracker.addChange('removedLink',[link]);}else{while(link.firstChild){dfx.insertBefore(link,link.firstChild);}
dfx.remove(link);}}
this.viper.fireNodesChanged('ViperLinkPlugin:remove');},convertLinks:function(parent)
{var links=dfx.getTag('a',parent);var ln=links.length;for(var i=0;i<ln;i++){this.convertLink(links[i]);}},convertLink:function(link)
{if(link.getAttribute('viper_href')){dfx.removeAttr(link,'href');return;}
var href=link.getAttribute('href');dfx.removeAttr(link,'href');link.setAttribute('viper_href',href);},editLink:function()
{var link=this.getLink();if(link===false){this.showDialog();}else{this.showDialog(link);}},getLinkInfo:function(link)
{var info={};var ln=this.linkAttributes.length;for(var i=0;i<ln;i++){var value=dfx.attr(link,this.linkAttributes[i]);if(dfx.isset(value)===true){info[this.linkAttributes[i]]=value;}}
return info;},getLink:function(elem)
{if(dfx.isset(elem)===false){var range=this.viper.getCurrentRange();elem=range.getCommonElement();}
if(this.isATag(elem)===false){var parents=dfx.getParents(elem,'a');if(parents.length>0){return parents[0];}
return false;}
return elem;},isATag:function(elem)
{if(elem.nodeType===dfx.ELEMENT_NODE&&elem.tagName.toLowerCase()==='a'){return true;}
return false;},showDialog:function(linkElem)
{var range=this.viper.getCurrentRange();var self=this;var bookmark=null;var content='';var elements=[];if(linkElem){range.selectNode(linkElem);ViperSelection.addRange(range);}else{bookmark=this.viper.createBookmark();elements=dfx.getElementsBetween(bookmark.start,bookmark.end);}
ViperSelection.addRange(range);this.displayDisabledDiv(true);ViperPluginManager.setActivePlugin('Link');var dialog=this.createWidget('ViperLinkPlugin','ViperLinkPlugin');dialog.init(function(){dialog.setClickEvent(function(url,newWindow,keywords,asset){ViperSelection.addRange(range);if(linkElem){elements=dfx.getHtml(linkElem);}
var a=self.createLink(url,newWindow,keywords,elements,asset,linkElem);if(linkElem){dfx.insertBefore(linkElem,a);dfx.remove(linkElem);}else if(bookmark){dfx.remove(dfx.getElementsBetween(bookmark.start,bookmark.end));dfx.insertAfter(bookmark.start,a);self.viper.selectBookmark(bookmark);}
ViperPluginManager.setActivePlugin(null);self.viper.focus();self.viper.fireNodesChanged('ViperLinkPlugin:insert');});dialog.setClosedEvent(function(win){if(win===true){if(bookmark){self.viper.selectBookmark(bookmark);}else if(linkElem){range.setStart(linkElem,0);range.collapse(true);self.viper.updateCaret();}
ViperPluginManager.setActivePlugin(null);}});dialog.open(linkElem);});},createLink:function(url,newWindow,keywords,elements,asset,oldElement)
{var a=null;if(oldElement){a=oldElement.cloneNode(false);a.setAttribute('viper_href',url);}else{a=document.createElement('a');}
a.setAttribute('href',url);if(newWindow===true){a.setAttribute('target','_blank');}else{dfx.removeAttr(a,'target');}
if(keywords){a.setAttribute('keywords',dfx.jsonEncode(keywords));}else{dfx.removeAttr(a,'keywords');}
if(dfx.isArray(elements)===false){dfx.setHtml(a,elements);}else{dfx.foreach(elements,function(k){if(elements[k].tagName&&elements[k].tagName.toLowerCase()==='a'){dfx.remove(elements[k]);while(elements[k].firstChild){a.appendChild(elements[k].firstChild);}}else{a.appendChild(elements[k]);}});}
this.convertLink(a);var changeType='insertedLink';var content=dfx.getHtml(a);if(!content){changeType='insertedLinkAndText';if(!asset){dfx.setHtml(a,url);}else{var span=document.createElement('span');dfx.addClass(span,'_my4_keyword');dfx.attr(span,'title','%attribute~name:'+asset.id+'%')
dfx.attr(span,'keyword','%attribute~name:'+asset.id+'%');span.appendChild(document.createTextNode(' '+asset.name+' '));a.appendChild(span);}}
if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange(changeType,[a]);}
return a;}};dfx.noInclusionInherits('ViperLinkPlugin','ViperPlugin',true);function ViperLinkPluginWidgetType(id)
{Widget.call(this,id);this.name='editingLinkEditor';this.assetPicker=null;this.optWidgets={'internal':{},'external':{}};this.optionsCont=null;this.internalLinkEl=null;this.externalLinkEl=null;this.tabPane=null;this.closedEvent=null;this.selectedElem=null;this.selectedAsset=null;}
ViperLinkPluginWidgetType.prototype={init:function(callback)
{var self=this;this.includeWidgets(['TabPane','ModalDialog','AssetPickerDialog'],function(){var assetPicker=self.createWidget('InserLinkAssetPicker','AssetPickerDialog');self.assetPicker=assetPicker;assetPicker.noDialog=true;assetPicker.setScreen(self.name);assetPicker.setView(self.name,'thumbs');assetPicker.setButtonTitle('Insert Link');assetPicker.addProjectFolderWhiteList(self.name,'Documents');assetPicker.addProjectFolderWhiteList(self.name,'Images');assetPicker.addProjectFolderWhiteList(self.name,'Movies');assetPicker.setUniqueSelect(true);assetPicker.setHideTopLevel(self.name);assetPicker.addSelectionChangedAction(function(selectedAsset){if(selectedAsset){self.setSelectedItemValues(selectedAsset.id);}},true);assetPicker.init(self.name,function(contentEl){var externalTab=document.createElement('div');var tabs={'Internal Links':contentEl,'External Links':externalTab};var tabPane=self.createWidget(self.id+'-tabPane','TabPane','3',tabs);self.tabPane=tabPane;tabPane.create(function(tabPaneElem){var dialog=self.createWidget('InserLinkPluginDialog','ModalDialog');dialog.setContent(tabPaneElem);dialog.setTitle('Insert Link');dialog.setSubTitle('Select the link you want to insert',true);dialog.setSize('710px','370px');assetPicker.setDialog(dialog);dialog.create(function(el){assetPicker.addDialogEvents(dialog);var footer=document.createElement('div');dfx.addClass(footer,self.getClass()+'-dialog-footer internal');tabPane.addOnChangeHandler(function(index){if(index===0){self.assetPicker.showCurrentSelectionInfo();dialog.setSize('710px','370px');dfx.removeClass(footer,'external');dfx.addClass(footer,'internal');self.assetPicker.showFooter('160px');}else{self.assetPicker.hideCurrentSelectionInfo();dfx.removeClass(footer,'internal');}});self.createOptionsContainer(function(intFooterCont){footer.appendChild(intFooterCont);self._createExternalTab(externalTab,function(extFooterCont){dialog.setFooterContent(footer,self.getClass()+'-dialog-footer');callback.call(self);});});});});});});},getValuesFromElem:function(elem)
{var values={};var attrs=['target','viper_href'];var i=attrs.length;while(i-->0){if(dfx.isset(elem.getAttribute(attrs[i]))===true){values[attrs[i]]=elem.getAttribute(attrs[i]);}else{values[attrs[i]]='';}}
return values;},open:function(elem)
{if(elem){this.selectedElem=elem;var values=this.getValuesFromElem(elem);var self=this;AssetManager.getAssetFromUrl(elem.getAttribute('viper_href'),function(asset){var newWindow=(values.target&&values.target==='_blank');if(asset){self.tabPane.selectTab(0);self.selectedAsset=asset;self.setValues(asset,null,newWindow);self._open(asset);}else{self.tabPane.selectTab(1);self.setValues(null,values.viper_href,newWindow);self._open(null);}});}else{var selectedAssets=this.assetPicker.getSelectedAssets();if(selectedAssets&&selectedAssets.length>0){var self=this;AssetManager.getAsset(selectedAssets[0],function(asset){self.tabPane.selectTab(0);self.selectedAsset=asset;self.setValues(asset);self._open(asset);});}else{this._open(null);}}},setClosedEvent:function(fn)
{this.closedEvent=fn;},_open:function(asset)
{this.assetPicker.dialog.addOnCloseCallback(this.closedEvent);this.assetPicker.showFooter('160px');if(asset&&asset.hasOwnProperty('id')===true){dfx.removeClass(this.optionsCont,'notSelected');var self=this;AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.viewWidgets.list.initAutoScroll(false,lineage);self.assetPicker.showCurrentSelectionInfo();self.assetPicker.dialog.open();});}else{dfx.addClass(this.optionsCont,'notSelected');this.assetPicker.dialog.open();}},setValues:function(asset,url,newWindow)
{if(!asset){this.optWidgets.external.url.setValue(url);this.optWidgets.external.newWindow.setValue(newWindow);}else{this.setSelectedItemValues(asset.id);this.optWidgets.internal.newWindow.setValue(newWindow);this.selectedAsset=asset;}},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){dfx.removeClass(self.optionsCont,'notSelected');var name=asset.getAttribute('name');dfx.setHtml(self.assetNameCont,dfx.ellipsize(name,10)+' <span>- #'+dfx.ellipsize(itemid.toString(),10)+'</span>');self.assetNameCont.setAttribute('title',name);}});var url=Widget.BASE_URL+'?tb=1&a='+itemid+'&_'+dfx.getUniqueId();var imgCont=dfx.getClass(this.getClass()+'-imagePreviewCont-img',this.internalLinkEl)[0];this._setPreviewImage(imgCont,url);this.optWidgets.internal.newWindow.setValue(false);},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var content='<div class="'+c+'-notSelected">No asset is selected for preview</div>';dfx.setHtml(container,content);var self=this;this._createInternalOptions(function(el){container.appendChild(el);callback.call(self,container);});},_createInternalOptions:function(callback)
{var main=document.createElement('div');var c=this.getClass();var content='<div class="'+c+'-imagePreviewCont">';content+='<div class="'+c+'-imagePreviewCont-img"><div class="'+c+'-imagePreviewCont-nimg"></div></div>';content+='<div class="'+c+'-imagePreviewCont-inf"></div>';content+='</div>';dfx.addClass(main,c+'-settings');content+='<div class="'+c+'-linkInfoCont">';content+='<div class="'+c+'-assetInfo">';content+='<span class="'+c+'-label">Link To</span>';content+='<div class="'+c+'-assetInfo-value"></div>';content+='</div>';content+='<div class="'+c+'-newWindow">';content+='<span class="'+c+'-label">New window</span>';content+='<div class="'+c+'-newWindow-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var toggle=dfx.getClass(c+'-newWindow-value',main)[0];this.assetNameCont=dfx.getClass(c+'-assetInfo-value',main)[0];var self=this;this.includeWidget('ToggleButton',function(){var newWindowWidget=self.createWidget(self.id+'-int-newWindow','ToggleButton',false,'slider',false,'Yes','No');self.optWidgets.internal.newWindow=newWindowWidget;newWindowWidget.create(function(el){toggle.appendChild(el);});});callback.call(this,main);},_createExternalTab:function(main,callback)
{var c=this.getClass()+'-external';var content='';dfx.addClass(main,c+'-settings');content+='<div class="'+c+'-linkInfoCont">';content+='<div class="'+c+'-url">';content+='<span class="'+c+'-label">URL</span>';content+='<div class="'+c+'-url-value"></div>';content+='<div class="'+c+'-url-tick"></div>';content+='</div>';content+='<div class="'+c+'-newWindow">';content+='<span class="'+c+'-label">New window</span>';content+='<div class="'+c+'-newWindow-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var urlCont=dfx.getClass(c+'-url-value',main)[0];var urlTick=dfx.getClass(c+'-url-tick',main)[0];var newWindowCont=dfx.getClass(c+'-newWindow-value',main)[0];var self=this;this.includeWidgets(['TextField','Button','ToggleButton'],function(){var url=self.createWidget(self.id+'-ex-url','TextField');var newWindowWidget=self.createWidget(self.id+'-ex-newWindow','ToggleButton',false,'slider',false,'Yes','No');self.optWidgets.external.url=url;self.optWidgets.external.newWindow=newWindowWidget;url.create(function(urlEl){urlCont.appendChild(urlEl);});newWindowWidget.create(function(newWindowEl){newWindowCont.appendChild(newWindowEl);callback.call(this,main);});});},setClickEvent:function(callback)
{var self=this;this.assetPicker.addAssetsSelectedAction(function(selectedAssets){var tabIndex=self.tabPane.getCurrentTabIndex();if(tabIndex!==1){var assetid=null;if(selectedAssets.length>0){assetid=selectedAssets.pop();}else if(self.selectedAsset){assetid=self.selectedAsset;}
if(assetid){if(dfx.isObj(assetid)===true){var asset=assetid;var url=asset.getUrl();var newWindow=self.optWidgets.internal.newWindow.getValue();var keywords={href:'%lookup~url:'+asset.id+'%'};callback.call(this,url,newWindow,keywords);}else{var params={attributes:['name'],type:false,typeIcon:true,linking:[],urls:true};AssetManager.getAsset(assetid,function(asset){var url=asset.getUrl();var newWindow=self.optWidgets.internal.newWindow.getValue();var keywords={href:'%lookup~url:'+assetid+'%'};callback.call(this,url,newWindow,keywords,asset);},false,params);}}}else{var urlValue=self.optWidgets.external.url.getValue();if(urlValue.search(/[a-zA-z]+:\/\//)!==0){urlValue='http://'+urlValue;}
callback.call(this,urlValue,self.optWidgets.external.newWindow.getValue());}},true);},_setPreviewImage:function(cont,url,callback)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;dfx.getImage(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;image=self._resizeImage(image);}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_resizeImage:function(img)
{var h=img.height;var w=img.width;if(h>w){w=(105/(h/w));img.setAttribute('height',105);img.setAttribute('width',w);}else{h=(160/(w/h));img.setAttribute('width',160);img.setAttribute('height',h);}
return img;},getClass:function()
{return'ViperLinkPlugin';}};dfx.inherits('ViperLinkPlugin','Widget');function ViperListPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;}
ViperListPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('List','list-ordered','Insert/Remove Ordered List',function(){self.oderedList();});this.toolbarPlugin.addButton('List','list-unordered','Insert/Remove Un-ordered List',function(){self.unoderedList();});ViperChangeTracker.addChangeType('makeList','Formatted','insert');ViperChangeTracker.addChangeType('removedList-ol','Formatted','format');ViperChangeTracker.addChangeType('removedList-ul','Formatted','format');ViperChangeTracker.addChangeType('makeList-change','Formatted','format');ViperChangeTracker.addChangeType('addedListItem','Inserted','insert');ViperChangeTracker.addChangeType('breakListUP','Formatted','format');ViperChangeTracker.addChangeType('breakListUPDown','Formatted','format');ViperChangeTracker.addChangeType('breakListDown','Formatted','format');ViperChangeTracker.setDescriptionCallback('makeList',function(node){var listType='ordered';if(dfx.isTag(node,'ul')===true){listType='un-ordered';}
return'Changed to '+listType+' list';});ViperChangeTracker.setApproveCallback('makeList',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('makeList',function(clone,node){var children=[];dfx.foreach(node.childNodes,function(i){children.push(node.childNodes[i]);});while(child=children.shift()){self.removeListItem(child,true);}
dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('removedList-ol',function(node){return'Removed from ordered list';});ViperChangeTracker.setApproveCallback('removedList-ol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedList-ol',function(clone,node){var list=document.createElement('ol');dfx.insertBefore(node,list);list.appendChild(self._createListItem(node));});ViperChangeTracker.setDescriptionCallback('removedList-ul',function(node){return'Removed from un-ordered list';});ViperChangeTracker.setApproveCallback('removedList-ul',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedList-ul',function(clone,node){var list=document.createElement('ul');dfx.insertBefore(node,list);list.appendChild(self._createListItem(node));});ViperChangeTracker.setDescriptionCallback('makeList-change',function(node){var listType='unordered';if(dfx.isTag(node,'ol')===true){listType='ordered';}
return'Changed to '+listType+' list';});ViperChangeTracker.setApproveCallback('makeList-change',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('makeList-change',function(clone,node){var newTag='ol'
if(dfx.isTag(node,'ol')===true){newTag='ul';}
var newList=document.createElement(newTag);while(node.firstChild){newList.appendChild(node.firstChild);}
dfx.insertBefore(node,newList);dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('breakListUP',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListUP',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListUP',function(clone,node){var prevList=node.previousSibling;if(dfx.isTag(prevList,'ul')===true||dfx.isTag(prevList,'ol')===true){if(self.isListNode(node)===true){while(node.firstChild){prevList.appendChild(node.firstChild);}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
prevList.appendChild(li);}}});ViperChangeTracker.setDescriptionCallback('breakListUPDown',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListUPDown',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListUPDown',function(clone,node){var prevList=node.previousSibling;var nextList=node.nextSibling;if(dfx.isTag(prevList,'ul')===true||dfx.isTag(prevList,'ol')===true){if(self.isListNode(node)===true){while(node.firstChild){prevList.appendChild(node.firstChild);}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
prevList.appendChild(li);}
if(nextList){while(nextList.firstChild){var li=nextList.firstChild;if(dfx.isTag(nextList.firstChild,'li')===false){li=self._createListItem(nextList.firstChild);}
prevList.appendChild(li);}
dfx.remove(nextList);}}else if(dfx.isTag(nextList,'ul')===true||dfx.isTag(nextList,'ol')===true){if(self.isListNode(node)===true){if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,node.childNodes);}else{while(node.firstChild){nextList.appendChild(node.firstChild);}}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,li);}else{nextList.appendChild(li);}}}});ViperChangeTracker.setDescriptionCallback('breakListDown',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListDown',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListDown',function(clone,node){var nextList=node.nextSibling;if(dfx.isTag(nextList,'ul')===true||dfx.isTag(nextList,'ol')===true){if(self.isListNode(node)===true){if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,node.childNodes);}else{while(node.firstChild){nextList.appendChild(node.firstChild);}}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,li);}else{nextList.appendChild(li);}}}});},unoderedList:function()
{this._changeType='makeList';this.makeList(false);this.viper.fireNodesChanged('ViperListPlugin:unordered');this.viper.element.focus();},oderedList:function()
{this._changeType='makeList';this.makeList(true);this.viper.fireNodesChanged('ViperListPlugin:ordered');this.viper.element.focus();},removeListItem:function(li,sameList)
{if(!li||!li.parentNode){return false;}
var list=this._getListElement(li);if(!list){return;}
var nextLevelList=this._getListElement(list);if(!nextLevelList){var newElem=document.createElement('p');while(li.firstChild){newElem.appendChild(li.firstChild);}}
var changeType=null;if(li.nextSibling){var clone=list.cloneNode(false);for(var node=li.nextSibling;node;node=li.nextSibling){clone.appendChild(node);}
dfx.insertAfter(list,clone);if(li.previousSibling){changeType='breakListUPDown';}else{changeType='breakListDown';}}else{changeType='breakListUP';}
dfx.remove(li);if(!nextLevelList){dfx.insertAfter(list,newElem);}else{var newElem=document.createElement('br');dfx.insertAfter(list,newElem);dfx.insertAfter(newElem,li.childNodes);}
if(dfx.getNodeTextContent(list)===''){dfx.remove(list);}
if(sameList!==true){this._changeType=changeType;ViperChangeTracker.addChange(changeType,[newElem]);}
return newElem;},makeList:function(ordered,force)
{var tag='ul';if(ordered===true){tag='ol';}
var range=this.viper.getCurrentRange().cloneRange();var bookmark=this.viper.createBookmark(range);if(bookmark.start.parentNode===bookmark.end.parentNode){var li=this._getListItem(range.startContainer);if(li!==null){var br=this._getLineBreak(bookmark.start);if(br){var tmpDiv=document.createElement('div');dfx.insertBefore(br,tmpDiv);var node=null;while(node=br.nextSibling){if(node.nodeType===dfx.ELEMENT_NODE&&node.tagName.toLowerCase()==='br'){tmpDiv=document.createElement('div');dfx.insertBefore(node,tmpDiv);dfx.remove(br);br=node;continue;}
tmpDiv.appendChild(node);}
if(br.parentNode){dfx.remove(br);}
this.viper.selectBookmark(bookmark);this.makeList(ordered,true);return;}}
if(li===null||force===true){var list=null;var elem=this._getBlockParent(range.startContainer);if(elem===null){elem=[range.startContainer];}else{elem=[elem];}
var removeInsAfter=false;var insertAfter=elem[0].previousSibling;if(!insertAfter){insertAfter=document.createTextNode('');dfx.insertBefore(elem[0],insertAfter);removeInsAfter=true;}
list=this._makeList(tag,elem);dfx.insertAfter(insertAfter,list);if(removeInsAfter===true){}
this.viper.selectBookmark(bookmark);}else{var listElement=this._getListElement(li);var convert=(listElement&&listElement.tagName.toLowerCase()!==tag);var newElem=this.removeListItem(li);this.viper.selectBookmark(bookmark);if(convert===true){if(this._changeType==='makeList'){this._changeType+='-change';}
this.makeList(ordered);}}}else{var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);var comParents=this._getCommonParents(elements);if(!comParents){return false;}
var isWholeList=this._isWholeList(comParents);if(dfx.isTag(comParents[0],'li')===true){var sameType=true;dfx.foreach(comParents,function(i){if(dfx.isTag(comParents[i],'li')!==true||dfx.isTag(comParents[i].parentNode,tag)!==true){sameType=false;return false;}});if(sameType===true){var self=this;dfx.foreach(comParents,function(i){var newElem=self.removeListItem(comParents[i],isWholeList);ViperChangeTracker.addChange('removedList-'+tag,[newElem]);});this.viper.selectBookmark(bookmark);return;}else{if(dfx.isTag(comParents[0].parentNode,tag)===true){var firstItem=comParents.shift();this._joinToList(firstItem.parentNode,comParents,firstItem);this.viper.selectBookmark(bookmark);return;}else{var self=this;dfx.foreach(comParents,function(i){self.removeListItem(comParents[i],isWholeList);});this.viper.selectBookmark(bookmark);if(this._changeType==='makeList'){this._changeType+='-change'}
return this.makeList(ordered);}}}
var removeInsAfter=false;var insertAfter=comParents[0].previousSibling;if(!insertAfter){insertAfter=document.createTextNode('');dfx.insertBefore(comParents[0],insertAfter);removeInsAfter=true;}
var list=this._makeList(tag,comParents);dfx.insertAfter(insertAfter,list);if(removeInsAfter===true){dfx.remove(insertAfter);}
this.viper.selectBookmark(bookmark);}},_joinToList:function(listElem,elements,refNode)
{var self=this;dfx.foreach(elements,function(i){var elem=elements[i];if(elem.parentNode!==listElem){if(dfx.isTag(elem,'li')===false){elem=self._createListItem(elem);}
if(elem){if(refNode){dfx.insertAfter(refNode,elem);refNode=elem;}else{listElem.appendChild(elem);}}}});},_getLineBreak:function(ref)
{while(ref=ref.previousSibling){if(ref.nodeType===dfx.ELEMENT_NODE&&ref.tagName.toLowerCase()==='br'){return ref;}}
return null;},_getBlockParent:function(element,tag)
{while(element&&element!==this.viper.element){if(dfx.isBlockElement(element)===true){if(!tag||element.tagName.toLowerCase()===tag){return element;}}
element=element.parentNode;}
return null;},_getCommonParents:function(elems)
{elems=elems.concat([]);var parents=[];var eLen=elems.length;while(eLen>0){var elem=elems.shift();if(dfx.isBlockElement(elem)===true){if(elem.tagName.toLowerCase()==='ol'||elem.tagName.toLowerCase()==='ul'){for(var listChild=elem.firstChild;listChild;listChild=listChild.nextSibling){parents.push(listChild);}}else{parents.push(elem);}}else{while(elem){elem=elem.parentNode;if(elem){if(elem===this.viper.element){break;}else if(dfx.isBlockElement(elem)===true){if(parents.inArray(elem)===false){parents.push(elem);}
break;}}}}
eLen=elems.length;}
return parents;},_makeList:function(tag,elements)
{if(!elements){return;}
tag=tag||'ul';var eln=elements.length;if(eln<=0){return;}
var list=document.createElement(tag);if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange(this._changeType,[list]);}
if(eln===1){var listItems=[];var listLen=listItems.length;while(elements[0].firstChild||listLen>0){var child=elements[0].firstChild;if(child&&dfx.isTag(child,'br')===false){listItems.push(child);}else if(listItems.length>0){var listItem=this._createListItem(listItems.shift());list.appendChild(listItem);while(listElem=listItems.shift()){listItem.appendChild(listElem);}}
if(child){dfx.remove(child);}
listLen=listItems.length;}
dfx.remove(elements[0]);}else{for(var i=0;i<eln;i++){var listItem=this._createListItem(elements[i]);if(listItem!==null){list.appendChild(listItem);}}}
return list;},_createListItem:function(element)
{if(!element){return null;}
var li=document.createElement('li');if(dfx.isBlockElement(element)===true){if(element.childNodes&&element.childNodes.length>0){while(element.firstChild){if(element.firstChild.nodeType===dfx.TEXT_NODE){if(dfx.trim(element.firstChild.data).length<=0){dfx.remove(element.firstChild);continue;}}
li.appendChild(element.firstChild);}}
dfx.remove(element);if(li.childNodes.length===0){return null;}}else{li.appendChild(element);}
return li;},_getList:function(element)
{return this._isListElement(element,null,true);},_isListElement:function(element,type,returnNode)
{while(element&&element!==this.viper.element){if(element.nodeType===dfx.ELEMENT_NODE){var tagName=element.tagName.toLowerCase();if(type){if(tagName===type){if(returnNode===true){return element;}
return true;}}else if(tagName==='ul'||tagName==='ol'||tagName==='li'){if(returnNode===true){return element;}
return true;}}
element=element.parentNode;}
return false;},isListNode:function(node)
{if(dfx.isTag(node,'ul')===true||dfx.isTag(node,'ol')===true){return true;}
return false;},_getListItem:function(element)
{while(element&&element!==this.viper.element){if(element.tagName&&element.tagName.toLowerCase()==='li'){return element;}
element=element.parentNode;}
return null;},_getListElement:function(element)
{element=element.parentNode;while(element&&element!==this.viper.element){if(element.tagName){var tag=element.tagName.toLowerCase();if(tag==='ol'||tag==='ul'){return element;}}
element=element.parentNode;}
return null;},_isWholeList:function(elems)
{var sameParent=false;var parentList=null;if(elems.length>1){var first=elems[0];var last=elems[(elems.length-1)];var firstParent=first.parentNode;var lastParent=last.parentNode;if(firstParent===lastParent){parentList=firstParent;sameParent=true;}}else{sameParent=true;}
if(sameParent===true){var count=0;var child=null;var last=null;for(child=parentList.firstChild;child;child=child.nextSibling){if(dfx.isTag(child,'li')===true){if(count===0&&child!==elems[0]){return false;}
last=child;count++;}}
if(last===elems[(elems.length-1)]){return true;}}
return false;},handleEnter:function(li)
{var content=dfx.getNodeTextContent(li);if(dfx.trim(content).length===0){var parents=dfx.getParents(li,'ul,ol');if(parents.length>0){var listEl=parents[0];if(parents.length>1){var parentLi=parents[(parents.length-1)].parentNode;while(parentLi&&dfx.isTag(parentLi,'li')===false){parentLi=parentLi.parentNode;}
if(parentLi){dfx.insertAfter(parentLi,li);var range=this.viper.getCurrentRange();range.setStart(li.firstChild,0);range.collapse(true);return false;}}
var p=document.createElement('p');dfx.setHtml(p,'&nbsp;');var listClone=listEl.cloneNode(false);dfx.removeAttr(listClone,'id');var c=0;var el=li.nextSibling;while(el){var elem=el;el=el.nextSibling;c++;dfx.remove(elem);listClone.appendChild(elem);}
dfx.remove(li);dfx.insertAfter(listEl,p);if(c>0){dfx.insertAfter(p,listClone);}
var range=this.viper.getCurrentRange();range.setStart(p.firstChild,0);range.collapse(true);return false;}}else if(this._isKeyword()===true){var newLi=li.cloneNode(false);dfx.setHtml(newLi,'&nbsp;');dfx.insertAfter(li,newLi);var range=this.viper.getCurrentRange();range.setStart(newLi.firstChild,0);range.collapse(true);return false;}
return true;},_isKeyword:function()
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var range=this.viper.getCurrentRange();if(keywordPlugin._isKeyword(range.startContainer)===false&&keywordPlugin._isKeyword(range.startContainer)===false){return false;}
return true;}};dfx.noInclusionInherits('ViperListPlugin','ViperPlugin',true);function ViperMoviePlugin(viper)
{ViperPlugin.call(this,viper);this.image=null;this.toolbarPlugin=null;this.imageBorder=null;this._movieEl=null;this._viperBoookmark=null;}
ViperMoviePlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Movie','movie','Insert/Edit Movie',function(){self.editMovie();});this.viper.registerCallback('clickedOutside','ViperMoviePlugin',function(){self.removeMovieHandles();});ViperChangeTracker.addChangeType('insertMovie','Inserted Movie','insert');ViperChangeTracker.addChangeType('removedMovie','Deleted Movie','remove');ViperChangeTracker.setNodeTypeVisibility('removedMovie',false);ViperChangeTracker.setDescriptionCallback('insertMovie',function(node){var desc='';if(node){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',node)[0];desc=thumbImg.cloneNode(false);}
return desc;});ViperChangeTracker.setApproveCallback('insertMovie',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('insertMovie',function(clone,node){dfx.remove(node);});this.viper.registerCallback('ViperKeywordPlugin:keywordInserted','ViperMoviePlugin',function(info){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',info.keyword)[0];if(thumbImg){info.changeType='insertMovie';}});this.viper.registerCallback('ViperKeywordPlugin:keywordRemoved','ViperMoviePlugin',function(info){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',info.keyword)[0];if(thumbImg){info.changeType='removedMovie';}
self.removeMovieHandles();});ViperChangeTracker.setApproveCallback('removedMovie',function(clone,node){dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedMovie',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setDescriptionCallback('removedMovie',function(node){var desc='';if(node){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',node)[0];desc=thumbImg.cloneNode(false);}
return desc;});},editMovie:function()
{this.insertMovieDialog(this._movieEl);},insertMovieDialog:function(elem)
{var bookmark=null;if(elem===null){this.removeMovieHandles();bookmark=this.viper.createBookmark();}else{bookmark=elem;}
var self=this;this.displayDisabledDiv(true);this.dialog=Widget.prototype.createWidget('ViperMoviePluginDialog','ViperMoviePlugin');this.dialog.create(function(){self.dialog.setClickEvent(function(assetid,height,width,selElem){self.insertKeyword(bookmark,assetid,height,width);});self.dialog.setClosedEvent(function(win){if(win===true){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}else if(elem){var range=self.viper.getCurrentRange();range.setStart(elem,0);range.collapse(true);}
self.end();}});ViperPluginManager.setActivePlugin('Movie');self.dialog.open(elem);});},insertKeyword:function(bookmark,assetid,height,width)
{if(!assetid||!width||!height){return;}
var jsURL=Widget.WEB_URL+'Systems/MovieAssetType';var id='moviePlayer'+assetid;var content='';var jsFileURL=Widget.WEB_URL+'/Systems/MovieAssetType';var imgAttr='width="100%" height="100%"';var playButtonStyles='width:100%;height:100%;';playButtonStyles+='position:absolute;top:0;left:0;cursor:pointer;';playButtonStyles+='background: transparent url('+jsFileURL+'/edit_overlay.png) no-repeat 50% 50%;';var thumbURL=Widget.BASE_URL+'/?a='+assetid+'&ss=1';content+='<div class="moviePlayer moviePlayer-Wrapper" style="margin:0 auto;width:'+width+'px;height:'+height+'px;">';content+='<div class="moviePlayer moviePlayer-Player" id="'+id+'" style="position:relative;height:100%;">';content+='<img style="border:0;padding:0;margin:0;" noSelect=1 '+imgAttr+' class="moviePlayer moviePlayer-Thumbnail" src="'+thumbURL+'"/>';content+='<div class="moviePlayer moviePlayer-Thumbnail-playIcon" style="'+playButtonStyles+'"></div>';content+='</div></div>';var keyword='%fileAssets~embedMovie';keyword+='-'+width+'-'+height;keyword+=':'+assetid+'%';if(bookmark.start){var parents=dfx.getParents(bookmark.start,'p',this.viper.element);if(parents.length>0){var split=this.viper.splitNodeAtBookmark('p',bookmark,true);var bookmark=document.createElement('div');dfx.insertBefore(split.nextNode,bookmark);}}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');keywordPlugin.insertKeyword(keyword,content,bookmark);},end:function()
{ViperPluginManager.setActivePlugin(null);},isMovie:function(elem)
{if(!elem){var range=this.viper.getCurrentRange();if(range.startContainer.nodeType===dfx.ELEMENT_NODE){elem=range.startContainer.childNodes[range.startOffset];}else{return false;}}
if(elem.nodeType===dfx.ELEMENT_NODE){if(dfx.hasClass(elem,'moviePlayer')===true){return elem;}}
return false;},isPluginElement:function(element)
{if(element!==this.imageBorder&&dfx.isChildOf(element,this.imageBorder)===false){return false;}
return true;},mouseDown:function(e,elem)
{if(!elem){elem=dfx.getMouseEventTarget(e);}
var isCSKeyword=false;var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true);}
if(this.isMovie(elem)!==false&&isCSKeyword===false){var spanTag=elem;while(spanTag.nodeName!=='SPAN'){spanTag=spanTag.parentNode;}
var range=this.viper.getCurrentRange();var start=document.createTextNode('');var end=document.createTextNode('');dfx.insertBefore(spanTag,start);dfx.insertAfter(spanTag,end);range.setStart(start,0);range.setEnd(end,0);if(this.showMovieHandles(elem)===false){if(e){dfx.preventDefault(e);}
return false;}}},_adjustGhostImage:function(original,ghost)
{var owidth=dfx.getElementWidth(original);var oheight=dfx.getElementHeight(original);var coords=dfx.getElementCoords(original);var width=owidth;var height=oheight;var borders={left:0,right:0,top:0,bottom:0};dfx.foreach(borders,function(type){var border=parseInt(dfx.getComputedStyle(original,'border-'+type+'-width'));if(isNaN(border)===true){border=0;}
borders[type]=border;});width-=(borders.left+borders.right);height-=(borders.top+borders.bottom);coords.y+=borders.top;coords.x+=borders.left;dfx.setStyle(ghost,'width',width+'px');dfx.setStyle(ghost,'height',height+'px');dfx.setStyle(ghost,'top',(coords.y-1)+'px');dfx.setStyle(ghost,'left',(coords.x-1)+'px');return{width:owidth,height:oheight};},showMovieHandles:function(movie)
{if(this.imageBorder!==null){this.removeMovieHandles();}
var mvWrap=null;if(dfx.hasClass(movie,'moviePlayer-Wrapper')===false){while(movie.parentNode&&movie.parentNode!==document.body){movie=movie.parentNode;if(dfx.hasClass(movie,'moviePlayer-Wrapper')===true){mvWrap=movie;break;}}}
if(mvWrap===null){return;}
this._movieEl=mvWrap.parentNode;var mvWrapBorder=document.createElement('div');this.imageBorder=mvWrapBorder;var dims=this._adjustGhostImage(movie,mvWrapBorder);var width=dims.width;var height=dims.height;dfx.setStyle(mvWrapBorder,'position','absolute');dfx.setStyle(mvWrapBorder,'border','1px solid #000');var ghostMovie=mvWrap.cloneNode(true);dfx.setStyle(ghostMovie,'opacity','0.7');dfx.setStyle(ghostMovie,'width','100%');dfx.setStyle(ghostMovie,'height','100%');mvWrapBorder.appendChild(ghostMovie);var info={};var self=this;jQuery(mvWrapBorder).resizable({knobHandles:true,handles:'all',stop:function(e,info){var newWidth=parseInt(info.size.width);var newHeight=parseInt(info.size.height);dfx.setStyle(mvWrap,'width',newWidth+'px');dfx.setStyle(mvWrap,'height',newHeight+'px');self._updateKeyword(mvWrap.parentNode,newWidth,newHeight,width,height);self.removeMovieHandles();info.after=null;self.viper.fireNodesChanged('ViperMoviePlugin:resize');}});document.body.appendChild(mvWrapBorder);dfx.addEvent(document,'click.ViperMoviePluginGh',function(e){var target=dfx.getMouseEventTarget(e);if(target!==mvWrap&&target!==mvWrapBorder&&dfx.isChildOf(target,mvWrapBorder)===false){dfx.removeEvent(document,'click.ViperMoviePluginGh');self.removeMovieHandles();}});return false;},removeMovieHandles:function()
{this._movieEl=null;if(this.imageBorder!==null){jQuery(this.imageBorder).resizable('destroy');dfx.remove(this.imageBorder);this.imageBorder=null;}},caretUpdated:function()
{this.removeMovieHandles();},handleKeyPress:function()
{if(this.imageBorder!==null){this.removeMovieHandles();}},_updateKeyword:function(keywordEl,nwidth,nheight,owitdh,oheight)
{var keyword=dfx.attr(keywordEl,'keyword');keyword=keyword.replace(/-\d+-\d+/,'-'+nwidth+'-'+nheight);dfx.attr(keywordEl,'keyword',keyword);dfx.attr(keywordEl,'Keyword:'+keyword);}};dfx.noInclusionInherits('ViperMoviePlugin','ViperPlugin',true);function ViperMoviePluginWidgetType(id)
{Widget.call(this,id);this.name='editingMovieEditor';this.assetPicker=null;this.optWidgets={'internal':{}};this.optionsCont=null;this.internalMovieEl=null;this.closedEvent=null;this.selectedElem=null;this.selectedAsset=null;}
ViperMoviePluginWidgetType.prototype={create:function(callback)
{this.init(callback);},init:function(callback)
{var self=this;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen(this.name);this.assetPicker.setView(this.name,'thumbs');this.assetPicker.setTitle('Insert Movie');this.assetPicker.setSubTitle('Select the movie you want to insert');this.assetPicker.setButtonTitle('Insert Movie');this.assetPicker.addProjectFolderWhiteList(this.name,'Movies');this.assetPicker.setHideSite(this.name);this.assetPicker.setUniqueSelect(true);this.assetPicker.setClass(this.name,this.getClass()+'-dialog');this.assetPicker.setModalSize(710,370);this.assetPicker.addItemClickedEvent(function(itemid,type,e){self.setSelectedItemValues(itemid);},true);this.assetPicker.setHideTopLevel(this.name);this.createOptionsContainer(function(el){self.assetPicker.setFooterContent(el);callback.call(self);});},getValuesFromElem:function(elem)
{var values={};var keyword=dfx.attr(elem,'keyword');if(keyword){var parts=keyword.match(/-(\d+)-(\d+):(\d+)/);if(parts.length===4){values.width=parts[1];values.height=parts[2];values.assetid=parts[3];}}
return values;},open:function(elem)
{var self=this;if(elem){this.selectedElem=elem;var values=this.getValuesFromElem(elem);var self=this;AssetManager.getAsset(values.assetid,function(asset){if(asset){self.setValues(asset,values);if(asset.hasOwnProperty('id')===true){AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.setAutoScrollLineage(lineage,self.name);self.assetPicker.init(self.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});});}}},true,{attributes:['name','width','height','duration'],type:false,typeIcon:false,linking:[],urls:false});return;}
this.assetPicker.setAutoScrollLineage(null,this.name);this.assetPicker.init(this.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){var name=asset.getAttribute('name');self.setValues(asset,'','','');}},true,{attributes:['name','width','height','duration'],type:false,typeIcon:false,linking:[],urls:false});},setValues:function(asset,values)
{this.selectedAsset=asset;var width=values.width||asset.getAttribute('width');var height=values.height||asset.getAttribute('height');var c=this.getClass();var widthCont=dfx.getClass(c+'-width-value',this.internalMovieEl)[0];var heightCont=dfx.getClass(c+'-height-value',this.internalMovieEl)[0];var name=dfx.getClass(c+'-assetInfo-value',this.internalMovieEl)[0];var assetNameHTML=dfx.ellipsize(asset.name,27);assetNameHTML+='&nbsp;<span class="AssetPickerDialog-currentSelectionTitle-assetid">[#';assetNameHTML+=dfx.ellipsize(asset.id.toString(),10)+']</span>';dfx.setHtml(name,assetNameHTML);this.optWidgets.internal.width.setValue(width);this.optWidgets.internal.height.setValue(height);dfx.setStyle([widthCont,heightCont],'display','block');var imgInf=dfx.getClass(c+'-imagePreviewCont-inf',this.internalMovieEl)[0];var seconds=asset.getAttribute('duration');var rdtime=this.secondsToHms(seconds);dfx.setHtml(imgInf,asset.getAttribute('width')+' x '+asset.getAttribute('height')+' ('+rdtime+')');var url=Widget.BASE_URL+'?tb=1&a='+asset.id+'&_'+(new Date).getTime();var imgCont=dfx.getClass(c+'-imagePreviewCont-img',this.internalMovieEl)[0];this._setPreviewMovie(imgCont,url);},secondsToHms:function(seconds)
{hms="";if(seconds<60){hms+='0';}else{hours=parseInt(parseInt(seconds)/3600);if(hours>0){hms+=hours+':';}
minutes=parseInt((seconds/60)%60);if(hours>0){if(hours>=10){hms+=minutes;}else{hms+='0'+minutes;}}else{hms+=minutes;}}
secs=parseInt(seconds%60);hms+=':';if(secs>=10){hms+=secs;}else{hms+='0'+secs;}
return hms;},setClosedEvent:function(fn)
{this.closedEvent=fn;},setClickEvent:function(callback)
{var self=this;this.assetPicker.addAssetsSelectedAction(function(selectedAssets){var selectedAsset=null;if(self.selectedAsset!==null){selectedAsset=self.selectedAsset.id;}
if(selectedAsset!==null){AssetManager.getAsset(selectedAsset,function(asset){var internal=self.optWidgets.internal;var width=internal.width.getValue()||'';var height=internal.height.getValue()||'';callback.call(self,asset.id,height,width,self.selectedElem);},false,{attributes:['width','height','duration'],type:false,typeIcon:false,linking:[],urls:true});}else{callback.call(self,null);}},true);},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var self=this;this.includeWidget('TextField',function(){self._createTabs(function(internal){self.internalMovieEl=internal;container.appendChild(internal);callback.call(self,container);});});},_createTabs:function(callback)
{var self=this;this._createInternalTab(function(internal){callback.call(this,internal);});},_createInternalTab:function(callback)
{var main=document.createElement('div');var c=this.getClass();var content='<div class="'+c+'-imagePreviewCont">';content+='<div class="'+c+'-imagePreviewCont-img"><div class="'+c+'-imagePreviewCont-nimg"></div></div>';content+='<div class="'+c+'-imagePreviewCont-inf"></div>';content+='</div>';dfx.addClass(main,c+'-settings');content+='<div class="'+c+'-imageInfoCont">';content+='<div class="'+c+'-assetInfo">';content+='<label class="'+c+'-label">Asset</label>';content+='<div class="'+c+'-assetInfo-value"></div>';content+='</div>';content+='<div class="'+c+'-width">';content+='<label class="'+c+'-label">Width</label>';content+='<div class="'+c+'-width-text"></div>';content+='<div class="'+c+'-width-value"></div>';content+='</div>';content+='<div class="'+c+'-height">';content+='<label class="'+c+'-label">Height</label>';content+='<div class="'+c+'-height-text"></div>';content+='<div class="'+c+'-height-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var widthCont=dfx.getClass(c+'-width-value',main)[0];var heightCont=dfx.getClass(c+'-height-value',main)[0];dfx.setStyle([widthCont,heightCont],'display','none');var self=this;this.includeWidget('TextField',function(){var width=self.createWidget(self.id+'-width','TextField');var height=self.createWidget(self.id+'-height','TextField');self.optWidgets.internal.width=width;self.optWidgets.internal.height=height;width.create(function(widthEl){widthCont.appendChild(widthEl);});height.create(function(heightEl){heightCont.appendChild(heightEl);});});callback.call(this,main);},_setPreviewMovie:function(cont,url,callback)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;this._getMovie(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;image=self._resizeMovie(image);}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_getMovie:function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;},_resizeMovie:function(img)
{var h=img.height;var w=img.width;if(h>w){w=(105/(h/w));dfx.attr(img,'height','105');dfx.attr(img,'width',w);}else{h=(150/(w/h));dfx.attr(img,'height',h);dfx.attr(img,'width','150');}
return img;},_setOptCont:function(opt,cont)
{var c=this.getClass()+'-opts';dfx.getClass(c+'-'+opt,this.optionsCont)[0].appendChild(cont);},getClass:function()
{return'ViperMoviePlugin';}};dfx.inherits('ViperMoviePlugin','Widget');function ViperRedoPlugin(viper)
{ViperPlugin.call(this,viper);ViperPluginManager.addKeyPressListener('CTRL+Z',this,'handleUndo');ViperPluginManager.addKeyPressListener('CTRL+Y',this,'handleRedo');}
ViperRedoPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');if(dfx.isset(this.toolbarPlugin)===true){var name='Redo';var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')!==false){ctrlName='CMD';}
this.toolbarPlugin.addButton(name,'undo','Undo ('+ctrlName+' + Z)',function(){return self.handleUndo();});this.toolbarPlugin.setButtonDisabled('undo');this.toolbarPlugin.addButton(name,'redo','Redo ('+ctrlName+' + Y)',function(){return self.handleRedo();});this.toolbarPlugin.setButtonDisabled('redo');}
this.viper.registerCallback('ViperUndoManager:newUndoTask','ViperRedoPlugin',function(){self._updateButtonStates();});},handleUndo:function()
{ViperUndoManager.undo();this._updateButtonStates();return true;},handleRedo:function()
{ViperUndoManager.redo();this._updateButtonStates();return true;},_updateButtonStates:function()
{if(!this.toolbarPlugin){return;}
if(ViperUndoManager.getUndoCount()>1){this.toolbarPlugin.setButtonInactive('undo');}else{this.toolbarPlugin.setButtonDisabled('undo');}
if(ViperUndoManager.getRedoCount()>0){this.toolbarPlugin.setButtonInactive('redo');}else{this.toolbarPlugin.setButtonDisabled('redo');}}};dfx.noInclusionInherits('ViperRedoPlugin','ViperPlugin',true);function ViperSourceViewPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.modalDialog=null;this.textarea=null;this.multiplier=4;}
ViperSourceViewPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('SourceView','code','Source View',function(){self.showSource();});},showSource:function()
{var self=this;ViperPluginManager.setActivePlugin('ViperSourceViewPlugin',false);var content=this.viper.getHtml(this.viper.element);content=content.replace(/(src|href)+="(\S+)"/gi,function(fullStr,attrName,val){return attrName+'="'+unescape(val)+'"'});this.createDialog(content,function(){var val=self.textarea.value;val=self.escapeContent(val.replace(/[\s]{2,}/g,''));self.viper.setHtml(val,function(){self.modalDialog.close();self.viper.fireNodesChanged('ViperSourceViewPlugin:update');ViperChangeTracker.reLoad();});});},escapeContent:function(val)
{return val;},createDialog:function(content,callback)
{content=this.format(content);content=this.cleanupHTML(content);var textarea=document.createElement('textarea');this.textarea=textarea;dfx.addClass(textarea,'ViperSourceViewPlugin');textarea.value=content;textarea.setAttribute('rows',30);textarea.setAttribute('cols',80);var self=this;this.includeWidget('ModalDialog',function(){var modalDialog=self.createWidget('ViperSourceViewDialog','ModalDialog');modalDialog.setContent(textarea);modalDialog.setTitle('Source View');modalDialog.create(function(){modalDialog.addButton('Update',function(button){button.addClickEvent(callback);});self.modalDialog=modalDialog;self.modalDialog.open(function(){textarea.focus();});modalDialog.addOnCloseCallback(function(){ViperPluginManager.setActivePlugin(null);});});});},cleanupHTML:function(content)
{content=content.replace(/<(img|br|hr)((\s+\w+(\s*=\s*(?:".*?"|\'.*?\'|[^\'">\s]+))?)+)?\s*>/ig,"<$1$2 />");return content;},format:function(content)
{var output='';var match=null;var tabCount=0;var prevIndex=0;content=content.replace(/\n/gi,' ');content=content.replace(/\r/gi,'');var allTags=/<\/?(p|div|pre|ul|ol|tbody|table|tr|td|th|fieldset|form|blockquote|dl|dir|center|address|h1|h2|h3|h4|h5|h6)((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim;content=content.replace(allTags,"\n$&\n");content=content.replace(/\n\n/gm,"\n");var endTags=/<\/(p|div|pre|ul|ol|tbody|table|fieldset|form|blockquote|dl|dir|center|address|h1|h2|h3|h4|h5|h6)>/gim;content=content.replace(endTags,"$&\n");while((match=allTags.exec(content))!=null){var innerHtml=content.substring(prevIndex,match.index);if(dfx.isBlank(innerHtml)===false&&tabCount>1){output+=dfx.strRepeat(' ',((tabCount-1)*this.multiplier));}
output+=innerHtml;if(match[0].charAt(1)==='/'){tabCount--;output+=dfx.strRepeat(' ',(tabCount*this.multiplier));}else{output+=dfx.strRepeat(' ',(tabCount*this.multiplier));tabCount++;}
output+=content.substr(match.index,match[0].length+1);prevIndex=match.index+match[0].length+1;}
output+=content.substr(prevIndex);output=dfx.trim(output);return output;}};dfx.noInclusionInherits('ViperSourceViewPlugin','ViperPlugin',true);function ViperSubToolbarPlugin(viper)
{ViperPlugin.call(this,viper);this._toolbars={};this._wrapper=null;this._activeBarid=null;}
ViperSubToolbarPlugin.prototype={createToolBar:function(id)
{if(this._wrapper===null){this._wrapper=this._createWrapper();}
var barid='subToolbar-'+id;var oldbar=dfx.getId(barid);if(oldbar){dfx.remove(oldbar);}
var c='ViperSubToolbar';var div=document.createElement('div');div.id=barid;dfx.addClass(div,c);this._toolbars[id]=div;var toolbarEl=dfx.getId('ViperToolbar');if(toolbarEl&&toolbarEl.parentNode!==document.body){this.setParentElement(toolbarEl.parentNode);}
var content='<div class="'+c+'-left"></div>';content+='<div class="'+c+'-mid"><div class="'+c+'-mid-wrapper"></div></div>';content+='<div class="'+c+'-right"></div>';dfx.setHtml(div,content);var mid=dfx.getClass(c+'-mid-wrapper',div)[0];this._wrapper.appendChild(div);return mid;},setParentElement:function(parent)
{dfx.remove(this._wrapper);dfx.setStyle(this._wrapper,'position','absolute');dfx.setStyle(this._wrapper,'top','22px');parent.appendChild(this._wrapper);},_createWrapper:function()
{var wrapper=document.createElement('div');dfx.addClass(wrapper,'ViperSubToolbar-wrapper');document.body.appendChild(wrapper);return wrapper;},showToolbar:function(id)
{var bar=this.getBar(id);if(bar){if(this._activeBarid&&id!==this._activeBarid){this.hideToolbar(this._activeBarid);}
dfx.setStyle(bar,'visibility','hidden');dfx.addClass(bar,'active');dfx.setStyle(bar.parentNode,'right',0);var width=dfx.getElementWidth(bar);dfx.setStyle(bar,'margin-right',((width*-1)/2)+'px');dfx.setStyle(bar.parentNode,'right','50%');dfx.setStyle(bar,'visibility','visible');}
this.viper.fireCallbacks('ViperSubToolbar:showToolbar',id);this._activeBarid=id;},hideToolbar:function(id)
{if(this._activeBarid===id){dfx.removeClass(dfx.getClass('ViperSubToolbar',this._wrapper),'active');this._activeBarid=null;this.viper.fireCallbacks('ViperSubToolbar:hideToolbar',id);}},toggleToolbar:function(id)
{if(this._activeBarid===id){this.hideToolbar(id);return false;}else{this.showToolbar(id);return true;}},createOptionsList:function(title)
{var div=document.createElement('div');var c='ViperSubToolbar-optsList';dfx.addClass(div,c);var contents='<div class="'+c+'-title">';contents+='<div class="'+c+'-title-left"></div>';contents+='<div class="'+c+'-title-mid">'+title+'</div>';contents+='<div class="'+c+'-title-right"></div></div>';contents+='<div class="'+c+'-mid"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(div,contents);var contentDiv=dfx.getClass(c+'-mid',div)[0];return{main:div,contentEl:contentDiv};},getBar:function(id)
{return this._toolbars[id];},isPluginElement:function(el)
{return dfx.isChildOf(el,this._wrapper);},remove:function()
{dfx.remove(this._wrapper);},isActive:function()
{if(this._activeBarid){return true;}
return false;}};dfx.noInclusionInherits('ViperSubToolbarPlugin','ViperPlugin',true);function ViperTableEditorPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.activeCell=null;this.vCellButtons=null;this.hCellButtons=null;this._subToolbar=null;this._lastNode=null;this._currentTablePropView='cell';this._settingsWidgets={};ViperPluginManager.addKeyPressListener('TAB',this,'handleTab');}
ViperTableEditorPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('TableEditor','table','Insert/Edit Table',function(){self.insertTable();});ViperPluginManager.addKeyPressListener('DELETE',this,'handleDelete');dfx.removeEvent(document,'click.TableEditorPlugin');dfx.addEvent(document,'click.TableEditorPlugin',function(e){if(ViperPluginManager.getActivePlugin()==='TableEditor'){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'ViperTableEditorPlugin-cellButton')!==true){if(dfx.isChildOf(target,self._subToolbar)===false){ViperPluginManager.setActivePlugin(null);if(dfx.isChildOf(target,self.viper.element)===false){self.viper.mouseDown(null,target);}}}}});this.viper.registerCallback('setHtml','TablePlugin',function(data){self.hideCellButtons();});ViperChangeTracker.addChangeType('insertedTable','Inserted','insert');ViperChangeTracker.addChangeType('insertedTableRow','Inserted','insert');ViperChangeTracker.addChangeType('insertedTableCol','Inserted','insert');ViperChangeTracker.setDescriptionCallback('insertedTable',function(node){return'Table';});ViperChangeTracker.setDescriptionCallback('insertedTableRow',function(node){return'Table row';});ViperChangeTracker.setDescriptionCallback('insertedTableCol',function(node){return'Table column';});ViperChangeTracker.setApproveCallback('insertedTable',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('insertedTableRow',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('insertedTableCol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('insertedTable',function(clone,node){self.removeTable(node);});ViperChangeTracker.setRejectCallback('insertedTableRow',function(clone,node){self.removeRow(node);});ViperChangeTracker.setRejectCallback('insertedTableCol',function(clone,node){self.removeCol(node);});ViperChangeTracker.addChangeType('removedTable','Deleted','remove');ViperChangeTracker.addChangeType('removedTableRow','Deleted','remove');ViperChangeTracker.addChangeType('removedTableCol','Deleted','remove');ViperChangeTracker.setDescriptionCallback('removedTable',function(node){return'Table';});ViperChangeTracker.setDescriptionCallback('removedTableRow',function(node){return'Table row';});ViperChangeTracker.setDescriptionCallback('removedTableCol',function(node){return'Table column';});ViperChangeTracker.setApproveCallback('removedTable',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('removedTableRow',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('removedTableCol',function(clone,node){dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedTable',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedTableRow',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedTableCol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});this.viper.registerCallback('ViperChangeTracker:modeChange','ViperTableEditor',function(changedTo){var showInserted=true;var showRemoved=false;if(changedTo==='original'){showInserted=false;showRemoved=true;}
ViperChangeTracker.setNodeTypeVisibility('insertedTable',showInserted);ViperChangeTracker.setNodeTypeVisibility('insertedTableRow',showInserted);ViperChangeTracker.setNodeTypeVisibility('insertedTableCol',showInserted);ViperChangeTracker.setNodeTypeVisibility('removedTable',showRemoved);ViperChangeTracker.setNodeTypeVisibility('removedTableRow',showRemoved);ViperChangeTracker.setNodeTypeVisibility('removedTableCol',showRemoved);});this.viper.registerCallback('ViperUndoManager:undo','ViperTableEditor',function(){self.hideCellButtons();});this.viper.registerCallback('ViperUndoManager:redo','ViperTableEditor',function(){self.hideCellButtons();});},clicked:function(e,elem)
{if(!elem){elem=dfx.getMouseEventTarget(e);}
if(this.isTableCell(elem)){this.showCellButtons(elem);}else{this.hideCellButtons();}},isTableCell:function(elem)
{if(!elem){return false;}
var node=elem;while(node&&node!==this.viper.element){if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return true;}}
node=node.parentNode;}
return false;},handleDelete:function()
{var range=this.viper.getCurrentRange();if(range.startOffset===0&&range.startContainer.nodeType===dfx.TEXT_NODE){node=range.startContainer.parentNode;while(node&&node!==this.viper.element){if(node.nodeType===dfx.ELEMENT_NODE&&node.tagName.toLowerCase()==='td'){if(dfx.getNodeTextContent(node).length===0){dfx.setHtml(node,'&nbsp;');range.setStart(node.firstChild,0);range.collapse(true);}
return true;}
node=node.parentNode;}}},remove:function()
{this.hideCellButtons();dfx.removeEvent(document,'click.TableEditorPlugin');},caretUpdated:function()
{var range=this.viper.getCurrentRange();this._caretUpdated(range.startContainer);},_caretUpdated:function(cell)
{if(!cell){return;}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin&&keywordPlugin.isKeyword(cell)===true){return;}
while(cell&&cell!==this.viper.element){if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){this.showCellButtons(cell);return;}}
cell=cell.parentNode;}
this.hideCellButtons(cell);},setActiveCell:function(cell,noUpdate)
{this.activeCell=cell;if(noUpdate!==true){this.updateSettings(cell);}},_updatecellButtonPositions:function(cell)
{this.showCellButtons(cell,true);},hideCellButtons:function(noDisable)
{try{var cellTable=this.getCellTable(this.activeCell);if(cellTable){dfx.removeClass(dfx.getClass('delHighlight',cellTable),'delHighlight');}
if(noDisable!==true){this.setActiveCell(null);}
dfx.remove(dfx.getClass('ViperTableEditorPlugin-cellButtonsWrapper'));this.vCellButtons=null;this.hCellButtons=null;if(noDisable!==true){ViperPluginManager.setActivePlugin(null);ViperPluginManager.getPlugin('ViperSubToolbarPlugin').hideToolbar('TableEditor');}}catch(e){}},showCellButtons:function(cell,noSet)
{if(!cell){return;}
this.hideCellButtons(true);this.setActiveCell(cell,noSet);var coords=dfx.getBoundingRectangle(cell);if(this.vCellButtons===null){this.vCellButtons=this.createVerticalCellButtons();}
if(this.hCellButtons===null){this.hCellButtons=this.createHorizontalCellButtons();}
var wrapper=document.createElement('div');dfx.addClass(wrapper,'ViperTableEditorPlugin-cellButtonsWrapper');wrapper.appendChild(this.vCellButtons);wrapper.appendChild(this.hCellButtons);document.body.appendChild(wrapper);if(noSet!==true){ViperPluginManager.setActivePlugin('TableEditor');ViperPluginManager.allowTextInput=true;}
this.showVerticalCellButtons(coords);this.showHorizontalCellButtons(coords);if(!this._subToolbar){this._setupSubToolbar();}else{var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(subToolbarPlugin){subToolbarPlugin.showToolbar('TableEditor');}}},showHorizontalCellButtons:function(coords)
{dfx.setStyle(this.hCellButtons,'visibility','hidden');dfx.setStyle(this.hCellButtons,'display','block');var h=14;var w=42;dfx.setStyle(this.hCellButtons,'top',(coords.y1-h)+'px');dfx.setStyle(this.hCellButtons,'left',(coords.x2-((coords.x2-coords.x1)/2)-(w/2))+'px');dfx.setStyle(this.hCellButtons,'visibility','visible');},showVerticalCellButtons:function(coords)
{dfx.setStyle(this.vCellButtons,'visibility','hidden');dfx.setStyle(this.vCellButtons,'display','block');var h=42;var w=14;dfx.setStyle(this.vCellButtons,'top',(coords.y1+((coords.y2-coords.y1)/2)-(h/2))+'px');dfx.setStyle(this.vCellButtons,'left',(coords.x1-w)+'px');dfx.setStyle(this.vCellButtons,'visibility','visible');},createVerticalCellButtons:function()
{var main=document.createElement('div');dfx.addClass(main,'ViperTableEditorPlugin-v-cellButtons');var insertRowAfter=document.createElement('div');dfx.attr(insertRowAfter,'title','Insert row below');dfx.addClass(insertRowAfter,'down');var insertRowBefore=document.createElement('div');dfx.attr(insertRowBefore,'title','Insert row above');dfx.addClass(insertRowBefore,'up');var removeRow=document.createElement('div');dfx.addClass(removeRow,'delete');dfx.attr(removeRow,'title','Delete row');dfx.addClass([insertRowAfter,insertRowBefore,removeRow],'ViperTableEditorPlugin-cellButton');main.appendChild(insertRowBefore);main.appendChild(removeRow);main.appendChild(insertRowAfter);var self=this;dfx.addEvent(insertRowAfter,'click',function(){self.insertRowAfter();});dfx.addEvent(insertRowBefore,'click',function(){self.insertRowBefore();});dfx.addEvent(removeRow,'click',function(){self.removeRow();});dfx.hover(insertRowAfter,function(){dfx.addClass(main,'after');},function(){dfx.removeClass(main,'after');});dfx.hover(insertRowBefore,function(){dfx.addClass(main,'before');},function(){dfx.removeClass(main,'before');});dfx.hover(removeRow,function(){dfx.addClass(main,'delete');if(self.activeCell&&self.activeCell.parentNode){dfx.addClass(self.activeCell.parentNode,'delHighlight');}},function(){dfx.removeClass(main,'delete');if(self.activeCell&&self.activeCell.parentNode){dfx.removeClass(self.activeCell.parentNode,'delHighlight');}});return main;},createHorizontalCellButtons:function()
{var main=document.createElement('div');dfx.addClass(main,'ViperTableEditorPlugin-h-cellButtons');var insertColAfter=document.createElement('div');dfx.attr(insertColAfter,'title','Insert column to the right');dfx.addClass(insertColAfter,'right');var insertColBefore=document.createElement('div');dfx.attr(insertColBefore,'title','Insert column to the left');dfx.addClass(insertColBefore,'left');var removeCol=document.createElement('div');dfx.addClass(removeCol,'delete');dfx.attr(removeCol,'title','Delete column');dfx.addClass([insertColAfter,insertColBefore,removeCol],'ViperTableEditorPlugin-cellButton');main.appendChild(insertColBefore);main.appendChild(removeCol);main.appendChild(insertColAfter);var self=this;dfx.addEvent(insertColAfter,'click',function(){self.insertColAfter();});dfx.addEvent(insertColBefore,'click',function(){self.insertColBefore();});dfx.addEvent(removeCol,'click',function(){self.removeCol();});dfx.hover(insertColAfter,function(){dfx.addClass(main,'right');},function(){dfx.removeClass(main,'right');});dfx.hover(insertColBefore,function(){dfx.addClass(main,'left');},function(){dfx.removeClass(main,'left');});dfx.hover(removeCol,function(){dfx.addClass(main,'delete');var table=self.getCellTable(self.activeCell);dfx.addClass(self.getColumnCells(table,self._getColNum(self.activeCell)),'delHighlight');},function(){dfx.removeClass(main,'delete');var table=self.getCellTable(self.activeCell);dfx.removeClass(self.getColumnCells(table,self._getColNum(self.activeCell)),'delHighlight');});return main;},insertRowBefore:function()
{this.insertRow(true);},insertRowAfter:function()
{this.insertRow();},insertRow:function(before)
{if(!this.activeCell){return;}
var tr=this.activeCell.parentNode;var clone=tr.cloneNode(true);var cln=clone.childNodes.length;for(var i=0;i<cln;i++){var el=clone.childNodes[i];if(el.nodeType===dfx.ELEMENT_NODE){dfx.setStyle(el,'width','');dfx.setHtml(el,'&nbsp;');}}
if(before===true){dfx.insertBefore(tr,clone);}else{dfx.insertAfter(tr,clone);}
ViperChangeTracker.addChange('insertedTableRow',[clone]);var cellNum=0;var trcln=tr.childNodes.length;for(cellNum=0;cellNum<trcln;cellNum++){if(this.activeCell===tr.childNodes[cellNum]){break;}}
this.moveCaretToCell(clone.childNodes[cellNum]);this._nodesUpdated();},removeRow:function(tr)
{if(!tr){tr=this.activeCell.parentNode;}
var elem=this._getNextRow(tr);var pos='parent';if(!elem){elem=this._getPreviousRow(tr);if(!elem){elem=null;}else{pos='after';}}else{pos='before';}
if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.isTrackingNode(tr)!==true){var del=document.createElement('del');dfx.insertBefore(tr,del);del.appendChild(tr);dfx.removeClass(tr,'delHighlight');ViperChangeTracker.addChange('removedTableRow',[del]);}else{dfx.remove(tr);}
if(elem){var colNum=this._getColNum(this.activeCell);var column=this._getColumn(elem,colNum);this.moveCaretToCell(column);}else{var table=this.getCellTable(this.activeCell);this.removeTable(table);}
this._nodesUpdated();},_getColNum:function(cell)
{if(!cell){return null;}
var tr=cell.parentNode;if(!tr){return null;}
var ln=tr.childNodes.length;var c=0;for(var i=0;i<ln;i++){var node=tr.childNodes[i];if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){if(node===cell){break;}
c++;}}}
return c;},_getColumn:function(row,colNum)
{var ln=row.childNodes.length;for(var i=0;i<ln;i++){var node=row.childNodes[i];if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){if(colNum===0){return node;}
colNum--;}}}},_getPreviousRow:function(row)
{while(row=row.previousSibling){if(row.nodeType===dfx.ELEMENT_NODE){var tagName=row.tagName.toLowerCase();if(tagName==='tr'||tagName==='th'){return row;}}}},_getNextRow:function(row,goPrev)
{while(row=row.nextSibling){if(row.nodeType===dfx.ELEMENT_NODE){var tagName=row.tagName.toLowerCase();if(tagName==='tr'||tagName==='th'){return row;}}}
if(goPrev===true){return this._getPreviousRow(row);}},insertColAfter:function()
{this.insertCol();},insertColBefore:function()
{this.insertCol(true);},insertCol:function(before)
{var table=this.activeCell.parentNode.parentNode;var rows=dfx.getTag('tr',table);var activeCellRow=this.activeCell.parentNode;var colNum=this._getColNum(this.activeCell);var changeid=ViperChangeTracker.startBatchChange('insertedTableCol');var td;var rln=rows.length;for(var i=0;i<rln;i++){var col=this._getColumn(rows[i],colNum);td=document.createElement(col.tagName);dfx.setHtml(td,'&nbsp;');if(i===0){dfx.setStyle(td,'width','100px');}
if(before===true){dfx.insertBefore(col,td);}else{dfx.insertAfter(col,td);}
if(changeid!==null){ViperChangeTracker.addNodeToChange(changeid,td);}}
if(changeid){ViperChangeTracker.endBatchChange(changeid);}
if(activeCellRow){if(before!==true){colNum++;}
var column=this._getColumn(activeCellRow,colNum);this.moveCaretToCell(column);}
this._nodesUpdated();},getColumnCells:function(table,colNum)
{if(!table){return;}
var cols=[];var rows=dfx.getTag('tr',table);var rln=rows.length;for(var i=0;i<rln;i++){cols.push(this._getColumn(rows[i],colNum));}
return cols;},removeCol:function(col)
{if(!col){col=this.activeCell;}
var colNum=this._getColNum(col);if(colNum===null){return;}
var row=col.parentNode;var table=this.getRowTable(row);var rows=dfx.getTag('tr',table);var changeid=null;if(ViperChangeTracker.isTrackingNode(col)!==true){changeid=ViperChangeTracker.startBatchChange('removedTableCol');}
var rln=rows.length;for(var i=0;i<rln;i++){col=this._getColumn(rows[i],colNum);if(changeid){var del=document.createElement('del');dfx.insertBefore(col,del);del.appendChild(col);dfx.removeClass(col,'delHighlight');ViperChangeTracker.addNodeToChange(changeid,del);}else{dfx.remove(col);}}
ViperChangeTracker.endBatchChange(changeid);if(colNum>0){colNum--;}
var nextCell=this._getColumn(row,colNum);if(!nextCell){this.removeTable(table,true);}else{this.moveCaretToCell(nextCell);}
this._nodesUpdated();},getNextCell:function(cell,goPrev)
{while(cell.nextSibling){cell=cell.nextSibling;if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return cell;}}}
if(goPrev===true){return this.getPrevCell(cell);}else{var nextRow=this._getNextRow(cell.parentNode);if(nextRow){return this._getColumn(nextRow,0);}}},getPrevCell:function(cell)
{while(cell.previousSibling){cell=cell.previousSibling;if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return cell;}}}
var prevRow=this._getPreviousRow(cell.parentNode);if(prevRow){var col=(dfx.getTag('td,th',prevRow).length-1);return this._getColumn(prevRow,col);}},moveCaretToCell:function(cell)
{if(cell){var range=this.viper.getCurrentRange();range.setStart(cell,0);range.moveStart('character',1);range.moveStart('character',-1);range.collapse(true);return range;}else{this.hideCellButtons();}},removeTable:function(table,emptyOnly)
{if(emptyOnly===true){if(dfx.getTag('td',table).length>0||dfx.getTag('th',table).length>0){return;}}
if(ViperChangeTracker.isTracking()===true){var del=document.createElement('del');dfx.insertBefore(table,del);del.appendChild(table);ViperChangeTracker.addChange('removedTable',[del]);}else{dfx.remove(table);}
this.hideCellButtons();this._nodesUpdated();},getCellTable:function(cell)
{if(!cell){return null;}
var node=cell;while(node){if(node.nodeType===dfx.ELEMENT_NODE){if(node.tagName.toLowerCase()==='table'){return node;}}
node=node.parentNode;}},getRowTable:function(row)
{return this.getCellTable(row);},insertTable:function(rows,cols)
{rows=rows||2;cols=cols||3;var table=document.createElement('table');dfx.setStyle(table,'display','none');ViperChangeTracker.addChange('insertedTable',[table]);var tbody=document.createElement('tbody');var firstCol=null;for(var i=0;i<rows;i++){var tr=document.createElement('tr');for(var j=0;j<cols;j++){var td=document.createElement('td');if(i===0){dfx.setStyle(td,'width','100px');}
dfx.setHtml(td,'&nbsp;');tr.appendChild(td);if(firstCol===null){firstCol=td;}}
tbody.appendChild(tr);}
table.appendChild(tbody);var bookmark=this.viper.createBookmark();var splitInfo=this.viper.splitNodeAtBookmark('p',bookmark);if(splitInfo){if(splitInfo.prevNode){dfx.insertAfter(splitInfo.prevNode,table);}else if(splitInfo.nextNode){dfx.insertBefore(splitInfo.nextNode,table);if(this.viper.elementIsEmpty(splitInfo.nextNode)===true){dfx.remove(splitInfo.nextNode);}}}
var width=parseInt(dfx.getComputedStyle(table,'width'));if(!width){dfx.setStyle(table,'width','300px');}
var col=dfx.getTag('td',table)[0];var rightWidth=parseInt(dfx.getComputedStyle(col,'border-right-width'));var bottomWidth=parseInt(dfx.getComputedStyle(col,'border-bottom-width'));if(bottomWidth===0||rightWidth===0||isNaN(bottomWidth)===true||isNaN(rightWidth)===true){dfx.attr(table,'border',1);}
dfx.setStyle(table,'display','');this._nodesUpdated();if(firstCol){var range=this.viper.getCurrentRange();range.setStart(firstCol.firstChild,0);range.collapse(true);ViperSelection.addRange(range);}},handleTab:function(e)
{if(this.activeCell!==null){var cell=null;if(e.shiftKey!==true){cell=this.getNextCell(this.activeCell);}else{cell=this.getPrevCell(this.activeCell);}
this.moveCaretToCell(cell);}},isPluginElement:function(elem)
{if(dfx.hasClass(elem,'ViperTableEditorPlugin-cellButton')!==true){if(dfx.isChildOf(elem,self._subToolbar)===false){return false;}}
return true;},_nodesUpdated:function(noFocus)
{this.viper.fireNodesChanged('ViperTableEditorPlugin:update',noFocus);},_setupSubToolbar:function()
{var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('TableEditor');var c='ViperTableEditor-stb';var contents='<div class="'+c+'-left"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(toolbar,contents);this._subToolbar=toolbar;var self=this;this.includeWidgets(['Button','RadioButton','SpinButton','TextField','Select'],function(){var changePropTypeBtn=self.createWidget(c+'-switchToolbar','Button');changePropTypeBtn.setName('Table Properties');changePropTypeBtn.setButtonIconClassName(c+'-switch');changePropTypeBtn.create(function(changePropTypeBtnEl){dfx.addClass(changePropTypeBtn.domElem,c+'-tableProperties');changePropTypeBtn.setMinWidth('110px');dfx.getClass(c+'-right',toolbar)[0].appendChild(changePropTypeBtnEl);});self._currentTablePropView='cell';changePropTypeBtn.addClickEvent(function(){if(self._currentTablePropView==='table'){changePropTypeBtn.setName('Table Properties');dfx.removeClass(changePropTypeBtn.domElem,c+'-cellProperties');dfx.addClass(changePropTypeBtn.domElem,c+'-tableProperties');self._showProperties('cell');}else{dfx.removeClass(changePropTypeBtn.domElem,c+'-tableProperties');dfx.addClass(changePropTypeBtn.domElem,c+'-cellProperties');changePropTypeBtn.setName('Cell Properties');self._showProperties('table');}});self._setupTableProperties(function(tablePropertiesEl){self._setupCellProperties(function(cellPropertiesEl){dfx.getClass(c+'-left',toolbar)[0].appendChild(tablePropertiesEl);dfx.getClass(c+'-left',toolbar)[0].appendChild(cellPropertiesEl);self._showProperties(self._currentTablePropView);subToolbarPlugin.showToolbar('TableEditor');});});});},_setupTableProperties:function(callback)
{var props={tableBorder:'Table Border',cellPadding:'Cell Padding',cellSpacing:'Cell Spacing'};this._settingsWidgets.table={};var self=this;var c='ViperTableEditor-stb';var div=document.createElement('div');dfx.addClass(div,c+'-propertiesWrapper');dfx.addClass(div,c+'-tableProps');var content='';content+='<div class="'+c+'-propContainer" id="'+c+'-propContainer-tableWidth"><label>Table Width</label>';content+='<div class="'+c+'-propWrapper '+c+'-tableWidth-wrapper"></div></div>';dfx.foreach(props,function(propid){content+='<div class="'+c+'-propContainer" id="'+c+'-propContainer-'+propid+'"><label>'+props[propid]+'</label>';content+='<div class="'+c+'-propWrapper '+c+'-'+propid+'-wrapper"></div></div>';});dfx.setHtml(div,content);var tableWidth=this.createWidget(c+'-tableWidth','TextField');var tableWidthType=this.createWidget(c+'-tableWidthType','Select');tableWidthType.addItems({px:'px',pc:'%'});tableWidthType.setSelectedEventValueType('value');tableWidthType.addItemSelectedEvent(function(type){self._changeTableSettingValue('widthType',type);});this._settingsWidgets.table.widthType=tableWidthType;this._settingsWidgets.table.width=tableWidth;tableWidth.create(function(tableWidthEl){tableWidth.setWidth(25);var t=null;dfx.addEvent(tableWidth.domEl,'keyup',function(){if(t){clearTimeout(t);t=null;}
t=setTimeout(function(){var width=parseInt(tableWidth.getValue());self._changeTableSettingValue('width',width);},500);});self._makeOptionEditable(tableWidth.domEl);var parent=dfx.getClass(c+'-tableWidth-wrapper',div)[0];parent.appendChild(tableWidthEl);tableWidthType.create(function(tableWidthTypeEl){dfx.insertAfter(parent,tableWidthTypeEl);});});dfx.foreach(props,function(propid){(function(propid){var widgetid=c+'-'+propid;var widget=self.createWidget(widgetid,'SpinButton',0);widget.setInitialValue(0);widget.allowEmptyValue(true);widget.create(function(el){self._makeOptionEditable(widget.domEl);dfx.getClass(widgetid+'-wrapper',div)[0].appendChild(el);});widget.addOnChangeEvent(function(val){self._changeTableSettingValue(propid,val);});self._settingsWidgets.table[propid]=widget;})(propid);});callback.call(this,div);},_makeOptionEditable:function(elem)
{},_setupCellProperties:function(callback)
{this._settingsWidgets.cell={};var self=this;var c='ViperTableEditor-stb';var div=document.createElement('div');dfx.addClass(div,c+'-propertiesWrapper');dfx.addClass(div,c+'-cellProps');var content='<div class="'+c+'-propContainer" id="'+c+'-propContainer-colWidth"><label>Column Width</label>';content+='<div class="'+c+'-propWrapper '+c+'-columnWidth-wrapper"></div>';content+='<div class="'+c+'-propWrapper '+c+'-columnWidthSel-wrapper"></div></div>';content+='<div class="'+c+'-optionListWrapper"></div>';dfx.setHtml(div,content);var colWidthText=this.createWidget(c+'-colWidth-txt','TextField');colWidthText.create(function(colWidthTextEl){var t=null;dfx.addEvent(colWidthText.domEl,'keyup',function(){if(t){clearTimeout(t);t=null;}
t=setTimeout(function(){var width=parseInt(colWidthText.getValue());self._changeSettingValue('width',width);},500);});self._makeOptionEditable(colWidthText.domEl);colWidthText.setWidth(25);dfx.getClass(c+'-columnWidth-wrapper',div)[0].appendChild(colWidthTextEl);});var colWidthSel=this.createWidget(c+'-colWidth-sel','Select');colWidthSel.addItems({px:'px',pc:'%'});colWidthSel.setSelectedEventValueType('value');colWidthSel.addItemSelectedEvent(function(type){self._changeSettingValue('widthType',type);});this._settingsWidgets.cell.widthType=colWidthSel;this._settingsWidgets.cell.width=colWidthText;colWidthSel.create(function(colWidthSelEl){dfx.getClass(c+'-columnWidthSel-wrapper',div)[0].appendChild(colWidthSelEl);});var optsList=ViperPluginManager.getPlugin('ViperSubToolbarPlugin').createOptionsList('Appearance');dfx.addClass(optsList.main,c+'-optionList');(dfx.getClass(c+'-optionListWrapper',div)[0]).appendChild(optsList.main);this._createOptionList(optsList.contentEl);callback.call(this,div);},_createOptionList:function(parent)
{var div=null;var self=this;var opts={tableHeader:'Table Header',noTextWrap:'No Text Wrap'};div=document.createElement('div');var label=document.createElement('label');parent.appendChild(div);dfx.setHtml(label,'Align');div.appendChild(label);dfx.addClass(div,'ViperTableEditor-stb-optItem');div.id='ViperTableEditor-opts-vert';dfx.addClass(div,'first');var alignType={top:'Align to top',middle:'Align to middle',bottom:'Align to bottom'};this._settingsWidgets.cell.valign=div;dfx.foreach(alignType,function(i){var alignDiv=document.createElement('div');dfx.attr(alignDiv,'title',alignType[i]);dfx.addClass(alignDiv,'ViperTableEditor-stb-align');dfx.addClass(alignDiv,'ViperTableEditor-stb-align-'+i);(function(el,alignType){dfx.addEvent(el,'click',function(){dfx.removeClass(dfx.getClass('ViperTableEditor-stb-align',el.parentNode),'active');dfx.addClass(el,'active');self._changeSettingValue('valign',alignType);});})(alignDiv,i);div.appendChild(alignDiv);});dfx.foreach(opts,function(i){div=document.createElement('div');var label=document.createElement('label');parent.appendChild(div);dfx.setHtml(label,opts[i]);div.appendChild(label);dfx.addClass(div,'ViperTableEditor-stb-optItem');div.id='ViperTableEditor-opts-'+i;var radioBtn=self.createWidget(null,'RadioButton',null,false);self._settingsWidgets.cell[i]=radioBtn;radioBtn.create(function(radioBtnEl){dfx.attr(label,'for',radioBtn.id);div.appendChild(radioBtnEl);radioBtn._addEvents();});(function(radioBtnWidget,type){radioBtnWidget.addCheckedEvent(function(checked){self._changeSettingValue(type,checked);});})(radioBtn,i);});if(div){dfx.addClass(div,'last');}},_showProperties:function(type)
{if(!this._subToolbar){return;}
var c='ViperTableEditor-stb';dfx.removeClass(dfx.getClass(c+'-propertiesWrapper',this._subToolbar),'show');dfx.addClass(dfx.getClass(c+'-'+type+'Props',this._subToolbar)[0],'show');this._currentTablePropView=type;ViperPluginManager.getPlugin('ViperSubToolbarPlugin').showToolbar('TableEditor');},_changeTableSettingValue:function(type,value)
{if(!this.activeCell||!type){return;}
var table=this.getCellTable(this.activeCell);if(!table){return;}
var changed=false;switch(type){case'tableBorder':if(parseInt(dfx.attr(table,'border'))!==parseInt(value)){dfx.attr(table,'border',value);changed=true;}
break;case'width':if(!value){value='';}else{var widthType=this._settingsWidgets.table.widthType.getValue();if(widthType==='pc'){value+='%';}else{value+='px';}}
if(dfx.setStyle(table,'width')!==value){dfx.setStyle(table,'width',value);changed=true;}
break;case'widthType':var width=parseInt(dfx.getStyle(table,'width'));if(width){if(value==='pc'){value='%';}
if(dfx.setStyle(table,'width')!==(width+value)){dfx.setStyle(table,'width',width+value);changed=true;}}
break;default:value=parseInt(value);if(isNaN(value)===true){value='';}
var currVal=parseInt(dfx.attr(table,type));if(isNaN(currVal)===true){currVal='';}
if(currVal!==value){dfx.attr(table,type,value);changed=true;}
break;}
if(changed===true){this._updatecellButtonPositions(this.activeCell);this._nodesUpdated(true);}},_changeSettingValue:function(type,value)
{if(!this.activeCell||!type){return;}
var changed=false;if(type==='tableHeader'){var toType='th';if(value!==true){toType='td';}
if(dfx.isTag(this.activeCell,toType)===true){return;}
var newEl=document.createElement(toType);var clone=this.activeCell.cloneNode(true);while(clone.firstChild){newEl.appendChild(clone.firstChild);}
var whiteSpace=dfx.getStyle(clone,'white-space');if(whiteSpace==='nowrap'){dfx.setStyle(newEl,'white-space','nowrap');}
var valign=dfx.getStyle(clone,'vertical-align');if(valign){dfx.setStyle(newEl,'vertical-align',valign);}
var width=dfx.getStyle(clone,'width');if(width){dfx.setStyle(newEl,'width',width);}
dfx.insertBefore(this.activeCell,newEl);dfx.remove(this.activeCell);this.setActiveCell(newEl);changed=true;this.moveCaretToCell(this.activeCell);}else if(type==='noTextWrap'){var style='normal';if(value===true){style='nowrap';}
if(dfx.getStyle(this.activeCell,'white-space')!==style){dfx.setStyle(this.activeCell,'white-space',style);changed=true;this.moveCaretToCell(this.activeCell);}}else if(type==='width'){if(!value){value='';}else{var widthType=this._settingsWidgets.cell.widthType.getValue();if(widthType==='pc'){value+='%';}else{value+='px';}}
if(dfx.getStyle(this.activeCell,'width')!==value){dfx.setStyle(this.activeCell,'width',value);changed=true;}}else if(type==='widthType'){var width=parseInt(dfx.getStyle(this.activeCell,'width'));if(width){if(value==='pc'){value='%';}
if(dfx.getStyle(this.activeCell,'width')!==(width+value)){dfx.setStyle(this.activeCell,'width',width+value);changed=true;}}}else if(type==='valign'){if(dfx.getStyle(this.activeCell,'vertical-align')!==value){dfx.setStyle(this.activeCell,'vertical-align',value);changed=true;}}
if(changed===true){this._updatecellButtonPositions(this.activeCell);this._nodesUpdated(true);}},updateSettings:function(cell)
{if(!cell){cell=this.activeCell;}
if(!cell){return;}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.tableHeader){if(dfx.isTag(cell,'th')===true){this._settingsWidgets.cell.tableHeader.check();}else{this._settingsWidgets.cell.tableHeader.uncheck();}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.noTextWrap){if(dfx.getStyle(cell,'white-space')==='nowrap'){this._settingsWidgets.cell.noTextWrap.check();}else{this._settingsWidgets.cell.noTextWrap.uncheck();}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.valign){var val=dfx.getStyle(cell,'vertical-align');var btns=dfx.getClass('ViperTableEditor-stb-align',this._settingsWidgets.cell.valign);dfx.removeClass(btns,'active');if(val){dfx.addClass(dfx.getClass('ViperTableEditor-stb-align-'+val,this._settingsWidgets.cell.valign),'active');}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.width){var widthStyle=cell.style.width;var width=parseInt(widthStyle);this._settingsWidgets.cell.width.setValue(width);var widthType='px';if(this._settingsWidgets.cell.widthType){if(widthStyle.indexOf('%')>0){widthType='pc';}}
this._settingsWidgets.cell.widthType.setValue(widthType,true);}
var table=this.getCellTable(cell);if(this._settingsWidgets.table&&table){if(this._settingsWidgets.table.tableBorder){var val='';if(dfx.attr(table,'border')!=='undefined'){val=parseInt(dfx.attr(table,'border'));if(!val){val='';}}
this._settingsWidgets.table.tableBorder.setValue(val);}
if(this._settingsWidgets.table.cellPadding){var val='';if(dfx.attr(table,'cellpadding')!=='undefined'){val=parseInt(dfx.attr(table,'cellpadding'));if(isNaN(val)===true){val='';}}
this._settingsWidgets.table.cellPadding.setValue(val);}
if(this._settingsWidgets.table.cellSpacing){var val='';if(dfx.attr(table,'cellspacing')!=='undefined'){val=parseInt(dfx.attr(table,'cellspacing'));if(isNaN(val)===true){val='';}}
this._settingsWidgets.table.cellSpacing.setValue(val);}
if(this._settingsWidgets.table.width){var widthStyle=table.style.width;var width=parseInt(widthStyle);this._settingsWidgets.table.width.setValue(width);var widthType='px';if(this._settingsWidgets.table.widthType){if(widthStyle.indexOf('%')>0){widthType='pc';}}
this._settingsWidgets.table.widthType.setValue(widthType,true);}}}};dfx.noInclusionInherits('ViperTableEditorPlugin','ViperPlugin',true);function ViperToolbarPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbar=null;this.buttons={};this.buttonTitles={};this.buttonEvents={};this.pluginButtons={};this.createToolbar();var self=this;ViperPluginManager.registerCallback('pluginRemoved','toolbarPluginRemoved',function(pluginName){if(self.pluginButtons[pluginName]){var pln=self.pluginButtons[pluginName].length;for(var i=0;i<pln;i++){var buttonName=self.pluginButtons[pluginName][i];dfx.remove(self.buttons[buttonName]);}}});this.viper.registerCallback('viperDisabled','ViperToolbarPlugin',function(){});this.viper.registerCallback('viperEnabled','ViperToolbarPlugin',function(){});}
ViperToolbarPlugin.prototype={setSettings:function(settings)
{if(!settings){return;}
if(settings.parent){this.setParentElement(settings.parent);}},createToolbar:function()
{if(this.toolbar===null){var id='ViperToolbarPlugin';this.toolbar=dfx.getId(id);if(!this.toolbar){this.toolbar=Viper.document.createElement('div');this.toolbar.id=id;dfx.setUnselectable(this.toolbar,true);dfx.addClass(this.toolbar,'ViperToolbarPlugin');var span=Viper.document.createElement('span');this.toolbar.appendChild(span);this._append();}}else if(dfx.getId(this.toolbar.id)){this._append();for(var name in this.buttons){dfx.addEvent(this.buttons[name],'click',this.buttonEvents[name]);}}
if(this.toolbar){if(this.viper.isEnabled()===true){this.setEnabled(false);}else{this.setEnabled(true);}}},setParentElement:function(parent)
{dfx.remove(this.toolbar);dfx.setStyle(this.toolbar,'position','absolute');dfx.setStyle(this.toolbar,'top','0px');parent.appendChild(this.toolbar);},_append:function()
{if(dfx.getId('EditingContents')){dfx.insertBefore(dfx.getId('EditingContents'),this.toolbar);}else{Viper.document.body.appendChild(this.toolbar);}},setEnabled:function(enabled)
{},_setBgPosY:function(buttonEl,pos)
{var bgPos=dfx.getStyle(buttonEl,'background-position');if(bgPos){bgPos=bgPos.split(' ');bgPos[1]=pos+'px';dfx.setStyle(buttonEl,'background-position',bgPos.join(' '));}},setButtonActive:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.addClass(buttonEl,'active');dfx.removeClass(buttonEl,'disabled');this._setBgPosY(buttonEl,-38);if(this.buttonTitles[button]){this.buttons[button].title=this.buttonTitles[button][1];}}},setButtonInactive:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.removeClass(buttonEl,'active');dfx.removeClass(buttonEl,'disabled');this._setBgPosY(buttonEl,0);if(this.buttonTitles[button]){this.buttons[button].title=this.buttonTitles[button][0];}}},setButtonDisabled:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.addClass(buttonEl,'disabled');dfx.removeClass(buttonEl,'active');if(this.buttonTitles[button]){this.buttons[button].title='';}}},getIconURL:function(plugin,buttonName)
{var url=ViperPluginManager.getPluginStylesURL(plugin)+'/'+buttonName+'.png';return url;},addButton:function(plugin,name,title,actionFn)
{var icon=Viper.document.createElement('img');dfx.setUnselectable(icon,true);icon.id='ViperToolbarPlugin-'+name;icon.src=this.getIconURL('ViperToolbarPlugin','transparent');icon.title=title;dfx.addClass(icon,'ViperToolbarPlugin-button');var iconUrl=this.getIconURL(plugin,name);dfx.addClass(icon,name);var self=this;dfx.hover(icon,function(){self._setBgPosY(icon,-19);},function(){if(dfx.hasClass(icon,'active')===true){self._setBgPosY(icon,-38);}else{self._setBgPosY(icon,0);}});this.buttonEvents[name]=actionFn;dfx.addEvent(icon,'click',function(e){if(dfx.hasClass(icon,'disabled')===false&&self.viper.isEnabled()!==false){self.viper.fireCallbacks('toolbarButtonClicked');actionFn(e);}});if(!this.pluginButtons[plugin]){this.pluginButtons[plugin]=[];}
this.pluginButtons[plugin].push(name);this.buttons[name]=icon;var wrapper=Viper.document.createElement('span');wrapper.appendChild(icon);this.toolbar.firstChild.appendChild(wrapper);this.buttonTitles[name]=[title,title];return wrapper;},setButtonShortcut:function(plugin,buttonName,keys,fn,data)
{var self=this;ViperPluginManager.addKeyPressListener(keys,this,function(e,evtData){self.viper.fireCallbacks('toolbarButtonClicked');return plugin[fn].call(plugin,e,evtData);},data);},setActiveButtonTitle:function(buttonName,title)
{this.buttonTitles[name][1]=title;},remove:function()
{dfx.remove(this.toolbar);},isPluginElement:function(element)
{if(element!==this.toolbar&&dfx.isChildOf(element,this.toolbar)===false){return false;}
return true;}};dfx.noInclusionInherits('ViperToolbarPlugin','ViperPlugin',true);function ViperTrackChangesPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.subToolbarPlugin=null;this.optionCheckboxes={};this._barActive=false;this._newCommentid=null;this._initialising=false;this.viewSettings={finalMode:{},originalMode:{}};}
ViperTrackChangesPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('TrackChanges','track-changes','Track Changes',function(){if(!self.subToolbarPlugin){self._setupSubToolbar(function(){self.toggleTrackChanges();});}else{self.toggleTrackChanges();}});if(ViperChangeTracker.isTracking()===true){this._setupSubToolbar(function(){if(ViperChangeTracker.isTracking()===true){self._barActive=true;self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});}
this.viper.registerCallback('ViperChangeTracker:tracking','ViperTrackChangesPlugin',function(isTracking){if(isTracking===true){self._setupSubToolbar(function(){if(ViperChangeTracker.isTracking()===true){self._barActive=true;self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});}});this.viper.registerCallback('ViperSubToolbar:hideToolbar','ViperTrackChangesPlugin',function(barid){if(barid!=='TrackChanges'&&self._barActive===true&&ViperChangeTracker.isTracking()===true){self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});ViperChangeTracker.addChangeType('viperComment','Comment','comment');ViperChangeTracker.setRejectCallback('viperComment',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('viperComment',function(node,ctnType,changeid){var div=Viper.document.createElement('div');dfx.addClass(div,'viperCommentDiv');div.setAttribute('changeid',changeid);div.setAttribute('id','viperComment-'+changeid);var comment=ViperChangeTracker._comments[changeid]||'&nbsp;';dfx.setHtml(div,comment);dfx.addEvent(div,'mousedown',function(){self.viper.setSubElementState(div,true);dfx.removeEvent(div,'mouseup.viperSubElem');dfx.addEvent(div,'mouseup.viperSubElem',function(e){setTimeout(function(){self.viper.mouseUp(e);},200);});var parent=div.parentNode.parentNode.parentNode;dfx.addClass(parent,'active');});if(self._newCommentid===changeid){self.viper.registerCallback('ViperChangeTracker:infoBoxAdded','ViperTrackChangesPlugin',function(chid){if(chid!==changeid){return;}
var markerElem=ViperChangeTracker.getMarker(changeid);if(markerElem){dfx.trigger(markerElem,'click');}
self.viper.setSubElementState(div,true);div.focus();var parent=div.parentNode.parentNode.parentNode;dfx.addClass(parent,'active');var range=self.viper.getCurrentRange();range.setStart(div.firstChild,0);range.collapse(true);self.viper.removeCallback('ViperChangeTracker:infoBoxAdded','ViperTrackChangesPlugin');});self._newCommentid=null;}
return div;});this.viper.registerCallback('subElementDisabled','ViperTrackChangesPlugin',function(elem){if(elem&&elem.parentNode&&elem.parentNode.parentNode){var parent=elem.parentNode.parentNode.parentNode;dfx.removeClass(parent,'active');}});},toggleTrackChanges:function()
{this._barActive=this.subToolbarPlugin.toggleToolbar('TrackChanges');if(this._barActive===true){this.toolbarPlugin.setButtonActive('track-changes');}else{this.toolbarPlugin.setButtonInactive('track-changes');}
if(ViperChangeTracker.isTracking()===false&&ViperChangeTracker.hasChanges()===false){ViperChangeTracker.enableChangeTracking();}},addComment:function()
{this.viper.focus();var info=ViperUndoManager.createNodeChangeInfo(this.viper.element);var bookmark=this.viper.createBookmark();var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);var eln=elements.length;var changeid=ViperChangeTracker.addChange('viperComment');this._newCommentid=changeid;if(eln===0){var el=Viper.document.createElement('span');dfx.insertBefore(bookmark.start,el);ViperChangeTracker.addNodeToChange(changeid,el);}else{for(var i=0;i<eln;i++){if(ViperChangeTracker.getCTNode(elements[i],'viperComment')===null){this.viper._wrapElement(elements[i],'span',function(newElem){ViperChangeTracker.addNodeToChange(changeid,newElem);});}}}
this.viper.selectBookmark(bookmark);this.viper.fireNodesChanged('ViperTrackChangesPlugin:update');},_setupSubToolbar:function(callback)
{this._initialising=true;ViperChangeTracker.setActionDisplayState('format',true);ViperChangeTracker.setActionDisplayState('comment',true);var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('TrackChanges');var c='ViperTrackChanges-stb';var contents='<div class="'+c+'-left"></div>';contents+='<div class="'+c+'-mid"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(toolbar,contents);var self=this;this.includeWidgets(['Button','RadioButton'],function(){var switchToOriginal=self.createWidget('ViperTrackChanges-switchMode','Button');switchToOriginal.setName('Switch to Original');switchToOriginal.setButtonIconClassName(c+'-switch');switchToOriginal.create(function(el){switchToOriginal.setMinWidth('120px');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');(dfx.getClass(c+'-left',toolbar)[0]).appendChild(el);});switchToOriginal.addClickEvent(function(){if(ViperChangeTracker.getCurrentMode()==='final'){ViperChangeTracker.activateOriginalMode();switchToOriginal.setName('Switch to Final');dfx.removeClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-final');self.changeViewSettings('original');}else{ViperChangeTracker.activateFinalMode();switchToOriginal.setName('Switch to Original');dfx.removeClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-final');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');self.changeViewSettings('final');}});var addComment=self.createWidget('ViperTrackChanges-addComment','Button');addComment.setName('Add Comment');addComment.setButtonIconClassName(c+'-comment');addComment.create(function(el){addComment.setMinWidth('105px');(dfx.getClass(c+'-right',toolbar)[0]).appendChild(el);});addComment.addClickEvent(function(){if(addComment.buttonParts.content){addComment.buttonParts.content.blur();}
self.addComment();});var toggleTracking=self.createWidget('ViperTrackChanges-toggleTracking','Button','ButtonWidgetType-black');toggleTracking.setName('Disable Tracking');toggleTracking.create(function(el){toggleTracking.setMinWidth('101px');dfx.addClass(el,'ViperTrackChanges-toggleTracking-disable');(dfx.getClass(c+'-right',toolbar)[0]).appendChild(el);});toggleTracking.addClickEvent(function(){if(ViperChangeTracker.isTracking()===true){toggleTracking.setName('Enable Tracking');dfx.removeClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-disable');dfx.addClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-enable');ViperChangeTracker.disableChangeTracking();addComment.disable();}else{toggleTracking.setName('Disable Tracking');dfx.removeClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-enable');dfx.addClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-disable');ViperChangeTracker.enableChangeTracking();addComment.enable();}});var optsList=subToolbarPlugin.createOptionsList('Display');(dfx.getClass(c+'-mid',toolbar)[0]).appendChild(optsList.main);self._createOptionList(optsList.contentEl);self.changeViewSettings('final');this._initialising=false;self.subToolbarPlugin=subToolbarPlugin;callback.call(self,subToolbarPlugin);return;});},changeViewSettings:function(mode)
{mode+='Mode';if(!this.viewSettings[mode]){return;}
var self=this;dfx.foreach(this.optionCheckboxes,function(i){if(self.viewSettings[mode][i]){self.optionCheckboxes[i].check();}else{self.optionCheckboxes[i].uncheck();}});},updateViewSetting:function(type,display)
{var mode=ViperChangeTracker.getCurrentMode()+'Mode';this.viewSettings[mode][type]=display;},_createOptionList:function(parent)
{var div=null;var self=this;var opts=ViperChangeTracker.getActionTypes();var displayStates=ViperChangeTracker.getActionDisplayStates();dfx.foreach(opts,function(i){self.viewSettings.finalMode[i]=displayStates[i];self.viewSettings.originalMode[i]=displayStates[i];div=Viper.document.createElement('div');var label=Viper.document.createElement('label');parent.appendChild(div);dfx.setHtml(label,opts[i]);div.appendChild(label);dfx.addClass(div,'ViperTrackChanges-stb-optItem');div.id='ViperTrackChanges-opts-'+i;var radioBtn=self.createWidget(null,'RadioButton',null,displayStates[i]);self.optionCheckboxes[i]=radioBtn;radioBtn.create(function(radioBtnEl){dfx.attr(label,'for',radioBtn.id);div.appendChild(radioBtnEl);radioBtn._addEvents();});(function(radioBtnWidget,type){radioBtnWidget.addCheckedEvent(function(checked){self.toggleChangeTypeDisplayState(type,checked);});})(radioBtn,i);if(i==='Inserts'){dfx.addClass(div,'first');}});self.viewSettings.originalMode.insert=true;self.viewSettings.originalMode.remove=false;if(div){dfx.addClass(div,'last');}},toggleChangeTypeDisplayState:function(type,display)
{this.updateViewSetting(type,display);ViperChangeTracker.setActionDisplayState(type,display,!this._initialising);}};dfx.noInclusionInherits('ViperTrackChangesPlugin','ViperPlugin',true);function Viper(options,callback)
{this.scripts=['ViperSelection','ViperDOMRange','ViperElementMetrics','ViperTextMetrics','ViperIERange','ViperMozRange','XPath','ViperPlugin','ViperPluginManager','ViperUndoManager','ViperChangeTracker'];this.caretInterval=null;this.caret=null;this.CARET_LEFT=1;this.CARET_RIGHT=2;this.currRange=null;this.enabled=false;this.caretContainer=null;this.caretHeight=0;this.caretAtStart=true;this.caretInterval=null;this.inlineMode=false;this._caretColour='#000';this._browserType=null;this._document=document;this._fireNodesChanged=false;this._settings={changeTracking:false};this._subElementActive=false;this._mainElem=null;this.callbacks={};this.stylesURL='';this.viperURL='';if(!options){options={};}
var viperURL=options.viperURL||'./viper';var self=this;this.load(viperURL,function(){if(options){self._processOptions(options,function(){callback.call(self,self);});}});}
Viper.document=document;Viper.window=window;Viper.prototype={load:function(url,callback)
{var self=this;this.loadScripts(url,dfx.clone(this.scripts),function(){self.setViperURL(url);self.setStylesURL(url);self.init();callback.call(self);});},loadScripts:function(url,scripts,callback)
{if(scripts.length===0){callback.call(this);return;}
var script=scripts.shift();if(window[script]){this.loadScripts(url,scripts,callback);}else{var self=this;dfx.includeScript(url+'/'+script+'.js',function(){self.loadScripts(url,scripts,callback);});}},_processOptions:function(options,callback)
{var self=this;for(var op in options){var fn='set'+dfx.ucFirst(op);if(fn==='setSetting'){delete options[op];continue;}
if(dfx.isFn(this[fn])===true){this[fn](options[op],function(){delete options[op];self._processOptions(options,callback);});return;}else{this.setSetting(op,options[op]);delete options[op];self._processOptions(options,callback);return;}}
callback.call(this);},setPluginSets:function(sets,callback)
{var self=this;for(var setName in sets){var set=sets[setName];ViperPluginManager.addPluginSet(setName,set.plugins,true,function(){delete sets[setName];self.setPluginSets(sets,callback);});return;}
if(callback){callback.call(this);}},setSetting:function(setting,value)
{this._settings[setting]=value;},getSetting:function(setting)
{return this._settings[setting];},init:function()
{ViperUndoManager.init(this);ViperPluginManager.init(this);ViperChangeTracker.init(this,false);this._setupCoreTrackChangeActions();ViperChangeTracker.addChangeType('textRemoved','Deleted','remove');ViperChangeTracker.addChangeType('textAdded','Inserted','insert');ViperChangeTracker.addChangeType('merged','Merged','remove');},setMode:function(mode)
{if(mode==='inline'){this.inlineMode=true;}else{this.inlineMode=false;}},getBrowserType:function()
{if(this._browserType===null){var tests=['msie','firefox','chrome','safari'];var tln=tests.length;for(var i=0;i<tln;i++){var r=new RegExp(tests[i],'i');if(r.test(navigator.userAgent)===true){this._browserType=tests[i];return this._browserType;}}
this._browserType='other';}
return this._browserType;},isBrowser:function(browser)
{return(this.getBrowserType()===browser);},_addEvents:function(elem)
{if(!elem){elem=this.element;}
this._document=elem.ownerDocument;Viper.document=this._document;if(this._document.defaultView){Viper.window=this._document.defaultView;}else{Viper.window=window;}
this._removeEvents(elem);var self=this;dfx.addEvent(elem,'mouseup.viper',function(e){setTimeout(function(){self.mouseUp(e);},200);});dfx.addEvent(this._document,'mousedown.viper',function(e){return self.mouseDown(e);});dfx.addEvent(elem,'keypress.viper',function(e){return self.keyPress(e);});dfx.addEvent(elem,'keydown.viper',function(e){return self.keyDown(e);});dfx.addEvent(elem,'keyup.viper',function(e){self.fireCallbacks('Viper:keyup');self.fireCaretUpdated();if(self._fireNodesChanged){self._fireNodesChanged=false;self.fireNodesChanged('Viper:insertNode');}});},_removeEvents:function(elem)
{if(!elem){elem=this.element;}
dfx.removeEvent(this._document,'.viper');dfx.removeEvent(elem,'.viper');},setEnabled:function(enabled)
{if(enabled===true&&this.enabled===false){this._addEvents();var range=this.getCurrentRange();this.element.focus();this.setRange(range._getFirstSelectableChild(this.element),0);this.enabled=true;this.fireCallbacks('viperEnabled');this.element.setAttribute('contentEditable',true);dfx.setStyle(this.element,'outline','none');}else if(enabled===false&&this.enabled===true){ViperChangeTracker.activateFinalMode();this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');this._removeEvents();this.enabled=false;this.fireCallbacks('viperDisabled');ViperChangeTracker.disableChangeTracking();ViperChangeTracker.cleanUp();}},isEnabled:function()
{return this.enabled;},setEditableElement:function(elem)
{if(this.element){this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');}
ViperChangeTracker.cleanUp();this.setSubElementState(null,false);ViperChangeTracker.init(this,false);this.setEnabled(false);this.element=elem;this.initEditableElement();this.setEnabled(true);ViperUndoManager.setActiveElement(elem);this.inlineMode=false;elem.setAttribute('contentEditable',true);dfx.setStyle(elem,'outline','none');if(this.getSetting('changeTracking')===true){ViperChangeTracker.enableChangeTracking();}
this.focus();},initEditableElement:function()
{var elem=this.element;if(!elem){return;}
var tmp=Viper.document.createElement('div');dfx.setHtml(tmp,this.getContents());if(dfx.trim(dfx.getNodeTextContent(tmp)).length===0||dfx.getHtml(tmp)==='&nbsp;'){var tags=dfx.getTag('*',tmp);var hasStubElems=false;dfx.foreach(tags,function(i){if(dfx.isStubElement(tags[i])===true){hasStubElems=true;return false;}});if(hasStubElems!==true){var range=this.getCurrentRange();if(this.inlineMode!==true&&dfx.getStyle(this.element,'display')==='block'){dfx.setHtml(this.element,'<p>&nbsp;</p>');range.setStart(this.element.firstChild.firstChild);}else{dfx.setHtml(this.element,'&nbsp;');range.setStart(this.element.firstChild);}}}},setSubElementState:function(elem,active)
{if(active===true){if(this._subElementActive===true&&this.element!==elem){this.setSubElementState(this.element,false);}
if(this._subElementActive!==true){this._mainElem=this.element;this.element=elem;this._subElementActive=true;this.element.setAttribute('contentEditable',true);dfx.setStyle(this.element,'outline','none');this._addEvents();this.fireCallbacks('subElementEnabled',elem);}}else if(this.element){this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');this._removeEvents();var pelem=this.element;this.element=this._mainElem;this._subElementActive=false;this._mainElem=null;this.fireCallbacks('subElementDisabled',pelem);}},getCurrentRange:function()
{return ViperSelection.getRangeAt(0);},getCaretCoords:function()
{var coords={};try{var bookmark=this.createBookmark();dfx.setStyle(bookmark.end,'display','inline');coords=dfx.getElementCoords(bookmark.end);dfx.remove(bookmark.start);dfx.remove(bookmark.end);}catch(e){coords={x:-1,y:-1};}
return coords;},rangeInViperBounds:function()
{var range=this.getCurrentRange();if(range===null||this.isOutOfBounds(range.startContainer)||this.isOutOfBounds(range.endContainer)){return false;}
return true;},isOutOfBounds:function(element)
{if(element===this.element||dfx.isChildOf(element,this.element)===true){return false;}else if(this._subElementActive===true&&(element===this._mainElem||dfx.isChildOf(element,this._mainElem)===true)){return false;}
return true;},insertNodeAtCaret:function(node)
{var range=this.getCurrentRange();if(range.collapsed!==true){this.deleteContents();this.initEditableElement();range=this.getCurrentRange();if(range.startContainer===range.endContainer&&this.element===range.startContainer){dfx.empty(this.element);this.initEditableElement();var firstSelectable=range._getFirstSelectableChild(this.element);range.setStart(firstSelectable,0);range.collapse(true);}}else if(dfx.isStubElement(range.startContainer.parentNode)===true){var newNode=Viper.document.createTextNode('');dfx.insertBefore(range.startContainer.parentNode,newNode);dfx.remove(range.startContainer.parentNode);range.setStart(newNode,0);range.collapse(true);ViperSelection.addRange(range);}
if(typeof node==='string'){var newNode=Viper.document.createTextNode(node);var noBlock=true;var newRange=this.ctmInsertNodeAtCaret(range,newNode);if(newRange!==false){noBlock=false;}else{newRange=range;}
if(ViperPluginManager.fireNodeInserted(newNode,newRange)===false){noBlock=false;}
if(noBlock===false){return false;}
this.fireNodesChanged('Viper:insertNode');this._fireNodesChanged=true;return;}else{if(node.nodeType===dfx.DOCUMENT_FRAGMENT_NODE){if(this.isBrowser('msie')===true){range.rangeObj.pasteHTML('<span id="__viperMarker"></span>');var marker=dfx.getId('__viperMarker');dfx.insertAfter(marker,node);dfx.remove(marker);range.collapse(false);return;}else{var newNode=null;var clen=node.childNodes.length;for(var i=0;i<clen;i++){var child=node.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){if(dfx.trim(child.data)===''){continue;}}
newNode=Viper.document.importNode(child,true);range.insertNode(newNode);range.selectNode(newNode);range.collapse(false);}
node=newNode;range.moveEnd('character',-1);range.moveEnd('character',1);range.collapse(false);return;}}else if(dfx.isStubElement(range.startContainer)===true){dfx.insertBefore(range.startContainer,node);}else{range.insertNode(node);}
range.setEndAfter(node,(this._getNodeOffset(node)+1));range.collapse(false);}},ctmInsertNodeAtCaret:function(range,node)
{if(ViperChangeTracker.isTracking()===true){if(range.collapsed===false){return range;}
var offset=range.startOffset;var ctNode=null;var startNode=range.getStartNode();if(ViperChangeTracker.getCTNode(startNode,'textRemoved')!==null){return false;}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode===null){if(offset===0){while(startNode){startNode=startNode.previousSibling;if(startNode&&(startNode.nodeType!==dfx.TEXT_NODE||startNode.data.length!==0)){break;}}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode!==null){var newNode=Viper.document.createTextNode('');ctNode.appendChild(newNode);range.setStart(newNode,0);range.collapse(true);}}else if(offset===startNode.data.length){while(startNode){startNode=startNode.nextSibling;if(startNode&&(startNode.nodeType!==dfx.TEXT_NODE||startNode.data.length!==0)){break;}}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode!==null){var newNode=Viper.document.createTextNode('');dfx.insertBefore(ctNode.firstChild,newNode);range.setStart(newNode,0);range.collapse(true);}}}
if(ctNode===null){ctNode=ViperChangeTracker.createCTNode('ins','textAdd',node);ViperChangeTracker.addChange('textAdded',[ctNode]);range.insertNode(ctNode);range.setEnd(node,1);range.collapse(false);ViperSelection.addRange(range);}else{return false;}}else{return false;}
return range;},insertTextAtCaret:function(text)
{if(typeof text!=='string'){throw('InvalidArgumentException: text must be a string');}
return this.insertNodeAtCaret(text);},getInverseColor:function(color)
{color=color.toLowerCase();var forward='0123456789abcdef#';var backward='fedcba9876543210#';var color=color.replace(/./gi,function(chr){return backward.charAt(forward.indexOf(chr));});return color;},_getNodeOffset:function(node)
{var nodes=node.parentNode.childNodes;var ln=nodes.length;for(var i=0;i<ln;i++){if(nodes[i]===node){return i;}}},_getInsertedInfo:function(node)
{return{type:2,node:node,path:XPath.getPath(node)};},_parentWillBeDeleted:function(node)
{if(node.parentNode){var parentContent=dfx.trim(dfx.getNodeTextContent(node.parentNode));if(parentContent===''||parentContent==='&nbsp;'){return true;}else{return false;}}
return false;},_getRangeInfo:function(range)
{var commEl=range.getCommonElement();var info={startOffset:range.startOffset,endOffset:range.endOffset,before:dfx.getHtml(commEl),path:XPath.getPath(commEl),after:'',startContainer:XPath.getPath(range.startContainer),endContainer:XPath.getPath(range.endContainer),collapsed:range.collapsed};return info;},getBlockParent:function(node)
{if(node){while(node.parentNode){node=node.parentNode;if(node===this.element){return null;}
if(dfx.isBlockElement(node)===true){return node;}}}
return null;},getTextContentFromElements:function(elements)
{var text=[];dfx.foreach(elements,function(i){if(elements[i].nodeType===dfx.TEXT_NODE){text.push(elements[i].data);}else{text.push(dfx.getNodeTextContent(elements[i]));}});return text;},deleteContents:function(right)
{var range=this.getCurrentRange();if(range.collapsed===false){this._deleteFromSelection(range);}else{var container=range.startContainer;if(container.nodeType===dfx.ELEMENT_NODE){this._deleteNode(range);}else if(container.nodeType===dfx.TEXT_NODE){if(right===true){this._deleteFromRight(range);}else{this._deleteFromLeft(range);}}}
ViperSelection.addRange(range);this.fireNodesChanged();},_deleteNode:function(range)
{var container=range.startContainer;if(dfx.isStubElement(container)===true){this.removeElem(container);return;}else if(container===this.element&&range.startOffset===0){if(this.inlineMode!==true&&dfx.getStyle(this.element,'display')==='block'){dfx.setHtml(this.element,'<p>&nbsp;</p>');}else{dfx.setHtml(this.element,'&nbsp;');}
range.setStart(this.element.firstChild.firstChild,0);range.collapse(true);return;}},_deleteFromSelection:function(range)
{var bookmark=this.createBookmark();var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);if(ViperChangeTracker.isTracking()===true){var removedText=(this.getTextContentFromElements(elements)).join('');var changeid=ViperChangeTracker.addChange('textRemoved');var eln=elements.length;for(var i=0;i<eln;i++){var elem=elements[i];if(ViperChangeTracker.getCTNode(elem,'textRemoved')===null){if(dfx.isBlockElement(elem)===true){var del=Viper.document.createElement('del');dfx.insertBefore(elem,del);del.appendChild(elem);ViperChangeTracker.addNodeToChange(changeid,del);}else{this._wrapElement(elem,'del',function(newElem){ViperChangeTracker.addNodeToChange(changeid,newElem);});}}}
var startEl=bookmark.start.previousSibling;if(!startEl){startEl=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,startEl);this.selectBookmark(bookmark);range=this.getCurrentRange();range.setStart(startEl,0);}else{this.selectBookmark(bookmark);range=this.getCurrentRange();range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.moveStart(ViperDOMRange.CHARACTER_UNIT,1);}
range.collapse(true);return;}
this.removeElem(elements);var parent=bookmark.start.parentNode;var endParent=bookmark.end.parentNode;this.selectBookmark(bookmark);if(parent&&dfx.getHtml(parent)===''){dfx.setHtml(parent,'&nbsp;');range.setStart(parent.firstChild,0);}
if(endParent&&parent!==endParent&&dfx.getHtml(endParent)===''){dfx.remove(endParent);}
range.collapse(true);},_deleteFromRight:function(range)
{var container=range.startContainer;if(range.endOffset===container.data.length){var cRange=range.cloneRange();cRange.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);var eParent=this.getBlockParent(cRange.endContainer);if(eParent){if(dfx.isChildOf(eParent,this.element)===false){return;}
var sParent=this.getBlockParent(cRange.startContainer);if(eParent!==sParent){this.mergeContainers(eParent,sParent);range.setStart(cRange.startContainer,cRange.startContainer.data.length);range.collapse(true);return;}}
var nextContainer=range.getNextContainer(container);if(dfx.isChildOf(nextContainer,this.element)===false){return false;}
var firstSelectable=range._getFirstSelectableChild(nextContainer);range.setStart(firstSelectable,0);range.collapse(true);range.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);range.deleteContents();range.collapse(true);if(this._parentWillBeDeleted(container)===true){dfx.remove(container.parentNode);}}else{range.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);range.deleteContents();}},_deleteFromLeft:function(range)
{var container=range.startContainer;if(range.startOffset===0){var cRange=range.cloneRange();cRange.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);var sParent=this.getBlockParent(cRange.startContainer);if(sParent){if(dfx.isChildOf(sParent,this.element)===false){return false;}
var eParent=this.getBlockParent(cRange.endContainer);if(eParent!==sParent){this.mergeContainers(eParent,sParent);range.setStart(cRange.startContainer,cRange.startContainer.data.length);range.collapse(true);return;}}
var previousContainer=range.getPreviousContainer(container);if(dfx.isChildOf(previousContainer,this.element)===false){return false;}
if(dfx.isStubElement(previousContainer)===true){if(ViperChangeTracker.isTracking()===true){range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);dfx.addClass(previousContainer,ViperChangeTracker.getCTNodeClass('textRemoved'));dfx.attr(previousContainer,'title','Content removed');}else{dfx.remove(previousContainer);}
range.collapse(true);}else{var lastSelectable=range._getLastSelectableChild(previousContainer);range.setStart(lastSelectable,lastSelectable.data.length);if(ViperChangeTracker.isTracking()===true){this._addTextNodeTracking(lastSelectable,range);}else{range.collapse(true);range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.deleteContents();if(this._parentWillBeDeleted(container)===true){dfx.remove(container.parentNode);}}}}else{var textNode=range.getStartNode();var isTracking=ViperChangeTracker.isTracking();var textAddNode=null
if(isTracking===true){textAddNode=ViperChangeTracker.getCTNode(textNode,'textAdd');}
if(isTracking===true&&textAddNode===null){this._addTextNodeTracking(textNode,range);}else{range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.deleteContents();if(dfx.isBlank(dfx.getNodeTextContent(textAddNode))===true){var prevSibling=textAddNode.previousSibling;if(!prevSibling||prevSibling.nodeType!==dfx.TEXT_NODE){prevSibling=Viper.document.createTextNode('');dfx.insertBefore(textAddNode,prevSibling);}
range.setStart(prevSibling,prevSibling.data.length);dfx.remove(textAddNode);}}}},_addTextNodeTracking:function(textNode,range,del)
{if(range.startOffset===0||ViperChangeTracker.getCTNode(textNode,'textRemoved')!==null){return;}
var beforeText=textNode.nodeValue.substring(0,(range.startOffset-1));var removedChar=textNode.nodeValue.substr((range.startOffset-1),1);var afterText=textNode.nodeValue.substring(range.startOffset);if(range.startOffset===1){var ctNode=ViperChangeTracker.getCTNode(textNode.previousSibling,'textRemoved');if(ctNode){if(ctNode.lastChild&&ctNode.lastChild.nodeType===dfx.TEXT_NODE){ctNode.lastChild.nodeValue+=removedChar;range.setStart(ctNode.lastChild,(ctNode.lastChild.nodeValue.length-1));}else{var charNode=Viper.document.createTextNode(removedChar);ctNode.appendChild(charNode);range.setStart(charNode,0);}
textNode.nodeValue=beforeText+afterText;range.collapse(true);return;}}
if(range.startOffset===textNode.nodeValue.length){var ctNode=ViperChangeTracker.getCTNode(textNode.nextSibling,'textRemoved');if(ctNode){if(ctNode.firstChild&&ctNode.firstChild.nodeType===dfx.TEXT_NODE){ctNode.firstChild.nodeValue=removedChar+ctNode.firstChild.nodeValue;}else{var charNode=Viper.document.createTextNode(removedChar);dfx.insertBefore(ctNode.firstChild,charNode);}
textNode.nodeValue=beforeText;range.setStart(textNode,textNode.nodeValue.length);range.collapse(true);return;}}
var ctNode=ViperChangeTracker.createCTNode('del','textRemoved');var newNode=textNode.splitText(range.startOffset-1);newNode.nodeValue=newNode.nodeValue.substring(1);ViperChangeTracker.addChange('textRemoved',[ctNode]);dfx.insertAfter(textNode,newNode);ctNode.firstChild.nodeValue=removedChar;dfx.insertAfter(textNode,ctNode);range.setStart(textNode,textNode.nodeValue.length);range.collapse(true);},getNextSiblingElementNode:function(node)
{while(node.nextSibling){if(node.nextSibling.nodeType===dfx.ELEMENT_NODE){return node.nextSibling;}
node=node.nextSibling;}
return false;},mergeContainers:function(node,mergeToNode)
{if(!node||!mergeToNode){return false;}
if(ViperChangeTracker.isTracking()===true){var del=Viper.document.createElement('del');mergeToNode.appendChild(del);ViperChangeTracker.addChange('merged',[del]);}
if(node.nodeType===dfx.TEXT_NODE||dfx.isStubElement(node)===true){mergeToNode.appendChild(node);}else if(node.nodeType===dfx.ELEMENT_NODE){while(node.firstChild){mergeToNode.appendChild(node.firstChild);}
dfx.remove(node);}
return true;},surroundContents:function(tag)
{var range=this.getCurrentRange();var otag=tag;if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.getCurrentMode()==='original'){tag='span';}
if(range.collapsed!==true){var startContainer=range.getStartNode();var endContainer=range.getEndNode();if(startContainer===endContainer){if(startContainer.nodeType===dfx.TEXT_NODE){var node=Viper.document.createElement(tag);var rangeContent=range.toString();dfx.setNodeTextContent(node,rangeContent);if(ViperChangeTracker.isTracking()===true){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(node,'tagName',otag);}
ViperChangeTracker.addChange('formatChange',[node]);}
range.deleteContents();range.insertNode(node);range.setStart(node.firstChild,0);range.setEnd(node.firstChild,node.firstChild.length);ViperSelection.addRange(range);}else{var self=this;var changeid=null;if(ViperChangeTracker.isTracking()===true){changeid=ViperChangeTracker.addChange('formatChange',[newElem]);}
this._wrapElement(startContainer.childNodes[range.startOffset],tag,function(newElem){if(changeid!==null){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(newElem,'tagName',otag);}
ViperChangeTracker.addNodeToChange(changeid,newElem);}});}}else{var bookmark=this.createBookmark();var startContainer=null;var endContainer=null;startContainer=bookmark.start.previousSibling;endContainer=bookmark.end.nextSibling;if(!endContainer){endContainer=Viper.document.createTextNode('');dfx.insertAfter(bookmark.end,endContainer);}
if(!startContainer){startContainer=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,startContainer);}
var elements=dfx.getElementsBetween(startContainer,endContainer);var c=elements.length;var self=this;var changeid=null;if(ViperChangeTracker.isTracking()===true){changeid=ViperChangeTracker.addChange('formatChange');}
for(var i=0;i<c;i++){this._wrapElement(elements[i],tag,function(newElem){if(changeid!==null){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(newElem,'tagName',otag);}
ViperChangeTracker.addNodeToChange(changeid,newElem);}});}
this.selectBookmark(bookmark);}}},_wrapElement:function(parent,tag,callback)
{if(!parent){return;}else if(dfx.attr(parent,'viperbookmark')){return;}
if(parent.nodeType===dfx.TEXT_NODE){if(parent.textContent!==''){if(parent.previousSibling&&parent.previousSibling.nodeType===dfx.TEXT_NODE){if(parent.previousSibling.nodeValue===''){dfx.remove(parent.previousSibling);}}
if(parent.previousSibling&&parent.previousSibling.tagName&&parent.previousSibling.tagName.toLowerCase()===tag&&!dfx.attr(parent.previousSibling,'viperbookmark')){parent.previousSibling.appendChild(parent);}else{var elem=Viper.document.createElement(tag);dfx.setNodeTextContent(elem,parent.nodeValue);dfx.insertBefore(parent,elem);dfx.remove(parent);if(callback){callback.call(this,elem);}}}}else if(dfx.isStubElement(parent)===false){if(dfx.isBlockElement(parent)===false&&this.hasBlockChildren(parent)===false){if(parent.tagName.toLowerCase()!==tag){if(parent.previousSibling&&parent.previousSibling.tagName&&parent.previousSibling.tagName.toLowerCase()===tag&&dfx.isBlockElement(parent)===false&&!dfx.attr(parent.previousSibling,'viperbookmark')){parent.previousSibling.appendChild(parent);}else{var elem=Viper.document.createElement(tag);dfx.insertBefore(parent,elem);elem.appendChild(parent);this.removeTagFromChildren(elem,tag);if(callback){callback.call(this,elem);}}}}else{var c=parent.childNodes.length;for(var i=0;i<c;i++){this._wrapElement(parent.childNodes[i],tag,callback);}}}},removeTagFromChildren:function(parent,tag,incParent)
{if(parent.tagName&&parent.tagName.toLowerCase()==='span'&&dfx.hasClass(parent,'_my4_keyword')===true){return;}
var c=parent.childNodes.length;var childNodes=[];for(var i=0;i<c;i++){childNodes.push(parent.childNodes[i]);}
for(var i=0;i<c;i++){var child=childNodes[i];if(child.nodeType===dfx.ELEMENT_NODE){this.removeTagFromChildren(child,tag,true);}}
if(incParent===true){this.removeTag(parent,tag);}},removeTag:function(elem,tag)
{if(elem.parentNode&&elem.parentNode.nodeType===dfx.ELEMENT_NODE){if(elem.nodeType===dfx.ELEMENT_NODE){if(elem.tagName.toLowerCase()===tag){var span=null;if(ViperChangeTracker.isTracking()===true){span=Viper.document.createElement('span');ViperChangeTracker.setCTData(span,'tagName',tag);dfx.insertBefore(elem,span);ViperChangeTracker.addChange('removedFormat',[span]);}
while(elem.firstChild){if(span!==null){span.appendChild(elem.firstChild);}else{dfx.insertBefore(elem,elem.firstChild);}}
dfx.remove(elem);}}}},removeStylesBetweenElems:function(start,end,style)
{var elems=dfx.getElementsBetween(start,end);elems.unshift(start);var len=elems.length;for(var i=0;i<len;i++){this.removeTagFromChildren(elems[i],style,true);}},_getOuterTag:function(node,right)
{if(right!==true){if(!node.previousSibling||(node.previousSibling.nodeType===dfx.TEXT_NODE&&dfx.isBlank(node.previousSibling.data)===true)){var parent=node.parentNode;if(parent&&dfx.isBlockElement(parent)===false){return this._getOuterTag(parent,right);}}}else{if(!node.nextSibling||(node.nextSibling.nodeType===dfx.TEXT_NODE&&dfx.isBlank(node.nextSibling.data)===true)){var parent=node.parentNode;if(parent&&dfx.isBlockElement(parent)===false){return this._getOuterTag(parent,right);}}}
return node;},removeStyle:function(style)
{var range=this.getCurrentRange();var startNode=range.getStartNode();var endNode=range.getEndNode();var startParents=dfx.getParents(startNode,style,this.element);var endParents=dfx.getParents(endNode,style,this.element);this.removeStylesBetweenElems(startNode,endNode,style);if(startParents.length===0&&endParents.length===0){ViperSelection.addRange(range);return;}
var bookmark=this.createBookmark(range);var startTopParent=startParents.pop();var endTopParent=endParents.pop();if(startTopParent===endTopParent){var start=startTopParent.cloneNode(true);var selection=startTopParent.cloneNode(true);var end=startTopParent.cloneNode(true);var lastChild=dfx.getLastChild(start);var elemsBetween=dfx.getElementsBetween(this.getBookmark(start,'start'),lastChild);elemsBetween.push(this.getBookmark(start,'start'));elemsBetween.push(this.getBookmark(start,'end'));elemsBetween.push(lastChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(end);var elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(end,'end'));elemsBetween.push(this.getBookmark(end,'end'));elemsBetween.push(this.getBookmark(end,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(selection);var elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(selection,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var lastChild=dfx.getLastChild(selection);var elemsBetween=dfx.getElementsBetween(this.getBookmark(selection,'end'),lastChild);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(selection);this.removeTagFromChildren(div,style,true);dfx.removeEmptyNodes(start);dfx.removeEmptyNodes(end);dfx.removeEmptyNodes(div,function(elToDel){if(dfx.isTag(elToDel,'span')===true&&dfx.hasClass(elToDel,'viperBookmark')===true){return false;}});if(start.firstChild){dfx.insertBefore(startTopParent,start);}
dfx.insertBefore(startTopParent,div.childNodes);if(end.firstChild){dfx.insertBefore(startTopParent,end);}
dfx.remove(startTopParent);var originalBookmark={start:this.getBookmark(this.element,'start'),end:this.getBookmark(this.element,'end')};this.selectBookmark(originalBookmark);return;}
if(startTopParent){var clone=startTopParent.cloneNode(true);var lastChild=dfx.getLastChild(startTopParent);var elemsBetween=dfx.getElementsBetween(bookmark.start,lastChild);elemsBetween.push(bookmark.start);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(clone);elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(clone,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(clone);this.removeTagFromChildren(div,style);dfx.insertAfter(startTopParent,div.childNodes);}
if(endTopParent){var clone=endTopParent.cloneNode(true);var firstChild=dfx.getFirstChild(endTopParent);var elemsBetween=dfx.getElementsBetween(firstChild,bookmark.end);elemsBetween.push(bookmark.end);elemsBetween.push(firstChild);dfx.remove(elemsBetween);var lastChild=dfx.getLastChild(clone);elemsBetween=dfx.getElementsBetween(this.getBookmark(clone,'end'),lastChild);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(clone);this.removeTagFromChildren(div,style);dfx.insertBefore(endTopParent,div.childNodes);}
var originalBookmark={start:this.getBookmark(this.element,'start'),end:this.getBookmark(this.element,'end')};this.selectBookmark(originalBookmark);},selectBookmark:function(bookmark)
{if(this.element){this.element.focus();}
var range=this.getCurrentRange();var startPos=null;var endPos=null;var startOffset=0;var endOffset=null;if(bookmark.start.nextSibling===bookmark.end||dfx.getElementsBetween(bookmark.start,bookmark.end).length===0){if(bookmark.end.nextSibling){startPos=dfx.getFirstChild(bookmark.end.nextSibling);}else if(bookmark.start.previousSibling){startPos=dfx.getFirstChild(bookmark.start.previousSibling);if(startPos.nodeType===dfx.TEXT_NODE){startOffset=startPos.length;}}else{bookmark.end.parentNode.appendChild(Viper.document.createTextNode(''));startPos=dfx.getFirstChild(bookmark.end.nextSibling);}}else{if(bookmark.start.nextSibling){startPos=dfx.getFirstChild(bookmark.start.nextSibling);}else{if(!bookmark.start.previousSibling){var tmp=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,tmp);}
startPos=dfx.getLastChild(bookmark.start.previousSibling);startOffset=startPos.length;}
if(bookmark.end.previousSibling){endPos=dfx.getLastChild(bookmark.end.previousSibling);}else{endPos=dfx.getFirstChild(bookmark.end.nextSibling);endOffset=0;}}
dfx.remove([bookmark.start,bookmark.end]);if(endPos===null){range.setEnd(startPos,startOffset);range.collapse(false);}else{range.setStart(startPos,startOffset);if(endOffset===null){endOffset=(endPos.length||0);}
range.setEnd(endPos,endOffset);}
try{ViperSelection.addRange(range);}catch(e){}},getBookmark:function(parent,type)
{var elem=dfx.getClass('viperBookmark_'+type,parent)[0];return elem;},removeBookmarks:function(elem)
{dfx.remove(dfx.getClass('viperBookmark',elem,'span'));},createBookmark:function(range,keepOldBookmarks)
{if(keepOldBookmarks!==true){this.removeBookmarks(this.element);}
var currRange=range||this.getCurrentRange();var range=currRange.cloneRange();var startContainer=range.startContainer;var endContainer=range.endContainer;var startOffset=range.startOffset;var endOffset=range.endOffset;range.collapse(false);var endBookmark=Viper.document.createElement('span');endBookmark.style.display='none';dfx.setHtml(endBookmark,'&nbsp;');dfx.addClass(endBookmark,'viperBookmark viperBookmark_end');endBookmark.setAttribute('viperBookmark','end');range.insertNode(endBookmark);if(dfx.isChildOf(endBookmark,this.element)===false){this.element.appendChild(endBookmark);}
range.setStart(startContainer,startOffset);range.collapse(true);var startBookmark=Viper.document.createElement('span');startBookmark.style.display='none';dfx.addClass(startBookmark,'viperBookmark viperBookmark_start');dfx.setHtml(startBookmark,'&nbsp;');startBookmark.setAttribute('viperBookmark','start');try{range.insertNode(startBookmark);if(startBookmark.previousSibling===endBookmark){var tmp=startBookmark;startBookmark=endBookmark;endBookmark=tmp;}}catch(e){dfx.insertBefore(endBookmark,startBookmark);}
if(dfx.isChildOf(startBookmark,this.element)===false){if(this.element.firstChild){dfx.insertBefore(this.element.firstChild,startBookmark);}else{this.element.appendChild(startBookmark);}}
if(!endBookmark.previousSibling){var tmp=Viper.document.createTextNode('');dfx.insertBefore(endBookmark,tmp);}
if(!startBookmark.nextSibling){var tmp=Viper.document.createTextNode('');dfx.insertAfter(startBookmark,tmp);}
currRange.setStart(startBookmark.nextSibling,0);currRange.setEnd(endBookmark.previousSibling,(endBookmark.previousSibling.length||0));var bookmark={start:startBookmark,end:endBookmark};return bookmark;},insertNodeAtBookmark:function(node,bookmark,noSelect)
{if(!bookmark||!node){return;}
dfx.insertBefore(bookmark.start,node);if(noSelect!==true){this.selectBookmark(bookmark);}},splitNodeAtRange:function(tag,range,copyMidTags)
{range=range||this.getCurrentRange();var bookmark=this.createBookmark(range);return this.splitNodeAtBookmark(tag,bookmark,copyMidTags);},splitNodeAtBookmark:function(tag,bookmark,copyMidTags)
{if(!bookmark){return;}
var node=bookmark.start.parentNode;var foundNode=null;while(node&&node!==this.element){if(dfx.isTag(node,tag)===true){foundNode=node;}
node=node.parentNode;}
var prevNode=null;var nextNode=null;var midNode=null;if(foundNode===null){prevNode=bookmark.start.previousSibling;nextNode=bookmark.end.nextSibling;if(!prevNode&&!nextNode){prevNode=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,prevNode);nextNode=prevNode;}else if(!prevNode&&nextNode){prevNode=nextNode;}else if(!nextNode&&prevNode){nextNode=prevNode;}}else{var prevElem=null;var newElem=null;var midElem=null;var toRemove=[];var parents=[];var prevLvl=null;dfx.walk(foundNode,function(elem,lvl){if(elem===bookmark.start){return false;}
if(elem.nodeType===dfx.TEXT_NODE){toRemove.push(elem);parents[(lvl-1)].appendChild(elem.cloneNode(false));}else{var clone=elem.cloneNode(false);if(prevLvl===null){newElem=clone;parents.push(clone);}else if(lvl===prevLvl){parents[(lvl-1)].appendChild(clone);parents.push(clone);}else if(lvl>prevLvl){parents[prevLvl]=prevElem;}else if(lvl<prevLvl){parents.pop();parents.push(clone);parents[(lvl-1)].appendChild(clone);}
if(copyMidTags===true){if(dfx.isTag(elem,tag)===false){if(midElem===null){midElem=elem.cloneNode(false);}else{midElem.appendChild(elem.cloneNode(false));}}}
prevElem=clone;}
prevLvl=lvl;});dfx.remove(toRemove);toRemove=null;if(this.elementIsEmpty(newElem)===false){dfx.insertBefore(foundNode,newElem);}else{newElem=null;}
if(midElem!==null){dfx.insertBefore(foundNode,midElem);}
prevNode=newElem;nextNode=foundNode;midNode=midElem;}
this.selectBookmark(bookmark);return{prevNode:prevNode,nextNode:nextNode,midNode:midNode};},hasBlockChildren:function(parent)
{var c=parent.childNodes.length;for(var i=0;i<c;i++){if(parent.childNodes[i].nodeType===dfx.ELEMENT_NODE){if(dfx.isBlockElement(parent.childNodes[i])===true){return true;}}}
return false;},elementIsEmpty:function(elem)
{if(dfx.isBlank(dfx.getNodeTextContent(elem))===true){var tags=dfx.getTag('*',elem);var ln=tags.length;for(var i=0;i<ln;i++){if(dfx.isStubElement(tags[i])===true){return false;}}
return true;}
return false;},_handleAncillaryKey:function(e)
{var key=e.keyCode;var preventDefault=true;var shiftKey=e.shiftKey;switch(key){case dfx.DOM_VK_DELETE:this.deleteContents();ViperPluginManager.fireKeyPressed(e);break;case dfx.DOM_VK_DOWN:case dfx.DOM_VK_UP:case dfx.DOM_VK_LEFT:case dfx.DOM_VK_RIGHT:ViperPluginManager.fireCaretPositioned();preventDefault=false;break;default:preventDefault=false;break;}
if(preventDefault===true){dfx.preventDefault(e);return false;}
if(key===46){this._fireNodesChanged=true;}
return true;},keyDown:function(e)
{if(this.pluginActive()===true&&ViperPluginManager.allowTextInput!==true){return;}
if(!ViperPluginManager.fireKeyDown(e)){return false;}
var preventDefaul=false;if(this._handleSpecialKey(e)===false){if(this.isBrowser('msie')!==true){this._preventKeyPress=true;}
return false;}else if((e.ctrlKey===true||e.metaKey===true)&&(this.isBrowser('msie')===true||this.isBrowser('chrome')===true)){if(!ViperPluginManager.fireKeyPressed(e)){return false;}}
switch(e.keyCode){case 27:this.fireClickedOutside();break;default:if(/Firefox/.test(navigator.userAgent)!==true){preventDefaul=!(this._handleAncillaryKey(e));}
break;}
if(preventDefaul===true){dfx.preventDefault(e);return false;}
return true;},keyPress:function(e)
{if(this._preventKeyPress===true){this._preventKeyPress=false;return;}
if(this.enabled!==true){return;}
if(this.pluginActive()===true&&ViperPluginManager.allowTextInput!==true){return;}
if(!this.rangeInViperBounds()){var range=this.getCurrentRange();if(range===null){return true;}
var commEl=range.getCommonElement();if(dfx.isChildOf(this.element,commEl)===true){var startNode=range.getStartNode();var endNode=range.getEndNode();if(dfx.isChildOf(startNode,this.element)!==true){range.setStart(range._getFirstSelectableChild(this.element),0);}
if(dfx.isChildOf(endNode,this.element)!==true){var lastSelectable=range._getLastSelectableChild(this.element);range.setEnd(lastSelectable,lastSelectable.length);}
ViperSelection.addRange(range);}else{if(e.keyCode===8){return false;}
return true;}}
if(!ViperPluginManager.fireKeyPressed(e)){return false;}
var char=null;if(e.which===null){char=String.fromCharCode(e.keyCode);}else if(e.which>0){char=String.fromCharCode(e.which);}
if(char!==null&&e.ctrlKey!==true&&e.metaKey!==true){switch(e.keyCode){case dfx.DOM_VK_DELETE:return this._handleAncillaryKey(e);break;default:if(this.insertTextAtCaret(char)===false){return false;}
break;}}
return this._handleAncillaryKey(e);},_handleSpecialKey:function(e)
{var keyCode=e.which;if(keyCode===null){keyCode=e.keyCode;}
var preventDefault=false;switch(keyCode){case 65:if(e.ctrlKey===true||e.metaKey===true){preventDefault=true;var range=this.getCurrentRange();if(this.isBrowser('msie')===true){var selStart=Viper.document.createTextNode('');var selEnd=Viper.document.createTextNode('');if(this.element.firstChild){dfx.insertBefore(this.element.firstChild,selStart);}else{this.element.appendChild(selStart);}
this.element.appendChild(selEnd);range.setStart(selStart,0);range.setEnd(selEnd,0);}else{range.setStart(range._getFirstSelectableChild(this.element),0);var lastSelectable=range._getLastSelectableChild(this.element);range.setEnd(lastSelectable,lastSelectable.length);}
ViperSelection.addRange(range);}
break;default:break;}
if(preventDefault===true){dfx.preventDefault(e);return false;}
return true;},focus:function()
{if(this.element){try{this.element.focus();this.fireCaretUpdated();}catch(e){}}},setRange:function(elem,pos)
{var range=this.getCurrentRange();range.setStart(elem,pos);range.collapse(true);return range;},mouseUp:function(e,target)
{if(ViperPluginManager.fireClicked(e)===false){return false;}
var range=this.getCurrentRange();if(!range){var target=dfx.getMouseEventTarget(e);if(dfx.isStubElement(target)===true){var range=ViperSelection.createRange();range.selectNodeContents(target);ViperSelection.addRange(range);}}else if(range.collapsed===true){var target=dfx.getMouseEventTarget(e);if(dfx.isStubElement(target)===true){range.selectNodeContents(target);}else if(range.startContainer.nodeType!==dfx.TEXT_NODE){var startCont=range.startContainer;var elem=startCont.childNodes[range.startOffset];var selNode=null;if(elem){if(elem.firstChild){selNode=range._getFirstSelectableChild(elem);if(selNode&&dfx.isBlank(selNode.data)===true){selNode.data='';}}else{dfx.setHtml(elem,'&nbsp;');selNode=elem.firstChild;}
if(selNode){range.setStart(selNode,0);range.collapse(true);}}}else if(range.startOffset===1&&range.startContainer.data===String.fromCharCode(160)){range.setStart(range.startContainer,0);range.collapse(true);}}
ViperSelection._lastRange=null;if(this.caret){this.caret.style.visibility='hidden';}
ViperPluginManager.fireSelectionChanged(range);this.fireCallbacks('caretPositioned',{range:range});},setStylesURL:function(url)
{this.stylesURL=url;var viperCSS=this.stylesURL+'/viper.css';dfx._includeCss(viperCSS);},setViperURL:function(url,callback)
{this.viperURL=url;ViperPluginManager.pluginsURL=url+'/plugins/';if(callback){callback.call(this);}},getStylesURL:function()
{return this.stylesURL;},fireCaretUpdated:function()
{ViperPluginManager.fireCaretUpdated();},fireNodesChanged:function(type,noFocus)
{type=type||'text_change';this.fireCallbacks('nodesChanged');ViperUndoManager.add('viper',type);ViperChangeTracker.updatePositionMarkers(true);if(noFocus!==true){this.focus();}},isChildOfElems:function(el,parents)
{while(el&&el.parentNode){if(parents.inArray(el.parentNode)===true){return true;}
el=el.parentNode;}
return false;},isChildOfClass:function(el,className,checkSelf)
{if(checkSelf===true&&el&&dfx.hasClass(el.parentNode,className)===true){return true;}
while(el&&el.parentNode){if(dfx.hasClass(el.parentNode,className)===true){return true;}
el=el.parentNode;}
return false;},mouseDown:function(e,target)
{if(e){if(ViperPluginManager.fireMouseDown(e)===false){return false;}}
if(!target){target=dfx.getMouseEventTarget(e);}
if(target!==this.element){if(dfx.isTag(target,'html')===true){return;}
var elems=[this.element,dfx.getId('Help'),dfx.getId('HelpEditingToolbarIcon')];if(this._subElementActive===true){if(target===this._mainElem||dfx.isChildOf(target,this._mainElem)===true){this.setSubElementState(null,false);return;}}
if(this.isChildOfElems(target,elems)===false){if(this.isChildOfClass(target,'_viper-CT-marker',true)===false&&this.isChildOfClass(target,'_viper-CT-infoBoxHolder',true)===false){this.fireClickedOutside(target);}}else{this.fireCaretUpdated();}}},_setupCoreTrackChangeActions:function()
{var self=this;ViperChangeTracker.setApproveCallback('textRemoved',function(clone,node){self.removeElem(node);});ViperChangeTracker.setRejectCallback('textRemoved',function(clone,node){while(node.firstChild){if(node.firstChild.nodeType===dfx.ELEMENT_NODE&&ViperChangeTracker.isTrackingNode(node.firstChild)){dfx.remove(node.firstChild);}else{dfx.insertBefore(node,node.firstChild);}}
self.removeElem(node);});ViperChangeTracker.setApproveCallback('textAdded',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
self.removeElem(node);});ViperChangeTracker.setRejectCallback('textAdded',function(clone,node){self.removeElem(node);});ViperChangeTracker.setApproveCallback('merged',function(clone,node){self.removeElem(node);});ViperChangeTracker.setDescriptionCallback('merged',function(node){return'Text';});ViperChangeTracker.setRejectCallback('merged',function(clone,node){var newParent=node.parentNode.cloneNode(false);dfx.insertAfter(node.parentNode,newParent);var elems=dfx.getElementsBetween(node,newParent);var elem=null;while(elem=elems.shift()){newParent.appendChild(elem);}
self.removeElem(node);});ViperChangeTracker.setApproveCallback('viperComment',function(clone,node){ViperChangeTracker.removeTrackChanges(node,false);});},fireClickedOutside:function(clickedElement)
{if(this.isPluginElement(clickedElement)===true){return;}
if(this.pluginActive()===true){return;}
this.setEnabled(false);this.fireCallbacks('clickedOutside');},pluginActive:function()
{return(ViperPluginManager.getActivePlugin()!==null);},isPluginElement:function(element)
{return ViperPluginManager.isPluginElement(element);},registerCallback:function(type,namespace,callback)
{if(dfx.isFn(callback)===false){return;}
if(!this.callbacks[type]){this.callbacks[type]={namespaces:{},others:[]};}
if(namespace){if(!this.callbacks[type].namespaces[namespace]){this.callbacks[type].namespaces[namespace]=[];}
this.callbacks[type].namespaces[namespace]=callback;}else{this.callbacks[type].others.push(callback);}},fireCallbacks:function(type,data,doneCallback)
{if(this.callbacks[type]){var callbackList=[];for(var namespace in this.callbacks[type].namespaces){if(this.callbacks[type].namespaces.hasOwnProperty(namespace)===true){var callback=this.callbacks[type].namespaces[namespace];if(callback){callbackList.push(callback);}}}
var len=this.callbacks[type].others.length;for(var i=0;i<len;i++){callbackList.push(this.callbacks[type].others[i]);}
this._fireCallbacks(callbackList,data,doneCallback);}},_fireCallbacks:function(callbacks,data,doneCallback)
{if(callbacks.length===0){if(doneCallback){doneCallback.call(this,data);}
return;}
var callback=callbacks.shift();if(dfx.isFn(callback)===true){var self=this;var retVal=callback.call(this,data,function(){self._fireCallbacks(callbacks,data,doneCallback);});if(retVal!==false){this._fireCallbacks(callbacks,data,doneCallback);}}},removeCallback:function(type,namespace)
{if(!type){if(namespace){for(var type in this.callbacks){if(this.callbacks.hasOwnProperty(type)===true){this.removeCallback(type,namespace);}}}}else if(this.callbacks[type]){if(namespace){if(this.callbacks[type].namespaces[namespace]){this.callbacks[type].namespaces[namespace]=[];}}else{delete this.callbacks[type];}}},getHtml:function(elem)
{elem=elem||this.element;if(typeof elem==='string'){var tmp=elem;elem=Viper.document.createElement('div');dfx.setHtml(elem,tmp);}
var clone=elem.cloneNode(true);this.removeEmptyNodes(clone);this._removeViperElements(clone);this.fireCallbacks('getHtml',{element:clone});var html=dfx.getHtml(clone);html=this._fixHtml(html);return html;},getSaveContent:function(elem)
{if(this.element===elem){ViperChangeTracker.activateFinalMode();}
var html=this.getHtml(elem);var info=ViperChangeTracker.getTrackingInfo(elem);if(info){html+='<!--viperTrackInfo='+dfx.jsonEncode(info)+'-->';}
return html;},getContents:function(elem)
{elem=elem||this.element;var clone=elem.cloneNode(true);this._removeViperElements(clone);this.fireCallbacks('getContents',{element:clone});var html=dfx.getHtml(clone);return html;},_removeViperElements:function(elem)
{var bookmarks=dfx.getClass('viperBookmark',elem);if(bookmarks){dfx.remove(bookmarks);}
var caret=dfx.getClass('viper_caret',elem);if(caret){dfx.remove(caret);}
caret=dfx.getId('caret');dfx.remove(caret);},setContents:function(contents)
{if(typeof contents==='string'){this.element.innerHTML=contents;}else if(contents){this.element.appendChild(contents);}
this.fireCallbacks('setContents',{element:this.element});this.initEditableElement();},setHtml:function(contents,callback)
{var clone=Viper.document.createElement('div');if(typeof contents==='string'){dfx.setHtml(clone,contents);}else if(contents){clone.appendChild(contents);}
this.removeEmptyNodes(clone);var self=this;this.fireCallbacks('setHtml',{element:clone},function(){dfx.setHtml(self.element,dfx.getHtml(clone));self.initEditableElement();if(callback){callback.call(this);}});},_cleanDOM:function(elem)
{if(!elem)return;if(elem.firstChild){this._cleanDOM(elem.firstChild);}
var nextSibling=elem.nextSibling;this._cleanNode(elem);if(nextSibling){this._cleanDOM(nextSibling);}},_cleanNode:function(node)
{if(node.nodeType===dfx.ELEMENT_NODE){switch(node.tagName.toLowerCase()){case'br':if(!node.nextSibling&&node.hasAttribute&&node.hasAttribute('_moz_dirty')){dfx.remove(node);}
break;}}else if(node.nodeType===dfx.TEXT_NODE){if(dfx.trim(node.data)===''&&dfx.isTag(node.parentNode,'td')===false){dfx.remove(node);}}},removeEmptyNodes:function(element,content)
{if(!content){if(!element){element=this.element;}
this._cleanDOM(element);content=dfx.getHtml(element);}
var rep=content.replace(/<(\w+)(?![^>]*(changeid))[^>]*>\s*<\/\1>/g,'');if(rep&&rep!==content){return this.removeEmptyNodes(element,rep);}else{dfx.setHtml(element,rep);}},_fixHtml:function(html)
{return dfx.fixHtml(html);},removeElem:function(elem)
{if(dfx.isArray(elem)===true){var eln=elem.length;for(var i=0;i<eln;i++){this.removeElem(elem[i]);}}else if(elem){var parent=elem.parentNode;dfx.remove(elem);if(parent){for(var node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType!==dfx.TEXT_NODE||node.nodeValue.length!==0){return;}}
dfx.remove(parent);}}}};var ViperChangeTracker={_className:'_viper-CT',_nodeClassName:'_viper-CTNode',_tracking:false,_nodeTypeVisibility:{},_viper:null,_updateTimer:null,_updateDelay:600,_infoBoxHolder:null,_markerHolder:null,_processingMarkers:false,_changes:{},_changeSeq:0,_users:{},_descCallbacks:{},_changeTypes:{},_colours:['green','blue','red','yellow','orange','purple','pink'],_userColours:{},_rejectCallbacks:{},_approveCallbacks:{},_comments:{},_batchChangeid:null,_actionTypes:{remove:'Deletes',insert:'Inserts',format:'Format',comment:'Comments'},_actionTypeDisplayStates:{insert:false,remove:true,format:true,comment:true},_currentMode:null,_orientation:'right',_tmpData:{},init:function(viper,trackChanges)
{var self=this;this._viper=viper;this._tracking=trackChanges||false;this.cleanUp();this._viper.registerCallback('nodesChanged','ViperChangeTracker',function(){if(self._viper._subElementActive===true){var commentElemId=self._viper.element.id;var changeid=commentElemId.replace('viperComment-','');self._comments[changeid]=self._viper.getHtml(self._viper.element);}});this._viper.registerCallback('viperEnabled','ViperChangeTracker',function(){self._processingMarkers=false;var childNodes=self._viper.element.childNodes;for(var node=self._viper.element.lastChild;node;node=node.previousSibling){if(node.nodeType===8&&node.data.indexOf('viperTrackInfo=')===0){var loadedData=node.data.replace('viperTrackInfo=','');try{loadedData=dfx.jsonDecode(loadedData);}catch(e){loadedData=[];}
dfx.foreach(loadedData,function(changeid){if(dfx.isset(loadedData[changeid].comment)===true){self._comments[changeid]=loadedData[changeid].comment;}});dfx.remove(node);break;}}
var changes=self.loadCTNodes(self._viper.element);var foundChanges=false;dfx.foreach(changes,function(changeid){self._changes[changeid]=changes[changeid];foundChanges=true;});ViperChangeTracker.activateFinalMode();if(foundChanges===true){self.updatePositionMarkers(false);ViperChangeTracker._enableChangeTracking();}});this._viper.registerCallback('ViperUndoManager:undo','ViperChangeTracker',function(){self.reLoad();});this._viper.registerCallback('ViperUndoManager:redo','ViperChangeTracker',function(){self.reLoad();});jQuery(window).resize(function(){self.updatePositionMarkers(true);});},reLoad:function()
{this.cleanUp();var self=this;var changes=this.loadCTNodes(this._viper.element);var foundChanges=false;dfx.foreach(changes,function(changeid){self._changes[changeid]=changes[changeid];foundChanges=true;});if(foundChanges===true){var currMode=self.getCurrentMode();if(currMode==='original'){self.activateOriginalMode();}else{self.activateFinalMode();}
self.updatePositionMarkers(false);}},cleanUp:function()
{this._changes={};this._changeSeq=0;this._userColours=[];this._tmpData={};this._orientation='right';if(this._infoBoxHolder){dfx.remove(this._infoBoxHolder);this._infoBoxHolder=null;}
if(this._markerHolder){dfx.remove(this._markerHolder);this._markerHolder=null;}},hasChanges:function()
{return(dfx.isEmpty(this._changes)!==true);},isTracking:function()
{var tracking=(this._viper._subElementActive!==true&&this._tracking===true);return tracking;},isTrackingNode:function(node,ctNodeType)
{if(node&&node.nodeType===dfx.ELEMENT_NODE&&dfx.hasClass(node,this._nodeClassName)===true){if(!ctNodeType||dfx.hasClass(node,'CT-'+ctNodeType)===true||node.tagName.toLowerCase()==='ins'||node.tagName.toLowerCase()==='del'||this.isInsertType(this.getCTNTypeFromNode(node))===true){return true;}}
return false;},_enableChangeTracking:function()
{this._tracking=true;this._viper.fireCallbacks('ViperChangeTracker:tracking',true);},enableChangeTracking:function()
{this._infoBoxHolder=this._createInfoboxHolder();this._markerHolder=this._createMarkerHolder();if(this._viper.element){this._enableChangeTracking();this.loadChanges(this._viper.element);this.updatePositionMarkers(false);}},disableChangeTracking:function()
{this._tracking=false;this._viper.fireCallbacks('ViperChangeTracker:tracking',false);},loadChanges:function(elem)
{var changes=this.loadCTNodes(this._viper.element);},setNodeTypeVisibility:function(nodeType,visible)
{this._nodeTypeVisibility[nodeType]=visible;var elems=dfx.getClass('CT-'+nodeType,this._viper.element);if(visible===false){dfx.addClass(elems,'CT-disabled');}else{dfx.removeClass(elems,'CT-disabled');}},activateFinalMode:function()
{this.setNodeTypeVisibility('textRemoved',false);this.setNodeTypeVisibility('textAdd',true);this.setActionDisplayState('insert',false);this.setActionDisplayState('remove',true);this._viper.fireCallbacks('ViperChangeTracker:modeChange','final');this._currentMode='final';},activateOriginalMode:function()
{this.setNodeTypeVisibility('textRemoved',true);this.setNodeTypeVisibility('textAdd',false);this.setActionDisplayState('insert',true);this.setActionDisplayState('remove',false);this._viper.fireCallbacks('ViperChangeTracker:modeChange','original');this._currentMode='original';},getCurrentMode:function()
{return this._currentMode;},isNodeTypeVisible:function(ctNodeType)
{if(dfx.isset(this._nodeTypeVisibility[ctNodeType])===true&&this._nodeTypeVisibility[ctNodeType]!==true){return false;}
return true;},isNodeVisible:function(ctNode)
{if(ctNode){for(var ctType in this._nodeTypeVisibility){if(this._nodeTypeVisibility.hasOwnProperty(ctType)===false){continue;}
if(dfx.hasClass(ctNode,'CT-'+ctType)===true){return this._nodeTypeVisibility[ctType];}}}
return true;},isInsertType:function(ctnType)
{if(this._changeTypes[ctnType]&&this._changeTypes[ctnType].actionType==='insert'){return true;}
return false;},canShowType:function(ctnType)
{var actionType=null;if(this._changeTypes[ctnType]){actionType=this._changeTypes[ctnType].actionType;}
return(this._actionTypeDisplayStates[actionType]===true);},setActionDisplayState:function(actionType,display,nodelay)
{nodelay=nodelay||false;this._actionTypeDisplayStates[actionType]=display;this.updatePositionMarkers(!nodelay);},getActionDisplayStates:function()
{return this._actionTypeDisplayStates;},addChangeType:function(typeName,title,actionType)
{if(!this._actionTypes[actionType]){return;}
this._changeTypes[typeName]={title:title,actionType:actionType};},getActionTypes:function()
{return this._actionTypes;},getTypeTitle:function(typeName)
{var title='';if(this._changeTypes[typeName]&&this._changeTypes[typeName].title){title=this._changeTypes[typeName].title;}
return title;},getCTNode:function(node,ctnType)
{while(node&&node!==this._viper.element){if(dfx.hasClass(node,'_viper-CTNode')===true){if(ctnType){if(dfx.hasClass(node,'CT-'+ctnType)===true){return node;}}else{return node;}}
node=node.parentNode;}
return null;},getCTNTypeFromNode:function(node)
{var ctnType='';dfx.foreach(this._changeTypes,function(type){if(dfx.hasClass(node,'CT-'+type)===true){ctnType=type;return false;}});return ctnType;},createCTNode:function(nodeType,ctnType,childNode)
{var node=Viper.document.createElement(nodeType);dfx.addClass(node,this._nodeClassName+' CT-'+ctnType);if(!childNode){var textNode=Viper.document.createTextNode('');node.appendChild(textNode);}else{node.appendChild(childNode);}
if(this.isNodeTypeVisible(ctnType)===false){dfx.addClass(node,'CT-disabled');}
return node;},trackNodes:function(nodes,ctnType)
{var ctnClass=this.getCTNodeClass(ctnType);dfx.foreach(nodes,function(i){dfx.addClass(nodes[i],ctnClass);});},getCTNodeClass:function(ctnType)
{var className=this._nodeClassName+' CT-'+ctnType;if(this.isNodeTypeVisible(ctnType)===false){className+=' CT-disabled';}
return className;},getCTNodes:function(ctnType,parentElement)
{parentElement=parentElement||this._viper.element;var className=this._nodeClassName;if(ctnType){className='CT-'+ctnType;}
var nodes=dfx.getClass(className,parentElement);return nodes;},getPreviousVisibleContainer:function(range,node)
{while(node){var ctNode=this.getCTNode(node);if(ctNode&&this.isNodeVisible(ctNode)===false){node=range.getPreviousContainer(ctNode);}else{break;}}
return node;},getNextVisibleContainer:function(range,node)
{while(node){var ctNode=this.getCTNode(node);if(ctNode&&this.isNodeVisible(ctNode)===false){node=range.getNextContainer(ctNode);}else{break;}}
return node;},getColour:function(colourIndex)
{return this._colours[colourIndex];},getMarker:function(changeid)
{if(!changeid){return;}
var elemid=this._className+'-marker-'+changeid;var marker=dfx.getId(elemid);if(!marker){return null;}
return marker;},_createMarker:function(ctnType,posX,posY,colourIndex,show,changeid)
{var colour=this._colours[colourIndex];var rect=null;if(!this._tmpData.viperElemRect){rect=dfx.getBoundingRectangle(this._viper.element);this._tmpData.viperElemRect=rect;}else{rect=this._tmpData.viperElemRect;}
var elem=Viper.document.createElement('div');var c=this._className+'-marker';elem.id=this._className+'-marker-'+changeid;dfx.addClass(elem,c+' CT-'+ctnType+' CT-'+colour);if(this._orientation==='left'){dfx.setStyle(elem,'left',parseInt(rect.x1-26)+'px');}else{dfx.setStyle(elem,'left',parseInt(posX)+'px');}
dfx.setStyle(elem,'top',parseInt(posY)+'px');if(show!==true){dfx.addClass(elem,'CT-ins');}
var orientation='';if(this._orientation==='left'){orientation=' orientationLeft';}
var content='<div class="'+c+'-teardrop'+orientation+'"></div>';dfx.setHtml(elem,content);var width=0;if(this._orientation==='left'){width=parseInt(posX-(rect.x1-30));}else{width=parseInt((rect.x2+30)-posX);}
dfx.setStyle(elem,'width',width+'px');return elem;},getParentCTNode:function(node,type)
{while(node&&node!==this._viper.element){node=node.parentNode;if(this.isTrackingNode(node,type)===true){return node;}}
return false;},addPositionMarkers:function(ctNodes,index,displayed,callback)
{if(!ctNodes&&!index){if(this._processingMarkers===true){return;}
this._processingMarkers=true;this.removePositionMarkers();this.removeInfoBoxPosition();this._createMarkerHolder();this.updateInfoBoxPosition();ctNodes=this.getCTNodes();index=0;displayed={};}
var self=this;var node=ctNodes[index];if(!node){if(callback){callback.call(this);}
this._processingMarkers=false;return;}
if(!node.parentNode){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
var ctNodeType=this.getCTNTypeFromNode(node);var parentCTNode=this.getParentCTNode(node,ctNodeType);if(parentCTNode){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
var changeid=node.getAttribute('viperChangeid');if(displayed[changeid]===true){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
displayed[changeid]=true;var change=self.getChange(changeid);if(change){var idParts=changeid.split('-');colourIndex=parseInt(idParts[2]);this.setUserColour(parseInt(idParts[0]),idParts[2]);var isInsertType=this.isInsertType(change.type);var canShowType=this.canShowType(change.type);var tmp=Viper.document.createElement('span');dfx.setHtml(tmp,'&nbsp;');if(dfx.isBlockElement(node)===true){if(node.firstChild){dfx.insertBefore(node.firstChild,tmp);}else{node.appendChild(tmp);}}else{dfx.insertBefore(node,tmp);}
var tmpPos=dfx.getBoundingRectangle(tmp);var marker=self._createMarker(change.type,tmpPos.x1,tmpPos.y2,colourIndex,canShowType,changeid);dfx.remove(tmp);this._markerHolder.appendChild(marker);this.getChangeInfo(changeid,function(changeInfo){if(!self._infoBoxHolder){self._processingMarkers=false;return;}
var infoBox=self._createInfoBox(changeInfo,colourIndex);self._setMouseEvents(infoBox,marker,node,isInsertType,changeid);self._infoBoxHolder.appendChild(infoBox);try{self._positionInfoBox(infoBox,tmpPos,canShowType);}catch(e){}
self._viper.fireCallbacks('ViperChangeTracker:infoBoxAdded',changeid);self.addPositionMarkers(ctNodes,(index+1),displayed,callback);});}},removePositionMarkers:function()
{dfx.remove(dfx.getClass(this._className+'-marker'));},updatePositionMarkers:function(delayed,force,callback)
{if(force!==true&&this._viper._subElementActive===true){return;}
if(this._updateTimer){clearTimeout(this._updateTimer);this._updateTimer=null;}
if(delayed!==true){this.addPositionMarkers(null,null,null,callback);}else{var self=this;this._updateTimer=setTimeout(function(){try{self.addPositionMarkers(null,null,null,callback);}catch(e){};},this._updateDelay);}},_createMarkerHolder:function()
{if(this._markerHolder){dfx.remove(this._markerHolder);}
var holder=Viper.document.createElement('div');dfx.addClass(holder,this._className+'-markerHolder');Viper.document.body.appendChild(holder);this._markerHolder=holder;return holder;},_createInfoBox:function(data,colourIndex)
{if(!data){return;}
var colour=this._colours[colourIndex];var lineBox=Viper.document.createElement('div');dfx.addClass(lineBox,this._className+'-lineBox CT-'+colour);var c=this._className+'-infoBox';var infoBox=Viper.document.createElement('div');dfx.addClass(infoBox,c);var description='';if(dfx.isObj(data.desc)!==true){description=data.desc;}
var isComment='';if(data.typeid==='viperComment'){isComment=' isComment';}
var content='<div class="'+c+'-top">';if(data.typeid==='viperComment'){content+='<div class="clickToReject">Click to remove comment</div>';}else{content+='<div class="clickToAccept">Click to accept change</div>';content+='<div class="clickToReject">Click to reject change</div>';}
content+='<div class="changeBoxTitle"><strong>'+data.ownerName+'</strong> <span>'+data.time+'</span></div>';content+='<div class="'+c+'-actionBtns'+isComment+'">';if(data.typeid!=='viperComment'){content+='<div class="'+c+'-actionBtns-approve"></div>';}
content+='<div class="'+c+'-actionBtns-reject"></div>';content+='</div></div>';content+='<div class="'+c+'-bottom"><strong>'+data.typeName+':</strong> ';content+=description;content+='</div>';dfx.setHtml(infoBox,content);if(dfx.isObj(data.desc)===true){if(dfx.isArray(data.desc)!==true){data.desc=[data.desc];}
dfx.foreach(data.desc,function(i){dfx.getClass(c+'-bottom',infoBox)[0].appendChild(data.desc[i]);});}
lineBox.appendChild(infoBox);return lineBox;},removeInfoBoxPosition:function()
{dfx.empty(this._infoBoxHolder);},_positionInfoBox:function(infoBox,dim,show)
{var height=0;var offset=35;var prevBox=infoBox;while(prevBox=prevBox.previousSibling){var prevRect=dfx.getBoundingRectangle(prevBox.firstChild);if(parseInt(prevRect.y2-prevRect.y1)>0){height=parseInt(prevRect.y2-dim.y2)+offset;break;}}
if(show!==true){dfx.addClass(infoBox,'CT-ins');}
if(this._orientation==='left'){dfx.setStyle(infoBox,'left','auto');dfx.setStyle(infoBox,'right',0);}else{dfx.setStyle(infoBox,'right','auto');dfx.setStyle(infoBox,'left',0);}
dfx.setStyle(infoBox,'top',parseInt(dim.y2)+'px');if(height>0){dfx.setStyle(infoBox,'height',height+'px');}
dfx.addClass(infoBox,'visible');},_createInfoboxHolder:function()
{var id=this._className+'-infoBoxHolder';var holder=dfx.getId(id);if(holder){dfx.remove(holder);}
holder=Viper.document.createElement('div');holder.id=id;dfx.addClass(holder,this._className+'-infoBoxHolder');Viper.document.body.appendChild(holder);return holder;},updateInfoBoxPosition:function()
{if(!this._infoBoxHolder){this._infoBoxHolder=this._createInfoboxHolder();}
var rect=dfx.getBoundingRectangle(this._viper.element);var windowDim=dfx.getWindowDimensions();var leftPos=rect.x2;if(windowDim){var infoWidth=parseInt(dfx.getStyle(this._infoBoxHolder,'width'));if((windowDim.width<(rect.x2+infoWidth))&&(rect.x1>infoWidth)){leftPos=(rect.x1-infoWidth-26);dfx.addClass(this._infoBoxHolder,'orientationLeft');this._orientation='left';}else{this._orientation='right';dfx.removeClass(this._infoBoxHolder,'orientationLeft');}}else{this._orientation='right';dfx.removeClass(this._infoBoxHolder,'orientationLeft');}
dfx.setStyle(this._infoBoxHolder,'left',leftPos+'px');},getUserAsset:function(userid,callback)
{if(!userid){if(!Widget.CURRENT_USERID){return null;}
userid=Widget.CURRENT_USERID;}
if(this._users[userid]){callback.call(this,this._users[userid]);}else if(!window['AssetManager']){callback.call(this,null);}else{var self=this;AssetManager.getAsset(userid,function(asset){self._users[userid]=asset;callback.call(self,asset);});}},getUserColour:function(userid)
{var colourIndex=null;if(dfx.isset(this._userColours[userid])===true){colourIndex=this._userColours[userid];}else{colourIndex=this.getAvailableColour();this.setUserColour(userid,colourIndex);}
return colourIndex;},setUserColour:function(userid,colourIndex)
{this._userColours[userid]=colourIndex;},getAvailableColour:function()
{var self=this;var cln=this._colours.length;for(var i=0;i<cln;i++){var found=false;dfx.foreach(this._userColours,function(userid){if(parseInt(self._userColours[userid])===i){found=true;return false;}});if(found===false){return i;}}
return-1;},getChangeId:function()
{var id=Widget.CURRENT_USERID+'-'+(++this._changeSeq)+'-';id+=this.getUserColour(Widget.CURRENT_USERID)+'-'+Math.ceil(Math.random()*999);if(this._changes[id]){id=this.getChangeId();}
return id;},addChange:function(ctnType,ctNodes,desc)
{if(ViperChangeTracker.isTracking()!==true){return null;}
var changeid=this._batchChangeid;if(changeid===null){if(!this._changes){this._changes={};}
changeid=this.getChangeId();this._changes[changeid]={type:ctnType,nodes:[],time:(new Date()).getTime(),userid:Widget.CURRENT_USERID,desc:desc};}
var self=this;dfx.foreach(ctNodes,function(i){self.addNodeToChange(changeid,ctNodes[i]);});return changeid;},addNodeToChange:function(changeid,ctNode,replaceNode)
{if(this._batchChangeid!==null){changeid=this._batchChangeid;}
var change=this.getChange(changeid);if(!change){return;}
if(!ctNode.getAttribute('viperChangeid')){ctNode.setAttribute('viperChangeid',changeid);}
if(!ctNode.getAttribute('time')){ctNode.setAttribute('time',parseInt(change.time));}
if(dfx.hasClass(ctNode,ViperChangeTracker.getCTNodeClass(change.type))===false){dfx.addClass(ctNode,ViperChangeTracker.getCTNodeClass(change.type));}
var colourIndex=ViperChangeTracker.getUserColour(change.userid);var colour=ViperChangeTracker.getColour(colourIndex);if(dfx.hasClass(ctNode,'CT-'+colour)===false){dfx.addClass(ctNode,'CT-'+colour);}
if(replaceNode){var nl=change.nodes.length;for(var i=0;i<nl;i++){if(change.nodes[i]===replaceNode){dfx.removeArrayIndex(change.nodes,i);break;}}}
change.nodes.push(ctNode);},getChange:function(changeid)
{var change=null;if(this._changes[changeid]){change=this._changes[changeid];}
return change;},startBatchChange:function(ctnType)
{if(this.isTracking()!==true){return null;}
this._batchChangeid=this.addChange(ctnType);return this._batchChangeid;},endBatchChange:function(changeid)
{if(this.isTracking()===true){if(changeid!==this._batchChangeid){return;}
this._batchChangeid=null;}},getChangeInfo:function(changeid,callback)
{var change=this.getChange(changeid);if(!change){callback.call(this,null);return;}
var userid=change.userid;if(this._users[userid]){var userAsset=this._users[userid];var info={ownerName:dfx.ellipsize(userAsset.name,13),ownerid:userAsset.id,time:dfx.date('d/M/y h:ia',parseInt(change.time)),typeName:ViperChangeTracker.getTypeTitle(change.type),typeid:change.type,desc:ViperChangeTracker.getDescription(change.type,change.nodes[0],changeid)};callback.call(this,info);return;}else{var self=this;ViperChangeTracker.getUserAsset(userid,function(asset){if(asset){this._users[userid]=asset;}else{this._users[userid]={ownerName:'N/A',ownerid:'N/A'};}
self.getChangeInfo(changeid,callback);return;});}},setDescriptionCallback:function(ctnType,callback)
{this._descCallbacks[ctnType]=callback;},getDescription:function(ctnType,node,changeid)
{var desc='';if(dfx.isFn(this._descCallbacks[ctnType])===true){desc=this._descCallbacks[ctnType].call(this,node,ctnType,changeid);}else{var change=this.getChange(changeid);if(change&&change.desc){desc=change.desc;}else{var cnode=node.cloneNode(true);dfx.remove(dfx.getTag('del',cnode));var textContent='';if(node.innerText){textContent=cnode.innerText;}else if(node.textContent){textContent=cnode.textContent;}else{textContent=dfx.getHtml(cnode);}
desc=dfx.ellipsize(textContent,30);cnode=null;}}
return desc;},getDescriptionForNode:function(node)
{var changeid=node.getAttribute('viperchangeid');if(!changeid){return'';}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType){return;}
return this.getDescription(ctnType,node,changeid);},setApproveCallback:function(ctnType,callback)
{this._approveCallbacks[ctnType]=callback;},approveChanges:function(changeid,node)
{if(!changeid&&!node){return;}else if(!node){var change=this.getChange(changeid);if(!change){return;}
var nodes=change.nodes;var ln=nodes.length;for(var i=0;i<ln;i++){this.approveChanges(changeid,nodes[i]);}
this.updatePositionMarkers(false);return;}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType||!this._approveCallbacks[ctnType]){return;}
var clone=node.cloneNode(true);var tmp=Viper.document.createElement('div');tmp.appendChild(clone);if(this.isInsertType(ctnType)===true){var self=this;var ctNodes=this.getCTNodes(null,node);dfx.foreach(ctNodes,function(i){self.approveChanges(ctNodes[i].getAttribute('changeid'),ctNodes[i]);});}
this._approveCallbacks[ctnType].call(this,tmp,node);this._viper.fireNodesChanged('ViperChangeTracker:approve');},setRejectCallback:function(ctnType,callback)
{this._rejectCallbacks[ctnType]=callback;},rejectChanges:function(changeid,node)
{if(!changeid&&!node){return;}else if(!node){var change=this.getChange(changeid);if(!change){return;}
var nodes=change.nodes;var ln=nodes.length;for(var i=0;i<ln;i++){this.rejectChanges(changeid,nodes[i]);}
this.updatePositionMarkers(false,true);return;}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType||!this._rejectCallbacks[ctnType]){return;}
var clone=node.cloneNode(true);var tmp=Viper.document.createElement('div');tmp.appendChild(clone);this._rejectCallbacks[ctnType].call(this,tmp,node);this._viper.fireNodesChanged('ViperChangeTracker:reject');},showInfoBox:function(marker,infoBox)
{var elems=dfx.getClass('_viper-CT-lineBox',this._infoBoxHolder);dfx.removeClass(elems,'visible');dfx.removeClass(elems,'show');var melems=dfx.getClass('_viper-CT-marker',this._markerHolder);dfx.addClass(melems,'CT-hidden');dfx.removeClass(melems,'show');dfx.addClass(infoBox,'visible');dfx.removeClass(marker,'CT-hidden');var dim=dfx.getBoundingRectangle(marker);dfx.addClass([marker,infoBox],'show');this._positionInfoBox(infoBox,dim,true);var self=this;dfx.addEvent(document,'click.ViperChangeTracker',function(){dfx.removeEvent(document,'click.ViperChangeTracker');self.updatePositionMarkers(false);});},_positionInfoBoxes:function()
{var elems=dfx.getClass(this._className+'-lineBox',this._infoBoxHolder);var eln=elems.length;if(elems.length===0){return;}
var offset=35;var prevBox=null;for(var i=0;i<eln;i++){var box=elems[i];var height=0;var boxRect=dfx.getBoundingRectangle(box);if((boxRect.y2-boxRect.y1)<=0){continue;}else if(prevBox===null){prevBox=box;continue;}
var prevRect=dfx.getBoundingRectangle(prevBox.firstChild);if(parseInt(prevRect.y2-prevRect.y1)>0){height=parseInt(prevRect.y2-boxRect.y1)+offset;dfx.setStyle(box,'height',height+'px');}
prevBox=box;}},_setMouseEvents:function(infoBox,marker,node,isInsertType,changeid)
{var self=this;dfx.addEvent([infoBox,marker,node],'mouseover',function(){dfx.addClass([infoBox,marker],'selected');});dfx.addEvent(marker,'click',function(e){self.showInfoBox(marker,infoBox);self._positionInfoBoxes();dfx.preventDefault(e);return false;});var c=this._className+'-infoBox-actionBtns';var rejectBtn=dfx.getClass(c+'-reject',infoBox)[0];var approveBtn=dfx.getClass(c+'-approve',infoBox)[0];var parentNode=null;if(!approveBtn&&!rejectBtn){return;}
if(rejectBtn){parentNode=rejectBtn.parentNode.parentNode;}else{parentNode=approveBtn.parentNode.parentNode;}
dfx.addEvent([infoBox,marker,node],'mouseout',function(){dfx.removeClass([infoBox,marker],'selected');dfx.removeClass(parentNode,'approve');dfx.removeClass(parentNode,'reject');});if(rejectBtn){dfx.addEvent(rejectBtn,'mouseover',function(){dfx.addClass(parentNode,'reject');dfx.removeClass(parentNode,'approve');});dfx.addEvent(rejectBtn,'click',function(e){self.rejectChanges(changeid);dfx.preventDefault(e);return false;});}
if(approveBtn){dfx.addEvent(approveBtn,'mouseover',function(){dfx.addClass(parentNode,'approve');dfx.removeClass(parentNode,'reject');});dfx.addEvent(approveBtn,'click',function(e){self.approveChanges(changeid);dfx.preventDefault(e);return false;});}},removeTrackChanges:function(node,nodeOnly)
{var elems=[];if(nodeOnly!==true){elems=dfx.getClass(this._nodeClassName,node);}
elems.push(node);var r=new RegExp('_viper-|\\s*CTN?[a-zA-Z-]*','g');var self=this;dfx.foreach(elems,function(i){if(!elems[i].parentNode){return;}
var classAttr=dfx.attr(elems[i],'class');classAttr=classAttr.replace(r,'');dfx.attr(elems[i],'class',classAttr);if(dfx.attr(elems[i],'class')===''){dfx.removeAttr(elems[i],'class');}
dfx.removeAttr(elems[i],'viperchangeid');dfx.removeAttr(elems[i],'time');if(dfx.isTag(elems[i],'del')===true||dfx.isTag(elems[i],'ins')===true){dfx.insertBefore(elems[i],elems[i].childNodes);dfx.remove(elems[i]);}else if(ViperChangeTracker.getCurrentMode()==='original'){var ctdata=self.getCTData(elems[i],'tagName');if(ctdata){var newTag=Viper.document.createElement(ctdata);while(elems[i].firstChild){newTag.appendChild(elems[i].firstChild);}
dfx.insertBefore(elems[i],newTag);dfx.remove(elems[i]);}}
dfx.removeAttr(elems[i],'ctdata');});},setCTData:function(node,type,value)
{if(!node||!type){return false;}
var ctdata=this.getCTData(node);if(!ctdata){if(value===null){return true;}
ctdata={};ctdata[type]=value;}else if(value===null){if(dfx.isset(ctdata[type])===true){delete ctdata[type];}else{return true;}}else{ctdata[type]=value;}
ctdata=dfx.jsonEncode(ctdata);if(ctdata==='{}'){dfx.removeAttr(node,'ctdata');return true;}
dfx.attr(node,'ctdata',ctdata);return true;},getCTData:function(node,type)
{if(!node){return null;}
var ctdata=dfx.attr(node,'ctdata');if(!ctdata){return null;}
ctdata=dfx.jsonDecode(ctdata);if(!type){return ctdata;}
return ctdata[type];},removeCTData:function(node,type)
{if(node){if(!type){dfx.removeAttr(node,'ctdata');}else{this.setCTData(node,type,null);}}},getTrackingInfo:function(elem)
{var info=null;var changes=this.loadCTNodes(elem);dfx.foreach(changes,function(changeid){if(info===null){info={};}
if(dfx.isset(changes[changeid].comment)===true){info[changeid]={comment:changes[changeid].comment};}});return info;},loadCTNodes:function(elem)
{var ctNodes=this.getCTNodes(null,elem);var changes={};var self=this;dfx.foreach(ctNodes,function(i){var node=ctNodes[i];var changeid=node.getAttribute('viperchangeid');if(changes[changeid]){changes[changeid].nodes.push(node);}else{var type=self.getCTNTypeFromNode(node);changes[changeid]={type:type,time:node.getAttribute('time'),nodes:[node],userid:(changeid.split('-')).shift()};if(type==='viperComment'){changes[changeid].comment=(self._comments[changeid]||'');}}});return changes;}};function ViperDOMRange(rangeObj)
{this.rangeObj=rangeObj;this.startContainer=null;this.endContainer=null;this.startOffset=0;this.endOffset=0;this.collapsed=true;this.commonAncestorContainer=null;this.anchorToStart='undefined';}
ViperDOMRange.START_TO_START=0;ViperDOMRange.START_TO_END=1;ViperDOMRange.END_TO_END=3;ViperDOMRange.END_TO_START=4;ViperDOMRange.CHARACTER_UNIT='character';ViperDOMRange.WORD_UNIT='word';ViperDOMRange.LINE_UNIT='line';ViperDOMRange.prototype={setStart:function(node,offset){},setEnd:function(node,offset){},setStartBefore:function(node){},setStartAfter:function(node){},setEndBefore:function(node){},setEndAfter:function(node){},selectNode:function(node){},selectNodeContents:function(node){},surroundContents:function(node){},collapse:function(toStart){},compareBoundaryPoints:function(how,sourceRange){},deleteContents:function(){},extractContents:function(){},cloneContents:function(){},insertNode:function(node){},cloneRange:function(){},toString:function(){},detach:function(){},getCommonElement:function(){},moveStart:function(unitType,units){},moveEnd:function(unitType,units){},setAnchor:function(toStart){},setFocus:function(node,offset){},moveFocus:function(unitType,units){},getRangeCoords:function(toStart){},getBoundingClientRect:function(){},getPreviousContainer:function(container,skippedBlockElem)
{if(!container){return null;}
while(container.previousSibling){container=container.previousSibling;if(container.nodeType!==dfx.TEXT_NODE){if(dfx.isStubElement(container)===true){return container;}else{var child=this._getLastSelectableChild(container);if(child!==null){return child;}}}else if(this._isSelectable(container)===true){return container;}}
while(container&&!container.previousSibling){container=container.parentNode;}
if(!container){return null;}
container=container.previousSibling;if(this._isSelectable(container)===true){return container;}else if(skippedBlockElem&&dfx.isBlockElement(container)===true){skippedBlockElem.push(container);}
var selChild=this._getLastSelectableChild(container);if(selChild!==null){return selChild;}
return this.getPreviousContainer(container,skippedBlockElem);},_isSelectable:function(container)
{if(container&&container.nodeType===dfx.TEXT_NODE&&container.data.length!==0){return true;}
return false;},getNextContainer:function(container,skippedBlockElem)
{if(!container){return null;}
while(container.nextSibling){container=container.nextSibling;if(container.nodeType!==dfx.TEXT_NODE){var child=this._getFirstSelectableChild(container);if(child!==null){return child;}}else if(this._isSelectable(container)===true){return container;}}
while(container&&!container.nextSibling){container=container.parentNode;}
if(!container){return null;}
container=container.nextSibling;if(this._isSelectable(container)===true){return container;}else if(skippedBlockElem&&dfx.isBlockElement(container)===true){skippedBlockElem.push(container);}
var selChild=this._getFirstSelectableChild(container);if(selChild!==null){return selChild;}
return this.getNextContainer(container,skippedBlockElem);},_getFirstSelectableChild:function(element)
{if(element){if(element.nodeType!==dfx.TEXT_NODE){var child=element.firstChild;while(child){if(this._isSelectable(child)===true){return child;}else if(child.firstChild){var res=this._getFirstSelectableChild(child);if(res!==null){return res;}else{child=child.nextSibling;}}else{child=child.nextSibling;}}}else{return element;}}
return null;},_getLastSelectableChild:function(element)
{if(element){if(element.nodeType!==dfx.TEXT_NODE){var child=element.lastChild;while(child){if(this._isSelectable(child)===true){return child;}else if(child.lastChild){var res=this._getLastSelectableChild(child);if(res!==null){return res;}else{child=child.previousSibling;}}else{child=child.previousSibling;}}}else{return element;}}
return null;},_normalizeNode:function(node)
{if(node.nodeType===dfx.ELEMENT_NODE){var c=node.childNodes.length;var str='';var mChild=null;for(var i=0;i<c;i++){var child=node.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){str+=child.data;if(mChild===null){mChild=child;}else{dfx.remove(child);}}else if(mChild!==null){mChild.data=str;mCHild=null;}}
if(mChild!==null){mChild.nodeValue=str;}}else if(node.nodeType===dfx.TEXT_NODE){this._normalizeNode(node.parentNode);}},getNodeIndex:function(node)
{if(!node||!node.parentNode){return;}
var index=0;var prev=node.previousSibling;while(prev){prev=prev.previousSibling;index++;}
return index;},getStartNode:function()
{if(!this.startContainer){return null;}
if(this.startContainer.nodeType===dfx.ELEMENT_NODE){return this.startContainer.childNodes[this.startOffset];}
return this.startContainer;},getEndNode:function()
{if(!this.endContainer){return null;}
if(this.endContainer.nodeType===dfx.ELEMENT_NODE){return this.endContainer.childNodes[this.endOffset];}
return this.endContainer;}};function ViperElementMetrics(){}
ViperElementMetrics.getStyles=function(element)
{if(element===document){return[];}
if(Viper.document.defaultView&&Viper.document.defaultView.getComputedStyle){return Viper.document.defaultView.getComputedStyle(element,'');}else if(element.currentStyle){return element.currentStyle;}};ViperElementMetrics.getBackgroundColor=function(element)
{var backgroundColor;while(element){var styles=ViperElementMetrics.getStyles(element);if(styles.backgroundColor!=='transparent'&&styles.backgroundColor!=='rgba(0, 0, 0, 0)'){backgroundColor=styles.backgroundColor;break;}
element=element.parentNode;}
if(backgroundColor){return backgroundColor;}
return'#FFFFFF';};ViperElementMetrics.getBorderInsets=function(element)
{var border=0;while(element){try{var styles=ViperElementMetrics.getStyles(element);}catch(e){break;}
if(styles.marginTop!==''){border+=parseInt(styles.marginTop);}
element=element.parentNode;}
return border;};ViperElementMetrics.getInsets=function(element)
{var styles=ViperElementMetrics.getStyles(element);return{'top':parseInt(styles.borderTopWidth),'left':parseInt(styles.marginLeft),'bottom':parseInt(styles.marginBottom),'right':parseInt(styles.marginRight)};};function ViperIERange(rangeObj)
{ViperDOMRange.call(this,rangeObj);this._initContainerInfo();this._setCollapsed();this.shy=Viper.document.createElement('span');this.shy.innerHTML='&nbsp;';this._prevHeight=null;this._prevContainer=null;ViperDOMRange.START_TO_START='StartToStart';ViperDOMRange.START_TO_END='StartToEnd';ViperDOMRange.END_TO_END='EndToEnd';ViperDOMRange.END_TO_START='EndToStart';}
ViperIERange.prototype={_initContainerInfo:function()
{var clone=this.rangeObj.duplicate();var eclone=this.rangeObj.duplicate();clone.collapse(true);var info=this._getContainerInfo(clone);this.startContainer=info.container;this.startOffset=info.offset;eclone.collapse(false);var einfo=this._getContainerInfo(eclone);this.endContainer=einfo.container;this.endOffset=einfo.offset;},setStart:function(node,offset)
{var moveTo=node;if(moveTo.nodeType===dfx.TEXT_NODE){moveTo=moveTo.parentNode;}
var clone=this.rangeObj.duplicate();clone.moveToElementText(moveTo);clone.collapse(true);var charOffset=this._getCharOffsetWithinParent(node,offset);clone.move(ViperDOMRange.CHARACTER_UNIT,charOffset);this.rangeObj.setEndPoint('StartToStart',clone);this.startContainer=node;this.startOffset=offset;if(this.endContainer===null&&this.endOffset===null){this.endContainer=node;this.endOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setEnd:function(node,offset)
{var moveTo=node;if(moveTo.nodeType===dfx.TEXT_NODE){moveTo=moveTo.parentNode;}
var clone=this.rangeObj.duplicate();clone.moveToElementText(moveTo);clone.collapse(true);var charOffset=this._getCharOffsetWithinParent(node,offset);clone.move(ViperDOMRange.CHARACTER_UNIT,charOffset);this.rangeObj.setEndPoint('EndToEnd',clone);this.endContainer=node;this.endOffset=offset;if(this.startContainer===null&&this.startOffset===null){this.startContainer=node;this.startOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setStartBefore:function(node)
{this.setStart(node,0);},setStartAfter:function(node)
{var next=this.getNextContainer(node);this.setStart(next,0);this._setCollapsed();this._setCommonAncestorContainer();},setEndBefore:function(node)
{var previous=this.getPreviousContainer(node);if(previous.nodeType===dfx.TEXT_NODE){this.setEnd(previous,previous.length);}else{var clone=this.rangeObj.duplicate();clone.moveToElementText(previous);clone.collapse(false);this.rangeObj.setEndPoint('EndToEnd',clone);this._setCollapsed();this._setCommonAncestorContainer();}},setEndAfter:function(node)
{this.setEnd(node.parentNode,this.getNodeIndex(node)+1);},selectNode:function(node)
{if(node.nodeType===dfx.TEXT_NODE){this.setStart(node,0);this.setEnd(node,node.length);}else{if(node.innerHTML&&node.innerHTML.length===0){node.innerText=' ';}
this.rangeObj.moveToElementText(node);this.endContainer=node.parentNode;this.startContainer=node.parentNode;this.startOffset=this._findElementNodeOffset(node);this.endOffset=this.startOffset+1;this._setCollapsed();this._setCommonAncestorContainer();}},_findElementNodeOffset:function(node)
{if(node.nodeType!==dfx.ELEMENT_NODE){return;}
var parent=node.parentNode;var l=parent.childNodes.length;for(var i=0;i<l;i++){if(parent.childNodes[i]===node){return i;}}
return-1;},selectNodeContents:function(node)
{if(node.nodeType===dfx.TEXT_NODE){this.setStart(node,0);this.setEnd(node,node.length);}else{this.rangeObj.moveToElementText(node);this.rangeObj.moveStart('character',1);this.rangeObj.moveStart('character',-1);this.rangeObj.moveEnd('character',-1);this.rangeObj.moveEnd('character',1);}},surroundContents:function(node)
{var contents=this.extractContents();node.appendChild(contents);this.insertNode(node);},collapse:function(toStart)
{this.rangeObj.collapse(toStart);this.collapsed=true;if(toStart){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;}},compareBoundaryPoints:function(how,sourceRange)
{return this.rangeObj.compareEndPoints(how,sourceRange.rangeObj);},deleteContents:function()
{if(this.startContainer.nodeType===dfx.TEXT_NODE){var nodeValue=this.startContainer.nodeValue;var before=nodeValue.substr(0,this.startOffset);if(this.startContainer===this.endContainer){var after=this.startContainer.nodeValue.substr(this.endOffset,this.startContainer.nodeValue.length);this.startContainer.data=before+after;this.setStart(this.startContainer,this.startOffset);this.collapse(true);return;}else{this.startContainer.nodeValue=before;this.setStart(this.startContainer,this.startOffset);this.collapse(true);this._setCommonAncestorContainer();return;}}else if(this.startContainer.nodeType===dfx.ELEMENT_NODE){var node=this.getNextContainer(this.startContainer);dfx.remove(this.startContainer);if(this.startContainer===this.endContainer){this.setStart(node,0);this.collapse(true);return;}}
this.rangeObj.text='';this.collapse(true);this._setCommonAncestorContainer();this.rangeObj.select();},comparePoint:function(node,offset)
{var clone=this.cloneRange();clone.setStart(node,offset);clone.collapse();return this.rangeObj.compareEndPoints('StartToStart',clone.rangeObj);},extractContents:function()
{var fragment=Viper.document.createDocumentFragment();var div=Viper.document.createElement('div');dfx.setHtml(div,this.rangeObj.htmlText);var c=div.childNodes.length;for(var i=0;i<c;i++){var child=div.childNodes[i].cloneNode(true);fragment.appendChild(child);}
this.rangeObj.text='';return fragment;},createDocumentFragment:function(str)
{var fragment=Viper.document.createDocumentFragment();var div=Viper.document.createElement('div');div.innerHTML=str;var c=div.childNodes.length;for(var i=0;i<c;i++){var child=div.childNodes[i].cloneNode(true);fragment.appendChild(child);}
return fragment;},cloneContents:function()
{var fragment=this.createDocumentFragment(this.rangeObj.htmlText);return fragment;},insertNode:function(node)
{var before=null;if(this.startContainer.nodeType===dfx.ELEMENT_NODE){if(this.startContainer.childNodes.length===this.startOffset){this.startContainer.appendChild(node);}else{this.startContainer.insertBefore(node,this.startContainer.childNodes[this.startOffset]);this.setStart(this.startContainer,this.startOffset+1);}
return;}else if(this.startContainer.nodeType===dfx.TEXT_NODE){if(this.startOffset===0){before=this.startContainer;}else{var length=this.startContainer.data.length;if(length>this.startOffset){before=this.startContainer.splitText(this.startOffset);}else if(this.startContainer.nextSibling){before=this.startContainer.nextSibling;}else{this.startContainer.parentNode.appendChild(node);}}}
if(before!==null){dfx.insertBefore(before,node);}
this.setStart(node,0);this.collapse(true);this._setCommonAncestorContainer();},cloneRange:function()
{var range=new ViperIERange(this.rangeObj.duplicate());range.startContainer=this.startContainer;range.startOffset=this.startOffset;range.endContainer=this.endContainer;range.endOffset=this.endOffset;range.commonAncestorContainer=this.commonAncestorContainer;range.collapsed=this.collapsed;return range;},detach:function()
{this.rangeObj=null;this.commonAncestorContainer=null;},_setCollapsed:function()
{if(this.startContainer===this.endContainer&&this.startOffset===this.endOffset){this.collapsed=true;}else{this.collapsed=false;}},_setCommonAncestorContainer:function()
{if(this.startContainer===this.endContainer){this.commonAncestorContainer=this.startContainer;}else{this.commonAncestorContainer=dfx.getCommonAncestor(this.startContainer,this.endContainer);}},_getContainerInfo:function(textRange)
{var element=textRange.parentElement();var range=element.ownerDocument.body.createTextRange();range.moveToElementText(element);try{range.setEndPoint("EndToStart",textRange);}catch(e){}
var rangeLength=range.text.length;var nodeLength=0;if(rangeLength<(element.innerText.length/2)){var direction=1;var node=element.firstChild;}else{direction=-1;node=element.lastChild;range.moveToElementText(element);try{range.setEndPoint("StartToStart",textRange);}catch(e){}
rangeLength=range.text.length;}
while(node){switch(node.nodeType){case dfx.TEXT_NODE:nodeLength=node.data.length;if(nodeLength<rangeLength){var difference=(rangeLength-nodeLength);if(direction===1){range.moveStart("character",difference);}else{range.moveEnd("character",-difference);}
rangeLength=difference;}else{if(direction===1){return{container:node,offset:rangeLength};}else{return{container:node,offset:(nodeLength-rangeLength)};}}
break;case dfx.ELEMENT_NODE:if(dfx.isStubElement(node)===true){nodeLength=2;}else{nodeLength=node.innerText.length;}
if(direction===1){range.moveStart("character",nodeLength);}else{range.moveEnd("character",-nodeLength);}
rangeLength=(rangeLength-nodeLength);if(rangeLength<0){rangeLength=0;}
break;default:break;}
if(direction===1){node=node.nextSibling;}else{node=node.previousSibling;}}
return{container:element,offset:0};},getStartOffset:function(incSpaces)
{return this.startOffset;},_getCharOffsetWithinParent:function(node,offset)
{var move=null;var tmpNode=null;if(node.nodeType===dfx.TEXT_NODE){move=offset;tmpNode=node.previousSibling;}else if(node.nodeType===dfx.ELEMENT_NODE){move=0;if(offset>0){tmpNode=node.childNodes[(offset-1)];}else{return 0;}}
while(tmpNode){var nodeLength=0;if(tmpNode.nodeType===dfx.ELEMENT_NODE){nodeLength=tmpNode.innerText.length;if(dfx.isStubElement(tmpNode)===true){nodeLength=1;}else if(dfx.isBlockElement(tmpNode)===true){nodeLength++;}}else if(tmpNode.nodeType===dfx.TEXT_NODE){nodeLength=tmpNode.data.length;}
move+=nodeLength;tmpNode=tmpNode.previousSibling;}
return move;},moveStart:function(unitType,units,updateInfo)
{switch(unitType){case ViperDOMRange.CHARACTER_UNIT:case ViperDOMRange.WORD_UNIT:this.rangeObj.moveStart(unitType,units);var text=this.rangeObj.text;var match=text.match(/\r\n/g,'');if(match!==null&&match.length>0){var u=match.length;if(units<0){u=(u*-1);}
this.rangeObj.moveStart(ViperDOMRange.CHARACTER_UNIT,u);}
break;case ViperDOMRange.LINE_UNIT:this._moveLine(true,units);break;default:throw Error('InvalidArgumentException: unitType "'+unitType+'" not valid.');break;}
if(updateInfo!==false){this._initContainerInfo();}},moveEnd:function(unitType,units)
{switch(unitType){case ViperDOMRange.CHARACTER_UNIT:case ViperDOMRange.WORD_UNIT:this.rangeObj.moveEnd(unitType,units);var text=this.rangeObj.text;var match=text.match(/\r\n/g,'');if(match!==null&&match.length>0){this.rangeObj.moveEnd(ViperDOMRange.CHARACTER_UNIT,match.length);}
break;case ViperDOMRange.LINE_UNIT:this._moveLine(false,units);break;default:throw Error('InvalidArgumentException: unitType "'+unitType+'" not valid.');break;}
this._initContainerInfo();},_moveLine:function(moveStart,units)
{var clone=this.cloneRange();clone.collapse(moveStart);var startCoords=clone.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var passed=false;var unitType=ViperDOMRange.WORD_UNIT;units*=2;if(units<0){while(true){clone.moveStart(unitType,units);coords=clone.getRangeCoords(true);if(passed===false){if(coords.y<startCoords.y&&coords.x<=startCoords.x){passed=true;units=1;unitType=ViperDOMRange.CHARACTER_UNIT}}else if(coords.x>=startCoords.x){if(Math.abs(coords.x-startCoords.x)>Math.abs(startCoords.x-prevXCoord)){clone.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);}
break;}else{prevXCoord=coords.x;}}}else{while(true){clone.moveStart(unitType,units);coords=clone.getRangeCoords(true);if(passed===false){if(coords.y>startCoords.y&&coords.x>=startCoords.x){passed=true;units=-1;unitType=ViperDOMRange.CHARACTER_UNIT}}else if(coords.x<=startCoords.x){if(Math.abs(coords.x-startCoords.x)>Math.abs(startCoords.x-prevXCoord)){clone.moveStart(ViperDOMRange.CHARACTER_UNIT,1);}
break;}else{prevXCoord=coords.x;}}}
clone.collapse(true);if(moveStart===true){this.rangeObj.setEndPoint(ViperDOMRange.START_TO_START,clone.rangeObj);this.startContainer=clone.startContainer;this.startOffset=clone.startOffset;}else{this.rangeObj.setEndPoint(ViperDOMRange.END_TO_START,clone.rangeObj);this.endContainer=clone.endContainer;this.endOffset=clone.endOffset;}
this._setCommonAncestorContainer();this._setCollapsed();},getCommonElement:function()
{return this.rangeObj.parentElement();},getRangeCoords:function(toStart)
{var clone=this.cloneRange();clone.collapse(toStart);var normalize=true;if(clone.startContainer.nodeType===dfx.TEXT_NODE){if(clone.startOffset===0){normalize=false;}else if(clone.endOffset===clone.startContainer.data.length){normalize=false;}}else{normalize=false;}
var shy=this.shy;clone.insertNode(shy);var previous=shy.previousSibling;var next=shy.nextSibling;var c=jQuery(shy).position();var coords={x:c.left,y:c.top};if(this.startContainer===this._prevContainer){var height=dfx.getElementHeight(shy);if(this._prevHeight===null){this._prevHeight=height;}else if(height!==this._prevHeight){coords.y=(coords.y+height-this._prevHeight);}}else{this._prevHeight=null;this._prevContainer=this.startContainer;}
dfx.remove(shy);if(normalize&&previous){if(next&&next.nodeType===dfx.TEXT_NODE){if(next===this.endContainer){this.endContainer=previous;}
dfx.remove(next);previous.data+=next.data;}
this.setEnd(this.endContainer,this.endOffset);this.setStart(this.startContainer,this.startOffset);}
return coords;},getBoundingClientRect:function()
{return this.rangeObj.getBoundingClientRect();},getHTMLContents:function()
{return this.rangeObj.htmlText.replace(/\r\n/g,'');},getHTMLContentsObj:function()
{var div=Viper.document.createElement('div');dfx.setHtml(div,this.rangeObj.htmlText);return div;},toString:function()
{var text=this.rangeObj.text;text=text.replace(/\r\n/g,'');return text;}};dfx.noInclusionInherits('ViperIERange','ViperDOMRange',true);function ViperMozRange(rangeObj)
{ViperDOMRange.call(this,rangeObj);this.startContainer=rangeObj.startContainer;this.startOffset=rangeObj.startOffset;this.endContainer=rangeObj.endContainer;this.endOffset=rangeObj.endOffset;this.collapsed=rangeObj.collapsed;this.commonAncestorContainer=rangeObj.commonAncestorContainer;this.posSpan=Viper.document.createElement('span');ViperDOMRange.START_TO_START=Range.START_TO_START;ViperDOMRange.START_TO_END=Range.END_TO_START;ViperDOMRange.END_TO_END=Range.END_TO_END;ViperDOMRange.END_TO_START=Range.START_TO_END;}
ViperMozRange.prototype={setStart:function(node,offset)
{this.rangeObj.setStart(node,offset);this.startContainer=node;this.startOffset=offset;if(this.endContainer===null){this.endContainer=node;this.endOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setEnd:function(node,offset)
{this.rangeObj.setEnd(node,offset);this.endContainer=node;this.endOffset=offset;if(this.startContainer===null){this.startContainer=node;this.startOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setStartBefore:function(node)
{this.rangeObj.setStartBefore(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setStartAfter:function(node)
{this.rangeObj.setStartAfter(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setEndBefore:function(node)
{this.rangeObj.setEndBefore(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setEndAfter:function(node)
{this.rangeObj.setEndAfter(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},selectNode:function(node)
{this.rangeObj.selectNode(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},selectNodeContents:function(node)
{this.rangeObj.selectNodeContents(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},surroundContents:function(node)
{this.rangeObj.surroundContents(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endtOffset;this._setCollapsed();this._setCommonAncestorContainer();},collapse:function(toStart)
{this.rangeObj.collapse(toStart);this.collapsed=true;if(toStart){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;}},compareBoundaryPoints:function(how,sourceRange)
{return this.rangeObj.compareBoundaryPoints(how,sourceRange.rangeObj);},deleteContents:function()
{var startContainer=this.startContainer;var startOffset=this.startOffset;this.rangeObj.deleteContents();var nextSibling=startContainer.nextSibling;while(nextSibling){if(nextSibling&&nextSibling.nodeType===dfx.TEXT_NODE){startContainer.data+=nextSibling.data;dfx.remove(nextSibling);nextSibling=startContainer.nextSibling;}else{break;}}
this.setStart(startContainer,startOffset);this.collapse(true);this._setCommonAncestorContainer();},extractContents:function()
{return this.rangeObj.extractContents();},createDocumentFragment:function(str)
{return this.rangeObj.createContextualFragment(str);},cloneContents:function()
{return this.rangeObj.cloneContents();},insertNode:function(node)
{if(this.startContainer.nodeType===dfx.ELEMENT_NODE){if(dfx.isStubElement(this.startContainer)===true){throw Error('HIERARCHY_REQUEST_ERR');}}
this.rangeObj.insertNode(node);if(node.previousSibling&&node.previousSibling.nodeType===dfx.TEXT_NODE){if(node.previousSibling.data===''){dfx.remove(node.previousSibling);}}
if(node.nextSibling&&node.nextSibling.nodeType===dfx.TEXT_NODE){if(node.nextSibling.data===''){dfx.remove(node.nextSibling);}}
this.startContainer=this.rangeObj.startContaier;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},cloneRange:function()
{var clone=this.rangeObj.cloneRange();return new ViperMozRange(clone);},toString:function()
{return this.rangeObj.toString();},detach:function()
{this.rangeObj.detach();},comparePoint:function(node,offset)
{return this.rangeObj.comparePoint(node,offset);},_setCommonAncestorContainer:function()
{this.commonAncestorContainer=this.rangeObj.commonAncestorContainer;},_setCollapsed:function()
{if(this.startContainer===this.endContainer&&this.startOffset===this.endOffset){this.collapsed=true;}else{this.collapsed=false;}},getStartNode:function()
{if(this.startContainer.nodeType===dfx.ELEMENT_NODE){return this.startContainer.childNodes[this.startOffset];}
return this.startContainer;},getCommonElement:function()
{if(this.commonAncestorContainer.nodeType===dfx.ELEMENT_NODE){return this.commonAncestorContainer;}
return this.commonAncestorContainer.parentNode;},getRangeCoords:function(toStart)
{var clone=this.rangeObj.cloneRange();clone.collapse(toStart);var normalize=true;if(clone.startContainer.nodeType===dfx.TEXT_NODE){if(clone.startOffset===0){if(clone.startContainer.previousSibling&&clone.startContainer.previousSibling.nodeType!==dfx.TEXT_NODE){normalize=false;}}}else{normalize=false;}
var posSpan=this.posSpan;clone.insertNode(posSpan);var previous=posSpan.previousSibling;var next=posSpan.nextSibling;var c=jQuery(posSpan).position();var coords={x:c.left,y:c.top};dfx.remove(posSpan);if(normalize){previous.data+=next.data;dfx.remove(next);this.setEnd(this.endContainer,this.endOffset);this.setStart(this.startContainer,this.startOffset);}
return coords;},moveStart:function(unitType,units)
{if(units===0){throw Error('InvalidArgumentException: units cannot be 0');}
switch(unitType){case ViperDOMRange.CHARACTER_UNIT:if(units>0){this._moveCharRight(true,units);}else{this._moveCharLeft(true,units);}
break;case ViperDOMRange.LINE_UNIT:if(units>0){this._moveLineDown(true);}else{this._moveLineUp(true);}
break;case ViperDOMRange.WORD_UNIT:default:break;}
this._setCommonAncestorContainer();this._setCollapsed();},moveEnd:function(unitType,units)
{if(units===0){throw Error('InvalidArgumentException: units cannot be 0');}
switch(unitType){case ViperDOMRange.CHARACTER_UNIT:if(units>0){this._moveCharRight(false,units);}else{this._moveCharLeft(false,units);}
break;case ViperDOMRange.LINE_UNIT:if(units>0){this._moveLineDown(false);}else{this._moveLineUp(false);}
break;case ViperDOMRange.WORD_UNIT:default:break;}
this._setCommonAncestorContainer();this._setCollapsed();},_setRange:function(start,container,offset)
{if(start){this.setStart(container,offset);}else{this.setEnd(container,offset);}},_moveCharLeft:function(moveStart,units)
{var container,offset;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
offset+=units;if(container.nodeType===dfx.ELEMENT_NODE){if(container.hasChildNodes()){container=container.childNodes[offset];offset=0;}}
if(offset<0){while(offset<0){var skippedBlockElem=[];container=this.getPreviousContainer(container,skippedBlockElem);if(container.nodeType===dfx.ELEMENT_NODE){continue;}
offset=container.data.length;if(container.nodeType===dfx.TEXT_NODE&&skippedBlockElem.length===0){offset--;}}}
this._setRange(moveStart,container,offset);},getStartOffset:function(incSpaces)
{if(incSpaces===true){return this.startOffset;}
var spaces=0;var container=this.startContainer;var cc=container.data.charCodeAt(0);while(cc===10||cc===32){spaces++;cc=container.data.charCodeAt(spaces);}
var offset=(this.startOffset-spaces);return offset;},_getNextTextNode:function(container)
{if(container.nodeType===dfx.ELEMENT_NODE){if(container.childNodes.length!==0){return this._getFirstSelectableChild(container);}}
container=this.getNextContainer(container);if(container.nodeType===dfx.TEXT_NODE){return container;}
return this._getNextTextNode(container);},_moveCharRight:function(moveStart,units)
{var container,offset;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=container.childNodes[offset];if(container.nodeType!==dfx.TEXT_NODE){container=this._getNextTextNode(container);}
offset=units;}else{offset+=units;}
var diff=(offset-container.data.length);if(diff>0){var skippedBlockElem=[];while(diff>0){container=this.getNextContainer(container,skippedBlockElem);if(container.nodeType===dfx.ELEMENT_NODE){continue;}
if(container.data.length>=diff){break;}else if(container.data.length>0){diff-=container.data.length;}}
offset=0;if(container.nodeType===dfx.TEXT_NODE&&skippedBlockElem.length===0){offset++;}}
this._setRange(moveStart,container,offset);},_filterWords:function(words)
{var wc=words.length;var fwords=[];for(var i=0;i<wc;i++){if(words[i].length>0){fwords.push(words[i]);}}
return fwords;},_moveLineUp:function(moveStart)
{var container=null;var offset=null;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=this.getPreviousContainer(container);}
var words=container.data.substr(offset).split(/\s+/);var startCoords=this.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var nextLine=0;var wordLen=0;var prevYCoord=0;var prevCont=null;var prevOffset=0;while(true){prevOffset=offset;prevCont=container;if(nextLine===0&&words.length>0){offset-=words.pop().length;}else{offset--;}
if(offset<=0){var found=false;while(found===false){container=this.getPreviousContainer(container);if(container!==null&&container.nodeType===dfx.TEXT_NODE&&container.data.length!==0){found=true;}}
offset=container.data.length;}
if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}
coords=this.getRangeCoords(moveStart);if(startCoords.y!==coords.y){if(prevYCoord!==coords.y){prevYCoord=coords.y;nextLine++;if(nextLine>1){if(prevCont!==container){prevOffset=prevCont.data.length;}
if(moveStart){this.setStart(prevCont,prevOffset);}else{this.setEnd(prevCont,prevOffset);}
break;}}
if(coords.x<=startCoords.x){if(offset<container.data.length&&Math.abs(coords.x-startCoords.x)>Math.abs(prevXCoord-startCoords.x)){offset++;if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}}
break;}else{prevXCoord=coords.x;}}}},_moveLineDown:function(moveStart)
{var container=null;var offset=null;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=this.getNextContainer(container);}
var words=container.data.substr(offset).split(/\s+/);var startCoords=this.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var nextLine=0;var wordLen=0;var prevYCoord=0;var prevCont=null;var prevOffset=0;while(true){prevOffset=offset;prevCont=container;if(nextLine===0&&words.length>0){offset+=words.shift().length;}else{offset++;}
if(offset>=container.data.length){var found=false;while(found===false){container=this.getNextContainer(container);if(container.data.length!==0){found=true;}}
offset=0;}
if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}
coords=this.getRangeCoords(moveStart);if(startCoords.y!==coords.y){if(prevYCoord!==coords.y){prevYCoord=coords.y;nextLine++;if(nextLine>1){if(prevCont!==container){prevOffset=prevCont.data.length;}
if(moveStart){this.setStart(prevCont,prevOffset);}else{this.setEnd(prevCont,prevOffset);}
break;}}
if(coords.x>=startCoords.x){if(offset>1&&Math.abs(coords.x-startCoords.x)>Math.abs(prevXCoord-startCoords.x)){offset--;if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}}
break;}else{prevXCoord=coords.x;}}}},getHTMLContents:function(clonedSelection)
{if(!clonedSelection){clonedSelection=this.rangeObj.cloneContents();}
var div=Viper.document.createElement('div');div.appendChild(clonedSelection.cloneNode(true));return div.innerHTML;},getHTMLContentsObj:function()
{return this.rangeObj.cloneContents();}};dfx.noInclusionInherits('ViperMozRange','ViperDOMRange',true);function ViperPlugin(viper)
{this.viper=viper;}
ViperPlugin.ALL_EVENTS=0;ViperPlugin.NODES_DELETED=1;ViperPlugin.NODES_INSERTED=2;ViperPlugin.NODES_CHANGED=3;ViperPlugin.SELECTION_CHANGED=4;ViperPlugin.prototype={start:function(){},clicked:function(e)
{return true;},mouseDown:function(e)
{return true;},keyDown:function(e)
{return true;},keyPress:function(e)
{return true;},selectionChanged:function(range){},setEnabled:function(enabled){},saving:function(){},caretUpdated:function(){},nodeInserted:function(node,range){},caretPositioned:function(){},remove:function()
{ViperPluginManager.removeKeyPressListener(this);},setSettings:function(settings){}};dfx.noInclusionInherits('ViperPlugin','AbstractWidgetWidgetType',true);var ViperPluginManager={plugins:{},pluginConstructors:{},keyPressListeners:{},viper:null,activePlugin:null,pluginSets:{},activePluginSet:null,pluginsURL:'',callbacks:{},allowTextInput:false,init:function(viper)
{this.viper=viper;this.loadAllPluginStyles();},getPluginNames:function()
{var plugins=[];for(var name in this.plugins){plugins.push(name);}
return plugins;},loadAllPluginStyles:function()
{var self=this;dfx.foreach(this.pluginConstructors,function(pluginName){self.loadPluginStyles(pluginName);});},loadPluginStyles:function(plugin)
{if(dfx.isset(plugin)===true){var url=this.getPluginStylesURL(plugin)+'/'+plugin+'.css';dfx._includeCss(url);}},getPluginStylesURL:function(plugin)
{var url=this.pluginsURL+plugin;return url;},addPluginObject:function(pluginName,pluginObj)
{this.plugins[pluginName]=pluginObj;},addPlugin:function(name,pluginConstructor)
{if(typeof pluginConstructor!=='function'){throw Error('ViperPluginException: plugin must be a constructor function');}
if(dfx.isset(this.pluginConstructors[name])===false){this.pluginConstructors[name]=pluginConstructor;this.loadPluginStyles(name);}},loadPluginScripts:function(plugins,callback)
{if(plugins.length===0){callback.call(this);}else{var plugin=plugins.shift();if(typeof plugin==='object'){plugin=plugin.name;}
if(dfx.isset(window[plugin])===true){if(dfx.isset(window[plugin])===true){ViperPluginManager.addPlugin(plugin,window[plugin]);}
this.loadPluginScripts(plugins,callback);}else{var self=this;var url=this.pluginsURL+plugin+'/'+plugin+'.js';dfx.includeScript(url,function(){if(dfx.isset(window[plugin])===true){ViperPluginManager.addPlugin(plugin,window[plugin]);}
self.loadPluginScripts(plugins,callback);});}}},setActivePlugin:function(name,allowTextInput)
{allowTextInput=allowTextInput||false;this.activePlugin=name;this.allowTextInput=allowTextInput;},getActivePlugin:function()
{return this.activePlugin;},_getPluginName:function(pluginConstructor)
{var fn=pluginConstructor.toString();var start='function '.length;var name=fn.substr(start,(fn.indexOf('(')-start));return name;},removePlugin:function(plugin)
{if(this.plugins[plugin]){this.plugins[plugin].remove();this.removeKeyPressListener(this.plugins[plugin]);this.fireCallbacks('pluginRemoved',plugin);}},getPlugin:function(name)
{return this.plugins[name];},addPluginSet:function(name,plugins,load,callback)
{if(dfx.isset(plugins)===true){this.pluginSets[name]=plugins;}else{this.pluginSets[name]=[];}
if(load===true){var clone=this.pluginSets[name].concat([]);this.loadPluginScripts(clone,function(){if(callback){callback.call(this);}});}else if(callback){callback.call(this);}},removePluginSet:function(name)
{if(this.pluginSetExists(name)===true){delete this.pluginSets[name];}},addPluginToSet:function(setName,pluginName)
{if(this.pluginSetExists(name)===true){this.pluginSets[setName].push(pluginName);}},pluginSetExists:function(name)
{return dfx.isset(this.pluginSets[name]);},usePluginSet:function(setName,disableOnly,callback)
{if(this.pluginSetExists(setName)===true){var self=this;var clone=this.pluginSets[setName].concat([]);this.loadPluginScripts(clone,function(){if(self.activePluginSet!==null){self._removeSet(self.activePluginSet);}
self._enableSet(setName);if(dfx.isFn(callback)===true){callback.call(this,setName);}});}else if(this.activePluginSet!==null){this._removeSet(this.activePluginSet);}},_removeSet:function(name)
{var pSetLen=this.pluginSets[name].length;for(var i=0;i<pSetLen;i++){var plugin=this.pluginSets[name][i];if(typeof plugin==='object'){plugin=plugin.name;}
this.removePlugin(plugin);}
this.activePluginSet=null;},_enableSet:function(name)
{this.activePluginSet=name;var pSetLen=this.pluginSets[name].length;for(var i=0;i<pSetLen;i++){var plugin=this.pluginSets[name][i];var pluginName='';if(typeof plugin==='object'){pluginName=plugin.name;}else{pluginName=plugin;}
var pluginConstructor=this.pluginConstructors[pluginName];if(pluginConstructor){var pluginObj=new pluginConstructor(this.viper);this.plugins[pluginName]=pluginObj;if(dfx.isset(plugin.settings)===true){pluginObj.setSettings(plugin.settings);}
pluginObj.start();}}},disablePlugin:function(name)
{this.plugins[name].disable();},isPluginElement:function(element)
{for(var i in this.plugins){if(this.plugins[i].isPluginElement){if(this.plugins[i].isPluginElement(element)===true){return true;}}}
return false;},addKeyPressListener:function(keys,plugin,evtFunction,data)
{var keysArray=keys.toLowerCase().split('+').sort();var listener={plugin:plugin,fn:evtFunction,data:data};var keysStr=keysArray.join('+');if(!this.keyPressListeners[keysStr]){this.keyPressListeners[keysStr]=[];}
this.keyPressListeners[keysStr].push(listener);},removeKeyPressListener:function(plugin,keys)
{if(plugin&&keys&&this.keyPressListeners[keys]){var ln=this.keyPressListeners[keys].length;for(var i=0;i<ln;i++){var listener=this.keyPressListeners[keys][i];if(listener.plugin===plugin){this.keyPressListeners[keys].splice(i,1);break;}}}else if(plugin){for(var k in this.keyPressListeners){if(this.keyPressListeners.hasOwnProperty(k)===false){continue;}
var ln=this.keyPressListeners[k].length;if(ln===0){delete this.keyPressListeners[k];}else{for(var i=0;i<ln;i++){var listener=this.keyPressListeners[k][i];if(listener.plugin===plugin){this.keyPressListeners[k].splice(i,1);break;}}}}}},fireKeyPressed:function(e)
{if(this._fireKeyPressFns(e,'all_keys')===false){return false;}
var eKeys=[];if(e.ctrlKey===true||e.metaKey===true){eKeys.push('ctrl');}
if(e.shiftKey===true){eKeys.push('shift');}
if(e.altKey===true){eKeys.push('alt');}
switch(e.keyCode){case 13:eKeys.push('enter');break;case dfx.DOM_VK_LEFT:eKeys.push('left');break;case dfx.DOM_VK_RIGHT:eKeys.push('right');break;case dfx.DOM_VK_UP:eKeys.push('up');break;case dfx.DOM_VK_DOWN:eKeys.push('down');break;case 9:eKeys.push('tab');break;case dfx.DOM_VK_DELETE:eKeys.push('delete');break;default:var code;if(e.keyCode){code=e.keyCode;}else if(e.which){code=e.which;}
if(code){eKeys.push(String.fromCharCode(code).toLowerCase());}
break;}
var eKeysStr=eKeys.sort().join('+');return this._fireKeyPressFns(e,eKeysStr);},_fireKeyPressFns:function(e,eKeysStr)
{if(this.keyPressListeners[eKeysStr]){var ln=this.keyPressListeners[eKeysStr].length;for(var i=0;i<ln;i++){var listener=this.keyPressListeners[eKeysStr][i];var eventFn=listener.fn;var plugin=listener.plugin;var data=listener.data;if(eventFn){if(dfx.isFn(eventFn)===true){if(eventFn.call(plugin,e,data)===true){dfx.preventDefault(e);return false;}}else if(plugin[eventFn]&&plugin[eventFn].call(plugin,e,data)===true){dfx.preventDefault(e);return false;}}}}
return true;},fireSelectionChanged:function(range)
{for(var i in this.plugins){this.plugins[i].selectionChanged(range);}},fireNodeInserted:function(node,range)
{for(var i in this.plugins){if(this.plugins[i].nodeInserted(node,range)===false){return false;}}},fireCaretPositioned:function()
{for(var i in this.plugins){this.plugins[i].caretPositioned()}},fireClicked:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].clicked(e)===false){val=false;}}
return val;},fireMouseDown:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].mouseDown(e)===false){val=false;}}
return val;},fireKeyDown:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].keyDown(e)===false){val=false;}}
return val;},fireKeyPress:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].keyPress(e)===false){val=false;}}
return val;},fireEnabled:function(enabled)
{for(var i in this.plugins){this.plugins[i].setEnabled(enabled);}},fireSaving:function(elem)
{for(var i in this.plugins){if(this.plugins[i].saving){this.plugins[i].saving(elem);}}},fireCaretUpdated:function()
{for(var i in this.plugins){if(this.plugins[i].caretUpdated){this.plugins[i].caretUpdated();}}},registerCallback:function(type,id,callback)
{if(dfx.isFn(callback)===false){return;}
if(dfx.isset(this.callbacks[type])===false){this.callbacks[type]={};}
this.callbacks[type][id]=callback;},fireCallbacks:function(type,data)
{if(dfx.isset(this.callbacks[type])===true){for(var id in this.callbacks[type]){this.callbacks[type][id].call(type,data);}}},removeCallback:function(type,id)
{delete this.callbacks[type][id];}};var ViperSelection={_lastRange:null,_lastTextRange:null,_selection:null,_getSelection:function()
{if(Viper.window.getSelection){return Viper.window.getSelection();}else if(Viper.document.getSelection){return Viper.document.getSelection();}else if(Viper.document.selection){return Viper.document.selection;}else{return null;}},createRange:function()
{var rangeObj=null;if(Viper.document.body.createTextRange){rangeObj=Viper.document.body.createTextRange();return new ViperIERange(rangeObj);}else if(Viper.document.createRange){rangeObj=Viper.document.createRange();return new ViperMozRange(rangeObj);}else{throw Error('UnsupportedOperationException: createRange() not supported.');}},getRangeAt:function(pos)
{this._selection=ViperSelection._getSelection();var selection=this._selection;if(selection.getRangeAt){try{if(selection.rangeCount>0){var range=selection.getRangeAt(pos);var mozRange=new ViperMozRange(range);}else{var mozRange=this.createRange();}
return mozRange;}catch(e){return null;}}else{var rangeObj=selection.createRange();if(!rangeObj.duplicate){rangeObj=Viper.document.body.createTextRange();}
var range=new ViperIERange(rangeObj);this._lastRange=range;return this._lastRange;}},addRange:function(range)
{this._selection=ViperSelection._getSelection();if(this._selection.addRange){if(this._selection.rangeCount>0){this._selection.removeAllRanges();}
this._selection.addRange(range.rangeObj);}else if(range.rangeObj.select){try{range.rangeObj.select();}catch(e){}}},removeRange:function(range)
{var selection=ViperSelection._getSelection();if(selection){if(selection.removeRange){selection.removeRange(range.rangeObj);}else if(selection.empty){selection.empty();}}}};function ViperTextMetrics(){}
ViperTextMetrics.appendToBody=function(element)
{Viper.document.getElementsByTagName('body')[0].appendChild(element);};ViperTextMetrics.getCharWidth=function(chr)
{var clone=ViperTextMetrics.workNode;var text=clone.innerHTML;clone.innerHTML=chr;var insets=ViperElementMetrics.getInsets(clone);var width=(clone.offsetWidth-insets.left-insets.right);clone.innerHTML=text;return width;};var isInteger=function(num)
{return(!isNaN(parseInt(num))&&parseInt(num).toString()==num);};ViperTextMetrics.getCharHeight=function(element)
{var styles=ViperElementMetrics.getStyles(element);var size=styles.fontSize;var bodyStyles=ViperElementMetrics.getStyles(Viper.document.body);if(bodyStyles.fontSize){var bodyFontSize=parseInt(bodyStyles.fontSize);}
if(size!==''){if(!isInteger(size)){var idx=0;if((idx=size.indexOf('em'))>0){size=size.substring(0,idx);size=(size*bodyFontSize*1.3333);}else if((idx=size.indexOf('pt'))>0){size=size.substring(0,idx);size=(size*1.3333);}else if((idx=size.indexOf('%'))>0){size=parseInt(size.substring(0,idx));size=((size/7)-1);if(size>174){size=(size-1);}}}}
return parseInt(size);};ViperTextMetrics.getWordsBeforeOffset=function(offset)
{return ViperTextMetrics.workNode.innerHTML.substr(0,offset).split(/\s+/);};ViperTextMetrics.getFirstWordOnLine=function(offset)
{var clone=ViperTextMetrics.workNode;var words=ViperTextMetrics.getWordsBeforeOffset(offset);var firstWord=0;var currHeight=0;var text=clone.innerHTML;clone.innerHTML='';var wLen=words.length;for(var i=0;i<wLen;i++){clone.innerHTML=clone.innerHTML+words[i]+' ';if(clone.offsetHeight>currHeight){currHeight=clone.offsetHeight;firstWord=i;}}
clone.innerHTML=text;return firstWord;};ViperTextMetrics.getLineCount=function(offset)
{var clone=ViperTextMetrics.workNode;var words=ViperTextMetrics.getWordsBeforeOffset(offset);var lines=0;var currHeight=0;var text=clone.innerHTML;clone.innerHTML='';var wLen=words.length;for(var i=0;i<wLen;i++){clone.innerHTML=clone.innerHTML+words[i]+' ';if(clone.offsetHeight>currHeight){currHeight=clone.offsetHeight;lines++;}}
clone.innerHTML=text;return lines;};ViperTextMetrics.getLineWidth=function(offset)
{var clone=ViperTextMetrics.element.cloneNode(true);ViperTextMetrics.appendToBody(clone);var words=ViperTextMetrics.getWordsBeforeOffset(offset);var firstWord=ViperTextMetrics.getFirstWordOnLine(offset);clone.innerHTML=words.slice(firstWord).join(' ');clone.style.display='inline';var insets=ViperElementMetrics.getInsets(clone);var coords=dom.getElementCoords(ViperTextMetrics.element);var left=(insets.left-coords.x);if(words[(words.length-1)]===''){width=(clone.offsetWidth-left)+ViperTextMetrics.getCharWidth('&nbsp;');}else{width=(clone.offsetWidth-left);}
return width;};ViperTextMetrics.getCharacterCoords=function(offset)
{var clone=ViperTextMetrics.workNode;var coords=dom.getElementCoords(ViperTextMetrics.element);var insets=ViperElementMetrics.getInsets(clone);clone.style.width=(clone.offsetWidth-insets.left-insets.right)+'px';var x=ViperTextMetrics.getLineWidth(offset);var y=(coords.y+insets.top-ViperTextMetrics.getCharHeight());y=y+(ViperTextMetrics.getCharHeight()*(ViperTextMetrics.getLineCount(offset)-1));return{'x':x,'y':y};};var ViperUndoManager={undoHistory:[],redoHistory:[],undoHandlers:{},redoHandlers:{},batchCount:0,batch:null,viper:null,_textChangeCount:0,historyStore:{},_activeElement:null,historyLimit:30,init:function(viper)
{this.viper=viper;this.handles={};this.undoHistory=[];this.redoHisotory=[];this.historyStore={};var self=this;this.registerUndoHandler('viper',function(action,data){self.handleUndo(action,data);});this.registerRedoHandler('viper',function(action,data){self.handleRedo(action,data);});},registerUndoHandler:function(source,callback)
{this.undoHandlers[source]=callback;},registerRedoHandler:function(source,callback)
{this.redoHandlers[source]=callback;},setActiveElement:function(elem)
{if(this._activeElement){if(this.historyStore[this._activeElement]&&this.historyStore[this._activeElement].element!==elem){this._saveHistory(this._activeElement);}else{this.viper.fireCallbacks('ViperUndoManager:newUndoTask');return;}}
var self=this;var loaded=false;dfx.foreach(this.historyStore,function(key){if(self.historyStore[key].element===elem){self._loadHistory(key);loaded=true;return false;}});if(loaded===false){var key=dfx.getUniqueId();this.historyStore[key]={undo:[],redo:[],element:elem};this._loadHistory(key);this.add('viper','change_node');}else{this.viper.fireCallbacks('ViperUndoManager:newUndoTask');}},_loadHistory:function(key)
{if(this.historyStore[key]){this._activeElement=key;this.undoHistory=this.historyStore[key].undo;this.redoHistory=this.historyStore[key].redo;this._textChangeCount=0;this.batch=null;this.batchCount=0;}},_saveHistory:function(key)
{if(this.historyStore[key]){this.historyStore[key].undo=this.undoHistory;this.historyStore[key].redo=this.redoHistory;}},getUndoHistory:function()
{return this.undoHistory;},modify:function(undoIndex,task)
{this.undoHistory[undoIndex]=task;},begin:function()
{this.batchCount++;if(this.batch===null){this.batch=true;}},end:function()
{this.batchCount--;if(this.batchCount===0&&this.batch!==null){if(this.batch!==true){this.undoHistory.push(this.batch);}
this.batch=null;}},add:function(source,action)
{if(this.viper._subElementActive===true){return;}
var modify=false;if(action==='text_change'){this._textChangeCount++;if(this._textChangeCount>1){if(this._textChangeCount<30){modify=true;}else{this._textChangeCount=1;}}}else{this._textChangeCount=0;}
var data={content:dfx.getHtml(this.viper.element),range:this._getRangeInfo()};var task={source:source,action:action,data:data};if(this.batch===null){if(modify===true){this.undoHistory[(this.undoHistory.length-1)]=task;}else{this.undoHistory.push(task);if(this.undoHistory.length>this.historyLimit){this.undoHistory.shift();}}
this.redoHistory=[];}else{this.batch=task;}
this.viper.fireCallbacks('ViperUndoManager:newUndoTask');},undo:function()
{if(this.viper._subElementActive===true){return;}
var undoLength=this.undoHistory.length;if(undoLength===1){return;}
this._textChangeCount=0;var task=this.undoHistory.pop();this.redoHistory.push(task);undoLength=this.undoHistory.length;var undoTask=this.undoHistory[(undoLength-1)];if(undoTask){this.undoHandlers[undoTask.source].call(this,undoTask);}
this.viper.fireCallbacks('nodesChanged');this.viper.fireCallbacks('ViperUndoManager:undo');return undoLength;},redo:function()
{if(this.viper._subElementActive===true){return;}
if(this.redoHistory.length===0){return;}
var task=this.redoHistory.pop();this.undoHistory.push(task);this.redoHandlers[task.source].call(this,task);this.viper.fireCallbacks('nodesChanged');this.viper.fireCallbacks('ViperUndoManager:redo');return this.redoHistory.length;},getUndoCount:function()
{return this.undoHistory.length;},getRedoCount:function()
{return this.redoHistory.length;},handleUndo:function(task)
{this.handleUndoChange(task);},handleRedo:function(task)
{this.handleRedoChange(task);},handleUndoChange:function(task)
{if(task.data.content){dfx.setHtml(this.viper.element,task.data.content);this._setCaretPositon(task);}},handleRedoChange:function(task)
{if(task.data.content){dfx.setHtml(this.viper.element,task.data.content);this._setCaretPositon(task);}},_setCaretPositon:function(task)
{if(task&&task.data&&task.data.range){var taskRange=task.data.range;if(taskRange.startCont&&taskRange.endCont){var range=this.viper.getCurrentRange();try{var startNode=XPath.getNode(taskRange.startCont);var endNode=XPath.getNode(taskRange.endCont);if(startNode&&endNode){range.setStart(startNode,taskRange.startOffset);range.setEnd(endNode,taskRange.endOffset);ViperSelection.addRange(range);this.viper.focus();}}catch(e){}}}},createNodeChangeInfo:function(node,range)
{if(!range){range=this.viper.getCurrentRange();}
var info={before:dfx.getHtml(node),path:XPath.getPath(node)};try{if(range){info.startContainer=XPath.getPath(range.startContainer);info.startOffset=range.startOffset;info.endContainer=XPath.getPath(range.endContainer);info.endOffset=range.endOffset;}}catch(e){};return info;},_getRangeInfo:function()
{var rangeInfo={};try{var range=this.viper.getCurrentRange();var rangeInfo={startCont:XPath.getPath(range.startContainer),startOffset:range.startOffset,endCont:XPath.getPath(range.endContainer),endOffset:range.endOffset};}catch(e){};return rangeInfo;}};var XPath={getPath:function(node)
{var path,step;path='/node()['+this.getPosition(node,false)+']';node=node.parentNode;while(node.parentNode){step='/';switch(node.nodeType){case dfx.ELEMENT_NODE:step+=node.nodeName.toLowerCase()+'['+this.getPosition(node,true)+']';break;default:break;}
path=step+path;node=node.parentNode;}
return path;},getPosition:function(node,matchType)
{var childNodes=node.parentNode.childNodes;var pos=1;var cln=childNodes.length;for(var i=0;i<cln;i++){if(childNodes[i]===node){break;}
if(!matchType){pos++;continue;}
switch(node.nodeType){case dfx.ELEMENT_NODE:if(childNodes[i].nodeType===dfx.ELEMENT_NODE&&childNodes[i].nodeName===node.nodeName){pos++;}
break;case dfx.TEXT_NODE:if(childNodes[i].nodeType===dfx.TEXT_NODE){pos++;}
break;default:break;}}
return pos;},getNode:function(path)
{if(Viper.document.evaluate){var node=Viper.document.evaluate(path,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);return node.singleNodeValue;}else{return this._getNodeFromPath(path);}},_getNodeFromPath:function(path)
{var paths=path.split('/');var parent=document;var pln=paths.length;for(var i=0;i<pln;i++){if(dfx.trim(paths[i])===''){continue;}
parent=this._getNodeFromPathSegment(parent,paths[i]);}
return parent;},_getNodeFromPathSegment:function(parent,path)
{var pos=path.match(/\[(\d+)\]/);pos=parseInt(pos[1]);if(!pos){pos=1;}
var brPos=path.indexOf('[')||path.length;var type=path.substr(0,brPos);var node,found=1;var cln=parent.childNodes.length;for(var i=0;i<cln;i++){node=parent.childNodes[i];if(type==='node()'){if(found===pos){return node;}
found++;}else if(node.tagName&&type===node.tagName.toLowerCase()){if(found===pos){return node;}
found++;}}
throw Error('XPath: node could not be found');},getPreviousNode:function(path)
{var paths=path.split('/');var lastStep=paths.pop();var pos=lastStep.match(/\[(\d+)\]/)[1];lastStep=lastStep.replace(/\[(\d+)\]/,'['+(parseInt(pos)-1)+']');path=paths.join('/')+'/'+lastStep;return this.getNode(path);}};function ViperContentSharingPlugin(viper)
{ViperPlugin.call(this,viper);this.data=[];this.listContainer=null;this.titleWidget=null;this.previewPane=null;this.selected=null;this.canAdd=false;this.newid=null;this.contentSharingWidget=null;}
ViperContentSharingPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('ContentSharing','content-sharing','Manage Shared Content',function(){self.showManager();});},_isSharedContent:function(el,elemOnly)
{do{if(el.tagName==='SPAN'){if(dfx.hasClass(el,'ContentSharing-sharedContent')){return true;}}
if(elemOnly===true){return false;}
el=el.parentNode;}while(el.parentNode!=null&&el.parentNode.tagName!='BODY');return false;},showManager:function()
{var selectedHtml='';var range=this.viper.getCurrentRange();if(range.collapsed!==true){this.canAdd=true;selectedHtml=range.getHTMLContentsObj();}
var bookmark=this.viper.createBookmark();this.displayDisabledDiv(true);ViperPluginManager.setActivePlugin('ViperContentSharingPlugin');var self=this;this.includeWidgets(['ModalDialog','TextField','Button','EditingContentSharing'],function(){var modalDialog=self.createWidget('ViperContentSharingDialog','ModalDialog');var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-left">';content+='<div class="'+c+'-left-title">Available Content Items</div>';content+='<div class="'+c+'-left-list"></div>';content+='</div>';content+='<div class="'+c+'-right">';content+='<div class="'+c+'-right-top">';content+='<div class="'+c+'-right-top-title">Name</div>';content+='</div>';content+='<div class="'+c+'-right-titleText"></div>';content+='<div class="'+c+'-right-titleField"></div>';content+='<div class="'+c+'-right-prevTitle">Preview</div>';content+='<div class="'+c+'-right-preview"></div>';content+='</div>';dfx.setHtml(main,content);self.titleFieldCont=dfx.getClass(c+'-right-titleField',main)[0];self.titleTextCont=dfx.getClass(c+'-right-titleText',main)[0];self.listContainer=dfx.getClass(c+'-left-list',main)[0];self.previewPane=dfx.getClass(c+'-right-preview',main)[0];if(self.canAdd===true){var titleWidget=self.createWidget(null,'TextField');self.titleWidget=titleWidget;titleWidget.create(function(el){self.titleFieldCont.appendChild(el);});var addBtnWidget=self.createWidget(null,'Button','ButtonWidgetType-liteGrey');addBtnWidget.setName('Add Keyword');addBtnWidget.addClickEvent(function(){var newid=self.newid;var title=self.titleWidget.getValue();var content=range.getHTMLContents(self._fixNestedKeywords(selectedHtml));self.contentSharingWidget.add(newid,title,unescape(content),function(result){if(result.error){alert(result.error);return;}else if(result.key){self.newid=null;self.selected=null;self.data[newid].title=title;self.data[newid].key=result.key;dfx.setHtml(dfx.getId(newid),title);self.selectKeyword(newid);}});});addBtnWidget.create(function(btnel){self.titleFieldCont.appendChild(btnel);});}
modalDialog.setContent(main);modalDialog.setTitle('Content Sharing');modalDialog.setSubTitle('Insert shared content elements');modalDialog.create(function(){modalDialog.addButton('Close',function(button){button.addClickEvent(function(){modalDialog.close(true);},true);});modalDialog.addButton('Insert Content',function(button){button.addClickEvent(function(){if(self.data[self.selected]){var keyword=self.data[self.selected].key;self.insertKeyword(keyword,bookmark);modalDialog.close(true);}},true);});self.contentSharingWidget=self.createWidget(null,'EditingContentSharing');if(self.canAdd===true){var kid=self._createListItem(null,null,range.getHTMLContents(selectedHtml));self.selectKeyword(kid);}
self.contentSharingWidget.getKeywordsList(function(keywords){self.updateKeywordList(keywords);modalDialog.open();});modalDialog.addOnCloseCallback(function(){ViperPluginManager.setActivePlugin(null);self.selected=null;});});});},_fixNestedKeywords:function(contentElem)
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');keywordPlugin.normalizeKeywords(contentElem);return contentElem;},insertKeyword:function(keywordid,bookmark)
{if(!this.data[keywordid]){return;}
var title=this.data[keywordid].title;var content=this.data[keywordid].content;var keyword='%contentSharing~'+keywordid+'%';var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');keywordPlugin.insertKeyword(keyword,content,bookmark);this.selected=null;},updateKeywordList:function(keywords)
{var first=true;for(var id in keywords){if(keywords.hasOwnProperty(id)===true){this._createListItem(id,keywords[id].title,keywords[id].content);if(first===true&&this.canAdd!==true){first=false;this.selectKeyword(id);}}}},_createListItem:function(id,title,content)
{content=content||'';title=title||'Current Selection';if(!id){id=dfx.getUniqueId();this.newid=id;}
var main=document.createElement('div');var c=this.getClass()+'-listItem';main.id=id;dfx.addClass(main,c);var mcontent='<div class="'+c+'-title">'+title+'</div>';dfx.setHtml(main,mcontent);this.setData(id,title,content);this.listContainer.appendChild(main);var self=this;dfx.addEvent(main,'click',function(){self.selectKeyword(id);});return id;},setData:function(id,title,content)
{this.data[id]={title:title,content:content,key:id};},selectKeyword:function(id)
{if(!this.data[id]||this.selected===id){return;}
if(id===this.newid){this.titleWidget.setValue(this.data[id].title);dfx.setStyle(this.titleFieldCont,'display','block');dfx.setStyle(this.titleTextCont,'display','none');}else{dfx.setHtml(this.titleTextCont,this.data[id].title);dfx.setStyle(this.titleFieldCont,'display','none');dfx.setStyle(this.titleTextCont,'display','block');}
dfx.setHtml(this.previewPane,this.data[id].content);if(this.selected!==null){dfx.removeClass(dfx.getId(this.selected),'selected');}
dfx.addClass(dfx.getId(id),'selected');this.selected=id;},getClass:function()
{return'ViperContentSharingPlugin';}};dfx.noInclusionInherits('ViperContentSharingPlugin','ViperPlugin',true);function ViperCopyPastePlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.pasteElement=null;this.pasteValue=null;this.rangeObj=null;this.pasteType='formatted';this.cutType='formatted';this._tmpNode=null;}
ViperCopyPastePlugin.prototype={setSettings:function(settings)
{if(dfx.isset(settings.pasteType)===true){this.pasteType=settings.pasteType;}
if(dfx.isset(settings.cutType)===true){this.cutType=settings.cutType;}},start:function()
{this.createPasteDiv();},keyDown:function(e)
{this.handlePaste(e);},handleCut:function(e)
{if(this.cutType==='formatted'){return this.handleFormattedCut();}
var range=this.viper.getCurrentRange();if(range.collapsed===true){return false;}
var startCont=range.startContainer;var startOffset=range.startOffset;var bookmark=this.viper.createBookmark();var textInput=document.createElement('input');dfx.setStyle(textInput,'top','100px');dfx.setStyle(textInput,'left','100px');dfx.setStyle(textInput,'position','fixed');dfx.setStyle(textInput,'width','0px');dfx.setStyle(textInput,'height','0px');dfx.setStyle(textInput,'border','0px');textInput.value=range.toString();this.viper.deleteContents();document.body.appendChild(textInput);textInput.focus();textInput.select();this.viper.selectBookmark(bookmark);this.viper.fireNodesChanged('ViperCopyPastePlugin:cut');return false;},handleFormattedCut:function()
{var range=this.viper.getCurrentRange();if(range.collapsed===true){return false;}
var contents=range.getHTMLContents();this.viper.deleteContents();var bookmark=this.viper.createBookmark();var div=document.createElement('div');div.setAttribute('class','editable_attribute');div.setAttribute('contentEditable',true);dfx.setStyle(div,'width','0px');dfx.setStyle(div,'height','0px');dfx.setStyle(div,'overflow','hidden');dfx.setStyle(div,'position','fixed');dfx.setStyle(div,'top','90px');dfx.setStyle(div,'left','50px');document.body.appendChild(div);dfx.setHtml(div,contents);div.focus();range.selectNode(div);ViperSelection.addRange(range);this.viper.selectBookmark(bookmark);setTimeout(function(){dfx.remove(div);},100);this.viper.fireNodesChanged('ViperCopyPastePlugin:cut');return false;},handlePaste:function(e)
{if(e.metaKey!==true&&e.ctrlKey!==true){return;}if(e.keyCode!==86){return;}else if(this.viper.pluginActive()===true&&ViperPluginManager.allowTextInput!==true){return;}
var range=this.viper.getCurrentRange();this.rangeObj=range.cloneRange();this._tmpNode=document.createTextNode('');this.viper.insertNodeAtCaret(this._tmpNode);switch(this.pasteType){case'formatted':this.handleFormattedPaste();break;case'formattedClean':this.handleFormattedPaste(true);break;default:this.handleRawPaste(e);break;}
return true;},handleRawPaste:function(e)
{var textInput=document.createElement('input');this.pasteElement=textInput;dfx.setStyle(textInput,'top','0px');dfx.setStyle(textInput,'left','0px');dfx.setStyle(textInput,'position','fixed');dfx.setStyle(textInput,'width','0px');dfx.setStyle(textInput,'height','0px');dfx.setStyle(textInput,'border','0px');document.body.appendChild(textInput);textInput.focus();var self=this;textInput.onpaste=function(){setTimeout(function(){self.handleRawPasteValue();},100);};return true;},handleRawPasteValue:function(e)
{if(this.pasteElement!==null){this.pasteValue=this.pasteElement.value;dfx.insertBefore(this._tmpNode,document.createTextNode(this.pasteValue));this._updateSelection();this.viper.fireNodesChanged('ViperCopyPastePlugin:paste');}},createPasteDiv:function()
{var oldEl=dfx.getId('ViperPasteDiv');if(oldEl){dfx.empty(oldEl);return oldEl;}
var div=document.createElement('div');div.id='ViperPasteDiv';div.setAttribute('contentEditable',true);dfx.setStyle(div,'width','0px');dfx.setStyle(div,'height','0px');dfx.setStyle(div,'overflow','hidden');dfx.setStyle(div,'position','fixed');dfx.setStyle(div,'top','10px');dfx.setStyle(div,'left','10px');document.body.appendChild(div);return div;},handleFormattedPaste:function(stripTags)
{div=this.createPasteDiv();this.pasteElement=div;div.focus();var self=this;div.onpaste=function(){setTimeout(function(){self.handleFormattedPasteValue(stripTags);},100);};return true;},handleFormattedPasteValue:function(stripTags)
{if(stripTags===true){jQuery(this.pasteElement).find('[style]').removeAttr('style');jQuery(this.pasteElement).find('[class]').removeAttr('class');}
this._removeEditableAttrs(this.pasteElement);var html=dfx.getHtml(this.pasteElement);html=this._cleanWordPaste(html);if(stripTags===true){html=dfx.stripTags(html,['table','tr','td','th','ul','li','ol','br','p','a','img','form','input','select','option']);}
var fragment=this.rangeObj.createDocumentFragment(html);dfx.insertBefore(this._tmpNode,fragment);this._updateSelection();this.viper.fireNodesChanged('ViperCopyPastePlugin:paste');},_cleanWordPaste:function(content)
{content=content.replace(/<(meta|link)[^>]+>/g,"");content=content.replace(/<!--(.|\s)*?-->/g,'');content=content.replace(/<style>[\s\S]*?<\/style>/g,'');content=content.replace(/<\/?span[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,'');content=content.replace(/<\\?\?xml[^>]*>/gi,'');content=this._cleanPaste(content);content=this._convertWordPasteList(content);content=content.replace(/<(\w[^>]*) (class|lang)=([^ |>]*)([^>]*)/gi,"<$1$4");content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(new RegExp('<(\\w[^>]*) _viperlistst="([^"]*)"([^>]*)','gi'),"<$1 style=\"$2\"$3");content=this._convertDelNInsTags(content);return content;},_convertDelNInsTags:function(content)
{var tmp=document.createElement('div');dfx.setHtml(tmp,content);var delTags=dfx.getTag('del',tmp);dfx.remove(delTags);var insTags=dfx.getTag('ins',tmp);var ins=null;while(ins=insTags.shift()){while(ins.firstChild){dfx.insertBefore(ins,ins.firstChild);}
dfx.remove(ins);}
content=dfx.getHtml(tmp);return content;},_getListType:function(elem,listTypes)
{var elContent=dfx.getHtml(elem);var info=null;dfx.foreach(listTypes,function(k){dfx.foreach(listTypes[k],function(j){dfx.foreach(listTypes[k][j],function(m){if((new RegExp(listTypes[k][j][m])).test(elContent)===true){info={html:elContent.replace(new RegExp(listTypes[k][j][m]),''),listType:k,listStyle:j};return false;}});if(info!==null){return false;}});if(info!==null){return false;}});return info;},_convertWordPasteList:function(content)
{var div=document.createElement('div');var ul=null;var prevMargin=null;var indentLvl={};var li=null;var newList=true;var listTypes={ul:{circle:['^o(\s|&nbsp;)+'],disc:['^'+String.fromCharCode(183)+'(\\s|&nbsp;)+'],square:['^'+String.fromCharCode(167)+'(\\s|&nbsp;)+'],auto:['^'+String.fromCharCode(8226)+'(\\s|&nbsp;)+']},ol:{decimal:['^\\d+\\.(\s|&nbsp;)+'],'lower-roman':['^[ivxlcdm]+\\.(\\s|&nbsp;)+'],'upper-roman':['^[IVXLCDM]+\\.(\\s|&nbsp;)+'],'lower-alpha':['^[a-z]+\\.(\\s|&nbsp;)+'],'upper-alpha':['^[A-Z]+\\.(\\s|&nbsp;)+']}};dfx.setHtml(div,content);var pElems=dfx.getTag('p',div);var pln=pElems.length;for(var i=0;i<pln;i++){var pEl=pElems[i];var listTypeInfo=this._getListType(pEl,listTypes);if(listTypeInfo!==null){var marginLeft=parseInt(dfx.getStyle(pEl,'margin-left'));var listType=listTypeInfo.listType;var listStyle=listTypeInfo.listStyle;dfx.setHtml(pEl,listTypeInfo.html);if(!listType){listType='ol';}
if(newList===true){ul=document.createElement(listType);indentLvl={};dfx.attr(ul,'_viperlistst','list-style-type:'+listStyle);indentLvl[marginLeft]=ul;dfx.insertBefore(pEl,ul);}else{if(marginLeft!==prevMargin){if(dfx.isset(indentLvl[marginLeft])===true){ul=indentLvl[marginLeft];}else if(marginLeft>prevMargin){ul=document.createElement(listType);dfx.attr(ul,'_viperlistst','list-style-type:'+listStyle);li.appendChild(ul);indentLvl[marginLeft]=ul;}}}
li=this._createListItemFromElement(pEl);ul.appendChild(li);prevMargin=marginLeft;dfx.remove(pEl);newList=false;}else{newList=true;}}
content=dfx.getHtml(div);return content;},_createListItemFromElement:function(elem)
{var li=document.createElement('li');while(elem.firstChild){li.appendChild(elem.firstChild);}
return li;},_cleanPaste:function(content)
{content=content.replace(/<b(\s+|>)/g,"<strong$1");content=content.replace(/<\/b(\s+|>)/g,"</strong$1");content=content.replace(/<i(\s+|>)/g,"<em$1");content=content.replace(/<\/i(\s+|>)/g,"</em$1");return content;},_removeEditableAttrs:function(container)
{var editables=dfx.getClass('editable_attribute',container);var el=editables.length;for(var i=0;i<el;i++){this._moveChildren(editables[i]);dfx.remove(editables[i]);}},_moveChildren:function(cont)
{while(dfx.isset(cont.firstChild)===true){dfx.insertBefore(cont,cont.firstChild);}},_updateSelection:function()
{var range=this.viper.getCurrentRange();range.setStart(this._tmpNode,0);range.collapse(true);dfx.remove(this.pasteElement);this._tmpNode=null;}};dfx.noInclusionInherits('ViperCopyPastePlugin','ViperPlugin',true);function ViperCoreStylesPlugin(viper)
{ViperPlugin.call(this,viper);this.styleTags=['strong','em','u','sub','sup','strike'];this.buttons=['strong','emphasise','underline','subscript','superscript','strikethrough'];this.toolbarPlugin=null;this.activeStyles=[];this._caretUpdatedTimeout=null;this._onChangeAddStyle=null;}
ViperCoreStylesPlugin.prototype={handleKeyPress:function(e,type)
{if(type){return this.handleStyle(type);}},start:function()
{var name='CoreStylesKBS';var self=this;var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')>=0){ctrlName='CMD';}
this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton(name,'strong','Strong ('+ctrlName+' + B)',function(){self.handleStyle('strong');});this.toolbarPlugin.setButtonShortcut(this,'strong','CTRL+B','handleKeyPress','strong');this.toolbarPlugin.addButton(name,'emphasise','Emphasise ('+ctrlName+' + I)',function(){self.handleStyle('em');});this.toolbarPlugin.setButtonShortcut(this,'emphasise','CTRL+I','handleKeyPress','em');this.toolbarPlugin.addButton(name,'underline','Underline ('+ctrlName+' + U)',function(){self.handleStyle('u');});this.toolbarPlugin.setButtonShortcut(this,'underline','CTRL+U','handleKeyPress','u');this.toolbarPlugin.addButton(name,'remove-format','Remove Format',function(){self.removeFormat();});this.toolbarPlugin.addButton(name,'subscript','Subscript',function(){self.handleStyle('sub');});this.toolbarPlugin.addButton(name,'superscript','Superscript',function(){self.handleStyle('sup');});this.toolbarPlugin.addButton(name,'strikethrough','Strikethrough',function(){self.handleStyle('strike');});this.toolbarPlugin.addButton(name,'align-left','Left Justfy',function(){self.handleJustfy('left');});this.toolbarPlugin.addButton(name,'align-center','Center Justfy',function(){self.handleJustfy('center');});this.toolbarPlugin.addButton(name,'align-right','Right Justfy',function(){self.handleJustfy('right');});this.toolbarPlugin.addButton(name,'align-justify','Block Justfy',function(){self.handleJustfy('justify');});var tagNames={em:'Italic',strong:'Bold',u:'Underline',sub:'Subscript',sup:'Superscript',strike:'Strikethrough'};this.viper.registerCallback('ViperChangeTracker:modeChange','ViperCoreStylesPlugin',function(mode){var nodes=ViperChangeTracker.getCTNodes('formatChange');var copyAttr=['class','viperchangeid','time'];if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var span=Viper.document.createElement('span');dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});ViperChangeTracker.setCTData(span,'tagName',node.tagName.toLowerCase());while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'tagName');if(!origTag){return;}
var span=Viper.document.createElement(origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}
var nodes=ViperChangeTracker.getCTNodes('alignmentChange');if(nodes){if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var align=ViperChangeTracker.getCTData(node,'text-align');if(!align){align='';}
ViperChangeTracker.setCTData(node,'fin-text-align',dfx.getStyle(node,'text-align'));dfx.setStyle(node,'text-align',align);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var align=ViperChangeTracker.getCTData(node,'fin-text-align');if(!align){align='';}
dfx.setStyle(node,'text-align',align);});}}
var nodes=ViperChangeTracker.getCTNodes('removedFormat');if(nodes){if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'tagName');if(!origTag){return;}
var span=Viper.document.createElement(origTag);ViperChangeTracker.setCTData(span,'formatRemoved',origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'formatRemoved');if(!origTag){return;}
var span=Viper.document.createElement('span');ViperChangeTracker.setCTData(span,'tagName',origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}}});ViperChangeTracker.addChangeType('formatChange','Formatted','format');ViperChangeTracker.addChangeType('alignmentChange','Formatted','format');ViperChangeTracker.addChangeType('removedFormat','Formatted','format');ViperChangeTracker.setDescriptionCallback('removedFormat',function(node){var changes=[];var desc='';var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);dfx.foreach(ctNodes,function(i){if(dfx.isTag(ctNodes[i],'span')===true){var ctdata=ViperChangeTracker.getCTData(ctNodes[i],'tagName');if(tagNames[ctdata]){changes.push('Not '+tagNames[ctdata]);}}});desc+=changes.join(', ');return desc;});ViperChangeTracker.setDescriptionCallback('formatChange',function(node){var desc='';var changes=[];var ctNodes=ViperChangeTracker.getCTNodes('formatChange',node);ctNodes.unshift(node);dfx.foreach(ctNodes,function(i){var tagName=ctNodes[i].tagName.toLowerCase();if(tagNames[tagName]){changes.push(tagNames[tagName]);}else{tagName=ViperChangeTracker.getCTData(ctNodes[i],'tagName');if(tagNames[tagName]){changes.push(tagNames[tagName]);}}});desc+=changes.join(', ');return desc;});ViperChangeTracker.setDescriptionCallback('alignmentChange',function(node){var style='';if(ViperChangeTracker.getCurrentMode()==='original'){style=ViperChangeTracker.getCTData(node,'fin-text-align')||'';}else{style=dfx.getStyle(node,'text-align')||'';}
if(style){style='Aligned '+dfx.ucFirst(style);}
return style;});ViperChangeTracker.setApproveCallback('formatChange',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('formatChange',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedFormat',function(clone,node){var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);var mode=ViperChangeTracker.getCurrentMode();dfx.foreach(ctNodes,function(i){var elem=ctNodes[i];if(!elem.parentNode){return;}
var ctdata='';if(mode==='original'){ctdata=ViperChangeTracker.getCTData(elem,'removedFormat');}else{ctdata=ViperChangeTracker.getCTData(elem,'tagName');}
if(ctdata){var newElem=Viper.document.createElement(ctdata);while(elem.firstChild){newElem.appendChild(elem.firstChild);}
dfx.insertBefore(elem,newElem);dfx.remove(elem);}});});ViperChangeTracker.setApproveCallback('removedFormat',function(clone,node){var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);var mode=ViperChangeTracker.getCurrentMode();dfx.foreach(ctNodes,function(i){var elem=ctNodes[i];if(mode==='original'){var tag=ViperChangeTracker.getCTData(elem,'formatRemoved');if(tag){dfx.insertBefore(elem,elem.childNodes);dfx.remove(elem);}}else if(dfx.isTag(elem,'span')===true&&elem.getAttribute('ctdata')){dfx.insertBefore(elem,elem.childNodes);dfx.remove(elem);}});});ViperChangeTracker.setApproveCallback('alignmentChange',function(clone,node){if(ViperChangeTracker.getCurrentMode()==='original'){var finAlignment=ViperChangeTracker.getCTData(node,'fin-text-align')||'';dfx.setStyle(node,'text-align',finAlignment);}
ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('alignmentChange',function(clone,node){var style=ViperChangeTracker.getCTData(node,'text-align');if(!style){style='left';}
dfx.setStyle(node,'text-align',style);ViperChangeTracker.removeTrackChanges(node);});},handleJustfy:function(type)
{var range=this.viper.getCurrentRange();var start=range.startContainer;var end=range.endContainer;var node=start;var next=null;var common=range.getCommonElement();common=this.getFirstBlockParent(common);if(dfx.isChildOf(common,this.viper.element)===true){this.setJustfyChangeTrackInfo(common);dfx.setStyle(common,'text-align',type);}else{var parent=null;var bookmark=null;var elemsBetween=[];if(range.collapsed!==true||dfx.isStubElement(start)===false){bookmark=this.viper.createBookmark();elemsBetween=dfx.getElementsBetween(bookmark.start,bookmark.end);}else{elemsBetween=dfx.getElementsBetween(start,end);elemsBetween.unshift(start);elemsBetween.push(end);}
while(node=elemsBetween.shift()){if(dfx.isBlockElement(node)===true){this.setJustfyChangeTrackInfo(node);dfx.setStyle(node,'text-align',type);parent=null;}else if(parent===null&&(parent=this.getFirstBlockParent(node))){this.setJustfyChangeTrackInfo(parent);dfx.setStyle(parent,'text-align',type);parent=null;}else{if(parent===null){parent=Viper.document.createElement('p');this.setJustfyChangeTrackInfo(parent);dfx.setStyle(parent,'text-align',type);dfx.insertBefore(node,parent);}
parent.appendChild(node);}
if(node===end){break;}}
if(bookmark!==null){this.viper.selectBookmark(bookmark);}}
this.viper.fireNodesChanged('ViperCoreStylesPlugin:justify');},setJustfyChangeTrackInfo:function(node)
{if(node&&ViperChangeTracker.isTrackingNode(node)===false){var style=dfx.getStyle(node,'text-align');if(style&&(style==='left'||style==='right'||style==='center'||style==='justify')){if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.setCTData(node,'text-align',style);}}
ViperChangeTracker.addChange('alignmentChange',[node]);}},getFirstBlockParent:function(elem)
{if(dfx.isBlockElement(elem)===true){return elem;}
var parents=dfx.getParents(elem);var parent=null;var pln=parents.length;for(var i=0;i<pln;i++){parent=parents[i];if(parent===this.viper.element){return null;}
if(dfx.isBlockElement(parent)===true){return parent;}}},getAlignment:function(element)
{var parent=this.getFirstBlockParent(element);if(parent!==null){return dfx.getStyle(parent,'text-align');}},removeFormat:function()
{var range=this.viper.getCurrentRange().cloneRange();var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var keywordClass=keywordPlugin.keywordClass;var startNode=range.getStartNode();if(dfx.isChildOf(startNode,this.viper.element)===false){range.setStart(this.viper.element,0);}
var endNode=range.getEndNode();if(dfx.isChildOf(endNode,this.viper.element)===false){range.setEnd(this.viper.element,this.viper.element.childNodes.length);}
ViperSelection.addRange(range);var bookmark=this.viper.createBookmark();startNode=dfx.getFirstBlockParent(bookmark.start);if(dfx.isChildOf(startNode,this.viper.element)===false){startNode=bookmark.start;}
dfx.walk(startNode,function(elem){if(elem===bookmark.end){return false;}
if(elem!==bookmark.start){if(elem.nodeType===dfx.ELEMENT_NODE&&keywordPlugin.isKeyword(elem)!==true){dfx.removeAttr(elem,'style');dfx.removeAttr(elem,'class');}}});this.viper.selectBookmark(bookmark);var tags=this.styleTags.concat(['font']);var changeid=ViperChangeTracker.startBatchChange('removedFormat');var tln=tags.length;for(var i=0;i<tln;i++){this.viper.removeStyle(tags[i]);}
ViperChangeTracker.endBatchChange(changeid);this.caretUpdated();this.viper.fireNodesChanged('ViperCoreStylesPlugin:removeFormat');},nodeInserted:function(node,range)
{return this._wrapNodeWithActiveStyle(node,range);},mouseDown:function()
{this._onChangeAddStyle=null;},caretPositioned:function()
{this._onChangeAddStyle=null;},_wrapNodeWithActiveStyle:function(node,range)
{if(!node||!this._onChangeAddStyle||!range){return;}
var style=this._onChangeAddStyle;var nodes=this.viper.splitNodeAtRange(style,range,true);this._onChangeAddStyle=null;if(dfx.isTag(nodes.prevNode,style)===true||dfx.isTag(nodes.nextNode,style)===true){if(nodes.midNode===null){dfx.insertAfter(nodes.prevNode,node);}else{var tmpnode=nodes.midNode;while(tmpnode.firstChild){tmpnode=tmpnode.firstChild;}
tmpnode.appendChild(node);}
if(dfx.getNodeTextContent(nodes.nextNode).length===0){dfx.remove(nodes.nextNode);}
range.setStart(node,1);range.collapse(true);ViperSelection.addRange(range);}else{var styleTag=Viper.document.createElement(style);dfx.insertAfter(nodes.prevNode,styleTag);styleTag.appendChild(node);range.setStart(node,1);range.collapse(true);ViperSelection.addRange(range);}
return false;},handleStyle:function(style)
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;if(range.collapsed===true){this._onChangeAddStyle=style;}else{if(dfx.getParents(startNode,style).length>0){if(dfx.getParents(endNode,style).length>0){var changeid=ViperChangeTracker.startBatchChange('removedFormat');this.viper.removeStyle(style);ViperChangeTracker.endBatchChange(changeid);dfx.removeEmptyNodes(this.viper.element);this.viper.fireNodesChanged('ViperCoreStylesPlugin:removeStyle');return true;}}
dfx.removeEmptyNodes(this.viper.element);this.applyTag(style);this.caretUpdated();}
this.viper.fireNodesChanged('ViperCoreStylesPlugin:applyStyle');this.viper.focus();return true;},getStyleTags:function()
{var range=this.viper.getCurrentRange();var tags=dfx.getParents(range.startContainer,this.styleTags.join(','));return tags;},applyTag:function(tag)
{ViperUndoManager.begin();this.viper.surroundContents(tag);ViperUndoManager.end();},selectionChanged:function()
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;var boldFound=false;var emFound=false;startNode=startNode.parentNode;while(startNode.parentNode){if(startNode===document){break;}
switch(startNode.tagName.toLowerCase()){case'strong':this.toolbarPlugin.setButtonActive('bold');boldFound=true;break;case'em':this.toolbarPlugin.setButtonActive('italic');emFound=true;break;default:break;}
startNode=startNode.parentNode;}
if(!emFound){this.toolbarPlugin.setButtonInactive('italic');}
if(!boldFound){this.toolbarPlugin.setButtonInactive('bold');}},caretUpdated:function()
{var self=this;clearTimeout(this._caretUpdatedTimeout);this._caretUpdatedTimeout=setTimeout(function(){var tags=self.getStyleTags();var asln=self.activeStyles.length;for(var i=0;i<asln;i++){self.setStyleButtonState(self.activeStyles[i],'inactive');}
var tln=tags.length;for(var i=0;i<tln;i++){var tag=tags[i].tagName.toLowerCase();var index=self.styleTags.find(tag);if(index!==-1){self.setStyleButtonState(self.buttons[index],'active');}}
var range=self.viper.getCurrentRange();var style=self.getAlignment(range.startContainer);if(style){if(style==='start'){style='left';}
self.setStyleButtonState('align-'+style,'active');}},200);},setStyleButtonState:function(style,state)
{if(state==='active'){this.toolbarPlugin.setButtonActive(style);this.activeStyles.push(style);}else{this.toolbarPlugin.setButtonInactive(style);}}};dfx.noInclusionInherits('ViperCoreStylesPlugin','ViperPlugin',true);function ViperFormatPlugin(viper)
{ViperPlugin.call(this,viper);this.styleTags={h1:'Heading 1',h2:'Heading 2',h3:'Heading 3',h4:'Heading 4',h5:'Heading 5',h6:'Heading 6',p:'Paragraph',pre:'Preformatted',address:'Address'};this.toolbarPlugin=null;this.activeStyles=[];this._range=null;}
ViperFormatPlugin.prototype={start:function()
{var name='Format';var self=this;ViperChangeTracker.addChangeType('textFormatChange','Formatted','format');ViperChangeTracker.setDescriptionCallback('textFormatChange',function(node){var format=self._getFormat(node);return self.styleTags[format];});var menu=document.createElement('div');dfx.addClass(menu,'ViperFormatPlugin-menu');this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');var button=this.toolbarPlugin.addButton(name,'format','Format',function(e){dfx.addEvent(document,'click.ViperFormatPlugin',function(){dfx.setStyle(menu,'display','none');self._range=null;dfx.removeEvent(document,'click.ViperFormatPlugin');});if(subToolbarPlugin.isActive()===true){dfx.setStyle(menu,'margin-top','30px');}else{dfx.setStyle(menu,'margin-top','0px');}
dfx.setStyle(menu,'display','block');self._range=self.viper.getCurrentRange();var currentFormat=self._getFormat(self._range.startContainer);if(currentFormat!==null){dfx.removeClass(dfx.getClass('ViperFormatPlugin-menu-item',menu),'active');dfx.addClass(dfx.getClass('ViperFormatPlugin-menu-'+currentFormat,menu)[0],'active');}
dfx.preventDefault(e);dfx.stopPropagation(e);return false;});dfx.setStyle(menu,'display','none');button.appendChild(menu);var shadow=document.createElement('div');menu.appendChild(shadow);dfx.addClass(shadow,'ViperFormatPlugin-menu-shadow');var fsize=24;for(var tag in this.styleTags){if(this.styleTags.hasOwnProperty(tag)===false){continue;}
var item=document.createElement('div');dfx.addClass(item,'ViperFormatPlugin-menu-item ViperFormatPlugin-menu-'+tag);menu.appendChild(item);dfx.setHtml(item,this.styleTags[tag]);dfx.setStyle(item,'font',fsize+'px arial');if(fsize>12){fsize-=2;}
(function(el,tagName){dfx.addEvent(el,'click',function(){self.handleFormat(tagName);});})(item,tag);}
dfx.hover(menu.childNodes,function(e){var target=dfx.getMouseEventTarget(e);dfx.addClass(target,'hover');},function(e){dfx.removeClass(menu.childNodes,'hover');});ViperChangeTracker.setApproveCallback('textFormatChange',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('textFormatChange',function(clone,node){if(node.parentNode===self.viper.element){var elem=document.createElement('p');while(node.firstChild){elem.appendChild(node.firstChild);}
dfx.insertBefore(node,elem);}else{while(node.firstChild){dfx.insertBefore(node,node.firstChild);}}
dfx.remove(node);});},_addChangeTrackInfo:function(node)
{if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange('textFormatChange',[node]);}},handleFormat:function(type)
{this.viper.focus();var range=this.viper.getCurrentRange();range.setStart(this._range.startContainer,this._range.startOffset);range.setEnd(this._range.endContainer,this._range.endOffset);var startNode=range.getStartNode();if(dfx.isChildOf(startNode,this.viper.element)===false){range.setStart(this.viper.element,0);range.setEnd(this.viper.element,this.viper.element.childNodes.length);}
ViperSelection.addRange(range);var info=ViperUndoManager.createNodeChangeInfo(this.viper.element,range);var bookmark=this.viper.createBookmark();var elemsBetween=dfx.getElementsBetween(bookmark.start,bookmark.end);if(range.collapsed===true){elemsBetween.unshift(bookmark.start);}
var s=this.styleTags;s.div=1;var self=this;dfx.foreach(elemsBetween,function(i){var elem=elemsBetween[i];var tagName=dfx.getTagName(elem);if(s[tagName]){self._createNewNode(elem,type);}else{var textNodes=null;if(elem.nodeType===dfx.TEXT_NODE){textNodes=[elem];}else{textNodes=dfx.getTextNodes(elem);}
dfx.foreach(textNodes,function(k){var textNode=textNodes[k];var blockParent=self.getFirstBlockParent(textNode);if(blockParent===null){return;}
var t=dfx.getTagName(blockParent);if(s[t]){self._createNewNode(blockParent,type);}else if(type!==t){var newElem=document.createElement(type);self._addChangeTrackInfo(newElem);self._moveChildElements(blockParent,newElem);blockParent.appendChild(newElem);}});}});if(bookmark){this.viper.selectBookmark(bookmark);}
info.after=dfx.getHtml(this.viper.element);this.viper.fireNodesChanged('ViperFormatPlugin:format');},_createNewNode:function(node,type)
{var newElem=document.createElement(type);this._addChangeTrackInfo(newElem);this._moveChildElements(node,newElem);dfx.insertAfter(node,newElem);dfx.remove(node);return newElem;},_moveChildElements:function(source,dest)
{while(source.firstChild){dest.appendChild(source.firstChild);}},getFirstBlockParent:function(elem)
{if(dfx.isBlockElement(elem)===true){return elem;}
var parents=dfx.getParents(elem);var parent=null;var ln=parents.length;for(var i=0;i<ln;i++){parent=parents[i];if(parent===this.viper.element){return null;}
if(dfx.isBlockElement(parent)===true){return parent;}}},selectionChanged:function()
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;var boldFound=false;var emFound=false;startNode=startNode.parentNode;this.toolbarPlugin.setButtonInactive('format');var tagName=this._getFormat(startNode);if(tagName!==null&&tagName!=='p'){this.toolbarPlugin.setButtonActive('format');}},_getFormat:function(startNode)
{while(startNode.parentNode){if(startNode===document){return null;}
if(startNode.tagName){var tagName=startNode.tagName.toLowerCase();if(this.styleTags[tagName]){return tagName;}}
startNode=startNode.parentNode;}
return null;}};dfx.noInclusionInherits('ViperFormatPlugin','ViperPlugin',true);function ViperImageGalleryPlugin(viper)
{ViperPlugin.call(this,viper);this.image=null;this.toolbarPlugin=null;this.imageBorder=null;this._movieEl=null;this._viperBoookmark=null;}
ViperImageGalleryPlugin.prototype={start:function()
{var self=this;if(Widget.CSS_MINIFIED===false&&typeof WidgetStore.getData('imageGalleryBackendCSSLoaded')==='undefined'){var data={EditingContents:true,action:'loadDesignCss',list:dfx.jsonEncode(['Systems/ImageGallery/ImageGallery.css'])};dfx.post(window.location.href,data,function(cssContents){dfx.addCssToStyle(dfx.jsonDecode(cssContents),'assetStyle');dfx.addCssToStyle(dfx.jsonDecode(cssContents).replace(/#EditingAsset/gi,'#EditingScreenModes'),'backendStyle');dfx.addCssToStyle(dfx.jsonDecode(cssContents).replace(/#EditingAsset/gi,'#EditEditingModeWidgetType-assetSettings'),'backendStyle');dfx.addCssToStyle(dfx.jsonDecode(cssContents).replace(/#EditingAsset/gi,'#ViperContentSharingDialog'),'backendStyle');WidgetStore.setData('imageGalleryBackendCSSLoaded',true);});}
this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('ImageGallery','imageGallery','Insert/Edit Image Gallery',function(){self.editImageGallery();});this.viper.registerCallback('clickedOutside','ViperImageGalleryPlugin',function(){self.removeMovieHandles();});dfx.includeScript(Widget.WEB_URL+'Systems/ImageGallery/ImageGallery.js',function(){self.includeWidgets(['Select','TextField'],null);});},editImageGallery:function()
{var self=this;self.inserteditImageGalleryDialog(self._movieEl);},inserteditImageGalleryDialog:function(elem)
{var self=this;if(elem===null){this.removeMovieHandles();this.bookmark=this.viper.createBookmark();}else{this.bookmark=elem;}
this.displayDisabledDiv(true);this.dialog=Widget.prototype.createWidget('ViperImageGalleryPluginDialog','ViperImageGalleryPlugin');this.dialog.setAssetSelectedEvent(function(selectedAssets){AssetManager.getAsset(selectedAssets[0],function(cached){var folderid=selectedAssets[0];var allowedRoot=['folder','projectFolder','fileConnection'];if(dfx.inArray(cached.type,allowedRoot)===false){folderid=WidgetStore.get('ViperImageGalleryPluginDialog').currentSelection;}
var url=null;var internal=self.dialog.optWidgets.internal;var galleryT=internal.type.getValue()||'normal';var width=internal.width.getValue()||'';var height=internal.height.getValue()||'';var heightL=internal.heightLight.getValue()||'small';var ops={galleryT:galleryT,galleryW:parseInt(width,10),galleryH:parseInt(height,10),galleryHL:heightL};self.insertKeyword(self.bookmark,folderid,ops);},true,{attributes:['name'],type:true,typeIcon:false,linking:[],urls:false});});this.dialog.create(function(){self.dialog.setClosedEvent(function(win){if(win===true){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}else if(elem){var range=self.viper.getCurrentRange();range.setStart(elem,0);range.collapse(true);}
self.end();}});ViperPluginManager.setActivePlugin('ImageGallery');self.dialog.open(elem);});},insertKeyword:function(bookmark,assetid,options)
{var self=this;if(!assetid||!options.galleryW||!options.galleryH){return;}
if(options.galleryT==='lightbox'){var keyword='imageGallery~embedGallery-'+options.galleryW+'-'+options.galleryHL+':'+assetid;}else{var keyword='imageGallery~embedGallery-'+options.galleryW+'-'+options.galleryH+':'+assetid;}
var params={widget:'KeywordWidget',action:'getKeywordReplacement',keyword:keyword,mode:'htmlVersion'};dfx.get(window.location.href,params,function(c){if(self.bookmark.start){var parents=dfx.getParents(self.bookmark.start,'p',self.viper.element);if(parents.length>0){var split=self.viper.splitNodeAtBookmark('p',self.bookmark,true);self.bookmark=document.createElement('div');dfx.insertBefore(split.nextNode,self.bookmark);}}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){keywordPlugin.insertKeyword('%'+keyword+'%',c,self.bookmark);}});},_calculateGallerySize:function(options)
{var smallThumb=(options.galleryH<=400);var imageDisplayWidth=(options.galleryW-20);var imageDisplayHeight=(options.galleryH-135);if(smallThumb===true){imageDisplayHeight+=30;}
var imageW=options.imageW;var imageH=options.imageH;options.nW=imageW;options.nH=imageH;if(imageW>imageDisplayWidth||imageH>imageDisplayHeight){var sizes=mig.Gallery.prototype._scaleDownImage.call(this,imageDisplayWidth,imageDisplayHeight,imageW,imageH);options.nW=sizes.nW;options.nH=sizes.nH;}
options.imageDisplayWidth=imageDisplayWidth;options.imageDisplayHeight=imageDisplayHeight;if(options.nH<imageDisplayHeight){options.marginTop=(Math.floor((imageDisplayHeight-options.nH)/2));}else{options.marginTop=0;}
return options;},_adjustGallerySize:function(elem,options,type)
{var smallThumb=false;if(options.galleryH<=400){smallThumb=true;}
var thumbImageHeight=75;var imageDisplayWidth=(options.galleryW-20);var imageDisplayHeight=(options.galleryH-135);if(smallThumb===true){thumbImageHeight=45;imageDisplayHeight+=30;}
if(type==='full'){dfx.setStyle(elem,'width',options.galleryW+'px');dfx.setStyle(elem,'height',options.galleryH+'px');var galleryImgDiv=dfx.getClass('galleryImage',elem)[0];dfx.setStyle(galleryImgDiv,'height',options.imageDisplayHeight+'px');var imgElem=dfx.getClass('imageContainer',elem)[0];imgElem.setAttribute('width',options.nW);imgElem.setAttribute('height',options.nH);dfx.setStyle(imgElem,'margin-top',options.marginTop+'px');}else if(type==='slider'){if(options.galleryH==='small'){smallThumb=true;}else if(options.galleryH==='big'){smallThumb=false;}}
var thumbs=dfx.getClass('thumbImage',elem);if(smallThumb===true){dfx.foreach(thumbs,function(idx){if(thumbs[idx].height===45){return false;}
var ntw=Math.ceil((thumbs[idx].width*45)/75);thumbs[idx].setAttribute('height',45);thumbs[idx].setAttribute('width',ntw);return true;});}else{dfx.foreach(thumbs,function(idx){if(thumbs[idx].height===75){return false;}
var ntw=Math.ceil((thumbs[idx].width*75)/45);thumbs[idx].setAttribute('height',75);thumbs[idx].setAttribute('width',ntw);return true;});}},end:function()
{ViperPluginManager.setActivePlugin(null);},isImageGallery:function(elem)
{if(!elem){var range=this.viper.getCurrentRange();if(range.startContainer.nodeType===dfx.ELEMENT_NODE){elem=range.startContainer.childNodes[range.startOffset];}else{return false;}}
if(elem.nodeType===dfx.ELEMENT_NODE){if(dfx.hasClass(elem,'imageGalleryEditMask')===true){return elem;}}
return false;},isPluginElement:function(element)
{if(element!==this.imageBorder&&dfx.isChildOf(element,this.imageBorder)===false){return false;}
return true;},mouseDown:function(e,elem)
{if(!elem){elem=dfx.getMouseEventTarget(e);}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var isCSKeyword=false;if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true);}
if(this.isImageGallery(elem)!==false&&isCSKeyword===false){dfx.remove(dfx.getClass('galleryImageNext',elem.parentNode)[0]);dfx.remove(dfx.getClass('galleryImagePrev',elem.parentNode)[0]);dfx.remove(dfx.getClass('thumbSliderRight',elem.parentNode)[0]);dfx.remove(dfx.getClass('thumbSliderLeft',elem.parentNode)[0]);var spanTag=elem;while(spanTag.nodeName!=='SPAN'){spanTag=spanTag.parentNode;}
var range=this.viper.getCurrentRange();var start=document.createTextNode('');var end=document.createTextNode('');dfx.insertBefore(spanTag,start);dfx.insertAfter(spanTag,end);range.setStart(start,0);range.setEnd(end,0);if(this.showImageGalleryHandles(elem.parentNode)===false){if(e){dfx.preventDefault(e);}
return false;}}},showImageGalleryHandles:function(igWrap)
{if(this.imageBorder!==null){this.removeMovieHandles();}
if(igWrap===null){return;}
this._movieEl=igWrap.parentNode;var mvWrapBorder=document.createElement('div');this.imageBorder=mvWrapBorder;var width=dfx.getElementWidth(igWrap);var height=dfx.getElementHeight(igWrap);var coords=dfx.getElementCoords(igWrap);var currMode=WidgetStore.getData('activeMode');var currScreen=WidgetStore.getData('activeScreen')
var handleParentId='EditingAsset';if(currMode.id==='AdminScreenMode'&&currScreen.id==='contentsharing'){handleParentId='EditingScreenModes';}
var editingAsset=dfx.getId(handleParentId);if(editingAsset){if(handleParentId==='EditingAsset'){coords.y-=parseInt(dfx.getComputedStyle(editingAsset,'margin-top'));}}
if(handleParentId==='EditingAsset'){coords.y-=38;}
dfx.setStyle(mvWrapBorder,'position','absolute');dfx.setStyle(mvWrapBorder,'width',width+'px');dfx.setStyle(mvWrapBorder,'height',height+'px');dfx.setStyle(mvWrapBorder,'top',(coords.y-1)+'px');dfx.setStyle(mvWrapBorder,'left',(coords.x-1)+'px');dfx.setStyle(mvWrapBorder,'border','1px solid #000');var ghostMovie=igWrap.cloneNode(true);dfx.setStyle(ghostMovie,'opacity','0.7');dfx.setStyle(ghostMovie,'width','100%');dfx.setStyle(ghostMovie,'height','100%');mvWrapBorder.appendChild(ghostMovie);var info={};var self=this;var ops={knobHandles:true,handles:'all',minWidth:200,stop:function(e,info){var newWidth=parseInt(info.size.width);var newHeight=parseInt(info.size.height);var imgElem=dfx.getClass('imageContainer',igWrap)[0];if(dfx.isset(imgElem)===false){if(newHeight===70){newHeight='small';}else{newHeight='big';}
dfx.setStyle(igWrap,'width',newWidth+'px');var newSize={galleryW:newWidth,galleryH:newHeight};self._adjustGallerySize(igWrap,newSize,'slider');}else{var oriImgWidth=imgElem.getAttribute('oriWidth');var oriImgHeight=imgElem.getAttribute('oriHeight');var options={galleryW:newWidth,galleryH:newHeight,imageW:oriImgWidth,imageH:oriImgHeight};var newSize=self._calculateGallerySize(options);newSize.galleryW=newWidth;newSize.galleryH=newHeight;newSize.imageW=oriImgWidth;newSize.imageH=oriImgHeight;self._adjustGallerySize(igWrap,newSize,'full');}
self._updateKeyword(igWrap.parentNode,newWidth,newHeight,width,height);self.removeMovieHandles();self.viper.fireNodesChanged('ViperImageGalleryPlugin:insert');self.showImageGalleryHandles(igWrap);}};if((igWrap.id.length-6)===igWrap.id.search('-small')){ops.minHeight=70;ops.maxHeight=70;ops.handles='e,w';}else if((igWrap.id.length-4)===igWrap.id.search('-big')){ops.minHeight=100;ops.maxHeight=100;ops.handles='e,w';}else{ops.minHeight=200;}
jQuery(mvWrapBorder).resizable(ops);editingAsset.appendChild(mvWrapBorder);dfx.addEvent(document,'click.ViperMoviePluginGh',function(e){var target=dfx.getMouseEventTarget(e);if(target!==igWrap&&target!==mvWrapBorder&&dfx.isChildOf(target,mvWrapBorder)===false){dfx.removeEvent(document,'click.ViperMoviePluginGh');self.removeMovieHandles();}});return false;},removeMovieHandles:function()
{this._movieEl=null;if(this.imageBorder!==null){jQuery(this.imageBorder).resizable('destroy');dfx.remove(this.imageBorder);this.imageBorder=null;}},caretUpdated:function()
{this.removeMovieHandles();},handleKeyPress:function()
{if(this.imageBorder!==null){this.removeMovieHandles();}},_updateKeyword:function(keywordEl,nwidth,nheight,owitdh,oheight)
{if(nheight==='small'||nheight==='big'){var keyword=dfx.attr(keywordEl,'keyword');keyword=keyword.replace(/-\d+-(small|big)/,'-'+nwidth+'-'+nheight);dfx.attr(keywordEl,'keyword',keyword);dfx.attr(keywordEl,'title','Keyword:'+keyword);}else{var keyword=dfx.attr(keywordEl,'keyword');keyword=keyword.replace(/-\d+-\d+/,'-'+nwidth+'-'+nheight);dfx.attr(keywordEl,'keyword',keyword);dfx.attr(keywordEl,'title','Keyword:'+keyword);}}};dfx.noInclusionInherits('ViperImageGalleryPlugin','ViperPlugin',true);function ViperImageGalleryPluginWidgetType(id)
{Widget.call(this,id);this.name='editingImageGalleryEditor';this.assetPicker=null;this.optWidgets={'internal':{}};this.optionsCont=null;this.internalImageGalleryEl=null;this.closedEvent=null;this.assetSelectedEvent=null;this.optionsDiv=null;this.currentSelection=null;}
ViperImageGalleryPluginWidgetType.prototype={create:function(callback)
{this.init(callback);},init:function(callback)
{var self=this;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen(this.name);this.assetPicker.setView(this.name,'thumbs');this.assetPicker.setTitle('Insert Image Gallery');this.assetPicker.setSubTitle('Select the folder that contains the image for the gallery');this.assetPicker.setButtonTitle('Insert Image Gallery');this.assetPicker.addProjectFolderWhiteList(this.name,'Images');this.assetPicker.setHideSite(this.name);this.assetPicker.setUniqueSelect(true);this.assetPicker.setClass(this.name,this.getClass()+'-dialog');this.assetPicker.setModalSize(710,370);this.assetPicker.addItemClickedEvent(function(itemid,type,e){self.setSelectedItemValues(itemid);},true);this.assetPicker.setHideTopLevel(this.name);this.createOptionsContainer(function(el){self.assetPicker.setFooterContent(el);callback.call(self);});this.assetPicker.addAssetsSelectedAction(this.assetSelectedEvent,true);},getValuesFromElem:function(elem)
{var values={};var keyword=dfx.attr(elem,'keyword');if(keyword){var parts=keyword.match(/-(\d+)-(\d+):(\d+)/);if(parts===null){parts=keyword.match(/-(\d+)-(small|big):(\d+)/);if(parts===null){}else{values.width=parts[1];values.height=parts[2];values.assetid=parts[3];}}else if(parts.length===4){values.width=parts[1];values.height=parts[2];values.assetid=parts[3];}}
return values;},open:function(elem)
{var self=this;if(elem){var values=self.getValuesFromElem(elem);AssetManager.getAsset(values.assetid,function(asset){if(asset){self.setValues(asset,values);var c=self.getClass();var optionsDiv=dfx.getClass(c+'-imageInfoCont',elem)[0];dfx.showElement(optionsDiv);if(asset.hasOwnProperty('id')===true){AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.setAutoScrollLineage(lineage,self.name);self.assetPicker.init(self.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});});}}},true,{attributes:['name'],type:true,typeIcon:false,linking:[],urls:false});return;}else{var imageFolderid=null;dfx.foreach(self.assetPicker.projectFolders,function(key){if(key==='Images'){imageFolderid=self.assetPicker.projectFolders[key];return false;}
return true;});var asset={id:imageFolderid,name:'Images'};var values={width:580,height:523};self.setValues(asset,values);}
this.assetPicker.setAutoScrollLineage(null,this.name);this.assetPicker.init(this.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){var allowedRoot=['folder','projectFolder','fileConnection'];if(allowedRoot.indexOf(asset.type)!==-1){dfx.showElement(self.optionsDiv);self.setValues(asset);}}},true,{attributes:['name'],type:true,typeIcon:false,linking:[],urls:false});},setValues:function(asset,values)
{var c=this.getClass();var name=dfx.getClass(c+'-assetInfo-value',this.internalImageGalleryEl)[0];var assetNameHTML=asset.name;assetNameHTML+='&nbsp;<span class="AssetPickerDialog-currentSelectionTitle-assetid">[#';assetNameHTML+=asset.id+']</span>';dfx.setHtml(name,assetNameHTML);if(dfx.isset(values)===true){var heightOutt=dfx.getClass(c+'-height',this.internalImageGalleryEl)[0];var lightHeightOutt=dfx.getClass(c+'-heightLightbox',this.internalImageGalleryEl)[0];if(values.height==='small'||values.height==='big'){WidgetStore.get(this.id+'-width').setValue(values.width);WidgetStore.get(this.id+'-heightLightbox').setValue(values.height,true);WidgetStore.get(this.id+'-type').setValue('lightbox',true);dfx.showElement(lightHeightOutt);dfx.hideElement(heightOutt);}else{WidgetStore.get(this.id+'-width').setValue(values.width);WidgetStore.get(this.id+'-height').setValue(values.height);dfx.showElement(heightOutt);dfx.hideElement(lightHeightOutt);}
var optionsDiv=dfx.getClass(c+'-imageInfoCont',this.internalImageGalleryEl)[0];dfx.showElement(optionsDiv);this.currentSelection=asset.id;}},setAssetSelectedEvent:function(fn)
{this.assetSelectedEvent=fn;},setClosedEvent:function(fn)
{this.closedEvent=fn;},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var self=this;this.includeWidget('TextField',function(){self._createTabs(function(internal){self.internalImageGalleryEl=container;container.appendChild(internal);callback.call(self,container);});});},_createTabs:function(callback)
{var self=this;this._createInternalTab(function(internal){callback.call(this,internal);});},_createInternalTab:function(callback)
{var main=document.createElement('div');var c=this.getClass();dfx.addClass(main,c+'-settings');var content='<div class="'+c+'-imageInfoCont">';content+='<div class="'+c+'-assetInfo">';content+='<label class="'+c+'-label">Folder</label>';content+='<div class="'+c+'-assetInfo-value"></div>';content+='</div>';content+='<div class="'+c+'-type">';content+='<label class="'+c+'-label">Type</label>';content+='<div class="'+c+'-type-text"></div>';content+='<div class="'+c+'-type-value"></div>';content+='</div>';content+='<div class="'+c+'-width">';content+='<label class="'+c+'-label">Width</label>';content+='<div class="'+c+'-width-text"></div>';content+='<div class="'+c+'-width-value"></div>';content+='</div>';content+='<div class="'+c+'-height">';content+='<label class="'+c+'-label">Height</label>';content+='<div class="'+c+'-height-text"></div>';content+='<div class="'+c+'-height-value"></div>';content+='</div>';content+='<div class="'+c+'-heightLightbox">';content+='<label class="'+c+'-label">Height</label>';content+='<div class="'+c+'-heightLightbox-text"></div>';content+='<div class="'+c+'-heightLightbox-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);this.optionsDiv=dfx.getClass(c+'-imageInfoCont',main)[0];var widthCont=dfx.getClass(c+'-width-value',main)[0];var heightOutt=dfx.getClass(c+'-height',main)[0];var heightCont=dfx.getClass(c+'-height-value',main)[0];var lightHeightOutt=dfx.getClass(c+'-heightLightbox',main)[0];var lightHeightCont=dfx.getClass(c+'-heightLightbox-value',main)[0];var typeCont=dfx.getClass(c+'-type-value',main)[0];var self=this;var width=self.createWidget(self.id+'-width','TextField');var height=self.createWidget(self.id+'-height','TextField');var lightHeight=self.createWidget(self.id+'-heightLightbox','Select');lightHeight.addItems({small:'Small',big:'Big'});var gType=self.createWidget(self.id+'-type','Select');gType.addItems({normal:'Normal',lightbox:'Light Box'});self.optWidgets.internal.width=width;self.optWidgets.internal.height=height;self.optWidgets.internal.heightLight=lightHeight;self.optWidgets.internal.type=gType
width.create(function(widthEl){width.setValue('580');widthCont.appendChild(widthEl);});height.create(function(heightEl){height.setValue('523');heightCont.appendChild(heightEl);});lightHeight.create(function(lHeightEl){lightHeightCont.appendChild(lHeightEl);dfx.hideElement(lightHeightOutt);});gType.create(function(typeEl){typeCont.appendChild(typeEl);gType.setSelectedEventValueType('value');gType.addItemSelectedEvent(function(val){if(val==='lightbox'){dfx.showElement(lightHeightOutt);dfx.hideElement(heightOutt);}else if(val==='normal'){dfx.showElement(heightOutt);dfx.hideElement(lightHeightOutt);}});});callback.call(this,main);},_setPreviewMovie:function(cont,url,callback)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;this._getMovie(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;image=self._resizeMovie(image);}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}else{}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_getMovie:function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;},_resizeMovie:function(img)
{var h=img.height;var w=img.width;if(h>w){w=(105/(h/w));dfx.attr(img,'height','105');dfx.attr(img,'width',w);}else{h=(150/(w/h));dfx.attr(img,'height',h);dfx.attr(img,'width','150');}
return img;},_setOptCont:function(opt,cont)
{var c=this.getClass()+'-opts';dfx.getClass(c+'-'+opt,this.optionsCont)[0].appendChild(cont);},getClass:function()
{return'ViperImageGalleryPlugin';}};dfx.inherits('ViperImageGalleryPlugin','Widget');function ViperImagePlugin(viper)
{ViperPlugin.call(this,viper);this.image=null;this.toolbarPlugin=null;this.imageBorder=null;this.subToolbar=null;this.imageToolbar=null;this._viperBoookmark=null;}
ViperImagePlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Image','image','Insert/Edit Image',function(){self.editImage();});this.viper.registerCallback('clickedOutside','ViperImagePlugin',function(){self.removeImageHandles();});this.viper.registerCallback('getHtml','ViperImagePlugin',function(data){if(data.element){self.normaliseImageTags(data.element);}});ViperPluginManager.addKeyPressListener('all_keys',this,this.handleKeyPress);ViperChangeTracker.addChangeType('insertImage','Inserted','insert');ViperChangeTracker.addChangeType('removedImage','Deleted','remove');ViperChangeTracker.setNodeTypeVisibility('removedImage',false);ViperChangeTracker.setDescriptionCallback('insertImage',function(node){var desc='';var img=null;if(dfx.isTag(node,'img')===true){img=node;}else{img=dfx.getTag('img',node)[0];}
if(img){desc=img.cloneNode(false);dfx.setStyle(desc,'width','100%');dfx.setStyle(desc,'height','100%');}
return desc;});ViperChangeTracker.setApproveCallback('insertImage',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setRejectCallback('insertImage',function(clone,node){dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('removedImage',function(node){var desc='';var img=null;if(dfx.isTag(node,'img')===true){img=node;}else{img=dfx.getTag('img',node)[0];}
if(img){desc=img.cloneNode(false);dfx.setStyle(desc,'width','100%');dfx.setStyle(desc,'height','100%');}
return desc;});ViperChangeTracker.setApproveCallback('removedImage',function(clone,node){var parent=node.parentNode;dfx.remove(node);if(parent&&parent.childNodes.length===0){dfx.remove(parent);}});ViperChangeTracker.setRejectCallback('removedImage',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
var parent=node.parentNode;dfx.remove(node);if(parent&&parent.childNodes.length===0){dfx.remove(parent);}});},normaliseImageTags:function(parent)
{var imgs=dfx.getTag('img',parent);if(!imgs){return;}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){dfx.foreach(imgs,function(key){var img=imgs[key];keywordPlugin.convertKeywordAttribute(img);});}},handleKeyPress:function(e)
{if(ViperChangeTracker.isTracking()===true){var range=this.viper.getCurrentRange();var startNode=range.getStartNode();if(dfx.isTag(startNode,'img')===true){return this._removeImage(startNode);}}
if(this.imageBorder!==null){this.removeImageHandles();}},_removeImage:function(img)
{var del=document.createElement('del');var insNode=ViperChangeTracker.getParentCTNode(img,'insertImage');if(insNode){dfx.remove(insNode);return false;}else{var del=document.createElement('del');dfx.insertBefore(img,del);del.appendChild(img);ViperChangeTracker.addChange('removedImage',[del]);if(this.imageBorder!==null){this.removeImageHandles();}
this.viper.fireNodesChanged('ViperImagePlugin:removeImage');this.viper.focus();return true;}},editImage:function()
{var elem=this.isImage();this.insertImageDialog(elem);},insertImageDialog:function(elem)
{if(elem===false){this.removeImageHandles();this._viperBoookmark=this.viper.createBookmark();}else{this._viperBoookmark=null;}
var self=this;this.displayDisabledDiv(true);this.dialog=Widget.prototype.createWidget('ViperImagePluginDialog','ViperImagePlugin');this.dialog.create(function(){self.dialog.setClickEvent(function(src,alt,title,width,height,keywords,selElem){if(src===null){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}
self.end();}else{self.insertImage(src,alt,title,width,height,keywords,selElem);}});self.dialog.setClosedEvent(function(win){if(win===true){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}else if(elem){var range=self.viper.getCurrentRange();range.setStart(elem,0);range.collapse(true);}
self.end();}});ViperPluginManager.setActivePlugin('Image');self.dialog.open(elem);});},insertImage:function(src,alt,title,width,height,keywords,elem)
{if(this._viperBoookmark&&!elem){this.viper.selectBookmark(this._viperBoookmark);}
if(elem){width=elem.getAttribute('width');height=elem.getAttribute('height');}
var img=null;if(elem){img=elem.cloneNode(false);}else{img=document.createElement('img');}
img.setAttribute('alt',alt);img.setAttribute('title',title);img.setAttribute('src',src);img.setAttribute('width',width);img.setAttribute('height',height);if(keywords){img.setAttribute('keywords',dfx.jsonEncode(keywords));}
if(elem){this.removeImageHandles();if(ViperChangeTracker.isTracking()===true&&!ViperChangeTracker.getParentCTNode(elem,'insertImage')){dfx.insertBefore(elem,img);this._removeImage(elem);ViperChangeTracker.addChange('insertImage',[img]);}else{dfx.insertBefore(elem,img);dfx.remove(elem);}
this.showImageHandles(img);}else{var changeid=ViperChangeTracker.startBatchChange('insertImage');this.viper.insertNodeAtCaret(img);ViperChangeTracker.endBatchChange(changeid);}
this.viper.fireNodesChanged('ViperImagePlugin:insert');this.viper.focus();this.end();},end:function()
{ViperPluginManager.setActivePlugin(null);},isImage:function(elem)
{if(!elem){var range=this.viper.getCurrentRange();if(range.startContainer.nodeType===dfx.ELEMENT_NODE){elem=range.startContainer.childNodes[range.startOffset];}else{return false;}}
if(elem.nodeType===dfx.ELEMENT_NODE){if(elem.tagName.toLowerCase()==='img'&&!dfx.attr(elem,'noSelect')){return elem;}}
return false;},isPluginElement:function(element)
{if(element!==this.imageBorder&&dfx.isChildOf(element,this.imageBorder)===false){return false;}
return true;},mouseDown:function(e,elem)
{if(this.viper.isBrowser('msie')===true){var rangeObj=Viper.document.selection.createRange();if(rangeObj&&rangeObj.remove){rangeObj.remove(0);rangeObj.select();}
return;}
if(!elem){elem=dfx.getMouseEventTarget(e);}
var isCSKeyword=false;var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true)}
if(isCSKeyword===false&&this.isImage(elem)!==false&&dfx.isChildOf(elem,this.viper.element)===true){var range=this.viper.getCurrentRange();range.selectNode(elem);ViperSelection.addRange(range);if(this.showImageHandles(elem)===false){if(e){dfx.preventDefault(e);}
return false;}}else if(dfx.isChildOf(elem,this.imageBorder)){return true;}else if(dfx.isChildOf(elem,dfx.getId('subToolbar-ImageToolbar'))===true){return false;}else{this.removeImageHandles();}},clicked:function(e)
{if(this.viper.isBrowser('msie')!==true){return;}
var elem=dfx.getMouseEventTarget(e);var isCSKeyword=false;var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true)}
if(isCSKeyword===false&&this.isImage(elem)!==false&&dfx.isChildOf(elem,this.viper.element)===true){var rangeObj=Viper.document.selection.createRange();if(rangeObj&&rangeObj.remove){rangeObj.remove(0);rangeObj.select();}
if(this.showImageHandles(elem)===false){var range=this.viper.getCurrentRange();range.selectNode(elem);ViperSelection.addRange(range);if(e){dfx.preventDefault(e);}
return false;}}else if(dfx.isChildOf(elem,this.imageBorder)){return true;}else if(dfx.isChildOf(elem,dfx.getId('subToolbar-ImageToolbar'))===true){return false;}else{this.removeImageHandles();}},_adjustGhostImage:function(original,ghost)
{var width=dfx.getElementWidth(original);var height=dfx.getElementHeight(original);var coords=dfx.getElementCoords(original);var borders={left:0,right:0,top:0,bottom:0};dfx.foreach(borders,function(type){var border=parseInt(dfx.getComputedStyle(original,'border-'+type+'-width'));if(isNaN(border)===true){border=0;}
borders[type]=border;});width-=(borders.left+borders.right);height-=(borders.top+borders.bottom);coords.y+=borders.top;coords.x+=borders.left;dfx.setStyle(ghost,'width',width+'px');dfx.setStyle(ghost,'height',height+'px');dfx.setStyle(ghost,'top',(coords.y-1)+'px');dfx.setStyle(ghost,'left',(coords.x-1)+'px');},showImageHandles:function(img)
{if(this.imageBorder!==null){this.removeImageHandles();}
this.showImageToolbar(img);var imgBorder=document.createElement('div');this.imageBorder=imgBorder;this._adjustGhostImage(img,imgBorder);dfx.setStyle(imgBorder,'position','absolute');dfx.setStyle(imgBorder,'border','1px solid #000');var ghostImage=img.cloneNode(true);dfx.setStyle(ghostImage,'opacity','0.7');dfx.setStyle(ghostImage,'width','100%');dfx.setStyle(ghostImage,'height','100%');imgBorder.appendChild(ghostImage);var info={};var self=this;jQuery(imgBorder).resizable({knobHandles:true,handles:'all',stop:function(e,info){var newWidth=parseInt(info.size.width);var newHeight=parseInt(info.size.height);var keywords=img.getAttribute('keywords');img.setAttribute('width',newWidth);img.setAttribute('height',newHeight);self.removeImageHandles();self.viper.fireNodesChanged('ViperImagePlugin:resize');self.showImageHandles(img);}});document.body.appendChild(imgBorder);return false;},removeImageHandles:function()
{if(this.imageBorder!==null){jQuery(this.imageBorder).resizable('destroy');dfx.remove(this.imageBorder);this.imageBorder=null;}
if(this.subToolbar){this.subToolbar.hideToolbar('ImageToolbar');}},showImageToolbar:function(img)
{if(!this.subToolbar){var self=this;this.setupImageToolbar(function(){self.showImageToolbar(img);});return;}
this.image=img;var url=dfx.attr(img,'src');if(url){var name='';name=(url.split('/')).pop();dfx.setHtml(dfx.getClass('ViperImageToolbar-left',this.imageToolbar)[0],dfx.ellipsize(name,30));var dim=dfx.getElementDimensions(img);dfx.setHtml(dfx.getTag('strong',this.imageToolbar),dim.width+'x'+dim.height);}
this.subToolbar.showToolbar('ImageToolbar');},setupImageToolbar:function(callback)
{var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('ImageToolbar');this.imageToolbar=toolbar;var imgTypeIconURL=AssetManager.getAssetTypeIconUrl('image','small');var c='ViperImageToolbar';var contents='<div class="'+c+'-left" style="background-image:url('+imgTypeIconURL+')">zombie.png</div>';contents+='<div class="'+c+'-right">';contents+='<div class="'+c+'-right-dim">Dimensions: <strong>300x238</strong></div>';contents+='<div class="'+c+'-right-btns"></div>';contents+='</div>';dfx.setHtml(toolbar,contents);var self=this;this.includeWidget('Button',function(){var resetDimensions=self.createWidget(c+'-resetDimensions','Button');resetDimensions.setName('Reset Dimensions');resetDimensions.setButtonIconClassName(c+'-switch');resetDimensions.create(function(el){(dfx.getClass(c+'-right-btns',toolbar)[0]).appendChild(el);});resetDimensions.addClickEvent(function(){self.resetImageDimensions();});var changeImage=self.createWidget(c+'-changeImage','Button','ButtonWidgetType-black');changeImage.setName('Change Image');changeImage.create(function(el){(dfx.getClass(c+'-right-btns',toolbar)[0]).appendChild(el);});changeImage.addClickEvent(function(){if(self.image){self.insertImageDialog(self.image);}});self.subToolbar=subToolbarPlugin;callback.call(self,subToolbarPlugin);return;});},resetImageDimensions:function()
{if(this.image){dfx.removeAttr(this.image,'width');dfx.removeAttr(this.image,'height');this.viper.fireNodesChanged('ViperImagePlugin:resetDim');this.mouseDown(null,this.image);}},caretUpdated:function()
{this.removeImageHandles();}};dfx.noInclusionInherits('ViperImagePlugin','ViperPlugin',true);function ViperImagePluginWidgetType(id)
{Widget.call(this,id);this.name='editingImageEditor';this.assetPicker=null;this.optWidgets={internal:{},external:{}};this.optionsCont=null;this.internal=null;this.external=null;this.tabPane=null;this.closedEvent=null;this.selectedElem=null;this.selectedElemid=null;this.selectedAsset=null;this._externalPreview=null;this._skinURL=WidgetStore.get('viper').getStylesURL()+'/Plugins/ViperImagePlugin';}
ViperImagePluginWidgetType.prototype={create:function(callback)
{this.init(callback);},init:function(callback)
{var self=this;this.includeWidgets(['TabPane','ModalDialog','AssetPickerDialog'],function(){var assetPicker=self.createWidget('InserImageAssetPicker','AssetPickerDialog');self.assetPicker=assetPicker;assetPicker.noDialog=true;assetPicker.setScreen(self.name);assetPicker.setView(self.name,'thumbs');assetPicker.setButtonTitle('Insert Image');assetPicker.addProjectFolderWhiteList(self.name,'Images');assetPicker.setHideSite(self.name);assetPicker.setUniqueSelect(true);assetPicker.setHideTopLevel(self.name);assetPicker.addSelectionChangedAction(function(selectedAsset){if(selectedAsset){self.setSelectedItemValues(selectedAsset.id);}},true);assetPicker.init(self.name,function(contentEl){var externalTab=document.createElement('div');var tabs={'Internal Images':contentEl,'External Images':externalTab};var tabPane=self.createWidget(self.id+'-tabPane','TabPane','3',tabs);self.tabPane=tabPane;tabPane.create(function(tabPaneElem){var dialog=self.createWidget('InserImagePluginDialog','ModalDialog');dialog.setContent(tabPaneElem);dialog.setTitle('Insert Image');dialog.setSubTitle('Select the image you want to insert',true);dialog.setSize('710px','370px');assetPicker.setDialog(dialog);dialog.create(function(el){assetPicker.addDialogEvents(dialog);var listCont=dfx.getId(assetPicker.id+'-content');dialog.dialogResized=function(width,height){dfx.setStyle(listCont,'height',(parseInt(height,10)-87)+'px');};var currHeight=dfx.getStyle(dialog.containers.contWrapper,'height');dfx.setStyle(listCont,'height',(parseInt(currHeight.substr(0,(currHeight.length-2)),10)-87)+'px');assetPicker.getAsset(assetPicker.projectFoldersFiltered[0].id,function(asset){assetPicker._updateCurrentSelection(asset);var footer=document.createElement('div');dfx.addClass(footer,self.getClass()+'-dialog-footer internal');tabPane.addOnChangeHandler(function(index){if(index===0){self.assetPicker.showCurrentSelectionInfo();dialog.setSize('710px','370px');dfx.removeClass(footer,'external');dfx.addClass(footer,'internal');self.assetPicker.showFooter('160px');}else{self.assetPicker.hideCurrentSelectionInfo();dialog.setSize('710px','220px');dfx.removeClass(footer,'internal');dfx.addClass(footer,'external');self.assetPicker.showFooter('310px');}});self.createOptionsContainer(function(intFooterCont){footer.appendChild(intFooterCont);self._createExternalTab(externalTab,function(extFooterCont){footer.appendChild(extFooterCont);dialog.setFooterContent(footer,self.getClass()+'-dialog-footer');callback.call(self);});});});});});});});},getValuesFromElem:function(elem)
{var values={};var attrs=['title','alt','src'];var i=attrs.length;while(i-->0){if(dfx.isset(elem.getAttribute(attrs[i]))===true){values[attrs[i]]=elem.getAttribute(attrs[i]);}else{values[attrs[i]]='';}}
return values;},open:function(elem)
{var self=this;if(elem){this.selectedElem=elem;var values=this.getValuesFromElem(elem);AssetManager.getAssetFromUrl(elem.src,function(asset){if(asset){self.selectedAsset=asset;self.selectedElemid=asset.id;var name=asset.getAttribute('name');var title=values.title;var alt=values.alt;if(asset.getAttribute('title')===title){title='';}
if(asset.getAttribute('alt')===alt){alt='';}
self.setValues(asset,'',title,alt);if(asset.hasOwnProperty('id')===true){AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.viewWidgets.list.initAutoScroll(true,lineage);self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('160px');self.tabPane.selectTab(0);self.assetPicker.showCurrentSelectionInfo();self.assetPicker.dialog.open();});}}else{self.setValues(null,values.src,values.title,values.alt);self.assetPicker.setAutoScrollLineage(null,self.name);self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.tabPane.selectTab(1);self.assetPicker.hideCurrentSelectionInfo();self.assetPicker.dialog.open();}},{attributes:['name','alt','title','width','height','size'],type:false,typeIcon:false,linking:[],urls:false});}else{dfx.addClass(this.optionsCont,'notSelected');this.assetPicker.setAutoScrollLineage(null,this.name);self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('160px');self.assetPicker.dialog.open();}},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){AssetManager.isAssetType(itemid,'image',function(isImage){if(isImage===true){var name=asset.getAttribute('name');var title='';var alt='';if(parseInt(asset.id)===parseInt(self.selectedElemid)){var vals=self.getValuesFromElem(self.selectedElem);if(asset.getAttribute('title')!==vals.title){title=vals.title;}
if(asset.getAttribute('alt')!==vals.alt){alt=vals.alt;}}
self.setValues(asset,'',title,alt);}else{dfx.addClass(self.optionsCont,'notSelected');}});}else{dfx.addClass(self.optionsCont,'notSelected');}},true,{attributes:['name','alt','title','width','height','size'],type:false,typeIcon:false,linking:[],urls:false});},setValues:function(asset,src,title,alt)
{if(!asset){this.optWidgets.external.title.setValue(title);this.optWidgets.external.altText.setValue(alt);this.optWidgets.external.url.setValue(src);this._updatePreviewImage(src);dfx.removeClass(this.optionsCont,'notSelected');return;}
this.selectedAsset=asset;var c=this.getClass()+'-internalOpts';var titleCont=dfx.getClass(c+'-input-title',this.internal)[0];var altTextCont=dfx.getClass(c+'-input-alt',this.internal)[0];var name=dfx.getClass(c+'-assetInfo',this.internal)[0];var assetNameHTML='#'+dfx.ellipsize(asset.id.toString(),10)+' ('+dfx.ellipsize(asset.name,20)+')';dfx.setHtml(name,assetNameHTML);var titleEl=dfx.getClass(c+'-title',this.internal)[0];var titleValue=asset.getAttribute('title');if(titleValue===''){titleValue='[no default value]';}
dfx.setHtml(titleEl,titleValue);var altText=dfx.getClass(c+'-alt',this.internal)[0];var altTextValue=asset.getAttribute('alt');if(altTextValue===''){titleValue='[no default value]';}
dfx.setHtml(altText,titleValue);this.optWidgets.internal.title.setValue(title);this.optWidgets.internal.altText.setValue(alt);dfx.setStyle([titleCont,altTextCont],'display','block');var imgInf=dfx.getClass(c+'-img-size',this.internal)[0];var rawSize=asset.getAttribute('size');var size='';if(rawSize<1024){size=rawSize+'B';}else{rawSize=Math.floor(rawSize/1024);if(rawSize<1024){size=rawSize+'KB';}else{rawSize=Math.floor(rawSize/1024);size=rawSize+'MB';}}
dfx.setHtml(imgInf,asset.getAttribute('width')+' x '+asset.getAttribute('height')+' ('+size+')');var url=Widget.BASE_URL+'?tb=1&a='+asset.id+'&t=_'+(new Date).getTime();var imgCont=dfx.getClass(c+'-thumbCont',this.internal)[0];var self=this;this._setPreviewImage(imgCont,url,function(){dfx.removeClass(self.optionsCont,'notSelected');});},setClosedEvent:function(fn)
{this.closedEvent=fn;},setClickEvent:function(callback)
{var self=this;this.assetPicker.addAssetsSelectedAction(function(selectedAssets){var selectedAsset=null;if(self.selectedAsset!==null){selectedAsset=self.selectedAsset.id;}
if(selectedAsset!==null&&self.tabPane.getCurrentTabIndex()===0){AssetManager.getAsset(selectedAsset,function(asset){var internal=self.optWidgets.internal;var title=internal.title.getValue()||'';var keywords={};if(title.length===0){title=asset.getAttribute('title')||'';keywords.title='%attribute~title:'+asset.id+'%';}
var altText=internal.altText.getValue()||'';if(altText.length===0){altText=asset.getAttribute('alt')||'';keywords.alt='%attribute~alt:'+asset.id+'%';}
var url=asset.getUrl();var width=asset.getAttribute('width');var height=asset.getAttribute('height');keywords.src='%lookup~url:'+asset.id+'%';callback.call(self,url,altText,title,width,height,keywords,self.selectedElem);},false,{attributes:['name','alt','title','width','height','size'],type:false,typeIcon:false,linking:[],urls:true});}else{var external=self.optWidgets.external;if(external.url.getValue()!==''){callback.call(self,external.url.getValue(),external.altText.getValue(),external.title.getValue(),null,null,null,self.selectedElem);}}},true,this.name);},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var self=this;this._createInternalOptions(function(el){container.appendChild(el);callback.call(self,container);});},_createInternalOptions:function(callback)
{var c=this.getClass()+'-internalOpts';var elem=document.createElement('div');dfx.addClass(elem,c);this.internal=elem;var content='<div class="'+c+'-wrapper">';content+='<div class="'+c+'-left">';content+='<div class="'+c+'-thumbCont">';content+='<img class="'+c+'-thumb" src="http://beta.mini.labs.squiz.net/?tb=1&a=41" width="150px" />';content+='</div>';content+='<div class="'+c+'-img-size">500 x 375 (71KB)</div>';content+='</div>';content+='<div class="'+c+'-right">';content+='<div class="'+c+'-right-opt">';content+='<div class="'+c+'-label">Asset</div>';content+='<div class="'+c+'-assetInfo"></div>';content+='</div>';content+='<div class="'+c+'-right-opt">';content+='<div class="'+c+'-label">Title</div>';content+='<div class="'+c+'-title"></div>';content+='<div class="'+c+'-input '+c+'-input-title"></div>';content+='</div>';content+='<div class="'+c+'-right-opt">';content+='<div class="'+c+'-label">Alt Text</div>';content+='<div class="'+c+'-alt"></div>';content+='<div class="'+c+'-input '+c+'-input-alt"></div>';content+='</div>';content+='</div></div>';content+='<div class="'+c+'-notSelected">No image is selected for preview</div>';dfx.setHtml(elem,content);var titleCont=dfx.getClass(c+'-input-title',elem)[0];var altTextCont=dfx.getClass(c+'-input-alt',elem)[0];var self=this;this.includeWidget('TextField',function(){var title=self.createWidget(self.id+'-title','TextField');var altText=self.createWidget(self.id+'-altText','TextField');self.optWidgets.internal.title=title;self.optWidgets.internal.altText=altText;title.create(function(titleEl){titleCont.appendChild(titleEl);});altText.create(function(altTextEl){altTextCont.appendChild(altTextEl);});callback.call(self,elem);});},_createExternalTab:function(main,callback)
{var c=this.getClass()+'-externalOpts';dfx.addClass(main,c);this.external=main;var content='<div class="'+c+'-imageInfoCont">';content+='<div class="'+c+'-url">';content+='<span class="'+c+'-label">URL</span>';content+='<div class="'+c+'-url-value"></div>';content+='<div class="'+c+'-url-check"></div>';content+='<div class="'+c+'-url-tick"></div>';content+='</div>';content+='<div class="'+c+'-title">';content+='<span class="'+c+'-label">Title</span>';content+='<div class="'+c+'-title-input"></div>';content+='</div>';content+='<div class="'+c+'-altText">';content+='<span class="'+c+'-label">Alt Text</span>';content+='<div class="'+c+'-altText-input"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var urlCont=dfx.getClass(c+'-url-value',main)[0];var titleCont=dfx.getClass(c+'-title-input',main)[0];var altTextCont=dfx.getClass(c+'-altText-input',main)[0];var preview=document.createElement('div');dfx.addClass(preview,c+'-preview enterUrlMsg');var prevCont='<div class="'+c+'-enterUrlMsg">Enter a URL above to automatically see a preview here</div>';prevCont+='<div class="'+c+'-loading">';prevCont+='<img class="'+c+'-loadingAnim" src="'+this._skinURL+'/preview-spinner.gif"></img>';prevCont+='<span class="'+c+'-loadingText">Loading image ...</span>';prevCont+='</div>';prevCont+='<div class="'+c+'-imagePreview">';prevCont+='<div class="'+c+'-imagePreview-imgCont"></div>';prevCont+='<div class="'+c+'-imagePreview-text"></div>';prevCont+='</div>';prevCont+='<div class="'+c+'-error">';prevCont+='<div class="'+c+'-errorText">Image cannot be found please check the URL</div>';prevCont+='</div>';dfx.setHtml(preview,prevCont);this._externalPreview=preview;var imgCont=dfx.getClass(c+'-imagePreview-imgCont',preview)[0];var imgInf=dfx.getClass(c+'-imagePreview-text',preview)[0];var self=this;this.includeWidgets('TextField',function(){var url=self.createWidget(self.id+'-ex-url','TextField');var title=self.createWidget(self.id+'-ex-title','TextField');var altText=self.createWidget(self.id+'-ex-altText','TextField');self.optWidgets.external.url=url;self.optWidgets.external.title=title;self.optWidgets.external.altText=altText;url.create(function(urlEl){urlCont.appendChild(urlEl);url.addOnChangeEvent(function(val){self._updatePreviewImage(val);});});title.create(function(titleEl){titleCont.appendChild(titleEl);});altText.create(function(altTextEl){altTextCont.appendChild(altTextEl);});callback.call(self,preview);});},_updatePreviewImage:function(val)
{val=dfx.trim(val);var c=this.getClass()+'-externalOpts';var imgCont=dfx.getClass(c+'-imagePreview-imgCont',this._externalPreview)[0];var imgInf=dfx.getClass(c+'-imagePreview-text',this._externalPreview)[0];var url=this.createWidget(this.id+'-ex-url','TextField');var self=this;if(dfx.isBlank(val)===false){self._showCont('loading');self._setPreviewImage(imgCont,url.getValue(),function(img,w,h){if(img===false){self._showCont('error');dfx.setHtml(imgInf,'');}else{var nh=h;var maxH=250;var maxW=650;if(h>maxH||w>maxW){dfx.resizeImage(img,250);nh=parseInt(dfx.attr(img,'height'));}
self._showCont('imagePreview');dfx.setStyle(imgCont,'margin-top',(parseInt(nh/2)*-1)+'px');dfx.setHtml(imgInf,w+' x '+h);}},true);}},_showCont:function(className)
{var prevCont=this._externalPreview;var conts=['enterUrlMsg','loading','imagePreview','error'];dfx.foreach(conts,function(i){if(className!==conts[i]){dfx.removeClass(prevCont,conts[i]);}else{dfx.addClass(prevCont,className);}});},_setPreviewImage:function(cont,url,callback,noResize)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;this._getImage(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;if(noResize!==true){image=self._resizeImage(image);}}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_getImage:function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;},_resizeImage:function(img)
{var max={height:105,width:125}
return dfx.resizeImage(img,max);},_setOptCont:function(opt,cont)
{var c=this.getClass()+'-opts';dfx.getClass(c+'-'+opt,this.optionsCont)[0].appendChild(cont);},getClass:function()
{return'ViperImagePlugin';}};dfx.inherits('ViperImagePlugin','Widget');function ViperKeyboardEditorPlugin(viper)
{ViperPlugin.call(this,viper);ViperPluginManager.addKeyPressListener('SHIFT+ENTER',this,'handleSoftEnter');ViperPluginManager.addKeyPressListener('ENTER',this,'handleEnter');ViperPluginManager.addKeyPressListener('TAB',this,'handleTab');}
ViperKeyboardEditorPlugin.prototype={start:function()
{var self=this;ViperChangeTracker.addChangeType('splitContainer','Insert','format');ViperChangeTracker.setDescriptionCallback('splitContainer',function(node){return self._getChangeDescription(node,'splitContainer');});ViperChangeTracker.setApproveCallback('splitContainer',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('splitContainer',function(clone,node){var prev=node.previousSibling;if(!prev){return;}
while(node.firstChild){prev.appendChild(node.firstChild);}
dfx.remove(node);});ViperChangeTracker.addChangeType('createContainer','Insert','insert');ViperChangeTracker.setDescriptionCallback('createContainer',function(node){return self._getChangeDescription(node);});ViperChangeTracker.setApproveCallback('createContainer',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('createContainer',function(clone,node){dfx.remove(node);});},_getChangeDescription:function(node,changeType)
{var pImgURL=this.viper.getStylesURL()+'/icon-p_tag.png';var pImg=Viper.document.createElement('img');dfx.attr(pImg,'src',pImgURL);dfx.attr(pImg,'title','Paragraph Break');var desc=pImg;if(changeType!=='splitContainer'){for(var child=node.firstChild;child;child=child.nextSibling){if(child.nodeType===dfx.TEXT_NODE&&dfx.trim(child.nodeValue).length===0){continue;}else if(ViperChangeTracker.isTrackingNode(child)===true){var ctnType=ViperChangeTracker.getCTNTypeFromNode(child);if(ViperChangeTracker.isInsertType(ctnType)===true){var extraDesc=ViperChangeTracker.getDescriptionForNode(child);if(dfx.isObj(extraDesc)===false){extraDesc=Viper.document.createTextNode(extraDesc);}
desc=[desc,extraDesc];}}
break;}}
return desc;},_isKeyword:function()
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(!keywordPlugin){return false;}
var range=this.viper.getCurrentRange();if(keywordPlugin._isKeyword(range.startContainer)===false&&keywordPlugin._isKeyword(range.startContainer)===false){return false;}
return true;},handleTab:function()
{if(this._isKeyword()===true){return true;}
var numSpaces=4;var sp=String.fromCharCode(160);var c='';while(numSpaces-->0){c+=sp;}
this.viper.insertNodeAtCaret(c);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:tab');return true;},handleEnter:function()
{if(this.viper.inlineMode===true){return this.handleSoftEnter();}
var range=this.viper.getCurrentRange();if(range.collapsed!==true){this.viper.deleteContents();}
if(range.startContainer.nodeType===dfx.TEXT_NODE){var parent=range.startContainer.parentNode;while(parent){if(parent.tagName.toLowerCase()==='li'){var listPlugin=ViperPluginManager.getPlugin('ViperListPlugin');if(listPlugin&&listPlugin.handleEnter(parent)===false){return true;}
break;}else if(dfx.isBlockElement(parent)===true){break;}
if(parent.parentNode&&parent.parentNode===this.viper.element){break;}
parent=parent.parentNode;}}else{parent=range.startContainer;}
var tag=parent.tagName.toLowerCase();if(dfx.isChildOf(parent,this.viper.element)===false){var node=range.endContainer;while(dfx.isset(node.nextSibling)===true){if(dfx.isBlockElement(node.nextSibling)===true){break;}
node=node.nextSibling;}
range.setEndAfter(node);var elem=Viper.document.createElement('p');var docFrag=range.extractContents('p');this.viper.deleteContents();elem.appendChild(docFrag);dfx.insertAfter(range.startContainer,elem);range.collapse(true);node=range.startContainer;while(dfx.isset(node.previousSibling)===true){if(dfx.isBlockElement(node.previousSibling)===true){break;}
node=node.previousSibling;}
range.setStartBefore(node);var felem=Viper.document.createElement('p');docFrag=range.extractContents('p');felem.appendChild(docFrag);dfx.insertBefore(elem,felem);range.setStart(elem.firstChild,0);range.collapse(true);return;}else if(tag==='pre'){this.handleSoftEnter();return;}else if(tag==='td'||tag==='th'){var bookmark=this.viper.createBookmark(range);var p=Viper.document.createElement('P');while(parent.firstChild){p.appendChild(parent.firstChild);}
parent.appendChild(p);tag='p';parent=p;this.viper.selectBookmark(bookmark);}
if(range.startContainer.nodeType===dfx.TEXT_NODE&&range.startOffset===range.startContainer.data.length){if(!range.startContainer.nextSibling){var newTextNode=Viper.document.createTextNode('');dfx.insertAfter(range.startContainer.parentNode,newTextNode);range.setStart(newTextNode,0);range.collapse(true);}}
try{range.setEndAfter(parent.lastChild);}catch(e){}
ViperSelection.addRange(range);var elem=parent.cloneNode(false);var docFrag=range.extractContents(tag);elem.appendChild(docFrag);var elemClone=elem.cloneNode(true);dfx.remove(dfx.getTag('del',elemClone));if(dfx.isBlank(dfx.getNodeTextContent(elemClone))===true){elem=null;}
if(elem===null||(elem.tagName&&elem.tagName.toLowerCase()!=='li'&&dfx.isBlockElement(elem)===false)){var newTag='p';if(tag==='li'){newTag=tag;}
var pelem=Viper.document.createElement(newTag);if(elem!==null){pelem.appendChild(elem);}else{dfx.setHtml(pelem,'&nbsp;');}
elem=pelem;ViperChangeTracker.addChange('createContainer',[elem]);}else{ViperChangeTracker.removeTrackChanges(elem,true);ViperChangeTracker.addChange('splitContainer',[elem]);}
if(this.viper.elementIsEmpty(parent)===true){dfx.setHtml(parent,'&nbsp;');}
dfx.insertAfter(parent,elem);range.setStart(elem,0);range.setStart(elem,0);try{range.moveStart('character',1);range.moveStart('character',-1);}catch(e){}
range.collapse(true);ViperSelection.addRange(range);if(dfx.isBlockElement(parent)===true&&dfx.trim(dfx.getHtml(parent))===''){dfx.setHtml(parent,'&nbsp;');}
this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:enter');return true;},handleSoftEnter:function(e)
{if(this._isKeyword()===true){return true;}
var range=this.viper.getCurrentRange();if(e){var startNode=range.getStartNode();if(startNode&&dfx.isTag(startNode.parentNode,'pre')===true){var p=Viper.document.createElement('p');dfx.setHtml(p,'&nbsp;');dfx.insertAfter(startNode.parentNode,p);range.setStart(p.firstChild,0);range.collapse(true);ViperSelection.addRange(range);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:softEnter');return;}}
var node=Viper.document.createElement('br');this.viper.insertNodeAtCaret(node);range=this.viper.getCurrentRange();if(dfx.isTag(node.previousSibling,'br')===true){var text=Viper.document.createTextNode(String.fromCharCode(160));dfx.insertAfter(node.previousSibling,text);}
if(!node.nextSibling||node.nextSibling.nodeType!==dfx.TEXT_NODE){var text=Viper.document.createTextNode(String.fromCharCode(160));dfx.insertAfter(node,text);}
range.setStart(node.nextSibling,0);range.collapse(true);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:softEnter');return true;},_changeInfo:function()
{var info={before:dfx.getHtml(this.viper.element),path:XPath.getPath(this.viper.element)};return info;}};dfx.noInclusionInherits('ViperKeyboardEditorPlugin','ViperPlugin',true);function ViperKeywordPlugin(viper)
{ViperPlugin.call(this,viper);this.keywordClass='_my4_keyword';this.allowReplace=true;this.domElem=null;this.dialog=null;this.selectedScope=null;this.selectedKeyword=null;this.selectedFormat=null;this.assetTypeSelect=null;this.viewType='Assets';this.renderKeywords=true;}
ViperKeywordPlugin.prototype={start:function()
{var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')>=0){ctrlName='CMD';}
var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Keyword','keyword','Insert Keyword',function(){self.handleInsertKey();});this.toolbarPlugin.setButtonShortcut(this,'keyword','CTRL+K','handleInserKey');this.viper.registerCallback('getHtml','InsertKeywordPlugin',function(data){if(data.element){self.keywordsToText(data.element);}});this.viper.registerCallback('setHtml','InsertKeywordPlugin',function(data,callback){if(data.element){return self.convertKeywords(data.element,callback);}});this.viper.registerCallback('toolbarButtonClicked','InsertKeywordPlugin',function(){self.toolbarButtonClicked();});this._processKeywords();ViperChangeTracker.addChangeType('insertedKeyword','Inserted','insert');ViperChangeTracker.addChangeType('removedKeyword','Deleted','remove');ViperChangeTracker.setNodeTypeVisibility('removedKeyword',false);ViperChangeTracker.setDescriptionCallback('insertedKeyword',function(node){return'Internal Keyword';});ViperChangeTracker.setApproveCallback('insertedKeyword',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('insertedKeyword',function(clone,node){dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('removedKeyword',function(node){return'Internal Keyword';});ViperChangeTracker.setApproveCallback('removedKeyword',function(clone,node){dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedKeyword',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});},setSettings:function(settings)
{if(dfx.isset(settings.renderKeywords)===true){this.renderKeywords=settings.renderKeywords;}},toolbarButtonClicked:function()
{var range=this.viper.getCurrentRange();var start=range.startContainer;var end=range.endContainer;if(start&&end){var skeywordEl=this.isKeyword(start,null,true);if(skeywordEl!==false){var prevSibling=document.createTextNode('');dfx.insertBefore(skeywordEl,prevSibling);range.setStart(prevSibling,0);}
var ekeywordEl=skeywordEl;if(start!==end){ekeywordEl=this.isKeyword(end,null,true);}
if(ekeywordEl){var nextSibling=document.createTextNode('');dfx.insertAfter(ekeywordEl,nextSibling);range.setEnd(nextSibling,0);}
ViperSelection.addRange(range);}},_processKeywords:function(elem)
{if(this.renderKeywords===false){this.keywordsToText();return;}},keywordsToText:function(element)
{var keyElems=dfx.getClass(this.keywordClass,element);var kln=keyElems.length;for(var i=0;i<kln;i++){var elem=keyElems[i];var text=document.createTextNode(elem.getAttribute('keyword'));dfx.insertBefore(elem,text);dfx.remove(elem);}
var elems=dfx.find(element,'*');var eln=elems.length;for(var i=0;i<eln;i++){var el=elems[i];this.convertKeywordAttribute(el);}},convertKeywordAttribute:function(element)
{if(element){var attr=element.getAttribute('keywords');if(!attr){return;}
attr=dfx.jsonDecode(attr);dfx.foreach(attr,function(key){if(key==='src'||key==='href'){element.setAttribute(key,escape(attr[key]));}else{element.setAttribute(key,attr[key]);}});dfx.removeAttr(element,'keywords');}},convertKeywords:function(element,callback)
{if(this.renderKeywords===false){return;}
var content=this.viper.getHtml(element);var params={widget:'KeywordWidget',action:'replaceKeywords',content:content};var currMode=WidgetStore.getData('activeMode');var currScreen=WidgetStore.getData('activeScreen');if(typeof currMode!=='undefined'){params.currMode=currMode.id;}
if(typeof currScreen!=='undefined'){params.currScreen=currScreen.id;}
var self=this;dfx.post(this.url,params,function(content){dfx.setHtml(element,content);var linkPlugin=ViperPluginManager.getPlugin('ViperLinkPlugin');if(linkPlugin){linkPlugin.convertLinks(element);}
self._processKeywords(element);callback.call(this);});return false;},handleInsertKey:function()
{var range=this.viper.getCurrentRange();if(range.collapsed===false){if(this.allowReplace===false){alert('Cannot replace selected text with a keyword.');return;}}
this.showDialog(range);},keyDown:function(e)
{var code;if(e.keyCode){code=e.keyCode;}else if(e.which){code=e.which;}
if(code===dfx.DOM_VK_DELETE&&ViperChangeTracker.isTracking()===true){var range=this.viper.getCurrentRange();var startNode=range.getStartNode();var keyword=this._isKeyword(startNode,false,true);if(!keyword){keyword=this._isKeyword(startNode.nextSibling,true,true);}
if(keyword){var del=document.createElement('del');dfx.insertBefore(keyword,del);del.appendChild(keyword);var info={keyword:keyword,changeType:'removedKeyword'}
this.viper.fireCallbacks('ViperKeywordPlugin:keywordRemoved',info);ViperChangeTracker.addChange(info.changeType,[del]);this.viper.fireNodesChanged('ViperKeywordPlugin:removed');return false;}}
if(code!==dfx.DOM_VK_DOWN&&code!==dfx.DOM_VK_UP&&code!==dfx.DOM_VK_LEFT&&code!==dfx.DOM_VK_RIGHT){var range=this.viper.getCurrentRange();if(range){if(range.collapsed===true){var startCont=range.startContainer;if(startCont.nodeType===dfx.TEXT_NODE){if(code===dfx.DOM_VK_DELETE){var keywordEl=this.isKeyword(startCont,null,true);if(keywordEl){dfx.remove(keywordEl);return;}}}}
var el=range.getCommonElement();if(el&&this._isKeyword(el)===true){return false;}else if(this._isKeyword(range.startContainer)===true){var cont=this.getNonKeywordContainer(range.startContainer,range,'next');if(dfx.isset(cont)===true){range.setEnd(cont,0);range.setStart(cont,0);return true;}
return false;}else if(this._isKeyword(range.endContainer)===true){var cont=this.getNonKeywordContainer(range.endContainer,range,'prev');if(dfx.isset(cont)===true){range.setEndAfter(cont);return true;}
return false;}}}
return true;},getNonKeywordContainer:function(cont,range,dir)
{var clone=range.cloneRange();var container=null;while(cont){if(dir==='next'){container=clone.getNextContainer(cont);}else{container=clone.getPreviousContainer(cont);}
if(this._isKeyword(container)===false){return container;}
cont=container;}
return null;},isContentSharingKeyword:function(el,elemOnly,getElement)
{if(!el){return false;}
do{if(el.tagName==='SPAN'||el.tagName==='DIV'){if(dfx.hasClass(el,this.keywordClass)){var keyword=el.getAttribute('keyword');if(keyword!==null&&keyword.search(/%contentSharing~/)===0){if(getElement===true){return el;}
return true;}}}
if(elemOnly===true){return false;}
el=el.parentNode;}while(el&&el!==this.viper.element);return false;},isKeyword:function(node,elemOnly,getElement)
{return this._isKeyword(node,elemOnly,getElement);},_isKeyword:function(el,elemOnly,getElement)
{if(!el){return false;}
do{if(el.tagName==='SPAN'||el.tagName==='DIV'){if(dfx.hasClass(el,this.keywordClass)){if(getElement===true){return el;}
return true;}}
if(elemOnly===true){return false;}
el=el.parentNode;}while(el&&el!==this.viper.element);return false;},createDocumentFragment:function(keyword,contentStr)
{var fragment=document.createDocumentFragment();var div=document.createElement('div');div.innerHTML=contentStr;var c=div.childNodes.length;var tagType='';var prevType='';var keywordElem=null;for(var i=0;i<c;i++){prevType=tagType;var child=div.childNodes[i].cloneNode(true);if(child.nodeType===dfx.ELEMENT_NODE&&dfx.isBlockElement(child)===true){tagType='div';}else{tagType='span';}
if(prevType!==tagType||keywordElem===null){keywordElem=document.createElement(tagType);keywordElem.className=this.keywordClass;keywordElem.setAttribute('keyword',keyword);keywordElem.setAttribute('title','Keyword: '+keyword);fragment.appendChild(keywordElem);}
keywordElem.appendChild(child);}
return fragment;},insertKeyword:function(keyword,content,bookmark)
{var keywordElem=null;if(this.renderKeywords===false){keywordElem=document.createTextNode(keyword);}else{var title='Keyword: '+keyword;keywordElem=document.createElement('span');dfx.addClass(keywordElem,this.keywordClass);dfx.setHtml(keywordElem,content);keywordElem.setAttribute('title',title);keywordElem.setAttribute('keyword',keyword);var cln=keywordElem.childNodes.length;for(var i=0;i<cln;i++){if(dfx.isBlockElement(keywordElem.childNodes[i])===true){dfx.setStyle(keywordElem,'display','block');break;}}}
if(ViperChangeTracker.isTracking()===true){var ins=document.createElement('ins');ins.appendChild(keywordElem);var info={keyword:ins,changeType:'insertedKeyword'}
this.viper.fireCallbacks('ViperKeywordPlugin:keywordInserted',info);ViperChangeTracker.addChange(info.changeType,[ins]);keywordElem=ins;}
if(bookmark.start){dfx.insertBefore(bookmark.start,keywordElem);this.viper.selectBookmark(bookmark);}else{dfx.insertBefore(bookmark,keywordElem);if(ViperChangeTracker.isTracking()===true){var del=document.createElement('del');dfx.insertBefore(bookmark,del);del.appendChild(bookmark);var info={keyword:bookmark,changeType:'removedKeyword'}
this.viper.fireCallbacks('ViperKeywordPlugin:keywordRemoved',info);ViperChangeTracker.addChange(info.changeType,[del]);}else{dfx.remove(bookmark);}}
this.viper.fireNodesChanged('ViperKeywordPlugin:insert');},normalizeKeywords:function(element)
{var keyElems=[];var child=element.firstChild;while(child){if(dfx.hasClass(child,this.keywordClass)===true){keyElems.push(child);}else{var elems=dfx.getClass(this.keywordClass,child);keyElems=keyElems.concat(elems);}
child=child.nextSibling;}
var kln=keyElems.length;for(var i=0;i<kln;i++){var elem=keyElems[i];var text=document.createTextNode(escape(elem.getAttribute('keyword')));dfx.insertBefore(elem,text);dfx.remove(elem);}},showDialog:function(range)
{this.displayDisabledDiv(true);var selectedHtml='';var range=this.viper.getCurrentRange();if(range.collapsed!==true){this.canAdd=true;selectedHtml=range.getHTMLContentsObj();}
var bookmark=this.viper.createBookmark();ViperPluginManager.setActivePlugin('ViperKeywordPlugin');var self=this;this.includeWidgets(['ModalDialog','Select','AssetPicker','TabPane','TextField'],function(){var modalDialog=self.createWidget('InsertKeywordPluginDialog','ModalDialog');modalDialog.setSize('765px','290px');self.dialog=modalDialog;var c=this.getClass();var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-left">';content+='<div class="'+c+'-left-assetTypePicker"></div>';content+='<div class="'+c+'-left-lists"></div>';content+='</div>';content+='<div class="'+c+'-right">';content+='</div>';dfx.setHtml(main,content);self.domElem=main;modalDialog.setContent(main);modalDialog.setTitle('Insert Keyword');modalDialog.create(function(){modalDialog.addButton('Insert Keyword',function(button){button.addClickEvent(function(){self.getSelectedKeywordReplacement(function(rep,keyword){if(rep!==false&&keyword!==false){keyword='%'+keyword.replace('%','')+'%';self.insertKeyword(keyword,rep,bookmark);}});modalDialog.close(true);},true);});self._createTabs();self.showAssetsKeywords();self._createRightPanel();modalDialog.open();modalDialog.addOnCloseCallback(function(){ViperPluginManager.setActivePlugin(null);});});});},_createTabs:function()
{var tabNames=['Assets','Attributes','Metadata'];var tabs=['<span id="'+this.dialog.id+'-mainTabs-assets">Assets</span>','<span id="'+this.dialog.id+'-mainTabs-attrs">Attributes</span>','<span id="'+this.dialog.id+'-mainTabs-metadata">Metadata</span>'];var c=this.getClass()+'-typeTabs';var tabCont=document.createElement('div');dfx.addClass(tabCont,c);var tln=tabs.length;c+='-tab';var self=this;var tabElems=[];for(var i=0;i<tln;i++){var tab=document.createElement('div');tabElems.push(tab);dfx.addClass(tab,c);tabCont.appendChild(tab);var content='<div class="'+c+'-left"></div><div class="'+c+'-mid">';content+=tabs[i]+'</div><div class="'+c+'-right"></div>';dfx.setHtml(tab,content);(function(tabElem,name){dfx.addEvent(tabElem,'click',function(){self.viewType=name;dfx.removeClass(dfx.getClass(self.getClass()+'-list',self.domElem),'active');dfx.removeClass(tabElems,'active');dfx.removeClass(dfx.getClass(self.getClass()+'-left-assetTypePicker')[0],'active');dfx.addClass(tabElem,'active');self['show'+name+'Keywords'].call(self);});})(tab,tabNames[i]);if(i===0){dfx.addClass(tab,'active');}}
var elem=dfx.getClass('ModalDialogWidgetType-top-mid',this.dialog.domElem)[0];elem.appendChild(tabCont);},showAssetsKeywords:function()
{var c=this.getClass()+'-list-assets';var listElem=dfx.getClass(c,this.domElem)[0];if(listElem){if(this.viewType==='Assets'){dfx.addClass(listElem,'active');}}else{listElem=document.createElement('div');dfx.addClass(listElem,this.getClass()+'-list');dfx.addClass(listElem,c);var listsElem=dfx.getClass(this.getClass()+'-left-lists')[0];listsElem.appendChild(listElem);var self=this;this.getKeywordList('asset',function(keywords){self.populateList(listElem,keywords,'assets');self.showAssetsKeywords();});}},showAttributesKeywords:function()
{if(!this.selectedAssetType){this.selectedAssetType='asset';}
var c=this.getClass()+'-list-attributes';var listElem=dfx.getClass(c,this.domElem)[0];var attrListElem=dfx.getClass(c+'-'+this.selectedAssetType,this.domElem)[0];var assetPickercont=dfx.getClass(this.getClass()+'-left-assetTypePicker')[0];if(attrListElem){if(this.viewType==='Attributes'){dfx.removeClass(dfx.getClass(this.getClass()+'-alist',listElem),'active');dfx.addClass(assetPickercont,'active');dfx.addClass(attrListElem,'active');dfx.addClass(listElem,'active');}}else if(listElem){attrListElem=document.createElement('div');dfx.addClass(attrListElem,c+'-'+this.selectedAssetType);dfx.addClass(attrListElem,this.getClass()+'-alist');listElem.appendChild(attrListElem);var self=this;this.getKeywordList('attribute',function(keywords){self.populateList(attrListElem,keywords,'assets');self.showAttributesKeywords();},{assetType:self.selectedAssetType});}else{listElem=document.createElement('div');dfx.addClass(listElem,this.getClass()+'-list');dfx.addClass(listElem,c);var listsElem=dfx.getClass(this.getClass()+'-left-lists')[0];listsElem.appendChild(listElem);var label=document.createElement('label');dfx.setHtml(label,'Choose Asset Type');dfx.addClass(label,c+'-label');assetPickercont.appendChild(label);var select=this.createWidget(null,'Select');var params={widget:'KeywordWidget',action:'getAssetTypes'};this.assetTypeSelect=select;var self=this;select.setSelectedEventValueType('value');select.addItemSelectedEvent(function(selected){self.setSelectedAssetType(selected);});dfx.post(this.url,params,function(data){select.addItems(dfx.jsonDecode(data));select.create(function(sel){assetPickercont.appendChild(sel);self.showAttributesKeywords();});});}},setSelectedAssetType:function(type)
{this.selectedAssetType=type;this.showAttributesKeywords();},showMetadataKeywords:function()
{var c=this.getClass()+'-list-metadata';var listElem=dfx.getClass(c,this.domElem)[0];if(listElem){if(this.viewType==='Metadata'){dfx.addClass(listElem,'active');}}else{listElem=document.createElement('div');dfx.addClass(listElem,this.getClass()+'-list');dfx.addClass(listElem,c);var listsElem=dfx.getClass(this.getClass()+'-left-lists')[0];listsElem.appendChild(listElem);var self=this;this.getKeywordList('metadata',function(keywords){if(keywords.length===0){dfx.setHtml(listElem,'<div style="text-align:center;font:12px arial;margin-top:10px;">There are no metadata fields</div>');}else{self.populateList(listElem,keywords);}
self.showMetadataKeywords();});}},populateList:function(listElem,keywords)
{var self=this;var c=this.getClass()+'-keyItem';for(var i in keywords){if(keywords.hasOwnProperty(i)===false){continue;}
var item=document.createElement('div');dfx.addClass(item,c);dfx.setHtml(item,keywords[i].friendlyName);listElem.appendChild(item);(function(elem,keyword){dfx.addEvent(elem,'click',function(){self.selectedKeyword=keyword;dfx.removeClass(dfx.getClass(c,self.domElem),'selected');dfx.addClass(elem,'selected');self.updatePreview();});})(item,keywords[i]);}},getKeywordList:function(type,callback,data)
{var params={widget:'KeywordWidget',action:'getKeywordList',type:type};if(data){params.data=dfx.jsonEncode(data);}
dfx.post(this.url,params,function(data){if(data){callback.call(this,dfx.jsonDecode(data));}});},_createRightPanel:function()
{var parent=dfx.getClass(this.getClass()+'-right',this.domElem)[0];var main=document.createElement('div');parent.appendChild(main);var tabs={'Format & Preview':this._createFormatPreviewTab(),'Keyword Scope':this._createScopeTab()};var tabPane=this.createWidget(this.dialog.id+'-format_PrevTabs','TabPane','top',tabs);tabPane.create(function(el){tabPane.selectTab(1);tabPane.selectTab(0);main.appendChild(el);});},_createFormatPreviewTab:function()
{var c=this.getClass()+'-formatTab';var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-title ViperKeywordPlugin-formatSection">Format</div>';content+='<div class="'+c+'-top formatSection">';content+='<div class="'+c+'-formatSel"></div>';content+='<div class="'+c+'-formatArg"></div></div>';content+='<div class="'+c+'-formatDesc"></div>';content+='<div class="'+c+'-title ViperKeywordPlugin-previewSection">Preview</div>';content+='<div class="'+c+'-preview"></div>';dfx.setHtml(main,content);var formatArgCont=dfx.getClass(c+'-formatArg',main)[0];var formatSelCont=dfx.getClass(c+'-formatSel',main)[0];var formatDescCont=dfx.getClass(c+'-formatDesc',main)[0];var previewCont=dfx.getClass(c+'-preview',main)[0];this.previewCont=previewCont;var self=this;this.formatArgs=this.createWidget(this.dialog.id+'-formatArgsField','TextField');this.formatArgs.setValue('Arguments...');this.formatArgs.create(function(el){formatArgCont.appendChild(el);dfx.addEvent(self.formatArgs.input,'blur',function(){if(self.formatArgs.getValue().length===0){self.formatArgs.setValue('Arguments...');}else{self.updatePreview();}});dfx.addEvent(self.formatArgs.input,'focus',function(){if(self.formatArgs.getValue()==='Arguments...'){self.formatArgs.setValue('');}});});var descriptions={};var formatSel=this.createWidget(null,'Select');formatSel.setSelectedEventValueType('value');formatSel.addItemSelectedEvent(function(selected){self.selectedFormat=selected;self.updatePreview();if(descriptions[selected]){dfx.setHtml(formatDescCont,descriptions[selected]);}});var params={widget:'KeywordWidget',action:'getKeywordFormats'};dfx.post(this.url,params,function(data){data=dfx.jsonDecode(data);if(data){if(data.descs){descriptions=data.descs;}
if(data.formats){formatSel.addItems(data.formats);formatSel.create(function(el){formatSelCont.appendChild(el);});}}});return main;},getCurrentKeyword:function()
{if(!this.selectedKeyword){return false;}
var system=this.selectedKeyword.system;var key=this.selectedKeyword.key;var keyword=system+'~'+key;if(this.selectedScope!==null){keyword+=':'+this.selectedScope;}
if(this.selectedFormat){if(this.selectedScope===null){keyword+=':';}
keyword+=':string~'+this.selectedFormat;var argStr=this.formatArgs.getValue().replace('%','');if(this.formatArgs.getValue()!==argStr){this.formatArgs.setValue(argStr);}
if(argStr.length>0&&argStr!=='Arguments...'){keyword+='~'+argStr;}}
return keyword;},getSelectedKeywordReplacement:function(callback)
{var currKey=this.getCurrentKeyword();if(!currKey){callback.call(this,false,false);return;}
var params={widget:'KeywordWidget',action:'getKeywordReplacement',keyword:currKey};dfx.post(this.url,params,function(data){var rep='';if(data){rep=data;}
callback.call(this,rep,currKey);});},updatePreview:function()
{var previewCont=this.previewCont;this.getSelectedKeywordReplacement(function(rep){dfx.setHtml(previewCont,rep);});},_createScopeTab:function()
{var c=this.getClass()+'-scopeTab';var main=document.createElement('div');dfx.addClass(main,c);var content='<div class="'+c+'-top">';content+='<div class="'+c+'-desc"></div>';content+='<div class="'+c+'-opts"></div></div>';content+='<div class="'+c+'-picker"></div>';dfx.setHtml(main,content);var descCont=dfx.getClass(c+'-desc',main)[0];var optsCont=dfx.getClass(c+'-opts',main)[0];var pickerCont=dfx.getClass(c+'-picker',main)[0];var picker=this.createWidget(null,'AssetPicker');picker.setProjectFolderWhiteList(['Documents','Images','Movies']);picker.setPickerTitle('Select Keyword Scope');picker.setPickerSubTitle('Select an asset to use as Keyword Scope');var insertKeywordZindex=null;picker.addPickerOpenedCallback(function(){var disabledDivZindex=parseInt(dfx.getStyle(dfx.getId('_disabledDiv'),'z-index'),10);var popup=dfx.getId('InsertKeywordPluginDialog');insertKeywordZindex=parseInt(dfx.getStyle(popup,'z-index'),10);dfx.setStyle(popup,'z-index',(disabledDivZindex-1));});picker.create(function(el){pickerCont.appendChild(el);});picker.addSelectedCallback(function(assetid){self.selectedScope=assetid;self.updatePreview();var popup=dfx.getId('InsertKeywordPluginDialog');dfx.setStyle(popup,'z-index',insertKeywordZindex);});var params={widget:'KeywordWidget',action:'getScopeInfo'};var self=this;dfx.post(this.url,params,function(data){var scopeInfo=dfx.jsonDecode(data);self.includeWidget('OptionList',function(){var optList=self.createWidget(null,'OptionList');var options={};for(var scope in scopeInfo){if(scopeInfo.hasOwnProperty(scope)===false){continue;}
options[scope]='<span class="'+c+'-scope-'+scope+'">'+scopeInfo[scope].title+'</span>';}
dfx.setHtml(descCont,scopeInfo.def.desc);optList.setOptions(options);optList.setSelected('def');optList.addOnChangeAction(function(v,selected){if(selected==='spec'){self.selectedScope=picker.getValue();}else{self.selectedScope=selected;}
self.updatePreview();dfx.setHtml(descCont,scopeInfo[selected].desc);if(selected!=='def'){if(selected==='spec'){dfx.addClass(pickerCont,'active');}else{dfx.removeClass(pickerCont,'active');}
if(self.assetTypeSelect){self.assetTypeSelect.setValue(selected,true);self.setSelectedAssetType(scopeInfo[selected].type);}}});optList.create(function(el){optsCont.appendChild(el);});});});return main;},getClass:function()
{return'ViperKeywordPlugin';}};dfx.noInclusionInherits('ViperKeywordPlugin','ViperPlugin',true);function ViperLinkPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.linkAttributes=['href','target','class','style','id'];this.linkColor='';}
ViperLinkPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Link','link-insert','Insert/Edit Link',function(){self.editLink();});this.toolbarPlugin.addButton('Link','link-remove','Remove Link',function(){self.removeLink();});this.toolbarPlugin.setButtonDisabled('link-remove');this.convertLinks(this.viper.element);this.viper.registerCallback('getHtml','InsertLinkPlugin',function(data){if(data.element){self.toNormalLinks(data.element);}});this.viper.registerCallback('setHtml','InsertLinkPlugin',function(data){if(data.element){self.convertLinks(data.element);}});this.viper.registerCallback('getContents','InsertLinkPlugin',function(data){if(data.element){self.convertLinks(data.element);}});this.viper.registerCallback('setContents','InsertLinkPlugin',function(data){if(data.element){self.convertLinks(data.element);}});this.viper.registerCallback('viperEnabled','InsertLinkPlugin',function(data){self.convertLinks(self.viper.element);});var prevCollapsed=null;this.viper.registerCallback('caretPositioned','InsertLinkPlugin',function(data){if(data&&data.range){c=false;if(data.range.startContainer&&self.getLink(data.range.startContainer)!==false){self.toolbarPlugin.setButtonActive('link-insert');self.toolbarPlugin.setButtonActive('link-remove');}else{self.toolbarPlugin.setButtonInactive('link-insert');self.toolbarPlugin.setButtonInactive('link-remove');c=true;}
if(c===true||prevCollapsed!==data.range.collapsed){self.toolbarPlugin.setButtonInactive('link-insert');}}});ViperChangeTracker.addChangeType('insertedLink','Inserted Link','format');ViperChangeTracker.addChangeType('removedLink','Deleted Link','remove');ViperChangeTracker.addChangeType('insertedLinkAndText','Inserted Link','format');ViperChangeTracker.setDescriptionCallback('insertedLink',function(node,ctnType){var desc='';if(ctnType==='insertedLink'){desc=dfx.attr(node,'viper_href');if(!desc){desc=dfx.attr(node,'href');}}
return desc;});ViperChangeTracker.setRejectCallback('insertedLink',function(clone,node){self.removeLink(node);});ViperChangeTracker.setApproveCallback('insertedLink',function(clone,node){ViperChangeTracker.removeTrackChanges(node);dfx.setStyle(node,'color','');});ViperChangeTracker.setDescriptionCallback('insertedLinkAndText',function(node,ctnType){var desc='';if(ctnType==='insertedLinkAndText'){desc=dfx.attr(node,'viper_href');if(!desc){desc=dfx.attr(node,'href');}}
return desc;});ViperChangeTracker.setRejectCallback('insertedLinkAndText',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('insertedLinkAndText',function(clone,node){ViperChangeTracker.removeTrackChanges(node);dfx.setStyle(node,'color','');});ViperChangeTracker.setDescriptionCallback('removedLink',function(node,ctnType){var desc='';if(ctnType==='removedLink'){desc=dfx.attr(node,'viper_href');}
return desc;});ViperChangeTracker.setRejectCallback('removedLink',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('removedLink',function(clone,node){self.removeLink(node);});},toNormalLinks:function(elem)
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var links=dfx.getTag('a',elem);var ln=links.length;for(var i=0;i<ln;i++){var link=links[i];var keyword=link.getAttribute('keywords');if(keyword){keywordPlugin.convertKeywordAttribute(link);}else{var href=link.getAttribute('viper_href');if(href){link.setAttribute('href',href);}}
dfx.removeAttr(link,'viper_href');dfx.removeAttr(link,'keywords');dfx.setStyle(link,'color','');}},removeLink:function(elem)
{var info=ViperUndoManager.createNodeChangeInfo(this.viper.element);var link=this.getLink(elem);if(link===false){this.viper.removeStyle('a');}else{if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.isTrackingNode(link)===false){ViperChangeTracker.addChange('removedLink',[link]);}else{while(link.firstChild){dfx.insertBefore(link,link.firstChild);}
dfx.remove(link);}}
this.viper.fireNodesChanged('ViperLinkPlugin:remove');},convertLinks:function(parent)
{var links=dfx.getTag('a',parent);var ln=links.length;for(var i=0;i<ln;i++){this.convertLink(links[i]);}},convertLink:function(link)
{if(link.getAttribute('viper_href')){dfx.removeAttr(link,'href');return;}
var href=link.getAttribute('href');dfx.removeAttr(link,'href');link.setAttribute('viper_href',href);},editLink:function()
{var link=this.getLink();if(link===false){this.showDialog();}else{this.showDialog(link);}},getLinkInfo:function(link)
{var info={};var ln=this.linkAttributes.length;for(var i=0;i<ln;i++){var value=dfx.attr(link,this.linkAttributes[i]);if(dfx.isset(value)===true){info[this.linkAttributes[i]]=value;}}
return info;},getLink:function(elem)
{if(dfx.isset(elem)===false){var range=this.viper.getCurrentRange();elem=range.getCommonElement();}
if(this.isATag(elem)===false){var parents=dfx.getParents(elem,'a');if(parents.length>0){return parents[0];}
return false;}
return elem;},isATag:function(elem)
{if(elem.nodeType===dfx.ELEMENT_NODE&&elem.tagName.toLowerCase()==='a'){return true;}
return false;},showDialog:function(linkElem)
{var range=this.viper.getCurrentRange();var self=this;var bookmark=null;var content='';var elements=[];if(linkElem){range.selectNode(linkElem);ViperSelection.addRange(range);}else{bookmark=this.viper.createBookmark();elements=dfx.getElementsBetween(bookmark.start,bookmark.end);}
ViperSelection.addRange(range);this.displayDisabledDiv(true);ViperPluginManager.setActivePlugin('Link');var dialog=this.createWidget('ViperLinkPlugin','ViperLinkPlugin');dialog.init(function(){dialog.setClickEvent(function(url,newWindow,keywords,asset){ViperSelection.addRange(range);if(linkElem){elements=dfx.getHtml(linkElem);}
var a=self.createLink(url,newWindow,keywords,elements,asset,linkElem);if(linkElem){dfx.insertBefore(linkElem,a);dfx.remove(linkElem);}else if(bookmark){dfx.remove(dfx.getElementsBetween(bookmark.start,bookmark.end));dfx.insertAfter(bookmark.start,a);self.viper.selectBookmark(bookmark);}
ViperPluginManager.setActivePlugin(null);self.viper.focus();self.viper.fireNodesChanged('ViperLinkPlugin:insert');});dialog.setClosedEvent(function(win){if(win===true){if(bookmark){self.viper.selectBookmark(bookmark);}else if(linkElem){range.setStart(linkElem,0);range.collapse(true);self.viper.updateCaret();}
ViperPluginManager.setActivePlugin(null);}});dialog.open(linkElem);});},createLink:function(url,newWindow,keywords,elements,asset,oldElement)
{var a=null;if(oldElement){a=oldElement.cloneNode(false);a.setAttribute('viper_href',url);}else{a=document.createElement('a');}
a.setAttribute('href',url);if(newWindow===true){a.setAttribute('target','_blank');}else{dfx.removeAttr(a,'target');}
if(keywords){a.setAttribute('keywords',dfx.jsonEncode(keywords));}else{dfx.removeAttr(a,'keywords');}
if(dfx.isArray(elements)===false){dfx.setHtml(a,elements);}else{dfx.foreach(elements,function(k){if(elements[k].tagName&&elements[k].tagName.toLowerCase()==='a'){dfx.remove(elements[k]);while(elements[k].firstChild){a.appendChild(elements[k].firstChild);}}else{a.appendChild(elements[k]);}});}
this.convertLink(a);var changeType='insertedLink';var content=dfx.getHtml(a);if(!content){changeType='insertedLinkAndText';if(!asset){dfx.setHtml(a,url);}else{var span=document.createElement('span');dfx.addClass(span,'_my4_keyword');dfx.attr(span,'title','%attribute~name:'+asset.id+'%')
dfx.attr(span,'keyword','%attribute~name:'+asset.id+'%');span.appendChild(document.createTextNode(' '+asset.name+' '));a.appendChild(span);}}
if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange(changeType,[a]);}
return a;}};dfx.noInclusionInherits('ViperLinkPlugin','ViperPlugin',true);function ViperLinkPluginWidgetType(id)
{Widget.call(this,id);this.name='editingLinkEditor';this.assetPicker=null;this.optWidgets={'internal':{},'external':{}};this.optionsCont=null;this.internalLinkEl=null;this.externalLinkEl=null;this.tabPane=null;this.closedEvent=null;this.selectedElem=null;this.selectedAsset=null;}
ViperLinkPluginWidgetType.prototype={init:function(callback)
{var self=this;this.includeWidgets(['TabPane','ModalDialog','AssetPickerDialog'],function(){var assetPicker=self.createWidget('InserLinkAssetPicker','AssetPickerDialog');self.assetPicker=assetPicker;assetPicker.noDialog=true;assetPicker.setScreen(self.name);assetPicker.setView(self.name,'thumbs');assetPicker.setButtonTitle('Insert Link');assetPicker.addProjectFolderWhiteList(self.name,'Documents');assetPicker.addProjectFolderWhiteList(self.name,'Images');assetPicker.addProjectFolderWhiteList(self.name,'Movies');assetPicker.setUniqueSelect(true);assetPicker.setHideTopLevel(self.name);assetPicker.addSelectionChangedAction(function(selectedAsset){if(selectedAsset){self.setSelectedItemValues(selectedAsset.id);}},true);assetPicker.init(self.name,function(contentEl){var externalTab=document.createElement('div');var tabs={'Internal Links':contentEl,'External Links':externalTab};var tabPane=self.createWidget(self.id+'-tabPane','TabPane','3',tabs);self.tabPane=tabPane;tabPane.create(function(tabPaneElem){var dialog=self.createWidget('InserLinkPluginDialog','ModalDialog');dialog.setContent(tabPaneElem);dialog.setTitle('Insert Link');dialog.setSubTitle('Select the link you want to insert',true);dialog.setSize('710px','370px');assetPicker.setDialog(dialog);dialog.create(function(el){assetPicker.addDialogEvents(dialog);var footer=document.createElement('div');dfx.addClass(footer,self.getClass()+'-dialog-footer internal');tabPane.addOnChangeHandler(function(index){if(index===0){self.assetPicker.showCurrentSelectionInfo();dialog.setSize('710px','370px');dfx.removeClass(footer,'external');dfx.addClass(footer,'internal');self.assetPicker.showFooter('160px');}else{self.assetPicker.hideCurrentSelectionInfo();dfx.removeClass(footer,'internal');}});self.createOptionsContainer(function(intFooterCont){footer.appendChild(intFooterCont);self._createExternalTab(externalTab,function(extFooterCont){dialog.setFooterContent(footer,self.getClass()+'-dialog-footer');callback.call(self);});});});});});});},getValuesFromElem:function(elem)
{var values={};var attrs=['target','viper_href'];var i=attrs.length;while(i-->0){if(dfx.isset(elem.getAttribute(attrs[i]))===true){values[attrs[i]]=elem.getAttribute(attrs[i]);}else{values[attrs[i]]='';}}
return values;},open:function(elem)
{if(elem){this.selectedElem=elem;var values=this.getValuesFromElem(elem);var self=this;AssetManager.getAssetFromUrl(elem.getAttribute('viper_href'),function(asset){var newWindow=(values.target&&values.target==='_blank');if(asset){self.tabPane.selectTab(0);self.selectedAsset=asset;self.setValues(asset,null,newWindow);self._open(asset);}else{self.tabPane.selectTab(1);self.setValues(null,values.viper_href,newWindow);self._open(null);}});}else{var selectedAssets=this.assetPicker.getSelectedAssets();if(selectedAssets&&selectedAssets.length>0){var self=this;AssetManager.getAsset(selectedAssets[0],function(asset){self.tabPane.selectTab(0);self.selectedAsset=asset;self.setValues(asset);self._open(asset);});}else{this._open(null);}}},setClosedEvent:function(fn)
{this.closedEvent=fn;},_open:function(asset)
{this.assetPicker.dialog.addOnCloseCallback(this.closedEvent);this.assetPicker.showFooter('160px');if(asset&&asset.hasOwnProperty('id')===true){dfx.removeClass(this.optionsCont,'notSelected');var self=this;AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.viewWidgets.list.initAutoScroll(false,lineage);self.assetPicker.showCurrentSelectionInfo();self.assetPicker.dialog.open();});}else{dfx.addClass(this.optionsCont,'notSelected');this.assetPicker.dialog.open();}},setValues:function(asset,url,newWindow)
{if(!asset){this.optWidgets.external.url.setValue(url);this.optWidgets.external.newWindow.setValue(newWindow);}else{this.setSelectedItemValues(asset.id);this.optWidgets.internal.newWindow.setValue(newWindow);this.selectedAsset=asset;}},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){dfx.removeClass(self.optionsCont,'notSelected');var name=asset.getAttribute('name');dfx.setHtml(self.assetNameCont,dfx.ellipsize(name,10)+' <span>- #'+dfx.ellipsize(itemid.toString(),10)+'</span>');self.assetNameCont.setAttribute('title',name);}});var url=Widget.BASE_URL+'?tb=1&a='+itemid+'&_'+dfx.getUniqueId();var imgCont=dfx.getClass(this.getClass()+'-imagePreviewCont-img',this.internalLinkEl)[0];this._setPreviewImage(imgCont,url);this.optWidgets.internal.newWindow.setValue(false);},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var content='<div class="'+c+'-notSelected">No asset is selected for preview</div>';dfx.setHtml(container,content);var self=this;this._createInternalOptions(function(el){container.appendChild(el);callback.call(self,container);});},_createInternalOptions:function(callback)
{var main=document.createElement('div');var c=this.getClass();var content='<div class="'+c+'-imagePreviewCont">';content+='<div class="'+c+'-imagePreviewCont-img"><div class="'+c+'-imagePreviewCont-nimg"></div></div>';content+='<div class="'+c+'-imagePreviewCont-inf"></div>';content+='</div>';dfx.addClass(main,c+'-settings');content+='<div class="'+c+'-linkInfoCont">';content+='<div class="'+c+'-assetInfo">';content+='<span class="'+c+'-label">Link To</span>';content+='<div class="'+c+'-assetInfo-value"></div>';content+='</div>';content+='<div class="'+c+'-newWindow">';content+='<span class="'+c+'-label">New window</span>';content+='<div class="'+c+'-newWindow-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var toggle=dfx.getClass(c+'-newWindow-value',main)[0];this.assetNameCont=dfx.getClass(c+'-assetInfo-value',main)[0];var self=this;this.includeWidget('ToggleButton',function(){var newWindowWidget=self.createWidget(self.id+'-int-newWindow','ToggleButton',false,'slider',false,'Yes','No');self.optWidgets.internal.newWindow=newWindowWidget;newWindowWidget.create(function(el){toggle.appendChild(el);});});callback.call(this,main);},_createExternalTab:function(main,callback)
{var c=this.getClass()+'-external';var content='';dfx.addClass(main,c+'-settings');content+='<div class="'+c+'-linkInfoCont">';content+='<div class="'+c+'-url">';content+='<span class="'+c+'-label">URL</span>';content+='<div class="'+c+'-url-value"></div>';content+='<div class="'+c+'-url-tick"></div>';content+='</div>';content+='<div class="'+c+'-newWindow">';content+='<span class="'+c+'-label">New window</span>';content+='<div class="'+c+'-newWindow-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var urlCont=dfx.getClass(c+'-url-value',main)[0];var urlTick=dfx.getClass(c+'-url-tick',main)[0];var newWindowCont=dfx.getClass(c+'-newWindow-value',main)[0];var self=this;this.includeWidgets(['TextField','Button','ToggleButton'],function(){var url=self.createWidget(self.id+'-ex-url','TextField');var newWindowWidget=self.createWidget(self.id+'-ex-newWindow','ToggleButton',false,'slider',false,'Yes','No');self.optWidgets.external.url=url;self.optWidgets.external.newWindow=newWindowWidget;url.create(function(urlEl){urlCont.appendChild(urlEl);});newWindowWidget.create(function(newWindowEl){newWindowCont.appendChild(newWindowEl);callback.call(this,main);});});},setClickEvent:function(callback)
{var self=this;this.assetPicker.addAssetsSelectedAction(function(selectedAssets){var tabIndex=self.tabPane.getCurrentTabIndex();if(tabIndex!==1){var assetid=null;if(selectedAssets.length>0){assetid=selectedAssets.pop();}else if(self.selectedAsset){assetid=self.selectedAsset;}
if(assetid){if(dfx.isObj(assetid)===true){var asset=assetid;var url=asset.getUrl();var newWindow=self.optWidgets.internal.newWindow.getValue();var keywords={href:'%lookup~url:'+asset.id+'%'};callback.call(this,url,newWindow,keywords);}else{var params={attributes:['name'],type:false,typeIcon:true,linking:[],urls:true};AssetManager.getAsset(assetid,function(asset){var url=asset.getUrl();var newWindow=self.optWidgets.internal.newWindow.getValue();var keywords={href:'%lookup~url:'+assetid+'%'};callback.call(this,url,newWindow,keywords,asset);},false,params);}}}else{var urlValue=self.optWidgets.external.url.getValue();if(urlValue.search(/[a-zA-z]+:\/\//)!==0){urlValue='http://'+urlValue;}
callback.call(this,urlValue,self.optWidgets.external.newWindow.getValue());}},true);},_setPreviewImage:function(cont,url,callback)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;dfx.getImage(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;image=self._resizeImage(image);}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_resizeImage:function(img)
{var h=img.height;var w=img.width;if(h>w){w=(105/(h/w));img.setAttribute('height',105);img.setAttribute('width',w);}else{h=(160/(w/h));img.setAttribute('width',160);img.setAttribute('height',h);}
return img;},getClass:function()
{return'ViperLinkPlugin';}};dfx.inherits('ViperLinkPlugin','Widget');function ViperListPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;}
ViperListPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('List','list-ordered','Insert/Remove Ordered List',function(){self.oderedList();});this.toolbarPlugin.addButton('List','list-unordered','Insert/Remove Un-ordered List',function(){self.unoderedList();});ViperChangeTracker.addChangeType('makeList','Formatted','insert');ViperChangeTracker.addChangeType('removedList-ol','Formatted','format');ViperChangeTracker.addChangeType('removedList-ul','Formatted','format');ViperChangeTracker.addChangeType('makeList-change','Formatted','format');ViperChangeTracker.addChangeType('addedListItem','Inserted','insert');ViperChangeTracker.addChangeType('breakListUP','Formatted','format');ViperChangeTracker.addChangeType('breakListUPDown','Formatted','format');ViperChangeTracker.addChangeType('breakListDown','Formatted','format');ViperChangeTracker.setDescriptionCallback('makeList',function(node){var listType='ordered';if(dfx.isTag(node,'ul')===true){listType='un-ordered';}
return'Changed to '+listType+' list';});ViperChangeTracker.setApproveCallback('makeList',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('makeList',function(clone,node){var children=[];dfx.foreach(node.childNodes,function(i){children.push(node.childNodes[i]);});while(child=children.shift()){self.removeListItem(child,true);}
dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('removedList-ol',function(node){return'Removed from ordered list';});ViperChangeTracker.setApproveCallback('removedList-ol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedList-ol',function(clone,node){var list=document.createElement('ol');dfx.insertBefore(node,list);list.appendChild(self._createListItem(node));});ViperChangeTracker.setDescriptionCallback('removedList-ul',function(node){return'Removed from un-ordered list';});ViperChangeTracker.setApproveCallback('removedList-ul',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedList-ul',function(clone,node){var list=document.createElement('ul');dfx.insertBefore(node,list);list.appendChild(self._createListItem(node));});ViperChangeTracker.setDescriptionCallback('makeList-change',function(node){var listType='unordered';if(dfx.isTag(node,'ol')===true){listType='ordered';}
return'Changed to '+listType+' list';});ViperChangeTracker.setApproveCallback('makeList-change',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('makeList-change',function(clone,node){var newTag='ol'
if(dfx.isTag(node,'ol')===true){newTag='ul';}
var newList=document.createElement(newTag);while(node.firstChild){newList.appendChild(node.firstChild);}
dfx.insertBefore(node,newList);dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('breakListUP',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListUP',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListUP',function(clone,node){var prevList=node.previousSibling;if(dfx.isTag(prevList,'ul')===true||dfx.isTag(prevList,'ol')===true){if(self.isListNode(node)===true){while(node.firstChild){prevList.appendChild(node.firstChild);}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
prevList.appendChild(li);}}});ViperChangeTracker.setDescriptionCallback('breakListUPDown',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListUPDown',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListUPDown',function(clone,node){var prevList=node.previousSibling;var nextList=node.nextSibling;if(dfx.isTag(prevList,'ul')===true||dfx.isTag(prevList,'ol')===true){if(self.isListNode(node)===true){while(node.firstChild){prevList.appendChild(node.firstChild);}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
prevList.appendChild(li);}
if(nextList){while(nextList.firstChild){var li=nextList.firstChild;if(dfx.isTag(nextList.firstChild,'li')===false){li=self._createListItem(nextList.firstChild);}
prevList.appendChild(li);}
dfx.remove(nextList);}}else if(dfx.isTag(nextList,'ul')===true||dfx.isTag(nextList,'ol')===true){if(self.isListNode(node)===true){if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,node.childNodes);}else{while(node.firstChild){nextList.appendChild(node.firstChild);}}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,li);}else{nextList.appendChild(li);}}}});ViperChangeTracker.setDescriptionCallback('breakListDown',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListDown',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListDown',function(clone,node){var nextList=node.nextSibling;if(dfx.isTag(nextList,'ul')===true||dfx.isTag(nextList,'ol')===true){if(self.isListNode(node)===true){if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,node.childNodes);}else{while(node.firstChild){nextList.appendChild(node.firstChild);}}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,li);}else{nextList.appendChild(li);}}}});},unoderedList:function()
{this._changeType='makeList';this.makeList(false);this.viper.fireNodesChanged('ViperListPlugin:unordered');this.viper.element.focus();},oderedList:function()
{this._changeType='makeList';this.makeList(true);this.viper.fireNodesChanged('ViperListPlugin:ordered');this.viper.element.focus();},removeListItem:function(li,sameList)
{if(!li||!li.parentNode){return false;}
var list=this._getListElement(li);if(!list){return;}
var nextLevelList=this._getListElement(list);if(!nextLevelList){var newElem=document.createElement('p');while(li.firstChild){newElem.appendChild(li.firstChild);}}
var changeType=null;if(li.nextSibling){var clone=list.cloneNode(false);for(var node=li.nextSibling;node;node=li.nextSibling){clone.appendChild(node);}
dfx.insertAfter(list,clone);if(li.previousSibling){changeType='breakListUPDown';}else{changeType='breakListDown';}}else{changeType='breakListUP';}
dfx.remove(li);if(!nextLevelList){dfx.insertAfter(list,newElem);}else{var newElem=document.createElement('br');dfx.insertAfter(list,newElem);dfx.insertAfter(newElem,li.childNodes);}
if(dfx.getNodeTextContent(list)===''){dfx.remove(list);}
if(sameList!==true){this._changeType=changeType;ViperChangeTracker.addChange(changeType,[newElem]);}
return newElem;},makeList:function(ordered,force)
{var tag='ul';if(ordered===true){tag='ol';}
var range=this.viper.getCurrentRange().cloneRange();var bookmark=this.viper.createBookmark(range);if(bookmark.start.parentNode===bookmark.end.parentNode){var li=this._getListItem(range.startContainer);if(li!==null){var br=this._getLineBreak(bookmark.start);if(br){var tmpDiv=document.createElement('div');dfx.insertBefore(br,tmpDiv);var node=null;while(node=br.nextSibling){if(node.nodeType===dfx.ELEMENT_NODE&&node.tagName.toLowerCase()==='br'){tmpDiv=document.createElement('div');dfx.insertBefore(node,tmpDiv);dfx.remove(br);br=node;continue;}
tmpDiv.appendChild(node);}
if(br.parentNode){dfx.remove(br);}
this.viper.selectBookmark(bookmark);this.makeList(ordered,true);return;}}
if(li===null||force===true){var list=null;var elem=this._getBlockParent(range.startContainer);if(elem===null){elem=[range.startContainer];}else{elem=[elem];}
var removeInsAfter=false;var insertAfter=elem[0].previousSibling;if(!insertAfter){insertAfter=document.createTextNode('');dfx.insertBefore(elem[0],insertAfter);removeInsAfter=true;}
list=this._makeList(tag,elem);dfx.insertAfter(insertAfter,list);if(removeInsAfter===true){}
this.viper.selectBookmark(bookmark);}else{var listElement=this._getListElement(li);var convert=(listElement&&listElement.tagName.toLowerCase()!==tag);var newElem=this.removeListItem(li);this.viper.selectBookmark(bookmark);if(convert===true){if(this._changeType==='makeList'){this._changeType+='-change';}
this.makeList(ordered);}}}else{var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);var comParents=this._getCommonParents(elements);if(!comParents){return false;}
var isWholeList=this._isWholeList(comParents);if(dfx.isTag(comParents[0],'li')===true){var sameType=true;dfx.foreach(comParents,function(i){if(dfx.isTag(comParents[i],'li')!==true||dfx.isTag(comParents[i].parentNode,tag)!==true){sameType=false;return false;}});if(sameType===true){var self=this;dfx.foreach(comParents,function(i){var newElem=self.removeListItem(comParents[i],isWholeList);ViperChangeTracker.addChange('removedList-'+tag,[newElem]);});this.viper.selectBookmark(bookmark);return;}else{if(dfx.isTag(comParents[0].parentNode,tag)===true){var firstItem=comParents.shift();this._joinToList(firstItem.parentNode,comParents,firstItem);this.viper.selectBookmark(bookmark);return;}else{var self=this;dfx.foreach(comParents,function(i){self.removeListItem(comParents[i],isWholeList);});this.viper.selectBookmark(bookmark);if(this._changeType==='makeList'){this._changeType+='-change'}
return this.makeList(ordered);}}}
var removeInsAfter=false;var insertAfter=comParents[0].previousSibling;if(!insertAfter){insertAfter=document.createTextNode('');dfx.insertBefore(comParents[0],insertAfter);removeInsAfter=true;}
var list=this._makeList(tag,comParents);dfx.insertAfter(insertAfter,list);if(removeInsAfter===true){dfx.remove(insertAfter);}
this.viper.selectBookmark(bookmark);}},_joinToList:function(listElem,elements,refNode)
{var self=this;dfx.foreach(elements,function(i){var elem=elements[i];if(elem.parentNode!==listElem){if(dfx.isTag(elem,'li')===false){elem=self._createListItem(elem);}
if(elem){if(refNode){dfx.insertAfter(refNode,elem);refNode=elem;}else{listElem.appendChild(elem);}}}});},_getLineBreak:function(ref)
{while(ref=ref.previousSibling){if(ref.nodeType===dfx.ELEMENT_NODE&&ref.tagName.toLowerCase()==='br'){return ref;}}
return null;},_getBlockParent:function(element,tag)
{while(element&&element!==this.viper.element){if(dfx.isBlockElement(element)===true){if(!tag||element.tagName.toLowerCase()===tag){return element;}}
element=element.parentNode;}
return null;},_getCommonParents:function(elems)
{elems=elems.concat([]);var parents=[];var eLen=elems.length;while(eLen>0){var elem=elems.shift();if(dfx.isBlockElement(elem)===true){if(elem.tagName.toLowerCase()==='ol'||elem.tagName.toLowerCase()==='ul'){for(var listChild=elem.firstChild;listChild;listChild=listChild.nextSibling){parents.push(listChild);}}else{parents.push(elem);}}else{while(elem){elem=elem.parentNode;if(elem){if(elem===this.viper.element){break;}else if(dfx.isBlockElement(elem)===true){if(parents.inArray(elem)===false){parents.push(elem);}
break;}}}}
eLen=elems.length;}
return parents;},_makeList:function(tag,elements)
{if(!elements){return;}
tag=tag||'ul';var eln=elements.length;if(eln<=0){return;}
var list=document.createElement(tag);if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange(this._changeType,[list]);}
if(eln===1){var listItems=[];var listLen=listItems.length;while(elements[0].firstChild||listLen>0){var child=elements[0].firstChild;if(child&&dfx.isTag(child,'br')===false){listItems.push(child);}else if(listItems.length>0){var listItem=this._createListItem(listItems.shift());list.appendChild(listItem);while(listElem=listItems.shift()){listItem.appendChild(listElem);}}
if(child){dfx.remove(child);}
listLen=listItems.length;}
dfx.remove(elements[0]);}else{for(var i=0;i<eln;i++){var listItem=this._createListItem(elements[i]);if(listItem!==null){list.appendChild(listItem);}}}
return list;},_createListItem:function(element)
{if(!element){return null;}
var li=document.createElement('li');if(dfx.isBlockElement(element)===true){if(element.childNodes&&element.childNodes.length>0){while(element.firstChild){if(element.firstChild.nodeType===dfx.TEXT_NODE){if(dfx.trim(element.firstChild.data).length<=0){dfx.remove(element.firstChild);continue;}}
li.appendChild(element.firstChild);}}
dfx.remove(element);if(li.childNodes.length===0){return null;}}else{li.appendChild(element);}
return li;},_getList:function(element)
{return this._isListElement(element,null,true);},_isListElement:function(element,type,returnNode)
{while(element&&element!==this.viper.element){if(element.nodeType===dfx.ELEMENT_NODE){var tagName=element.tagName.toLowerCase();if(type){if(tagName===type){if(returnNode===true){return element;}
return true;}}else if(tagName==='ul'||tagName==='ol'||tagName==='li'){if(returnNode===true){return element;}
return true;}}
element=element.parentNode;}
return false;},isListNode:function(node)
{if(dfx.isTag(node,'ul')===true||dfx.isTag(node,'ol')===true){return true;}
return false;},_getListItem:function(element)
{while(element&&element!==this.viper.element){if(element.tagName&&element.tagName.toLowerCase()==='li'){return element;}
element=element.parentNode;}
return null;},_getListElement:function(element)
{element=element.parentNode;while(element&&element!==this.viper.element){if(element.tagName){var tag=element.tagName.toLowerCase();if(tag==='ol'||tag==='ul'){return element;}}
element=element.parentNode;}
return null;},_isWholeList:function(elems)
{var sameParent=false;var parentList=null;if(elems.length>1){var first=elems[0];var last=elems[(elems.length-1)];var firstParent=first.parentNode;var lastParent=last.parentNode;if(firstParent===lastParent){parentList=firstParent;sameParent=true;}}else{sameParent=true;}
if(sameParent===true){var count=0;var child=null;var last=null;for(child=parentList.firstChild;child;child=child.nextSibling){if(dfx.isTag(child,'li')===true){if(count===0&&child!==elems[0]){return false;}
last=child;count++;}}
if(last===elems[(elems.length-1)]){return true;}}
return false;},handleEnter:function(li)
{var content=dfx.getNodeTextContent(li);if(dfx.trim(content).length===0){var parents=dfx.getParents(li,'ul,ol');if(parents.length>0){var listEl=parents[0];if(parents.length>1){var parentLi=parents[(parents.length-1)].parentNode;while(parentLi&&dfx.isTag(parentLi,'li')===false){parentLi=parentLi.parentNode;}
if(parentLi){dfx.insertAfter(parentLi,li);var range=this.viper.getCurrentRange();range.setStart(li.firstChild,0);range.collapse(true);return false;}}
var p=document.createElement('p');dfx.setHtml(p,'&nbsp;');var listClone=listEl.cloneNode(false);dfx.removeAttr(listClone,'id');var c=0;var el=li.nextSibling;while(el){var elem=el;el=el.nextSibling;c++;dfx.remove(elem);listClone.appendChild(elem);}
dfx.remove(li);dfx.insertAfter(listEl,p);if(c>0){dfx.insertAfter(p,listClone);}
var range=this.viper.getCurrentRange();range.setStart(p.firstChild,0);range.collapse(true);return false;}}else if(this._isKeyword()===true){var newLi=li.cloneNode(false);dfx.setHtml(newLi,'&nbsp;');dfx.insertAfter(li,newLi);var range=this.viper.getCurrentRange();range.setStart(newLi.firstChild,0);range.collapse(true);return false;}
return true;},_isKeyword:function()
{var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');var range=this.viper.getCurrentRange();if(keywordPlugin._isKeyword(range.startContainer)===false&&keywordPlugin._isKeyword(range.startContainer)===false){return false;}
return true;}};dfx.noInclusionInherits('ViperListPlugin','ViperPlugin',true);function ViperMoviePlugin(viper)
{ViperPlugin.call(this,viper);this.image=null;this.toolbarPlugin=null;this.imageBorder=null;this._movieEl=null;this._viperBoookmark=null;}
ViperMoviePlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('Movie','movie','Insert/Edit Movie',function(){self.editMovie();});this.viper.registerCallback('clickedOutside','ViperMoviePlugin',function(){self.removeMovieHandles();});ViperChangeTracker.addChangeType('insertMovie','Inserted Movie','insert');ViperChangeTracker.addChangeType('removedMovie','Deleted Movie','remove');ViperChangeTracker.setNodeTypeVisibility('removedMovie',false);ViperChangeTracker.setDescriptionCallback('insertMovie',function(node){var desc='';if(node){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',node)[0];desc=thumbImg.cloneNode(false);}
return desc;});ViperChangeTracker.setApproveCallback('insertMovie',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('insertMovie',function(clone,node){dfx.remove(node);});this.viper.registerCallback('ViperKeywordPlugin:keywordInserted','ViperMoviePlugin',function(info){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',info.keyword)[0];if(thumbImg){info.changeType='insertMovie';}});this.viper.registerCallback('ViperKeywordPlugin:keywordRemoved','ViperMoviePlugin',function(info){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',info.keyword)[0];if(thumbImg){info.changeType='removedMovie';}
self.removeMovieHandles();});ViperChangeTracker.setApproveCallback('removedMovie',function(clone,node){dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedMovie',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setDescriptionCallback('removedMovie',function(node){var desc='';if(node){var thumbImg=dfx.getClass('moviePlayer-Thumbnail',node)[0];desc=thumbImg.cloneNode(false);}
return desc;});},editMovie:function()
{this.insertMovieDialog(this._movieEl);},insertMovieDialog:function(elem)
{var bookmark=null;if(elem===null){this.removeMovieHandles();bookmark=this.viper.createBookmark();}else{bookmark=elem;}
var self=this;this.displayDisabledDiv(true);this.dialog=Widget.prototype.createWidget('ViperMoviePluginDialog','ViperMoviePlugin');this.dialog.create(function(){self.dialog.setClickEvent(function(assetid,height,width,selElem){self.insertKeyword(bookmark,assetid,height,width);});self.dialog.setClosedEvent(function(win){if(win===true){if(self._viperBoookmark){self.viper.selectBookmark(self._viperBoookmark);}else if(elem){var range=self.viper.getCurrentRange();range.setStart(elem,0);range.collapse(true);}
self.end();}});ViperPluginManager.setActivePlugin('Movie');self.dialog.open(elem);});},insertKeyword:function(bookmark,assetid,height,width)
{if(!assetid||!width||!height){return;}
var jsURL=Widget.WEB_URL+'Systems/MovieAssetType';var id='moviePlayer'+assetid;var content='';var jsFileURL=Widget.WEB_URL+'/Systems/MovieAssetType';var imgAttr='width="100%" height="100%"';var playButtonStyles='width:100%;height:100%;';playButtonStyles+='position:absolute;top:0;left:0;cursor:pointer;';playButtonStyles+='background: transparent url('+jsFileURL+'/edit_overlay.png) no-repeat 50% 50%;';var thumbURL=Widget.BASE_URL+'/?a='+assetid+'&ss=1';content+='<div class="moviePlayer moviePlayer-Wrapper" style="margin:0 auto;width:'+width+'px;height:'+height+'px;">';content+='<div class="moviePlayer moviePlayer-Player" id="'+id+'" style="position:relative;height:100%;">';content+='<img style="border:0;padding:0;margin:0;" noSelect=1 '+imgAttr+' class="moviePlayer moviePlayer-Thumbnail" src="'+thumbURL+'"/>';content+='<div class="moviePlayer moviePlayer-Thumbnail-playIcon" style="'+playButtonStyles+'"></div>';content+='</div></div>';var keyword='%fileAssets~embedMovie';keyword+='-'+width+'-'+height;keyword+=':'+assetid+'%';if(bookmark.start){var parents=dfx.getParents(bookmark.start,'p',this.viper.element);if(parents.length>0){var split=this.viper.splitNodeAtBookmark('p',bookmark,true);var bookmark=document.createElement('div');dfx.insertBefore(split.nextNode,bookmark);}}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');keywordPlugin.insertKeyword(keyword,content,bookmark);},end:function()
{ViperPluginManager.setActivePlugin(null);},isMovie:function(elem)
{if(!elem){var range=this.viper.getCurrentRange();if(range.startContainer.nodeType===dfx.ELEMENT_NODE){elem=range.startContainer.childNodes[range.startOffset];}else{return false;}}
if(elem.nodeType===dfx.ELEMENT_NODE){if(dfx.hasClass(elem,'moviePlayer')===true){return elem;}}
return false;},isPluginElement:function(element)
{if(element!==this.imageBorder&&dfx.isChildOf(element,this.imageBorder)===false){return false;}
return true;},mouseDown:function(e,elem)
{if(!elem){elem=dfx.getMouseEventTarget(e);}
var isCSKeyword=false;var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){isCSKeyword=keywordPlugin.isContentSharingKeyword(elem,false,true);}
if(this.isMovie(elem)!==false&&isCSKeyword===false){var spanTag=elem;while(spanTag.nodeName!=='SPAN'){spanTag=spanTag.parentNode;}
var range=this.viper.getCurrentRange();var start=document.createTextNode('');var end=document.createTextNode('');dfx.insertBefore(spanTag,start);dfx.insertAfter(spanTag,end);range.setStart(start,0);range.setEnd(end,0);if(this.showMovieHandles(elem)===false){if(e){dfx.preventDefault(e);}
return false;}}},_adjustGhostImage:function(original,ghost)
{var owidth=dfx.getElementWidth(original);var oheight=dfx.getElementHeight(original);var coords=dfx.getElementCoords(original);var width=owidth;var height=oheight;var borders={left:0,right:0,top:0,bottom:0};dfx.foreach(borders,function(type){var border=parseInt(dfx.getComputedStyle(original,'border-'+type+'-width'));if(isNaN(border)===true){border=0;}
borders[type]=border;});width-=(borders.left+borders.right);height-=(borders.top+borders.bottom);coords.y+=borders.top;coords.x+=borders.left;dfx.setStyle(ghost,'width',width+'px');dfx.setStyle(ghost,'height',height+'px');dfx.setStyle(ghost,'top',(coords.y-1)+'px');dfx.setStyle(ghost,'left',(coords.x-1)+'px');return{width:owidth,height:oheight};},showMovieHandles:function(movie)
{if(this.imageBorder!==null){this.removeMovieHandles();}
var mvWrap=null;if(dfx.hasClass(movie,'moviePlayer-Wrapper')===false){while(movie.parentNode&&movie.parentNode!==document.body){movie=movie.parentNode;if(dfx.hasClass(movie,'moviePlayer-Wrapper')===true){mvWrap=movie;break;}}}
if(mvWrap===null){return;}
this._movieEl=mvWrap.parentNode;var mvWrapBorder=document.createElement('div');this.imageBorder=mvWrapBorder;var dims=this._adjustGhostImage(movie,mvWrapBorder);var width=dims.width;var height=dims.height;dfx.setStyle(mvWrapBorder,'position','absolute');dfx.setStyle(mvWrapBorder,'border','1px solid #000');var ghostMovie=mvWrap.cloneNode(true);dfx.setStyle(ghostMovie,'opacity','0.7');dfx.setStyle(ghostMovie,'width','100%');dfx.setStyle(ghostMovie,'height','100%');mvWrapBorder.appendChild(ghostMovie);var info={};var self=this;jQuery(mvWrapBorder).resizable({knobHandles:true,handles:'all',stop:function(e,info){var newWidth=parseInt(info.size.width);var newHeight=parseInt(info.size.height);dfx.setStyle(mvWrap,'width',newWidth+'px');dfx.setStyle(mvWrap,'height',newHeight+'px');self._updateKeyword(mvWrap.parentNode,newWidth,newHeight,width,height);self.removeMovieHandles();info.after=null;self.viper.fireNodesChanged('ViperMoviePlugin:resize');}});document.body.appendChild(mvWrapBorder);dfx.addEvent(document,'click.ViperMoviePluginGh',function(e){var target=dfx.getMouseEventTarget(e);if(target!==mvWrap&&target!==mvWrapBorder&&dfx.isChildOf(target,mvWrapBorder)===false){dfx.removeEvent(document,'click.ViperMoviePluginGh');self.removeMovieHandles();}});return false;},removeMovieHandles:function()
{this._movieEl=null;if(this.imageBorder!==null){jQuery(this.imageBorder).resizable('destroy');dfx.remove(this.imageBorder);this.imageBorder=null;}},caretUpdated:function()
{this.removeMovieHandles();},handleKeyPress:function()
{if(this.imageBorder!==null){this.removeMovieHandles();}},_updateKeyword:function(keywordEl,nwidth,nheight,owitdh,oheight)
{var keyword=dfx.attr(keywordEl,'keyword');keyword=keyword.replace(/-\d+-\d+/,'-'+nwidth+'-'+nheight);dfx.attr(keywordEl,'keyword',keyword);dfx.attr(keywordEl,'Keyword:'+keyword);}};dfx.noInclusionInherits('ViperMoviePlugin','ViperPlugin',true);function ViperMoviePluginWidgetType(id)
{Widget.call(this,id);this.name='editingMovieEditor';this.assetPicker=null;this.optWidgets={'internal':{}};this.optionsCont=null;this.internalMovieEl=null;this.closedEvent=null;this.selectedElem=null;this.selectedAsset=null;}
ViperMoviePluginWidgetType.prototype={create:function(callback)
{this.init(callback);},init:function(callback)
{var self=this;this.assetPicker=WidgetStore.get('EditingAssetPicker');this.assetPicker.setScreen(this.name);this.assetPicker.setView(this.name,'thumbs');this.assetPicker.setTitle('Insert Movie');this.assetPicker.setSubTitle('Select the movie you want to insert');this.assetPicker.setButtonTitle('Insert Movie');this.assetPicker.addProjectFolderWhiteList(this.name,'Movies');this.assetPicker.setHideSite(this.name);this.assetPicker.setUniqueSelect(true);this.assetPicker.setClass(this.name,this.getClass()+'-dialog');this.assetPicker.setModalSize(710,370);this.assetPicker.addItemClickedEvent(function(itemid,type,e){self.setSelectedItemValues(itemid);},true);this.assetPicker.setHideTopLevel(this.name);this.createOptionsContainer(function(el){self.assetPicker.setFooterContent(el);callback.call(self);});},getValuesFromElem:function(elem)
{var values={};var keyword=dfx.attr(elem,'keyword');if(keyword){var parts=keyword.match(/-(\d+)-(\d+):(\d+)/);if(parts.length===4){values.width=parts[1];values.height=parts[2];values.assetid=parts[3];}}
return values;},open:function(elem)
{var self=this;if(elem){this.selectedElem=elem;var values=this.getValuesFromElem(elem);var self=this;AssetManager.getAsset(values.assetid,function(asset){if(asset){self.setValues(asset,values);if(asset.hasOwnProperty('id')===true){AssetManager.getAssetAutoscrollPath(asset.id,function(lineage){self.assetPicker.setAutoScrollLineage(lineage,self.name);self.assetPicker.init(self.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});});}}},true,{attributes:['name','width','height','duration'],type:false,typeIcon:false,linking:[],urls:false});return;}
this.assetPicker.setAutoScrollLineage(null,this.name);this.assetPicker.init(this.name,function(){self.assetPicker.dialog.addOnCloseCallback(self.closedEvent);self.assetPicker.showFooter('175px');self.assetPicker.dialog.open();});},setSelectedItemValues:function(itemid)
{var self=this;AssetManager.getAsset(itemid,function(asset){if(dfx.isset(asset)===true){var name=asset.getAttribute('name');self.setValues(asset,'','','');}},true,{attributes:['name','width','height','duration'],type:false,typeIcon:false,linking:[],urls:false});},setValues:function(asset,values)
{this.selectedAsset=asset;var width=values.width||asset.getAttribute('width');var height=values.height||asset.getAttribute('height');var c=this.getClass();var widthCont=dfx.getClass(c+'-width-value',this.internalMovieEl)[0];var heightCont=dfx.getClass(c+'-height-value',this.internalMovieEl)[0];var name=dfx.getClass(c+'-assetInfo-value',this.internalMovieEl)[0];var assetNameHTML=dfx.ellipsize(asset.name,27);assetNameHTML+='&nbsp;<span class="AssetPickerDialog-currentSelectionTitle-assetid">[#';assetNameHTML+=dfx.ellipsize(asset.id.toString(),10)+']</span>';dfx.setHtml(name,assetNameHTML);this.optWidgets.internal.width.setValue(width);this.optWidgets.internal.height.setValue(height);dfx.setStyle([widthCont,heightCont],'display','block');var imgInf=dfx.getClass(c+'-imagePreviewCont-inf',this.internalMovieEl)[0];var seconds=asset.getAttribute('duration');var rdtime=this.secondsToHms(seconds);dfx.setHtml(imgInf,asset.getAttribute('width')+' x '+asset.getAttribute('height')+' ('+rdtime+')');var url=Widget.BASE_URL+'?tb=1&a='+asset.id+'&_'+(new Date).getTime();var imgCont=dfx.getClass(c+'-imagePreviewCont-img',this.internalMovieEl)[0];this._setPreviewMovie(imgCont,url);},secondsToHms:function(seconds)
{hms="";if(seconds<60){hms+='0';}else{hours=parseInt(parseInt(seconds)/3600);if(hours>0){hms+=hours+':';}
minutes=parseInt((seconds/60)%60);if(hours>0){if(hours>=10){hms+=minutes;}else{hms+='0'+minutes;}}else{hms+=minutes;}}
secs=parseInt(seconds%60);hms+=':';if(secs>=10){hms+=secs;}else{hms+='0'+secs;}
return hms;},setClosedEvent:function(fn)
{this.closedEvent=fn;},setClickEvent:function(callback)
{var self=this;this.assetPicker.addAssetsSelectedAction(function(selectedAssets){var selectedAsset=null;if(self.selectedAsset!==null){selectedAsset=self.selectedAsset.id;}
if(selectedAsset!==null){AssetManager.getAsset(selectedAsset,function(asset){var internal=self.optWidgets.internal;var width=internal.width.getValue()||'';var height=internal.height.getValue()||'';callback.call(self,asset.id,height,width,self.selectedElem);},false,{attributes:['width','height','duration'],type:false,typeIcon:false,linking:[],urls:true});}else{callback.call(self,null);}},true);},createOptionsContainer:function(callback)
{var c=this.getClass()+'-opts';var container=document.createElement('div');dfx.addClass(container,c);this.optionsCont=container;var self=this;this.includeWidget('TextField',function(){self._createTabs(function(internal){self.internalMovieEl=internal;container.appendChild(internal);callback.call(self,container);});});},_createTabs:function(callback)
{var self=this;this._createInternalTab(function(internal){callback.call(this,internal);});},_createInternalTab:function(callback)
{var main=document.createElement('div');var c=this.getClass();var content='<div class="'+c+'-imagePreviewCont">';content+='<div class="'+c+'-imagePreviewCont-img"><div class="'+c+'-imagePreviewCont-nimg"></div></div>';content+='<div class="'+c+'-imagePreviewCont-inf"></div>';content+='</div>';dfx.addClass(main,c+'-settings');content+='<div class="'+c+'-imageInfoCont">';content+='<div class="'+c+'-assetInfo">';content+='<label class="'+c+'-label">Asset</label>';content+='<div class="'+c+'-assetInfo-value"></div>';content+='</div>';content+='<div class="'+c+'-width">';content+='<label class="'+c+'-label">Width</label>';content+='<div class="'+c+'-width-text"></div>';content+='<div class="'+c+'-width-value"></div>';content+='</div>';content+='<div class="'+c+'-height">';content+='<label class="'+c+'-label">Height</label>';content+='<div class="'+c+'-height-text"></div>';content+='<div class="'+c+'-height-value"></div>';content+='</div>';content+='</div>';dfx.setHtml(main,content);var widthCont=dfx.getClass(c+'-width-value',main)[0];var heightCont=dfx.getClass(c+'-height-value',main)[0];dfx.setStyle([widthCont,heightCont],'display','none');var self=this;this.includeWidget('TextField',function(){var width=self.createWidget(self.id+'-width','TextField');var height=self.createWidget(self.id+'-height','TextField');self.optWidgets.internal.width=width;self.optWidgets.internal.height=height;width.create(function(widthEl){widthCont.appendChild(widthEl);});height.create(function(heightEl){heightCont.appendChild(heightEl);});});callback.call(this,main);},_setPreviewMovie:function(cont,url,callback)
{if(url.length===0){callback.call(this,false,0,0);}
var self=this;this._getMovie(url,function(image){var w,h=0;if(image!==false){w=image.width;h=image.height;image=self._resizeMovie(image);}
dfx.empty(cont);if(image!==false){cont.appendChild(image);}
if(dfx.isFn(callback)===true){callback.call(this,image,w,h);}});},_getMovie:function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;},_resizeMovie:function(img)
{var h=img.height;var w=img.width;if(h>w){w=(105/(h/w));dfx.attr(img,'height','105');dfx.attr(img,'width',w);}else{h=(150/(w/h));dfx.attr(img,'height',h);dfx.attr(img,'width','150');}
return img;},_setOptCont:function(opt,cont)
{var c=this.getClass()+'-opts';dfx.getClass(c+'-'+opt,this.optionsCont)[0].appendChild(cont);},getClass:function()
{return'ViperMoviePlugin';}};dfx.inherits('ViperMoviePlugin','Widget');function ViperRedoPlugin(viper)
{ViperPlugin.call(this,viper);ViperPluginManager.addKeyPressListener('CTRL+Z',this,'handleUndo');ViperPluginManager.addKeyPressListener('CTRL+Y',this,'handleRedo');}
ViperRedoPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');if(dfx.isset(this.toolbarPlugin)===true){var name='Redo';var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')!==false){ctrlName='CMD';}
this.toolbarPlugin.addButton(name,'undo','Undo ('+ctrlName+' + Z)',function(){return self.handleUndo();});this.toolbarPlugin.setButtonDisabled('undo');this.toolbarPlugin.addButton(name,'redo','Redo ('+ctrlName+' + Y)',function(){return self.handleRedo();});this.toolbarPlugin.setButtonDisabled('redo');}
this.viper.registerCallback('ViperUndoManager:newUndoTask','ViperRedoPlugin',function(){self._updateButtonStates();});},handleUndo:function()
{ViperUndoManager.undo();this._updateButtonStates();return true;},handleRedo:function()
{ViperUndoManager.redo();this._updateButtonStates();return true;},_updateButtonStates:function()
{if(!this.toolbarPlugin){return;}
if(ViperUndoManager.getUndoCount()>1){this.toolbarPlugin.setButtonInactive('undo');}else{this.toolbarPlugin.setButtonDisabled('undo');}
if(ViperUndoManager.getRedoCount()>0){this.toolbarPlugin.setButtonInactive('redo');}else{this.toolbarPlugin.setButtonDisabled('redo');}}};dfx.noInclusionInherits('ViperRedoPlugin','ViperPlugin',true);function ViperSourceViewPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.modalDialog=null;this.textarea=null;this.multiplier=4;}
ViperSourceViewPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('SourceView','code','Source View',function(){self.showSource();});},showSource:function()
{var self=this;ViperPluginManager.setActivePlugin('ViperSourceViewPlugin',false);var content=this.viper.getHtml(this.viper.element);content=content.replace(/(src|href)+="(\S+)"/gi,function(fullStr,attrName,val){return attrName+'="'+unescape(val)+'"'});this.createDialog(content,function(){var val=self.textarea.value;val=self.escapeContent(val.replace(/[\s]{2,}/g,''));self.viper.setHtml(val,function(){self.modalDialog.close();self.viper.fireNodesChanged('ViperSourceViewPlugin:update');ViperChangeTracker.reLoad();});});},escapeContent:function(val)
{return val;},createDialog:function(content,callback)
{content=this.format(content);content=this.cleanupHTML(content);var textarea=document.createElement('textarea');this.textarea=textarea;dfx.addClass(textarea,'ViperSourceViewPlugin');textarea.value=content;textarea.setAttribute('rows',30);textarea.setAttribute('cols',80);var self=this;this.includeWidget('ModalDialog',function(){var modalDialog=self.createWidget('ViperSourceViewDialog','ModalDialog');modalDialog.setContent(textarea);modalDialog.setTitle('Source View');modalDialog.create(function(){modalDialog.addButton('Update',function(button){button.addClickEvent(callback);});self.modalDialog=modalDialog;self.modalDialog.open(function(){textarea.focus();});modalDialog.addOnCloseCallback(function(){ViperPluginManager.setActivePlugin(null);});});});},cleanupHTML:function(content)
{content=content.replace(/<(img|br|hr)((\s+\w+(\s*=\s*(?:".*?"|\'.*?\'|[^\'">\s]+))?)+)?\s*>/ig,"<$1$2 />");return content;},format:function(content)
{var output='';var match=null;var tabCount=0;var prevIndex=0;content=content.replace(/\n/gi,' ');content=content.replace(/\r/gi,'');var allTags=/<\/?(p|div|pre|ul|ol|tbody|table|tr|td|th|fieldset|form|blockquote|dl|dir|center|address|h1|h2|h3|h4|h5|h6)((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim;content=content.replace(allTags,"\n$&\n");content=content.replace(/\n\n/gm,"\n");var endTags=/<\/(p|div|pre|ul|ol|tbody|table|fieldset|form|blockquote|dl|dir|center|address|h1|h2|h3|h4|h5|h6)>/gim;content=content.replace(endTags,"$&\n");while((match=allTags.exec(content))!=null){var innerHtml=content.substring(prevIndex,match.index);if(dfx.isBlank(innerHtml)===false&&tabCount>1){output+=dfx.strRepeat(' ',((tabCount-1)*this.multiplier));}
output+=innerHtml;if(match[0].charAt(1)==='/'){tabCount--;output+=dfx.strRepeat(' ',(tabCount*this.multiplier));}else{output+=dfx.strRepeat(' ',(tabCount*this.multiplier));tabCount++;}
output+=content.substr(match.index,match[0].length+1);prevIndex=match.index+match[0].length+1;}
output+=content.substr(prevIndex);output=dfx.trim(output);return output;}};dfx.noInclusionInherits('ViperSourceViewPlugin','ViperPlugin',true);function ViperSubToolbarPlugin(viper)
{ViperPlugin.call(this,viper);this._toolbars={};this._wrapper=null;this._activeBarid=null;}
ViperSubToolbarPlugin.prototype={createToolBar:function(id)
{if(this._wrapper===null){this._wrapper=this._createWrapper();}
var barid='subToolbar-'+id;var oldbar=dfx.getId(barid);if(oldbar){dfx.remove(oldbar);}
var c='ViperSubToolbar';var div=document.createElement('div');div.id=barid;dfx.addClass(div,c);this._toolbars[id]=div;var toolbarEl=dfx.getId('ViperToolbar');if(toolbarEl&&toolbarEl.parentNode!==document.body){this.setParentElement(toolbarEl.parentNode);}
var content='<div class="'+c+'-left"></div>';content+='<div class="'+c+'-mid"><div class="'+c+'-mid-wrapper"></div></div>';content+='<div class="'+c+'-right"></div>';dfx.setHtml(div,content);var mid=dfx.getClass(c+'-mid-wrapper',div)[0];this._wrapper.appendChild(div);return mid;},setParentElement:function(parent)
{dfx.remove(this._wrapper);dfx.setStyle(this._wrapper,'position','absolute');dfx.setStyle(this._wrapper,'top','22px');parent.appendChild(this._wrapper);},_createWrapper:function()
{var wrapper=document.createElement('div');dfx.addClass(wrapper,'ViperSubToolbar-wrapper');document.body.appendChild(wrapper);return wrapper;},showToolbar:function(id)
{var bar=this.getBar(id);if(bar){if(this._activeBarid&&id!==this._activeBarid){this.hideToolbar(this._activeBarid);}
dfx.setStyle(bar,'visibility','hidden');dfx.addClass(bar,'active');dfx.setStyle(bar.parentNode,'right',0);var width=dfx.getElementWidth(bar);dfx.setStyle(bar,'margin-right',((width*-1)/2)+'px');dfx.setStyle(bar.parentNode,'right','50%');dfx.setStyle(bar,'visibility','visible');}
this.viper.fireCallbacks('ViperSubToolbar:showToolbar',id);this._activeBarid=id;},hideToolbar:function(id)
{if(this._activeBarid===id){dfx.removeClass(dfx.getClass('ViperSubToolbar',this._wrapper),'active');this._activeBarid=null;this.viper.fireCallbacks('ViperSubToolbar:hideToolbar',id);}},toggleToolbar:function(id)
{if(this._activeBarid===id){this.hideToolbar(id);return false;}else{this.showToolbar(id);return true;}},createOptionsList:function(title)
{var div=document.createElement('div');var c='ViperSubToolbar-optsList';dfx.addClass(div,c);var contents='<div class="'+c+'-title">';contents+='<div class="'+c+'-title-left"></div>';contents+='<div class="'+c+'-title-mid">'+title+'</div>';contents+='<div class="'+c+'-title-right"></div></div>';contents+='<div class="'+c+'-mid"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(div,contents);var contentDiv=dfx.getClass(c+'-mid',div)[0];return{main:div,contentEl:contentDiv};},getBar:function(id)
{return this._toolbars[id];},isPluginElement:function(el)
{return dfx.isChildOf(el,this._wrapper);},remove:function()
{dfx.remove(this._wrapper);},isActive:function()
{if(this._activeBarid){return true;}
return false;}};dfx.noInclusionInherits('ViperSubToolbarPlugin','ViperPlugin',true);function ViperTableEditorPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.activeCell=null;this.vCellButtons=null;this.hCellButtons=null;this._subToolbar=null;this._lastNode=null;this._currentTablePropView='cell';this._settingsWidgets={};ViperPluginManager.addKeyPressListener('TAB',this,'handleTab');}
ViperTableEditorPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('TableEditor','table','Insert/Edit Table',function(){self.insertTable();});ViperPluginManager.addKeyPressListener('DELETE',this,'handleDelete');dfx.removeEvent(document,'click.TableEditorPlugin');dfx.addEvent(document,'click.TableEditorPlugin',function(e){if(ViperPluginManager.getActivePlugin()==='TableEditor'){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'ViperTableEditorPlugin-cellButton')!==true){if(dfx.isChildOf(target,self._subToolbar)===false){ViperPluginManager.setActivePlugin(null);if(dfx.isChildOf(target,self.viper.element)===false){self.viper.mouseDown(null,target);}}}}});this.viper.registerCallback('setHtml','TablePlugin',function(data){self.hideCellButtons();});ViperChangeTracker.addChangeType('insertedTable','Inserted','insert');ViperChangeTracker.addChangeType('insertedTableRow','Inserted','insert');ViperChangeTracker.addChangeType('insertedTableCol','Inserted','insert');ViperChangeTracker.setDescriptionCallback('insertedTable',function(node){return'Table';});ViperChangeTracker.setDescriptionCallback('insertedTableRow',function(node){return'Table row';});ViperChangeTracker.setDescriptionCallback('insertedTableCol',function(node){return'Table column';});ViperChangeTracker.setApproveCallback('insertedTable',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('insertedTableRow',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('insertedTableCol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('insertedTable',function(clone,node){self.removeTable(node);});ViperChangeTracker.setRejectCallback('insertedTableRow',function(clone,node){self.removeRow(node);});ViperChangeTracker.setRejectCallback('insertedTableCol',function(clone,node){self.removeCol(node);});ViperChangeTracker.addChangeType('removedTable','Deleted','remove');ViperChangeTracker.addChangeType('removedTableRow','Deleted','remove');ViperChangeTracker.addChangeType('removedTableCol','Deleted','remove');ViperChangeTracker.setDescriptionCallback('removedTable',function(node){return'Table';});ViperChangeTracker.setDescriptionCallback('removedTableRow',function(node){return'Table row';});ViperChangeTracker.setDescriptionCallback('removedTableCol',function(node){return'Table column';});ViperChangeTracker.setApproveCallback('removedTable',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('removedTableRow',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('removedTableCol',function(clone,node){dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedTable',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedTableRow',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedTableCol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});this.viper.registerCallback('ViperChangeTracker:modeChange','ViperTableEditor',function(changedTo){var showInserted=true;var showRemoved=false;if(changedTo==='original'){showInserted=false;showRemoved=true;}
ViperChangeTracker.setNodeTypeVisibility('insertedTable',showInserted);ViperChangeTracker.setNodeTypeVisibility('insertedTableRow',showInserted);ViperChangeTracker.setNodeTypeVisibility('insertedTableCol',showInserted);ViperChangeTracker.setNodeTypeVisibility('removedTable',showRemoved);ViperChangeTracker.setNodeTypeVisibility('removedTableRow',showRemoved);ViperChangeTracker.setNodeTypeVisibility('removedTableCol',showRemoved);});this.viper.registerCallback('ViperUndoManager:undo','ViperTableEditor',function(){self.hideCellButtons();});this.viper.registerCallback('ViperUndoManager:redo','ViperTableEditor',function(){self.hideCellButtons();});},clicked:function(e,elem)
{if(!elem){elem=dfx.getMouseEventTarget(e);}
if(this.isTableCell(elem)){this.showCellButtons(elem);}else{this.hideCellButtons();}},isTableCell:function(elem)
{if(!elem){return false;}
var node=elem;while(node&&node!==this.viper.element){if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return true;}}
node=node.parentNode;}
return false;},handleDelete:function()
{var range=this.viper.getCurrentRange();if(range.startOffset===0&&range.startContainer.nodeType===dfx.TEXT_NODE){node=range.startContainer.parentNode;while(node&&node!==this.viper.element){if(node.nodeType===dfx.ELEMENT_NODE&&node.tagName.toLowerCase()==='td'){if(dfx.getNodeTextContent(node).length===0){dfx.setHtml(node,'&nbsp;');range.setStart(node.firstChild,0);range.collapse(true);}
return true;}
node=node.parentNode;}}},remove:function()
{this.hideCellButtons();dfx.removeEvent(document,'click.TableEditorPlugin');},caretUpdated:function()
{var range=this.viper.getCurrentRange();this._caretUpdated(range.startContainer);},_caretUpdated:function(cell)
{if(!cell){return;}
var keywordPlugin=ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin&&keywordPlugin.isKeyword(cell)===true){return;}
while(cell&&cell!==this.viper.element){if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){this.showCellButtons(cell);return;}}
cell=cell.parentNode;}
this.hideCellButtons(cell);},setActiveCell:function(cell,noUpdate)
{this.activeCell=cell;if(noUpdate!==true){this.updateSettings(cell);}},_updatecellButtonPositions:function(cell)
{this.showCellButtons(cell,true);},hideCellButtons:function(noDisable)
{try{var cellTable=this.getCellTable(this.activeCell);if(cellTable){dfx.removeClass(dfx.getClass('delHighlight',cellTable),'delHighlight');}
if(noDisable!==true){this.setActiveCell(null);}
dfx.remove(dfx.getClass('ViperTableEditorPlugin-cellButtonsWrapper'));this.vCellButtons=null;this.hCellButtons=null;if(noDisable!==true){ViperPluginManager.setActivePlugin(null);ViperPluginManager.getPlugin('ViperSubToolbarPlugin').hideToolbar('TableEditor');}}catch(e){}},showCellButtons:function(cell,noSet)
{if(!cell){return;}
this.hideCellButtons(true);this.setActiveCell(cell,noSet);var coords=dfx.getBoundingRectangle(cell);if(this.vCellButtons===null){this.vCellButtons=this.createVerticalCellButtons();}
if(this.hCellButtons===null){this.hCellButtons=this.createHorizontalCellButtons();}
var wrapper=document.createElement('div');dfx.addClass(wrapper,'ViperTableEditorPlugin-cellButtonsWrapper');wrapper.appendChild(this.vCellButtons);wrapper.appendChild(this.hCellButtons);document.body.appendChild(wrapper);if(noSet!==true){ViperPluginManager.setActivePlugin('TableEditor');ViperPluginManager.allowTextInput=true;}
this.showVerticalCellButtons(coords);this.showHorizontalCellButtons(coords);if(!this._subToolbar){this._setupSubToolbar();}else{var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(subToolbarPlugin){subToolbarPlugin.showToolbar('TableEditor');}}},showHorizontalCellButtons:function(coords)
{dfx.setStyle(this.hCellButtons,'visibility','hidden');dfx.setStyle(this.hCellButtons,'display','block');var h=14;var w=42;dfx.setStyle(this.hCellButtons,'top',(coords.y1-h)+'px');dfx.setStyle(this.hCellButtons,'left',(coords.x2-((coords.x2-coords.x1)/2)-(w/2))+'px');dfx.setStyle(this.hCellButtons,'visibility','visible');},showVerticalCellButtons:function(coords)
{dfx.setStyle(this.vCellButtons,'visibility','hidden');dfx.setStyle(this.vCellButtons,'display','block');var h=42;var w=14;dfx.setStyle(this.vCellButtons,'top',(coords.y1+((coords.y2-coords.y1)/2)-(h/2))+'px');dfx.setStyle(this.vCellButtons,'left',(coords.x1-w)+'px');dfx.setStyle(this.vCellButtons,'visibility','visible');},createVerticalCellButtons:function()
{var main=document.createElement('div');dfx.addClass(main,'ViperTableEditorPlugin-v-cellButtons');var insertRowAfter=document.createElement('div');dfx.attr(insertRowAfter,'title','Insert row below');dfx.addClass(insertRowAfter,'down');var insertRowBefore=document.createElement('div');dfx.attr(insertRowBefore,'title','Insert row above');dfx.addClass(insertRowBefore,'up');var removeRow=document.createElement('div');dfx.addClass(removeRow,'delete');dfx.attr(removeRow,'title','Delete row');dfx.addClass([insertRowAfter,insertRowBefore,removeRow],'ViperTableEditorPlugin-cellButton');main.appendChild(insertRowBefore);main.appendChild(removeRow);main.appendChild(insertRowAfter);var self=this;dfx.addEvent(insertRowAfter,'click',function(){self.insertRowAfter();});dfx.addEvent(insertRowBefore,'click',function(){self.insertRowBefore();});dfx.addEvent(removeRow,'click',function(){self.removeRow();});dfx.hover(insertRowAfter,function(){dfx.addClass(main,'after');},function(){dfx.removeClass(main,'after');});dfx.hover(insertRowBefore,function(){dfx.addClass(main,'before');},function(){dfx.removeClass(main,'before');});dfx.hover(removeRow,function(){dfx.addClass(main,'delete');if(self.activeCell&&self.activeCell.parentNode){dfx.addClass(self.activeCell.parentNode,'delHighlight');}},function(){dfx.removeClass(main,'delete');if(self.activeCell&&self.activeCell.parentNode){dfx.removeClass(self.activeCell.parentNode,'delHighlight');}});return main;},createHorizontalCellButtons:function()
{var main=document.createElement('div');dfx.addClass(main,'ViperTableEditorPlugin-h-cellButtons');var insertColAfter=document.createElement('div');dfx.attr(insertColAfter,'title','Insert column to the right');dfx.addClass(insertColAfter,'right');var insertColBefore=document.createElement('div');dfx.attr(insertColBefore,'title','Insert column to the left');dfx.addClass(insertColBefore,'left');var removeCol=document.createElement('div');dfx.addClass(removeCol,'delete');dfx.attr(removeCol,'title','Delete column');dfx.addClass([insertColAfter,insertColBefore,removeCol],'ViperTableEditorPlugin-cellButton');main.appendChild(insertColBefore);main.appendChild(removeCol);main.appendChild(insertColAfter);var self=this;dfx.addEvent(insertColAfter,'click',function(){self.insertColAfter();});dfx.addEvent(insertColBefore,'click',function(){self.insertColBefore();});dfx.addEvent(removeCol,'click',function(){self.removeCol();});dfx.hover(insertColAfter,function(){dfx.addClass(main,'right');},function(){dfx.removeClass(main,'right');});dfx.hover(insertColBefore,function(){dfx.addClass(main,'left');},function(){dfx.removeClass(main,'left');});dfx.hover(removeCol,function(){dfx.addClass(main,'delete');var table=self.getCellTable(self.activeCell);dfx.addClass(self.getColumnCells(table,self._getColNum(self.activeCell)),'delHighlight');},function(){dfx.removeClass(main,'delete');var table=self.getCellTable(self.activeCell);dfx.removeClass(self.getColumnCells(table,self._getColNum(self.activeCell)),'delHighlight');});return main;},insertRowBefore:function()
{this.insertRow(true);},insertRowAfter:function()
{this.insertRow();},insertRow:function(before)
{if(!this.activeCell){return;}
var tr=this.activeCell.parentNode;var clone=tr.cloneNode(true);var cln=clone.childNodes.length;for(var i=0;i<cln;i++){var el=clone.childNodes[i];if(el.nodeType===dfx.ELEMENT_NODE){dfx.setStyle(el,'width','');dfx.setHtml(el,'&nbsp;');}}
if(before===true){dfx.insertBefore(tr,clone);}else{dfx.insertAfter(tr,clone);}
ViperChangeTracker.addChange('insertedTableRow',[clone]);var cellNum=0;var trcln=tr.childNodes.length;for(cellNum=0;cellNum<trcln;cellNum++){if(this.activeCell===tr.childNodes[cellNum]){break;}}
this.moveCaretToCell(clone.childNodes[cellNum]);this._nodesUpdated();},removeRow:function(tr)
{if(!tr){tr=this.activeCell.parentNode;}
var elem=this._getNextRow(tr);var pos='parent';if(!elem){elem=this._getPreviousRow(tr);if(!elem){elem=null;}else{pos='after';}}else{pos='before';}
if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.isTrackingNode(tr)!==true){var del=document.createElement('del');dfx.insertBefore(tr,del);del.appendChild(tr);dfx.removeClass(tr,'delHighlight');ViperChangeTracker.addChange('removedTableRow',[del]);}else{dfx.remove(tr);}
if(elem){var colNum=this._getColNum(this.activeCell);var column=this._getColumn(elem,colNum);this.moveCaretToCell(column);}else{var table=this.getCellTable(this.activeCell);this.removeTable(table);}
this._nodesUpdated();},_getColNum:function(cell)
{if(!cell){return null;}
var tr=cell.parentNode;if(!tr){return null;}
var ln=tr.childNodes.length;var c=0;for(var i=0;i<ln;i++){var node=tr.childNodes[i];if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){if(node===cell){break;}
c++;}}}
return c;},_getColumn:function(row,colNum)
{var ln=row.childNodes.length;for(var i=0;i<ln;i++){var node=row.childNodes[i];if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){if(colNum===0){return node;}
colNum--;}}}},_getPreviousRow:function(row)
{while(row=row.previousSibling){if(row.nodeType===dfx.ELEMENT_NODE){var tagName=row.tagName.toLowerCase();if(tagName==='tr'||tagName==='th'){return row;}}}},_getNextRow:function(row,goPrev)
{while(row=row.nextSibling){if(row.nodeType===dfx.ELEMENT_NODE){var tagName=row.tagName.toLowerCase();if(tagName==='tr'||tagName==='th'){return row;}}}
if(goPrev===true){return this._getPreviousRow(row);}},insertColAfter:function()
{this.insertCol();},insertColBefore:function()
{this.insertCol(true);},insertCol:function(before)
{var table=this.activeCell.parentNode.parentNode;var rows=dfx.getTag('tr',table);var activeCellRow=this.activeCell.parentNode;var colNum=this._getColNum(this.activeCell);var changeid=ViperChangeTracker.startBatchChange('insertedTableCol');var td;var rln=rows.length;for(var i=0;i<rln;i++){var col=this._getColumn(rows[i],colNum);td=document.createElement(col.tagName);dfx.setHtml(td,'&nbsp;');if(i===0){dfx.setStyle(td,'width','100px');}
if(before===true){dfx.insertBefore(col,td);}else{dfx.insertAfter(col,td);}
if(changeid!==null){ViperChangeTracker.addNodeToChange(changeid,td);}}
if(changeid){ViperChangeTracker.endBatchChange(changeid);}
if(activeCellRow){if(before!==true){colNum++;}
var column=this._getColumn(activeCellRow,colNum);this.moveCaretToCell(column);}
this._nodesUpdated();},getColumnCells:function(table,colNum)
{if(!table){return;}
var cols=[];var rows=dfx.getTag('tr',table);var rln=rows.length;for(var i=0;i<rln;i++){cols.push(this._getColumn(rows[i],colNum));}
return cols;},removeCol:function(col)
{if(!col){col=this.activeCell;}
var colNum=this._getColNum(col);if(colNum===null){return;}
var row=col.parentNode;var table=this.getRowTable(row);var rows=dfx.getTag('tr',table);var changeid=null;if(ViperChangeTracker.isTrackingNode(col)!==true){changeid=ViperChangeTracker.startBatchChange('removedTableCol');}
var rln=rows.length;for(var i=0;i<rln;i++){col=this._getColumn(rows[i],colNum);if(changeid){var del=document.createElement('del');dfx.insertBefore(col,del);del.appendChild(col);dfx.removeClass(col,'delHighlight');ViperChangeTracker.addNodeToChange(changeid,del);}else{dfx.remove(col);}}
ViperChangeTracker.endBatchChange(changeid);if(colNum>0){colNum--;}
var nextCell=this._getColumn(row,colNum);if(!nextCell){this.removeTable(table,true);}else{this.moveCaretToCell(nextCell);}
this._nodesUpdated();},getNextCell:function(cell,goPrev)
{while(cell.nextSibling){cell=cell.nextSibling;if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return cell;}}}
if(goPrev===true){return this.getPrevCell(cell);}else{var nextRow=this._getNextRow(cell.parentNode);if(nextRow){return this._getColumn(nextRow,0);}}},getPrevCell:function(cell)
{while(cell.previousSibling){cell=cell.previousSibling;if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return cell;}}}
var prevRow=this._getPreviousRow(cell.parentNode);if(prevRow){var col=(dfx.getTag('td,th',prevRow).length-1);return this._getColumn(prevRow,col);}},moveCaretToCell:function(cell)
{if(cell){var range=this.viper.getCurrentRange();range.setStart(cell,0);range.moveStart('character',1);range.moveStart('character',-1);range.collapse(true);return range;}else{this.hideCellButtons();}},removeTable:function(table,emptyOnly)
{if(emptyOnly===true){if(dfx.getTag('td',table).length>0||dfx.getTag('th',table).length>0){return;}}
if(ViperChangeTracker.isTracking()===true){var del=document.createElement('del');dfx.insertBefore(table,del);del.appendChild(table);ViperChangeTracker.addChange('removedTable',[del]);}else{dfx.remove(table);}
this.hideCellButtons();this._nodesUpdated();},getCellTable:function(cell)
{if(!cell){return null;}
var node=cell;while(node){if(node.nodeType===dfx.ELEMENT_NODE){if(node.tagName.toLowerCase()==='table'){return node;}}
node=node.parentNode;}},getRowTable:function(row)
{return this.getCellTable(row);},insertTable:function(rows,cols)
{rows=rows||2;cols=cols||3;var table=document.createElement('table');dfx.setStyle(table,'display','none');ViperChangeTracker.addChange('insertedTable',[table]);var tbody=document.createElement('tbody');var firstCol=null;for(var i=0;i<rows;i++){var tr=document.createElement('tr');for(var j=0;j<cols;j++){var td=document.createElement('td');if(i===0){dfx.setStyle(td,'width','100px');}
dfx.setHtml(td,'&nbsp;');tr.appendChild(td);if(firstCol===null){firstCol=td;}}
tbody.appendChild(tr);}
table.appendChild(tbody);var bookmark=this.viper.createBookmark();var splitInfo=this.viper.splitNodeAtBookmark('p',bookmark);if(splitInfo){if(splitInfo.prevNode){dfx.insertAfter(splitInfo.prevNode,table);}else if(splitInfo.nextNode){dfx.insertBefore(splitInfo.nextNode,table);if(this.viper.elementIsEmpty(splitInfo.nextNode)===true){dfx.remove(splitInfo.nextNode);}}}
var width=parseInt(dfx.getComputedStyle(table,'width'));if(!width){dfx.setStyle(table,'width','300px');}
var col=dfx.getTag('td',table)[0];var rightWidth=parseInt(dfx.getComputedStyle(col,'border-right-width'));var bottomWidth=parseInt(dfx.getComputedStyle(col,'border-bottom-width'));if(bottomWidth===0||rightWidth===0||isNaN(bottomWidth)===true||isNaN(rightWidth)===true){dfx.attr(table,'border',1);}
dfx.setStyle(table,'display','');this._nodesUpdated();if(firstCol){var range=this.viper.getCurrentRange();range.setStart(firstCol.firstChild,0);range.collapse(true);ViperSelection.addRange(range);}},handleTab:function(e)
{if(this.activeCell!==null){var cell=null;if(e.shiftKey!==true){cell=this.getNextCell(this.activeCell);}else{cell=this.getPrevCell(this.activeCell);}
this.moveCaretToCell(cell);}},isPluginElement:function(elem)
{if(dfx.hasClass(elem,'ViperTableEditorPlugin-cellButton')!==true){if(dfx.isChildOf(elem,self._subToolbar)===false){return false;}}
return true;},_nodesUpdated:function(noFocus)
{this.viper.fireNodesChanged('ViperTableEditorPlugin:update',noFocus);},_setupSubToolbar:function()
{var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('TableEditor');var c='ViperTableEditor-stb';var contents='<div class="'+c+'-left"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(toolbar,contents);this._subToolbar=toolbar;var self=this;this.includeWidgets(['Button','RadioButton','SpinButton','TextField','Select'],function(){var changePropTypeBtn=self.createWidget(c+'-switchToolbar','Button');changePropTypeBtn.setName('Table Properties');changePropTypeBtn.setButtonIconClassName(c+'-switch');changePropTypeBtn.create(function(changePropTypeBtnEl){dfx.addClass(changePropTypeBtn.domElem,c+'-tableProperties');changePropTypeBtn.setMinWidth('110px');dfx.getClass(c+'-right',toolbar)[0].appendChild(changePropTypeBtnEl);});self._currentTablePropView='cell';changePropTypeBtn.addClickEvent(function(){if(self._currentTablePropView==='table'){changePropTypeBtn.setName('Table Properties');dfx.removeClass(changePropTypeBtn.domElem,c+'-cellProperties');dfx.addClass(changePropTypeBtn.domElem,c+'-tableProperties');self._showProperties('cell');}else{dfx.removeClass(changePropTypeBtn.domElem,c+'-tableProperties');dfx.addClass(changePropTypeBtn.domElem,c+'-cellProperties');changePropTypeBtn.setName('Cell Properties');self._showProperties('table');}});self._setupTableProperties(function(tablePropertiesEl){self._setupCellProperties(function(cellPropertiesEl){dfx.getClass(c+'-left',toolbar)[0].appendChild(tablePropertiesEl);dfx.getClass(c+'-left',toolbar)[0].appendChild(cellPropertiesEl);self._showProperties(self._currentTablePropView);subToolbarPlugin.showToolbar('TableEditor');});});});},_setupTableProperties:function(callback)
{var props={tableBorder:'Table Border',cellPadding:'Cell Padding',cellSpacing:'Cell Spacing'};this._settingsWidgets.table={};var self=this;var c='ViperTableEditor-stb';var div=document.createElement('div');dfx.addClass(div,c+'-propertiesWrapper');dfx.addClass(div,c+'-tableProps');var content='';content+='<div class="'+c+'-propContainer" id="'+c+'-propContainer-tableWidth"><label>Table Width</label>';content+='<div class="'+c+'-propWrapper '+c+'-tableWidth-wrapper"></div></div>';dfx.foreach(props,function(propid){content+='<div class="'+c+'-propContainer" id="'+c+'-propContainer-'+propid+'"><label>'+props[propid]+'</label>';content+='<div class="'+c+'-propWrapper '+c+'-'+propid+'-wrapper"></div></div>';});dfx.setHtml(div,content);var tableWidth=this.createWidget(c+'-tableWidth','TextField');var tableWidthType=this.createWidget(c+'-tableWidthType','Select');tableWidthType.addItems({px:'px',pc:'%'});tableWidthType.setSelectedEventValueType('value');tableWidthType.addItemSelectedEvent(function(type){self._changeTableSettingValue('widthType',type);});this._settingsWidgets.table.widthType=tableWidthType;this._settingsWidgets.table.width=tableWidth;tableWidth.create(function(tableWidthEl){tableWidth.setWidth(25);var t=null;dfx.addEvent(tableWidth.domEl,'keyup',function(){if(t){clearTimeout(t);t=null;}
t=setTimeout(function(){var width=parseInt(tableWidth.getValue());self._changeTableSettingValue('width',width);},500);});self._makeOptionEditable(tableWidth.domEl);var parent=dfx.getClass(c+'-tableWidth-wrapper',div)[0];parent.appendChild(tableWidthEl);tableWidthType.create(function(tableWidthTypeEl){dfx.insertAfter(parent,tableWidthTypeEl);});});dfx.foreach(props,function(propid){(function(propid){var widgetid=c+'-'+propid;var widget=self.createWidget(widgetid,'SpinButton',0);widget.setInitialValue(0);widget.allowEmptyValue(true);widget.create(function(el){self._makeOptionEditable(widget.domEl);dfx.getClass(widgetid+'-wrapper',div)[0].appendChild(el);});widget.addOnChangeEvent(function(val){self._changeTableSettingValue(propid,val);});self._settingsWidgets.table[propid]=widget;})(propid);});callback.call(this,div);},_makeOptionEditable:function(elem)
{},_setupCellProperties:function(callback)
{this._settingsWidgets.cell={};var self=this;var c='ViperTableEditor-stb';var div=document.createElement('div');dfx.addClass(div,c+'-propertiesWrapper');dfx.addClass(div,c+'-cellProps');var content='<div class="'+c+'-propContainer" id="'+c+'-propContainer-colWidth"><label>Column Width</label>';content+='<div class="'+c+'-propWrapper '+c+'-columnWidth-wrapper"></div>';content+='<div class="'+c+'-propWrapper '+c+'-columnWidthSel-wrapper"></div></div>';content+='<div class="'+c+'-optionListWrapper"></div>';dfx.setHtml(div,content);var colWidthText=this.createWidget(c+'-colWidth-txt','TextField');colWidthText.create(function(colWidthTextEl){var t=null;dfx.addEvent(colWidthText.domEl,'keyup',function(){if(t){clearTimeout(t);t=null;}
t=setTimeout(function(){var width=parseInt(colWidthText.getValue());self._changeSettingValue('width',width);},500);});self._makeOptionEditable(colWidthText.domEl);colWidthText.setWidth(25);dfx.getClass(c+'-columnWidth-wrapper',div)[0].appendChild(colWidthTextEl);});var colWidthSel=this.createWidget(c+'-colWidth-sel','Select');colWidthSel.addItems({px:'px',pc:'%'});colWidthSel.setSelectedEventValueType('value');colWidthSel.addItemSelectedEvent(function(type){self._changeSettingValue('widthType',type);});this._settingsWidgets.cell.widthType=colWidthSel;this._settingsWidgets.cell.width=colWidthText;colWidthSel.create(function(colWidthSelEl){dfx.getClass(c+'-columnWidthSel-wrapper',div)[0].appendChild(colWidthSelEl);});var optsList=ViperPluginManager.getPlugin('ViperSubToolbarPlugin').createOptionsList('Appearance');dfx.addClass(optsList.main,c+'-optionList');(dfx.getClass(c+'-optionListWrapper',div)[0]).appendChild(optsList.main);this._createOptionList(optsList.contentEl);callback.call(this,div);},_createOptionList:function(parent)
{var div=null;var self=this;var opts={tableHeader:'Table Header',noTextWrap:'No Text Wrap'};div=document.createElement('div');var label=document.createElement('label');parent.appendChild(div);dfx.setHtml(label,'Align');div.appendChild(label);dfx.addClass(div,'ViperTableEditor-stb-optItem');div.id='ViperTableEditor-opts-vert';dfx.addClass(div,'first');var alignType={top:'Align to top',middle:'Align to middle',bottom:'Align to bottom'};this._settingsWidgets.cell.valign=div;dfx.foreach(alignType,function(i){var alignDiv=document.createElement('div');dfx.attr(alignDiv,'title',alignType[i]);dfx.addClass(alignDiv,'ViperTableEditor-stb-align');dfx.addClass(alignDiv,'ViperTableEditor-stb-align-'+i);(function(el,alignType){dfx.addEvent(el,'click',function(){dfx.removeClass(dfx.getClass('ViperTableEditor-stb-align',el.parentNode),'active');dfx.addClass(el,'active');self._changeSettingValue('valign',alignType);});})(alignDiv,i);div.appendChild(alignDiv);});dfx.foreach(opts,function(i){div=document.createElement('div');var label=document.createElement('label');parent.appendChild(div);dfx.setHtml(label,opts[i]);div.appendChild(label);dfx.addClass(div,'ViperTableEditor-stb-optItem');div.id='ViperTableEditor-opts-'+i;var radioBtn=self.createWidget(null,'RadioButton',null,false);self._settingsWidgets.cell[i]=radioBtn;radioBtn.create(function(radioBtnEl){dfx.attr(label,'for',radioBtn.id);div.appendChild(radioBtnEl);radioBtn._addEvents();});(function(radioBtnWidget,type){radioBtnWidget.addCheckedEvent(function(checked){self._changeSettingValue(type,checked);});})(radioBtn,i);});if(div){dfx.addClass(div,'last');}},_showProperties:function(type)
{if(!this._subToolbar){return;}
var c='ViperTableEditor-stb';dfx.removeClass(dfx.getClass(c+'-propertiesWrapper',this._subToolbar),'show');dfx.addClass(dfx.getClass(c+'-'+type+'Props',this._subToolbar)[0],'show');this._currentTablePropView=type;ViperPluginManager.getPlugin('ViperSubToolbarPlugin').showToolbar('TableEditor');},_changeTableSettingValue:function(type,value)
{if(!this.activeCell||!type){return;}
var table=this.getCellTable(this.activeCell);if(!table){return;}
var changed=false;switch(type){case'tableBorder':if(parseInt(dfx.attr(table,'border'))!==parseInt(value)){dfx.attr(table,'border',value);changed=true;}
break;case'width':if(!value){value='';}else{var widthType=this._settingsWidgets.table.widthType.getValue();if(widthType==='pc'){value+='%';}else{value+='px';}}
if(dfx.setStyle(table,'width')!==value){dfx.setStyle(table,'width',value);changed=true;}
break;case'widthType':var width=parseInt(dfx.getStyle(table,'width'));if(width){if(value==='pc'){value='%';}
if(dfx.setStyle(table,'width')!==(width+value)){dfx.setStyle(table,'width',width+value);changed=true;}}
break;default:value=parseInt(value);if(isNaN(value)===true){value='';}
var currVal=parseInt(dfx.attr(table,type));if(isNaN(currVal)===true){currVal='';}
if(currVal!==value){dfx.attr(table,type,value);changed=true;}
break;}
if(changed===true){this._updatecellButtonPositions(this.activeCell);this._nodesUpdated(true);}},_changeSettingValue:function(type,value)
{if(!this.activeCell||!type){return;}
var changed=false;if(type==='tableHeader'){var toType='th';if(value!==true){toType='td';}
if(dfx.isTag(this.activeCell,toType)===true){return;}
var newEl=document.createElement(toType);var clone=this.activeCell.cloneNode(true);while(clone.firstChild){newEl.appendChild(clone.firstChild);}
var whiteSpace=dfx.getStyle(clone,'white-space');if(whiteSpace==='nowrap'){dfx.setStyle(newEl,'white-space','nowrap');}
var valign=dfx.getStyle(clone,'vertical-align');if(valign){dfx.setStyle(newEl,'vertical-align',valign);}
var width=dfx.getStyle(clone,'width');if(width){dfx.setStyle(newEl,'width',width);}
dfx.insertBefore(this.activeCell,newEl);dfx.remove(this.activeCell);this.setActiveCell(newEl);changed=true;this.moveCaretToCell(this.activeCell);}else if(type==='noTextWrap'){var style='normal';if(value===true){style='nowrap';}
if(dfx.getStyle(this.activeCell,'white-space')!==style){dfx.setStyle(this.activeCell,'white-space',style);changed=true;this.moveCaretToCell(this.activeCell);}}else if(type==='width'){if(!value){value='';}else{var widthType=this._settingsWidgets.cell.widthType.getValue();if(widthType==='pc'){value+='%';}else{value+='px';}}
if(dfx.getStyle(this.activeCell,'width')!==value){dfx.setStyle(this.activeCell,'width',value);changed=true;}}else if(type==='widthType'){var width=parseInt(dfx.getStyle(this.activeCell,'width'));if(width){if(value==='pc'){value='%';}
if(dfx.getStyle(this.activeCell,'width')!==(width+value)){dfx.setStyle(this.activeCell,'width',width+value);changed=true;}}}else if(type==='valign'){if(dfx.getStyle(this.activeCell,'vertical-align')!==value){dfx.setStyle(this.activeCell,'vertical-align',value);changed=true;}}
if(changed===true){this._updatecellButtonPositions(this.activeCell);this._nodesUpdated(true);}},updateSettings:function(cell)
{if(!cell){cell=this.activeCell;}
if(!cell){return;}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.tableHeader){if(dfx.isTag(cell,'th')===true){this._settingsWidgets.cell.tableHeader.check();}else{this._settingsWidgets.cell.tableHeader.uncheck();}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.noTextWrap){if(dfx.getStyle(cell,'white-space')==='nowrap'){this._settingsWidgets.cell.noTextWrap.check();}else{this._settingsWidgets.cell.noTextWrap.uncheck();}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.valign){var val=dfx.getStyle(cell,'vertical-align');var btns=dfx.getClass('ViperTableEditor-stb-align',this._settingsWidgets.cell.valign);dfx.removeClass(btns,'active');if(val){dfx.addClass(dfx.getClass('ViperTableEditor-stb-align-'+val,this._settingsWidgets.cell.valign),'active');}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.width){var widthStyle=cell.style.width;var width=parseInt(widthStyle);this._settingsWidgets.cell.width.setValue(width);var widthType='px';if(this._settingsWidgets.cell.widthType){if(widthStyle.indexOf('%')>0){widthType='pc';}}
this._settingsWidgets.cell.widthType.setValue(widthType,true);}
var table=this.getCellTable(cell);if(this._settingsWidgets.table&&table){if(this._settingsWidgets.table.tableBorder){var val='';if(dfx.attr(table,'border')!=='undefined'){val=parseInt(dfx.attr(table,'border'));if(!val){val='';}}
this._settingsWidgets.table.tableBorder.setValue(val);}
if(this._settingsWidgets.table.cellPadding){var val='';if(dfx.attr(table,'cellpadding')!=='undefined'){val=parseInt(dfx.attr(table,'cellpadding'));if(isNaN(val)===true){val='';}}
this._settingsWidgets.table.cellPadding.setValue(val);}
if(this._settingsWidgets.table.cellSpacing){var val='';if(dfx.attr(table,'cellspacing')!=='undefined'){val=parseInt(dfx.attr(table,'cellspacing'));if(isNaN(val)===true){val='';}}
this._settingsWidgets.table.cellSpacing.setValue(val);}
if(this._settingsWidgets.table.width){var widthStyle=table.style.width;var width=parseInt(widthStyle);this._settingsWidgets.table.width.setValue(width);var widthType='px';if(this._settingsWidgets.table.widthType){if(widthStyle.indexOf('%')>0){widthType='pc';}}
this._settingsWidgets.table.widthType.setValue(widthType,true);}}}};dfx.noInclusionInherits('ViperTableEditorPlugin','ViperPlugin',true);function ViperToolbarPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbar=null;this.buttons={};this.buttonTitles={};this.buttonEvents={};this.pluginButtons={};this.createToolbar();var self=this;ViperPluginManager.registerCallback('pluginRemoved','toolbarPluginRemoved',function(pluginName){if(self.pluginButtons[pluginName]){var pln=self.pluginButtons[pluginName].length;for(var i=0;i<pln;i++){var buttonName=self.pluginButtons[pluginName][i];dfx.remove(self.buttons[buttonName]);}}});this.viper.registerCallback('viperDisabled','ViperToolbarPlugin',function(){});this.viper.registerCallback('viperEnabled','ViperToolbarPlugin',function(){});}
ViperToolbarPlugin.prototype={setSettings:function(settings)
{if(!settings){return;}
if(settings.parent){this.setParentElement(settings.parent);}},createToolbar:function()
{if(this.toolbar===null){var id='ViperToolbarPlugin';this.toolbar=dfx.getId(id);if(!this.toolbar){this.toolbar=Viper.document.createElement('div');this.toolbar.id=id;dfx.setUnselectable(this.toolbar,true);dfx.addClass(this.toolbar,'ViperToolbarPlugin');var span=Viper.document.createElement('span');this.toolbar.appendChild(span);this._append();}}else if(dfx.getId(this.toolbar.id)){this._append();for(var name in this.buttons){dfx.addEvent(this.buttons[name],'click',this.buttonEvents[name]);}}
if(this.toolbar){if(this.viper.isEnabled()===true){this.setEnabled(false);}else{this.setEnabled(true);}}},setParentElement:function(parent)
{dfx.remove(this.toolbar);dfx.setStyle(this.toolbar,'position','absolute');dfx.setStyle(this.toolbar,'top','0px');parent.appendChild(this.toolbar);},_append:function()
{if(dfx.getId('EditingContents')){dfx.insertBefore(dfx.getId('EditingContents'),this.toolbar);}else{Viper.document.body.appendChild(this.toolbar);}},setEnabled:function(enabled)
{},_setBgPosY:function(buttonEl,pos)
{var bgPos=dfx.getStyle(buttonEl,'background-position');if(bgPos){bgPos=bgPos.split(' ');bgPos[1]=pos+'px';dfx.setStyle(buttonEl,'background-position',bgPos.join(' '));}},setButtonActive:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.addClass(buttonEl,'active');dfx.removeClass(buttonEl,'disabled');this._setBgPosY(buttonEl,-38);if(this.buttonTitles[button]){this.buttons[button].title=this.buttonTitles[button][1];}}},setButtonInactive:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.removeClass(buttonEl,'active');dfx.removeClass(buttonEl,'disabled');this._setBgPosY(buttonEl,0);if(this.buttonTitles[button]){this.buttons[button].title=this.buttonTitles[button][0];}}},setButtonDisabled:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.addClass(buttonEl,'disabled');dfx.removeClass(buttonEl,'active');if(this.buttonTitles[button]){this.buttons[button].title='';}}},getIconURL:function(plugin,buttonName)
{var url=ViperPluginManager.getPluginStylesURL(plugin)+'/'+buttonName+'.png';return url;},addButton:function(plugin,name,title,actionFn)
{var icon=Viper.document.createElement('img');dfx.setUnselectable(icon,true);icon.id='ViperToolbarPlugin-'+name;icon.src=this.getIconURL('ViperToolbarPlugin','transparent');icon.title=title;dfx.addClass(icon,'ViperToolbarPlugin-button');var iconUrl=this.getIconURL(plugin,name);dfx.addClass(icon,name);var self=this;dfx.hover(icon,function(){self._setBgPosY(icon,-19);},function(){if(dfx.hasClass(icon,'active')===true){self._setBgPosY(icon,-38);}else{self._setBgPosY(icon,0);}});this.buttonEvents[name]=actionFn;dfx.addEvent(icon,'click',function(e){if(dfx.hasClass(icon,'disabled')===false&&self.viper.isEnabled()!==false){self.viper.fireCallbacks('toolbarButtonClicked');actionFn(e);}});if(!this.pluginButtons[plugin]){this.pluginButtons[plugin]=[];}
this.pluginButtons[plugin].push(name);this.buttons[name]=icon;var wrapper=Viper.document.createElement('span');wrapper.appendChild(icon);this.toolbar.firstChild.appendChild(wrapper);this.buttonTitles[name]=[title,title];return wrapper;},setButtonShortcut:function(plugin,buttonName,keys,fn,data)
{var self=this;ViperPluginManager.addKeyPressListener(keys,this,function(e,evtData){self.viper.fireCallbacks('toolbarButtonClicked');return plugin[fn].call(plugin,e,evtData);},data);},setActiveButtonTitle:function(buttonName,title)
{this.buttonTitles[name][1]=title;},remove:function()
{dfx.remove(this.toolbar);},isPluginElement:function(element)
{if(element!==this.toolbar&&dfx.isChildOf(element,this.toolbar)===false){return false;}
return true;}};dfx.noInclusionInherits('ViperToolbarPlugin','ViperPlugin',true);function ViperTrackChangesPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.subToolbarPlugin=null;this.optionCheckboxes={};this._barActive=false;this._newCommentid=null;this._initialising=false;this.viewSettings={finalMode:{},originalMode:{}};}
ViperTrackChangesPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('TrackChanges','track-changes','Track Changes',function(){if(!self.subToolbarPlugin){self._setupSubToolbar(function(){self.toggleTrackChanges();});}else{self.toggleTrackChanges();}});if(ViperChangeTracker.isTracking()===true){this._setupSubToolbar(function(){if(ViperChangeTracker.isTracking()===true){self._barActive=true;self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});}
this.viper.registerCallback('ViperChangeTracker:tracking','ViperTrackChangesPlugin',function(isTracking){if(isTracking===true){self._setupSubToolbar(function(){if(ViperChangeTracker.isTracking()===true){self._barActive=true;self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});}});this.viper.registerCallback('ViperSubToolbar:hideToolbar','ViperTrackChangesPlugin',function(barid){if(barid!=='TrackChanges'&&self._barActive===true&&ViperChangeTracker.isTracking()===true){self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});ViperChangeTracker.addChangeType('viperComment','Comment','comment');ViperChangeTracker.setRejectCallback('viperComment',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('viperComment',function(node,ctnType,changeid){var div=Viper.document.createElement('div');dfx.addClass(div,'viperCommentDiv');div.setAttribute('changeid',changeid);div.setAttribute('id','viperComment-'+changeid);var comment=ViperChangeTracker._comments[changeid]||'&nbsp;';dfx.setHtml(div,comment);dfx.addEvent(div,'mousedown',function(){self.viper.setSubElementState(div,true);dfx.removeEvent(div,'mouseup.viperSubElem');dfx.addEvent(div,'mouseup.viperSubElem',function(e){setTimeout(function(){self.viper.mouseUp(e);},200);});var parent=div.parentNode.parentNode.parentNode;dfx.addClass(parent,'active');});if(self._newCommentid===changeid){self.viper.registerCallback('ViperChangeTracker:infoBoxAdded','ViperTrackChangesPlugin',function(chid){if(chid!==changeid){return;}
var markerElem=ViperChangeTracker.getMarker(changeid);if(markerElem){dfx.trigger(markerElem,'click');}
self.viper.setSubElementState(div,true);div.focus();var parent=div.parentNode.parentNode.parentNode;dfx.addClass(parent,'active');var range=self.viper.getCurrentRange();range.setStart(div.firstChild,0);range.collapse(true);self.viper.removeCallback('ViperChangeTracker:infoBoxAdded','ViperTrackChangesPlugin');});self._newCommentid=null;}
return div;});this.viper.registerCallback('subElementDisabled','ViperTrackChangesPlugin',function(elem){if(elem&&elem.parentNode&&elem.parentNode.parentNode){var parent=elem.parentNode.parentNode.parentNode;dfx.removeClass(parent,'active');}});},toggleTrackChanges:function()
{this._barActive=this.subToolbarPlugin.toggleToolbar('TrackChanges');if(this._barActive===true){this.toolbarPlugin.setButtonActive('track-changes');}else{this.toolbarPlugin.setButtonInactive('track-changes');}
if(ViperChangeTracker.isTracking()===false&&ViperChangeTracker.hasChanges()===false){ViperChangeTracker.enableChangeTracking();}},addComment:function()
{this.viper.focus();var info=ViperUndoManager.createNodeChangeInfo(this.viper.element);var bookmark=this.viper.createBookmark();var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);var eln=elements.length;var changeid=ViperChangeTracker.addChange('viperComment');this._newCommentid=changeid;if(eln===0){var el=Viper.document.createElement('span');dfx.insertBefore(bookmark.start,el);ViperChangeTracker.addNodeToChange(changeid,el);}else{for(var i=0;i<eln;i++){if(ViperChangeTracker.getCTNode(elements[i],'viperComment')===null){this.viper._wrapElement(elements[i],'span',function(newElem){ViperChangeTracker.addNodeToChange(changeid,newElem);});}}}
this.viper.selectBookmark(bookmark);this.viper.fireNodesChanged('ViperTrackChangesPlugin:update');},_setupSubToolbar:function(callback)
{this._initialising=true;ViperChangeTracker.setActionDisplayState('format',true);ViperChangeTracker.setActionDisplayState('comment',true);var subToolbarPlugin=ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('TrackChanges');var c='ViperTrackChanges-stb';var contents='<div class="'+c+'-left"></div>';contents+='<div class="'+c+'-mid"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(toolbar,contents);var self=this;this.includeWidgets(['Button','RadioButton'],function(){var switchToOriginal=self.createWidget('ViperTrackChanges-switchMode','Button');switchToOriginal.setName('Switch to Original');switchToOriginal.setButtonIconClassName(c+'-switch');switchToOriginal.create(function(el){switchToOriginal.setMinWidth('120px');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');(dfx.getClass(c+'-left',toolbar)[0]).appendChild(el);});switchToOriginal.addClickEvent(function(){if(ViperChangeTracker.getCurrentMode()==='final'){ViperChangeTracker.activateOriginalMode();switchToOriginal.setName('Switch to Final');dfx.removeClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-final');self.changeViewSettings('original');}else{ViperChangeTracker.activateFinalMode();switchToOriginal.setName('Switch to Original');dfx.removeClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-final');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');self.changeViewSettings('final');}});var addComment=self.createWidget('ViperTrackChanges-addComment','Button');addComment.setName('Add Comment');addComment.setButtonIconClassName(c+'-comment');addComment.create(function(el){addComment.setMinWidth('105px');(dfx.getClass(c+'-right',toolbar)[0]).appendChild(el);});addComment.addClickEvent(function(){if(addComment.buttonParts.content){addComment.buttonParts.content.blur();}
self.addComment();});var toggleTracking=self.createWidget('ViperTrackChanges-toggleTracking','Button','ButtonWidgetType-black');toggleTracking.setName('Disable Tracking');toggleTracking.create(function(el){toggleTracking.setMinWidth('101px');dfx.addClass(el,'ViperTrackChanges-toggleTracking-disable');(dfx.getClass(c+'-right',toolbar)[0]).appendChild(el);});toggleTracking.addClickEvent(function(){if(ViperChangeTracker.isTracking()===true){toggleTracking.setName('Enable Tracking');dfx.removeClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-disable');dfx.addClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-enable');ViperChangeTracker.disableChangeTracking();addComment.disable();}else{toggleTracking.setName('Disable Tracking');dfx.removeClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-enable');dfx.addClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-disable');ViperChangeTracker.enableChangeTracking();addComment.enable();}});var optsList=subToolbarPlugin.createOptionsList('Display');(dfx.getClass(c+'-mid',toolbar)[0]).appendChild(optsList.main);self._createOptionList(optsList.contentEl);self.changeViewSettings('final');this._initialising=false;self.subToolbarPlugin=subToolbarPlugin;callback.call(self,subToolbarPlugin);return;});},changeViewSettings:function(mode)
{mode+='Mode';if(!this.viewSettings[mode]){return;}
var self=this;dfx.foreach(this.optionCheckboxes,function(i){if(self.viewSettings[mode][i]){self.optionCheckboxes[i].check();}else{self.optionCheckboxes[i].uncheck();}});},updateViewSetting:function(type,display)
{var mode=ViperChangeTracker.getCurrentMode()+'Mode';this.viewSettings[mode][type]=display;},_createOptionList:function(parent)
{var div=null;var self=this;var opts=ViperChangeTracker.getActionTypes();var displayStates=ViperChangeTracker.getActionDisplayStates();dfx.foreach(opts,function(i){self.viewSettings.finalMode[i]=displayStates[i];self.viewSettings.originalMode[i]=displayStates[i];div=Viper.document.createElement('div');var label=Viper.document.createElement('label');parent.appendChild(div);dfx.setHtml(label,opts[i]);div.appendChild(label);dfx.addClass(div,'ViperTrackChanges-stb-optItem');div.id='ViperTrackChanges-opts-'+i;var radioBtn=self.createWidget(null,'RadioButton',null,displayStates[i]);self.optionCheckboxes[i]=radioBtn;radioBtn.create(function(radioBtnEl){dfx.attr(label,'for',radioBtn.id);div.appendChild(radioBtnEl);radioBtn._addEvents();});(function(radioBtnWidget,type){radioBtnWidget.addCheckedEvent(function(checked){self.toggleChangeTypeDisplayState(type,checked);});})(radioBtn,i);if(i==='Inserts'){dfx.addClass(div,'first');}});self.viewSettings.originalMode.insert=true;self.viewSettings.originalMode.remove=false;if(div){dfx.addClass(div,'last');}},toggleChangeTypeDisplayState:function(type,display)
{this.updateViewSetting(type,display);ViperChangeTracker.setActionDisplayState(type,display,!this._initialising);}};dfx.noInclusionInherits('ViperTrackChangesPlugin','ViperPlugin',true);
