﻿Global_run_event_hook=true;
Global_combo_array=new Array();
Array.prototype.remove=function(dx)
{
if(isNaN(dx)||dx>this.length){self.status='Array_remove:invalid request-'+dx;return false}
for(var i=0,n=0;i<this.length;i++)
{
if(this[i]!=this[dx])
{
this[n++]=this[i]
}
}
this.length-=1
}
function ComboBox_make()
{
var bt,nm;
nm=this.name+"txt";
this.txtview=document.createElement("INPUT")
this.txtview.type="text";
this.txtview.name=nm;
this.txtview.id=nm;
this.txtview.onclick=new Function("",this.name+".toggle()");
this.txtview.className="combo-input"
this.txtview.onfocus=function(){this.blur();};
this.view.appendChild(this.txtview);
this.valcon=document.createElement("INPUT");
this.valcon.type="hidden";
this.view.appendChild(this.valcon)
var tmp=document.createElement("BUTTON");
tmp.id='btn_'+nm;
tmp.appendChild(document.createTextNode(' '));
tmp.className="combo-button bImage1";
tmp.onmouseover=function(){this.className='combo-button bImage2';};
tmp.onmouseout=function(){this.className='combo-button bImage1';};
this.view.appendChild(tmp);
this.view.setAttribute('onmouseover','$(\'btn_'+nm+'\').className = \'combo-button bImage2\';');
this.view.setAttribute('onmouseout','$(\'btn_'+nm+'\').className = \'combo-button bImage1\';');
tmp.onfocus=function(){this.blur();};
tmp.onclick=new Function("",this.name+".toggle()");
}
function ComboBox_choose(realval,txtval,params)
{
this.value=realval;
var samstring=this.name+".view.childNodes[0].value='"+txtval+"'"
window.setTimeout(samstring,1)
this.valcon.value=realval;
this.chooseEnd(realval,txtval,params);
}
function ComboBox_mouseDown(e)
{
var obj,len,el,i;
el=e.target?e.target:e.srcElement;
while(el.nodeType!=1)el=el.parentNode;
var elcl=el.className;
if(elcl.indexOf("combo-")!=0)
{
len=Global_combo_array.length
for(i=0;i<len;i++)
{
curobj=Global_combo_array[i]
if(curobj.opslist)
{
curobj.opslist.style.display='none'
}
}
}
}
function ComboBox_handleKey(e)
{
var key,obj,eobj,el,strname;
eobj=e;
key=eobj.keyCode;
el=e.target?e.target:e.srcElement;
while(el.nodeType!=1)el=el.parentNode;
elcl=el.className
if(elcl.indexOf("combo-")==0)
{
if(elcl.split("-")[1]=="input")
{
strname=el.id.split("txt")[0]
obj=window[strname];
obj.expops.length=0
obj.update();
obj.build(obj.expops);
if(obj.expops.length==1&&obj.expops[0].text=="(No matches)"){}
else{obj.opslist.style.display='block';}
obj.value=el.value;
obj.valcon.value=el.value;
}
}
}
function ComboBox_update()
{
var opart,astr,alen,opln,i,boo;
boo=false;
opln=this.options.length
astr=this.txtview.value.toLowerCase();
alen=astr.length
if(alen==0)
{
for(i=0;i<opln;i++)
{
this.expops[this.expops.length]=this.options[i];boo=true;
}
}
else
{
for(i=0;i<opln;i++)
{
opart=this.options[i].text.toLowerCase().substring(0,alen)
if(astr==opart)
{
this.expops[this.expops.length]=this.options[i];boo=true;
}
}
}
if(!boo){this.expops[0]=new ComboBoxItem("(No matches)","")}
}
function ComboBox_remove(index)
{
this.options.remove(index)
}
function ComboBox_add()
{
var i,arglen;
arglen=arguments.length
for(i=0;i<arglen;i++)
{
this.options[this.options.length]=arguments[i]
}
}
function ComboBox_build(arr)
{
var str,arrlen
arrlen=arr.length;
str='<table class="combo-list-width" cellpadding=0 cellspacing=0>';
var strs=new Array(arrlen);
for(var i=0;i<arrlen;i++)
{
strs[i]='<tr>'+
'<td class="combo-item" nowrap="nowrap" onClick="'+this.name+'.choose(\''+arr[i].value+'\',\''+arr[i].text+'\');'+this.name+'.opslist.style.display=\'none\';"'+
'onMouseOver="this.className=\'combo-hilite\';" onMouseOut="this.className=\'combo-item\'" >&nbsp;'+arr[i].text+'&nbsp;</td>'+
'</tr>';
}
str=str+strs.join("")+'</table>'
if(this.opslist){this.view.removeChild(this.opslist);}
this.opslist=document.createElement("DIV")
this.opslist.innerHTML=str;
this.opslist.style.display='none';
this.opslist.className="combo-list";
this.opslist.onselectstart=returnFalse;
this.view.appendChild(this.opslist);
}
function ComboBox_toggle()
{
if(this.opslist)
{
if(this.opslist.style.display=="block")
{
this.opslist.style.display="none"
}
else
{
this.update();
this.build(this.options);
this.view.style.zIndex=++ComboBox.prototype.COMBOBOXZINDEX
this.opslist.style.display="block"
}
}
else
{
this.update();
this.build(this.options);
this.view.style.zIndex=++ComboBox.prototype.COMBOBOXZINDEX
this.opslist.style.display="block"
}
}
function ComboBox_choose_end(realval,txtval)
{
}
function ComboBox()
{
if(arguments.length==0)
{
self.status="ComboBox invalid - no name arg"
}
this.name=arguments[0];
this.par=arguments[1]||document.body
this.view=document.createElement("DIV");
this.view.style.position='absolute';
this.options=new Array();
this.expops=new Array();
this.value=""
this.build=ComboBox_build
this.make=ComboBox_make;
this.choose=ComboBox_choose;
this.add=ComboBox_add;
this.toggle=ComboBox_toggle;
this.update=ComboBox_update;
this.remove=ComboBox_remove;
this.chooseEnd=ComboBox_choose_end;
this.make()
this.txtview=this.view.childNodes[0]
this.valcon=this.view.childNodes[1]
this.par.appendChild(this.view)
Global_combo_array[Global_combo_array.length]=this;
if(Global_run_event_hook){ComboBox_init()}
}
ComboBox.prototype.COMBOBOXZINDEX=1000
function ComboBox_init()
{
if(document.addEventListener){
document.addEventListener("keyup",ComboBox_handleKey,false);
document.addEventListener("mousedown",ComboBox_mouseDown,false);
}
else if(document.attachEvent){
document.attachEvent("onkeyup",function(){ComboBox_handleKey(window.event);});
document.attachEvent("onmousedown",function(){ComboBox_mouseDown(window.event);});
}
Global_run_event_hook=false;
}
function returnFalse(){return false}
function ComboBoxItem(text,value)
{
this.text=text;
this.value=value;
}


//rsa
function base64encode(str)
{
var base64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars=new Array(
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,
52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,
-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,
-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);
var out,i,len;
var c1,c2,c3;
len=str.length;
i=0;
out="";
while(i<len){
c1=str.charCodeAt(i++)&0xff;
if(i==len)
{
out+=base64EncodeChars.charAt(c1>>2);
out+=base64EncodeChars.charAt((c1&0x3)<<4);
out+="==";
break;
}
c2=str.charCodeAt(i++);
if(i==len)
{
out+=base64EncodeChars.charAt(c1>>2);
out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
out+=base64EncodeChars.charAt((c2&0xF)<<2);
out+="=";
break;
}
c3=str.charCodeAt(i++);
out+=base64EncodeChars.charAt(c1>>2);
out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));
out+=base64EncodeChars.charAt(((c2&0xF)<<2)|((c3&0xC0)>>6));
out+=base64EncodeChars.charAt(c3&0x3F);
}
return out;
}
var key;
function initKey()
{
setMaxDigits(131);
key=new RSAKeyPair("010001","","A7E6CFE73984BD1F82C520C9905694D3EF015F82E2D72E548B6EDFF434F60A5D4229CA65232A2E0EC47D7164286705DFFCFF7C3E715EB963E7DE460FCB10DAAFDBFC1F940F60174AF24C580C093BC9BE204584B2F02CD48DC7DF9AFCA64467AC4FB1DAC469E7F5065DEAC3B0C6E27CCCB560754F7BDD2B3E263527D0DFE7A5FD");
}
function RSAKeyPair(encryptionExponent,decryptionExponent,modulus)
{
this.e=biFromHex(encryptionExponent);
this.d=biFromHex(decryptionExponent);
this.m=biFromHex(modulus);
this.digitSize=2*biHighIndex(this.m)+2;
this.chunkSize=this.digitSize-11;
this.radix=16;
this.barrett=new BarrettMu(this.m);
}
function twoDigit(n)
{
return(n<10?"0":"")+String(n);
}
function encryptedString(key,s)
{
if(key.chunkSize>key.digitSize-11)
{
return"Error";
}
var a=new Array();
var sl=s.length;
var i=0;
while(i<sl){
a[i]=s.charCodeAt(i);
i++;
}
var al=a.length;
var result="";
var j,k,block;
for(i=0;i<al;i+=key.chunkSize){
block=new BigInt();
j=0;
var x;
var msgLength=(i+key.chunkSize)>al?al%key.chunkSize:key.chunkSize;
var b=new Array();
for(x=0;x<msgLength;x++)
{
b[x]=a[i+msgLength-1-x];
}
b[msgLength]=0;
var paddedSize=Math.max(8,key.digitSize-3-msgLength);
for(x=0;x<paddedSize;x++){
b[msgLength+1+x]=Math.floor(Math.random()*254)+1;
}
b[key.digitSize-2]=2;
b[key.digitSize-1]=0;
for(k=0;k<key.digitSize;++j)
{
block.digits[j]=b[k++];
block.digits[j]+=b[k++]<<8;
}
var crypt=key.barrett.powMod(block,key.e);
var text=key.radix==16?biToHex(crypt):biToString(crypt,key.radix);
result+=text+" ";
}
return result.substring(0,result.length-1);
}
function decryptedString(key,s)
{
var blocks=s.split(" ");
var result="";
var i,j,block;
for(i=0;i<blocks.length;++i){
var bi;
if(key.radix==16){
bi=biFromHex(blocks[i]);
}
else{
bi=biFromString(blocks[i],key.radix);
}
block=key.barrett.powMod(bi,key.d);
for(j=0;j<=biHighIndex(block);++j){
result+=String.fromCharCode(block.digits[j]&255,
block.digits[j]>>8);
}
}
if(result.charCodeAt(result.length-1)==0){
result=result.substring(0,result.length-1);
}
return result;
}
var biRadixBase=2;
var biRadixBits=16;
var bitsPerDigit=biRadixBits;
var biRadix=1<<16;
var biHalfRadix=biRadix>>>1;
var biRadixSquared=biRadix*biRadix;
var maxDigitVal=biRadix-1;
var maxInteger=9999999999999998;
var maxDigits;
var ZERO_ARRAY;
var bigZero,bigOne;
function setMaxDigits(value)
{
maxDigits=value;
ZERO_ARRAY=new Array(maxDigits);
for(var iza=0;iza<ZERO_ARRAY.length;iza++)ZERO_ARRAY[iza]=0;
bigZero=new BigInt();
bigOne=new BigInt();
bigOne.digits[0]=1;
}
setMaxDigits(20);
var dpl10=15;
var lr10=biFromNumber(1000000000000000);
function BigInt(flag)
{
if(typeof flag=="boolean"&&flag==true){
this.digits=null;
}
else{
this.digits=ZERO_ARRAY.slice(0);
}
this.isNeg=false;
}
function biFromDecimal(s)
{
var isNeg=s.charAt(0)=='-';
var i=isNeg?1:0;
var result;
while(i<s.length&&s.charAt(i)=='0')++i;
if(i==s.length){
result=new BigInt();
}
else{
var digitCount=s.length-i;
var fgl=digitCount%dpl10;
if(fgl==0)fgl=dpl10;
result=biFromNumber(Number(s.substr(i,fgl)));
i+=fgl;
while(i<s.length){
result=biAdd(biMultiply(result,lr10),
biFromNumber(Number(s.substr(i,dpl10))));
i+=dpl10;
}
result.isNeg=isNeg;
}
return result;
}
function biCopy(bi)
{
var result=new BigInt(true);
result.digits=bi.digits.slice(0);
result.isNeg=bi.isNeg;
return result;
}
function biFromNumber(i)
{
var result=new BigInt();
result.isNeg=i<0;
i=Math.abs(i);
var j=0;
while(i>0){
result.digits[j++]=i&maxDigitVal;
i=Math.floor(i/biRadix);
}
return result;
}
function reverseStr(s)
{
var result="";
for(var i=s.length-1;i>-1;--i){
result+=s.charAt(i);
}
return result;
}
var hexatrigesimalToChar=new Array(
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z'
);
function biToString(x,radix)
{
var b=new BigInt();
b.digits[0]=radix;
var qr=biDivideModulo(x,b);
var result=hexatrigesimalToChar[qr[1].digits[0]];
while(biCompare(qr[0],bigZero)==1){
qr=biDivideModulo(qr[0],b);
digit=qr[1].digits[0];
result+=hexatrigesimalToChar[qr[1].digits[0]];
}
return(x.isNeg?"-":"")+reverseStr(result);
}
function biToDecimal(x)
{
var b=new BigInt();
b.digits[0]=10;
var qr=biDivideModulo(x,b);
var result=String(qr[1].digits[0]);
while(biCompare(qr[0],bigZero)==1){
qr=biDivideModulo(qr[0],b);
result+=String(qr[1].digits[0]);
}
return(x.isNeg?"-":"")+reverseStr(result);
}
var hexToChar=new Array('0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f');
function digitToHex(n)
{
var mask=0xf;
var result="";
for(i=0;i<4;++i){
result+=hexToChar[n&mask];
n>>>=4;
}
return reverseStr(result);
}
function biToHex(x)
{
var result="";
var n=biHighIndex(x);
for(var i=biHighIndex(x);i>-1;--i){
result+=digitToHex(x.digits[i]);
}
return result;
}
function charToHex(c)
{
var ZERO=48;
var NINE=ZERO+9;
var littleA=97;
var littleZ=littleA+25;
var bigA=65;
var bigZ=65+25;
var result;
if(c>=ZERO&&c<=NINE){
result=c-ZERO;
}else if(c>=bigA&&c<=bigZ){
result=10+c-bigA;
}else if(c>=littleA&&c<=littleZ){
result=10+c-littleA;
}else{
result=0;
}
return result;
}
function hexToDigit(s)
{
var result=0;
var sl=Math.min(s.length,4);
for(var i=0;i<sl;++i){
result<<=4;
result|=charToHex(s.charCodeAt(i))
}
return result;
}
function biFromHex(s)
{
var result=new BigInt();
var sl=s.length;
for(var i=sl,j=0;i>0;i-=4,++j){
result.digits[j]=hexToDigit(s.substr(Math.max(i-4,0),Math.min(i,4)));
}
return result;
}
function biFromString(s,radix)
{
var isNeg=s.charAt(0)=='-';
var istop=isNeg?1:0;
var result=new BigInt();
var place=new BigInt();
place.digits[0]=1;
for(var i=s.length-1;i>=istop;i--){
var c=s.charCodeAt(i);
var digit=charToHex(c);
var biDigit=biMultiplyDigit(place,digit);
result=biAdd(result,biDigit);
place=biMultiplyDigit(place,radix);
}
result.isNeg=isNeg;
return result;
}
function biDump(b)
{
return(b.isNeg?"-":"")+b.digits.join(" ");
}
function biAdd(x,y)
{
var result;
if(x.isNeg!=y.isNeg){
y.isNeg=!y.isNeg;
result=biSubtract(x,y);
y.isNeg=!y.isNeg;
}
else{
result=new BigInt();
var c=0;
var n;
for(var i=0;i<x.digits.length;++i){
n=x.digits[i]+y.digits[i]+c;
result.digits[i]=n%biRadix;
c=Number(n>=biRadix);
}
result.isNeg=x.isNeg;
}
return result;
}
function biSubtract(x,y)
{
var result;
if(x.isNeg!=y.isNeg){
y.isNeg=!y.isNeg;
result=biAdd(x,y);
y.isNeg=!y.isNeg;
}else{
result=new BigInt();
var n,c;
c=0;
for(var i=0;i<x.digits.length;++i){
n=x.digits[i]-y.digits[i]+c;
result.digits[i]=n%biRadix;
if(result.digits[i]<0)result.digits[i]+=biRadix;
c=0-Number(n<0);
}
if(c==-1){
c=0;
for(var i=0;i<x.digits.length;++i){
n=0-result.digits[i]+c;
result.digits[i]=n%biRadix;
if(result.digits[i]<0)result.digits[i]+=biRadix;
c=0-Number(n<0);
}
result.isNeg=!x.isNeg;
}else{
result.isNeg=x.isNeg;
}
}
return result;
}
function biHighIndex(x)
{
var result=x.digits.length-1;
while(result>0&&x.digits[result]==0)--result;
return result;
}
function biNumBits(x)
{
var n=biHighIndex(x);
var d=x.digits[n];
var m=(n+1)*bitsPerDigit;
var result;
for(result=m;result>m-bitsPerDigit;--result){
if((d&0x8000)!=0)break;
d<<=1;
}
return result;
}
function biMultiply(x,y)
{
var result=new BigInt();
var c;
var n=biHighIndex(x);
var t=biHighIndex(y);
var u,uv,k;
for(var i=0;i<=t;++i){
c=0;
k=i;
for(j=0;j<=n;++j,++k){
uv=result.digits[k]+x.digits[j]*y.digits[i]+c;
result.digits[k]=uv&maxDigitVal;
c=uv>>>biRadixBits;
}
result.digits[i+n+1]=c;
}
result.isNeg=x.isNeg!=y.isNeg;
return result;
}
function biMultiplyDigit(x,y)
{
var n,c,uv;
result=new BigInt();
n=biHighIndex(x);
c=0;
for(var j=0;j<=n;++j){
uv=result.digits[j]+x.digits[j]*y+c;
result.digits[j]=uv&maxDigitVal;
c=uv>>>biRadixBits;
}
result.digits[1+n]=c;
return result;
}
function arrayCopy(src,srcStart,dest,destStart,n)
{
var m=Math.min(srcStart+n,src.length);
for(var i=srcStart,j=destStart;i<m;++i,++j){
dest[j]=src[i];
}
}
var highBitMasks=new Array(0x0000,0x8000,0xC000,0xE000,0xF000,0xF800,
0xFC00,0xFE00,0xFF00,0xFF80,0xFFC0,0xFFE0,
0xFFF0,0xFFF8,0xFFFC,0xFFFE,0xFFFF);
function biShiftLeft(x,n)
{
var digitCount=Math.floor(n/bitsPerDigit);
var result=new BigInt();
arrayCopy(x.digits,0,result.digits,digitCount,
result.digits.length-digitCount);
var bits=n%bitsPerDigit;
var rightBits=bitsPerDigit-bits;
for(var i=result.digits.length-1,i1=i-1;i>0;--i,--i1){
result.digits[i]=((result.digits[i]<<bits)&maxDigitVal)|
((result.digits[i1]&highBitMasks[bits])>>>
(rightBits));
}
result.digits[0]=((result.digits[i]<<bits)&maxDigitVal);
result.isNeg=x.isNeg;
return result;
}
var lowBitMasks=new Array(0x0000,0x0001,0x0003,0x0007,0x000F,0x001F,
0x003F,0x007F,0x00FF,0x01FF,0x03FF,0x07FF,
0x0FFF,0x1FFF,0x3FFF,0x7FFF,0xFFFF);
function biShiftRight(x,n)
{
var digitCount=Math.floor(n/bitsPerDigit);
var result=new BigInt();
arrayCopy(x.digits,digitCount,result.digits,0,
x.digits.length-digitCount);
var bits=n%bitsPerDigit;
var leftBits=bitsPerDigit-bits;
for(var i=0,i1=i+1;i<result.digits.length-1;++i,++i1){
result.digits[i]=(result.digits[i]>>>bits)|
((result.digits[i1]&lowBitMasks[bits])<<leftBits);
}
result.digits[result.digits.length-1]>>>=bits;
result.isNeg=x.isNeg;
return result;
}
function biMultiplyByRadixPower(x,n)
{
var result=new BigInt();
arrayCopy(x.digits,0,result.digits,n,result.digits.length-n);
return result;
}
function biDivideByRadixPower(x,n)
{
var result=new BigInt();
arrayCopy(x.digits,n,result.digits,0,result.digits.length-n);
return result;
}
function biModuloByRadixPower(x,n)
{
var result=new BigInt();
arrayCopy(x.digits,0,result.digits,0,n);
return result;
}
function biCompare(x,y)
{
if(x.isNeg!=y.isNeg){
return 1-2*Number(x.isNeg);
}
for(var i=x.digits.length-1;i>=0;--i){
if(x.digits[i]!=y.digits[i]){
if(x.isNeg){
return 1-2*Number(x.digits[i]>y.digits[i]);
}else{
return 1-2*Number(x.digits[i]<y.digits[i]);
}
}
}
return 0;
}
function biDivideModulo(x,y)
{
var nb=biNumBits(x);
var tb=biNumBits(y);
var origYIsNeg=y.isNeg;
var q,r;
if(nb<tb){
if(x.isNeg){
q=biCopy(bigOne);
q.isNeg=!y.isNeg;
x.isNeg=false;
y.isNeg=false;
r=biSubtract(y,x);
x.isNeg=true;
y.isNeg=origYIsNeg;
}else{
q=new BigInt();
r=biCopy(x);
}
return new Array(q,r);
}
q=new BigInt();
r=x;
var t=Math.ceil(tb/bitsPerDigit)-1;
var lambda=0;
while(y.digits[t]<biHalfRadix){
y=biShiftLeft(y,1);
++lambda;
++tb;
t=Math.ceil(tb/bitsPerDigit)-1;
}
r=biShiftLeft(r,lambda);
nb+=lambda;
var n=Math.ceil(nb/bitsPerDigit)-1;
var b=biMultiplyByRadixPower(y,n-t);
while(biCompare(r,b)!=-1){
++q.digits[n-t];
r=biSubtract(r,b);
}
for(var i=n;i>t;--i){
var ri=(i>=r.digits.length)?0:r.digits[i];
var ri1=(i-1>=r.digits.length)?0:r.digits[i-1];
var ri2=(i-2>=r.digits.length)?0:r.digits[i-2];
var yt=(t>=y.digits.length)?0:y.digits[t];
var yt1=(t-1>=y.digits.length)?0:y.digits[t-1];
if(ri==yt){
q.digits[i-t-1]=maxDigitVal;
}else{
q.digits[i-t-1]=Math.floor((ri*biRadix+ri1)/yt);
}
var c1=q.digits[i-t-1]*((yt*biRadix)+yt1);
var c2=(ri*biRadixSquared)+((ri1*biRadix)+ri2);
while(c1>c2){
--q.digits[i-t-1];
c1=q.digits[i-t-1]*((yt*biRadix)|yt1);
c2=(ri*biRadix*biRadix)+((ri1*biRadix)+ri2);
}
b=biMultiplyByRadixPower(y,i-t-1);
r=biSubtract(r,biMultiplyDigit(b,q.digits[i-t-1]));
if(r.isNeg){
r=biAdd(r,b);
--q.digits[i-t-1];
}
}
r=biShiftRight(r,lambda);
q.isNeg=x.isNeg!=origYIsNeg;
if(x.isNeg){
if(origYIsNeg){
q=biAdd(q,bigOne);
}else{
q=biSubtract(q,bigOne);
}
y=biShiftRight(y,lambda);
r=biSubtract(y,r);
}
if(r.digits[0]==0&&biHighIndex(r)==0)r.isNeg=false;
return new Array(q,r);
}
function biDivide(x,y)
{
return biDivideModulo(x,y)[0];
}
function biModulo(x,y)
{
return biDivideModulo(x,y)[1];
}
function biMultiplyMod(x,y,m)
{
return biModulo(biMultiply(x,y),m);
}
function biPow(x,y)
{
var result=bigOne;
var a=x;
while(true){
if((y&1)!=0)result=biMultiply(result,a);
y>>=1;
if(y==0)break;
a=biMultiply(a,a);
}
return result;
}
function biPowMod(x,y,m)
{
var result=bigOne;
var a=x;
var k=y;
while(true){
if((k.digits[0]&1)!=0)result=biMultiplyMod(result,a,m);
k=biShiftRight(k,1);
if(k.digits[0]==0&&biHighIndex(k)==0)break;
a=biMultiplyMod(a,a,m);
}
return result;
}
function BarrettMu(m)
{
this.modulus=biCopy(m);
this.k=biHighIndex(this.modulus)+1;
var b2k=new BigInt();
b2k.digits[2*this.k]=1;
this.mu=biDivide(b2k,this.modulus);
this.bkplus1=new BigInt();
this.bkplus1.digits[this.k+1]=1;
this.modulo=BarrettMu_modulo;
this.multiplyMod=BarrettMu_multiplyMod;
this.powMod=BarrettMu_powMod;
}
function BarrettMu_modulo(x)
{
var q1=biDivideByRadixPower(x,this.k-1);
var q2=biMultiply(q1,this.mu);
var q3=biDivideByRadixPower(q2,this.k+1);
var r1=biModuloByRadixPower(x,this.k+1);
var r2term=biMultiply(q3,this.modulus);
var r2=biModuloByRadixPower(r2term,this.k+1);
var r=biSubtract(r1,r2);
if(r.isNeg){
r=biAdd(r,this.bkplus1);
}
var rgtem=biCompare(r,this.modulus)>=0;
while(rgtem){
r=biSubtract(r,this.modulus);
rgtem=biCompare(r,this.modulus)>=0;
}
return r;
}
function BarrettMu_multiplyMod(x,y)
{
var xy=biMultiply(x,y);
return this.modulo(xy);
}
function BarrettMu_powMod(x,y)
{
var result=new BigInt();
result.digits[0]=1;
var a=x;
var k=y;
while(true){
if((k.digits[0]&1)!=0)result=this.multiplyMod(result,a);
k=biShiftRight(k,1);
if(k.digits[0]==0&&biHighIndex(k)==0)break;
a=this.multiplyMod(a,a);
}
return result;
}
FlashSound.muteErrorMsg=true;
function errorHandler()
{
return FlashSound.muteErrorMsg;
}
window.onerror=errorHandler;
FlashSound.winIEpass=((navigator.appName.indexOf("Microsoft")!=-1)&&
(navigator.appVersion.indexOf("Windows")!=-1))&&
(parseFloat(navigator.appVersion)>=4)?true:false;
FlashSound.NNpass=((navigator.appName=="Netscape")&&
(navigator.userAgent.indexOf("Mozilla")!=-1)&&
(parseFloat(navigator.appVersion)>=3)&&
(navigator.javaEnabled()))?true:false;
FlashSound.supportedBrowser=(FlashSound.winIEpass||FlashSound.NNpass)?true:false;
function Flash_checkForPlugIn()
{
var flashmimeType="application/x-shockwave-flash";
var hasplugin=(navigator.mimeTypes&&navigator.mimeTypes[flashmimeType])?navigator.mimeTypes[flashmimeType].enabledPlugin:0;
return hasplugin;
}
function Flash_getPlugInVers()
{
if(Flash_checkForPlugIn())
{
var plugin=navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin;
var pluginversion=parseInt(plugin.description.substring(plugin.description.indexOf(".")-1))
return pluginversion;
}
else
{
return 0;
}
}
if((navigator.appName=="Netscape")&&
(navigator.userAgent.indexOf("Mozilla")!=-1)&&
(parseFloat(navigator.appVersion)>=6)&&
(Flash_getPlugInVers()<=5))
{FlashSound.supportedBrowser=false}
if(FlashSound.supportedBrowser&&FlashSound.winIEpass)
{
document.write(
'<script language=VBScript>'+'\n'+
'Function Flash_getActiveXVersion()'+'\n'+
'On Error Resume Next'+'\n'+
'Dim hasPlayer, playerversion'+'\n'+
'hasPlayer = false'+'\n'+
'playerversion = 15'+'\n'+
'Do While playerversion > 0'+'\n'+
'hasPlayer = (IsObject(CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" & playerversion)))'+'\n'+
'If hasPlayer Then Exit Do'+'\n'+
'playerversion = playerversion - 1'+'\n'+
'Loop'+'\n'+
'Flash_getActiveXVersion = playerversion'+'\n'+
'End Function'+'\n'+
'<\/script>'
);
}
FlashSound.playerVersion=0;
function Flash_checkForMinPlayer()
{
if(!FlashSound.supportedBrowser)return false;
if(FlashSound.NNpass){FlashSound.playerVersion=Flash_getPlugInVers();}
if(FlashSound.winIEpass){FlashSound.playerVersion=(Flash_getActiveXVersion());}
if(FlashSound.playerVersion>=FlashSound.minPlayer){return true}
else{return false}
}
function Flash_setMinPlayer(vers)
{
if(!FlashSound.supportedBrowser)return
FlashSound.minPlayer=(vers!=null&&vers>=4)?vers:4;
FlashSound.checkForMinPlayer();
}
function Flash_ifNotMinPlayer(code)
{
if(!FlashSound.supportedBrowser)return
if(!FlashSound.checkForMinPlayer())
{
eval(code);
}
}
FlashSound.checkForMinPlayer=Flash_checkForMinPlayer;
FlashSound.setMinPlayer=Flash_setMinPlayer;
FlashSound.setMinPlayer();
FlashSound.ifNotMinPlayer=Flash_ifNotMinPlayer;
function Flash_embedSWF(srcURL)
{
if(!FlashSound.supportedBrowser||!FlashSound.checkForMinPlayer())return;
var defaultColor=(document.bgColor!=null)?document.bgColor:"#ffffff";
this.bgcolor=(this.bgcolor==null)?defaultColor:this.bgcolor;
this.src=srcURL;
document.write(
'<OBJECT'+'\n'+
'classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"'+'\n'+
'codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab\"'+'\n'+
'WIDTH=1'+'\n'+
'HEIGHT=1'+'\n'+
'ID=\"'+this.playerID+'\">'+'\n'+
'<PARAM NAME=movie VALUE=\"'+this.src+'\">'+'\n'+
'<PARAM NAME=play VALUE=\"'+this.autostart+'\">'+'\n'+
'<PARAM NAME=loop VALUE=\"'+this.loop+'\">'+'\n'+
'<PARAM NAME=quality VALUE=low>'+'\n'+
'<PARAM NAME=wmode VALUE=transparent>'+'\n'+
'<PARAM NAME=bgcolor VALUE='+this.bgcolor+'>'+'\n'+
'<PARAM NAME=base VALUE='+this.base+'>'+'\n'+
'<EMBED'+'\n'+
'name=\"'+this.playerID+'\"'+'\n'+
'swLiveConnect=\"true\"'+'\n'+
'src=\"'+this.src+'\"'+'\n'+
'play=\"'+this.autostart+'\"'+'\n'+
'loop=\"'+this.loop+'\"'+'\n'+
'quality=low'+'\n'+
'wmode=transparent'+'\n'+
'base=\"'+this.base+'\"'+'\n'+
'bgcolor='+this.bgcolor+'\n'+
'WIDTH=1'+'\n'+
'HEIGHT=2'+'\n'+
'TYPE=\"application/x-shockwave-flash\"'+'\n'+
'PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\">'+
'\n'+
'</EMBED>'+'\n'+
'</OBJECT>'
);
}
function Flash_checkForInstance()
{
if(!FlashSound.supportedBrowser||!FlashSound.checkForMinPlayer()){return false;}
if(window.document[this.playerID]==null){return false;}
return true;
}
function Flash_isPlayerReady()
{
if(!this.checkForInstance()){return false;}
if(this.PercentLoaded()>0){return true;}
return false;
}
function Flash_GetFramesLoaded(target)
{
if(!this.checkForInstance()){return 0;}
if(target==null)target="/";
var framesloaded=window.document[this.playerID].TGetProperty(target,12);
return parseInt(framesloaded);
}
function Flash_GetTotalFrames(target)
{
if(!this.isPlayerReady()){return 0;}
if(target==null)target="/";
var totalframes=window.document[this.playerID].TGetProperty(target,5);
return parseInt(totalframes);
}
function Flash_TLoaded(target)
{
if(!this.isPlayerReady()){return false;}
if(timelineName==null){target="/";}
if(this.getFramesLoaded(target)==this.getTotalFrames(target)){return true;}
return false;
}
function Flash_gotoAndPlay(target,frame)
{
if(!this.isPlayerReady()){return}
if(typeof(frame)=="number")
{
window.document[this.playerID].TGotoFrame(target,frame-1);
window.document[this.playerID].TPlay(target);
}
if(typeof(frame)=="string")
{
window.document[this.playerID].TGotoLabel(target,frame);
window.document[this.playerID].TPlay(target);
}
}
function Flash_api_PercentLoaded()
{
if(!this.checkForInstance()){return 0;}
var percentLoaded=window.document[this.playerID].PercentLoaded();
return parseInt(percentLoaded);
}
function Flash_api_TPlay(target)
{
if(!this.isPlayerReady()){return}
window.document[this.playerID].TPlay(target);
}
function Flash_api_TStopPlay(target)
{
if(!this.isPlayerReady()){return;}
window.document[this.playerID].TStopPlay(target);
}
function Flash_api_IsPlaying()
{
if(!this.isPlayerReady()){return false;}
return window.document[this.playerID].IsPlaying();
}
function Flash_api_LoadMovie(layerNumber,url)
{
if(!this.isPlayerReady()){return;}
window.document[this.playerID].LoadMovie(layerNumber,url);
}
FlashSound.players=0;
function FlashSound()
{
this.playerID="FlashSound_swf"+FlashSound.players;FlashSound.players++;
this.autostart=true;
this.base=null;
this.bgcolor=null;
this.loop=false;
this.src=null;
this.embedSWF=Flash_embedSWF;
this.checkForInstance=Flash_checkForInstance;
this.isPlayerReady=Flash_isPlayerReady;
this.getFramesLoaded=Flash_GetFramesLoaded;
this.getTotalFrames=Flash_GetTotalFrames;
this.TLoaded=Flash_TLoaded
this.TGotoAndPlay=Flash_gotoAndPlay;
this.PercentLoaded=Flash_api_PercentLoaded;
this.TPlay=Flash_api_TPlay;
this.TStopPlay=Flash_api_TStopPlay;
this.IsPlaying=Flash_api_IsPlaying;
this.LoadMovie=Flash_api_LoadMovie;
}
var Prototype={
Version:'1.5.0_pre0',
ScriptFragment:'(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
emptyFunction:function(){},
K:function(x){return x}
}
var Class={
create:function(){
return function(){
this.initialize.apply(this,arguments);
}
}
}
var Abstract=new Object();
Object.extend=function(destination,source){
for(property in source){
destination[property]=source[property];
}
return destination;
}
Object.inspect=function(object){
try{
if(object==undefined)return'undefined';
if(object==null)return'null';
return object.inspect?object.inspect():object.toString();
}catch(e){
if(e instanceof RangeError)return'...';
throw e;
}
}
Function.prototype.bind=function(){
var __method=this,args=$A(arguments),object=args.shift();
return function(){
return __method.apply(object,args.concat($A(arguments)));
}
}
Function.prototype.bindAsEventListener=function(object){
var __method=this;
return function(event){
return __method.call(object,event||window.event);
}
}
Object.extend(Number.prototype,{
toColorPart:function(){
var digits=this.toString(16);
if(this<16)return'0'+digits;
return digits;
},
succ:function(){
return this+1;
},
times:function(iterator){
$R(0,this,true).each(iterator);
return this;
}
});
var Try={
these:function(){
var returnValue;
for(var i=0;i<arguments.length;i++){
var lambda=arguments[i];
try{
returnValue=lambda();
break;
}catch(e){}
}
return returnValue;
}
}
var PeriodicalExecuter=Class.create();
PeriodicalExecuter.prototype={
initialize:function(callback,frequency){
this.callback=callback;
this.frequency=frequency;
this.currentlyExecuting=false;
this.registerCallback();
},
registerCallback:function(){
setInterval(this.onTimerEvent.bind(this),this.frequency*1000);
},
onTimerEvent:function(){
if(!this.currentlyExecuting){
try{
this.currentlyExecuting=true;
this.callback();
}finally{
this.currentlyExecuting=false;
}
}
}
}
function $(){
var elements=new Array();
for(var i=0;i<arguments.length;i++){
var element=arguments[i];
if(typeof element=='string')
element=document.getElementById(element);
if(arguments.length==1)
return element;
elements.push(element);
}
return elements;
}
Object.extend(String.prototype,{
gsub:function(pattern,replacement){
var result='',source=this,match;
replacement=arguments.callee.prepareReplacement(replacement);
while(source.length>0){
if(match=source.match(pattern)){
result+=source.slice(0,match.index);
result+=(replacement(match)||'').toString();
source=source.slice(match.index+match[0].length);
}else{
result+=source,source='';
}
}
return result;
},
sub:function(pattern,replacement,count){
replacement=this.gsub.prepareReplacement(replacement);
count=count===undefined?1:count;
return this.gsub(pattern,function(match){
if(--count<0)return match[0];
return replacement(match);
});
},
scan:function(pattern,iterator){
this.gsub(pattern,iterator);
return this;
},
truncate:function(length,truncation){
length=length||30;
truncation=truncation===undefined?'...':truncation;
return this.length>length?
this.slice(0,length-truncation.length)+truncation:this;
},
strip:function(){
return this.replace(/^\s+/,'').replace(/\s+$/,'');
},
stripTags:function(){
return this.replace(/<\/?[^>]+>/gi,'');
},
stripScripts:function(){
return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');
},
extractScripts:function(){
var matchAll=new RegExp(Prototype.ScriptFragment,'img');
var matchOne=new RegExp(Prototype.ScriptFragment,'im');
return(this.match(matchAll)||[]).map(function(scriptTag){
return(scriptTag.match(matchOne)||['',''])[1];
});
},
evalScripts:function(){
return this.extractScripts().map(eval);
},
escapeHTML:function(){
var div=document.createElement('div');
var text=document.createTextNode(this);
div.appendChild(text);
return div.innerHTML;
},
unescapeHTML:function(){
var div=document.createElement('div');
div.innerHTML=this.stripTags();
return div.childNodes[0]?div.childNodes[0].nodeValue:'';
},
toQueryParams:function(){
var pairs=this.match(/^\??(.*)$/)[1].split('&');
return pairs.inject({},function(params,pairString){
var pair=pairString.split('=');
params[pair[0]]=pair[1];
return params;
});
},
toArray:function(){
return this.split('');
},
camelize:function(){
var oStringList=this.split('-');
if(oStringList.length==1)return oStringList[0];
var camelizedString=this.indexOf('-')==0
?oStringList[0].charAt(0).toUpperCase()+oStringList[0].substring(1)
:oStringList[0];
for(var i=1,len=oStringList.length;i<len;i++){
var s=oStringList[i];
camelizedString+=s.charAt(0).toUpperCase()+s.substring(1);
}
return camelizedString;
},
inspect:function(){
return"'"+this.replace(/\\/g,'\\\\').replace(/'/g,'\\\'')+"'";
}
});
String.prototype.gsub.prepareReplacement=function(replacement){
if(typeof replacement=='function')return replacement;
var template=new Template(replacement);
return function(match){return template.evaluate(match)};
}
String.prototype.parseQuery=String.prototype.toQueryParams;
var Template=Class.create();
Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;
Template.prototype={
initialize:function(template,pattern){
this.template=template.toString();
this.pattern=pattern||Template.Pattern;
},
evaluate:function(object){
return this.template.gsub(this.pattern,function(match){
var before=match[1];
if(before=='\\')return match[2];
return before+(object[match[3]]||'').toString();
});
}
}
var $break=new Object();
var $continue=new Object();
var Enumerable={
each:function(iterator){
var index=0;
try{
this._each(function(value){
try{
iterator(value,index++);
}catch(e){
if(e!=$continue)throw e;
}
});
}catch(e){
if(e!=$break)throw e;
}
},
all:function(iterator){
var result=true;
this.each(function(value,index){
result=result&&!!(iterator||Prototype.K)(value,index);
if(!result)throw $break;
});
return result;
},
any:function(iterator){
var result=true;
this.each(function(value,index){
if(result=!!(iterator||Prototype.K)(value,index))
throw $break;
});
return result;
},
collect:function(iterator){
var results=[];
this.each(function(value,index){
results.push(iterator(value,index));
});
return results;
},
detect:function(iterator){
var result;
this.each(function(value,index){
if(iterator(value,index)){
result=value;
throw $break;
}
});
return result;
},
findAll:function(iterator){
var results=[];
this.each(function(value,index){
if(iterator(value,index))
results.push(value);
});
return results;
},
grep:function(pattern,iterator){
var results=[];
this.each(function(value,index){
var stringValue=value.toString();
if(stringValue.match(pattern))
results.push((iterator||Prototype.K)(value,index));
})
return results;
},
include:function(object){
var found=false;
this.each(function(value){
if(value==object){
found=true;
throw $break;
}
});
return found;
},
inject:function(memo,iterator){
this.each(function(value,index){
memo=iterator(memo,value,index);
});
return memo;
},
invoke:function(method){
var args=$A(arguments).slice(1);
return this.collect(function(value){
return value[method].apply(value,args);
});
},
max:function(iterator){
var result;
this.each(function(value,index){
value=(iterator||Prototype.K)(value,index);
if(value>=(result||value))
result=value;
});
return result;
},
min:function(iterator){
var result;
this.each(function(value,index){
value=(iterator||Prototype.K)(value,index);
if(value<=(result||value))
result=value;
});
return result;
},
partition:function(iterator){
var trues=[],falses=[];
this.each(function(value,index){
((iterator||Prototype.K)(value,index)?
trues:falses).push(value);
});
return[trues,falses];
},
pluck:function(property){
var results=[];
this.each(function(value,index){
results.push(value[property]);
});
return results;
},
reject:function(iterator){
var results=[];
this.each(function(value,index){
if(!iterator(value,index))
results.push(value);
});
return results;
},
sortBy:function(iterator){
return this.collect(function(value,index){
return{value:value,criteria:iterator(value,index)};
}).sort(function(left,right){
var a=left.criteria,b=right.criteria;
return a<b?-1:a>b?1:0;
}).pluck('value');
},
toArray:function(){
return this.collect(Prototype.K);
},
zip:function(){
var iterator=Prototype.K,args=$A(arguments);
if(typeof args.last()=='function')
iterator=args.pop();
var collections=[this].concat(args).map($A);
return this.map(function(value,index){
return iterator(collections.pluck(index));
});
},
inspect:function(){
return'#<Enumerable:'+this.toArray().inspect()+'>';
}
}
Object.extend(Enumerable,{
map:Enumerable.collect,
find:Enumerable.detect,
select:Enumerable.findAll,
member:Enumerable.include,
entries:Enumerable.toArray
});
var $A=Array.from=function(iterable){
if(!iterable)return[];
if(iterable.toArray){
return iterable.toArray();
}else{
var results=[];
for(var i=0;i<iterable.length;i++)
results.push(iterable[i]);
return results;
}
}
Object.extend(Array.prototype,Enumerable);
Array.prototype._reverse=Array.prototype.reverse;
Object.extend(Array.prototype,{
_each:function(iterator){
for(var i=0;i<this.length;i++)
iterator(this[i]);
},
clear:function(){
this.length=0;
return this;
},
first:function(){
return this[0];
},
last:function(){
return this[this.length-1];
},
compact:function(){
return this.select(function(value){
return value!=undefined||value!=null;
});
},
flatten:function(){
return this.inject([],function(array,value){
return array.concat(value.constructor==Array?
value.flatten():[value]);
});
},
without:function(){
var values=$A(arguments);
return this.select(function(value){
return!values.include(value);
});
},
indexOf:function(object){
for(var i=0;i<this.length;i++)
if(this[i]==object)return i;
return-1;
},
reverse:function(inline){
return(inline!==false?this:this.toArray())._reverse();
},
shift:function(){
var result=this[0];
for(var i=0;i<this.length-1;i++)
this[i]=this[i+1];
this.length--;
return result;
},
inspect:function(){
return'['+this.map(Object.inspect).join(', ')+']';
}
});
var Hash={
_each:function(iterator){
for(key in this){
var value=this[key];
if(typeof value=='function')continue;
var pair=[key,value];
pair.key=key;
pair.value=value;
iterator(pair);
}
},
keys:function(){
return this.pluck('key');
},
values:function(){
return this.pluck('value');
},
merge:function(hash){
return $H(hash).inject($H(this),function(mergedHash,pair){
mergedHash[pair.key]=pair.value;
return mergedHash;
});
},
toQueryString:function(){
return this.map(function(pair){
return pair.map(encodeURIComponent).join('=');
}).join('&');
},
inspect:function(){
return'#<Hash:{'+this.map(function(pair){
return pair.map(Object.inspect).join(': ');
}).join(', ')+'}>';
}
}
function $H(object){
var hash=Object.extend({},object||{});
Object.extend(hash,Enumerable);
Object.extend(hash,Hash);
return hash;
}
ObjectRange=Class.create();
Object.extend(ObjectRange.prototype,Enumerable);
Object.extend(ObjectRange.prototype,{
initialize:function(start,end,exclusive){
this.start=start;
this.end=end;
this.exclusive=exclusive;
},
_each:function(iterator){
var value=this.start;
do{
iterator(value);
value=value.succ();
}while(this.include(value));
},
include:function(value){
if(value<this.start)
return false;
if(this.exclusive)
return value<this.end;
return value<=this.end;
}
});
var $R=function(start,end,exclusive){
return new ObjectRange(start,end,exclusive);
}
var Ajax={
getTransport:function(){
return Try.these(
function(){return new ActiveXObject('Msxml2.XMLHTTP')},
function(){return new ActiveXObject('Microsoft.XMLHTTP')},
function(){return new XMLHttpRequest()}
)||false;
},
activeRequestCount:0
}
Ajax.Responders={
responders:[],
_each:function(iterator){
this.responders._each(iterator);
},
register:function(responderToAdd){
if(!this.include(responderToAdd))
this.responders.push(responderToAdd);
},
unregister:function(responderToRemove){
this.responders=this.responders.without(responderToRemove);
},
dispatch:function(callback,request,transport,json){
this.each(function(responder){
if(responder[callback]&&typeof responder[callback]=='function'){
try{
responder[callback].apply(responder,[request,transport,json]);
}catch(e){}
}
});
}
};
Object.extend(Ajax.Responders,Enumerable);
Ajax.Responders.register({
onCreate:function(){
Ajax.activeRequestCount++;
},
onComplete:function(){
Ajax.activeRequestCount--;
}
});
Ajax.Base=function(){};
Ajax.Base.prototype={
setOptions:function(options){
this.options={
method:'post',
asynchronous:true,
parameters:''
}
Object.extend(this.options,options||{});
},
responseIsSuccess:function(){
return this.transport.status==undefined
||this.transport.status==0
||(this.transport.status>=200&&this.transport.status<300);
},
responseIsFailure:function(){
return!this.responseIsSuccess();
}
}
Ajax.Request=Class.create();
Ajax.Request.Events=
['Uninitialized','Loading','Loaded','Interactive','Complete'];
Ajax.Request.prototype=Object.extend(new Ajax.Base(),{
initialize:function(url,options){
this.transport=Ajax.getTransport();
this.setOptions(options);
this.request(url);
},
request:function(url){
var parameters=this.options.parameters||'';
if(parameters.length>0)parameters+='&_=';
try{
this.url=url;
if(this.options.method=='get'&&parameters.length>0)
this.url+=(this.url.match(/\?/)?'&':'?')+parameters;
Ajax.Responders.dispatch('onCreate',this,this.transport);
this.transport.open(this.options.method,this.url,
this.options.asynchronous);
if(this.options.asynchronous){
this.transport.onreadystatechange=this.onStateChange.bind(this);
setTimeout((function(){this.respondToReadyState(1)}).bind(this),10);
}
this.setRequestHeaders();
var body=this.options.postBody?this.options.postBody:parameters;
this.transport.send(this.options.method=='post'?body:null);
}catch(e){
this.dispatchException(e);
}
},
setRequestHeaders:function(){
var requestHeaders=
['X-Requested-With','XMLHttpRequest',
'X-Prototype-Version',Prototype.Version];
if(this.options.method=='post'){
requestHeaders.push('Content-type',
'application/x-www-form-urlencoded');
if(this.transport.overrideMimeType)
requestHeaders.push('Connection','close');
}
if(this.options.requestHeaders)
requestHeaders.push.apply(requestHeaders,this.options.requestHeaders);
for(var i=0;i<requestHeaders.length;i+=2)
this.transport.setRequestHeader(requestHeaders[i],requestHeaders[i+1]);
},
onStateChange:function(){
var readyState=this.transport.readyState;
if(readyState!=1)
this.respondToReadyState(this.transport.readyState);
},
header:function(name){
try{
return this.transport.getResponseHeader(name);
}catch(e){}
},
evalJSON:function(){
try{
return eval(this.header('X-JSON'));
}catch(e){}
},
evalResponse:function(){
try{
return eval(this.transport.responseText);
}catch(e){
this.dispatchException(e);
}
},
respondToReadyState:function(readyState){
var event=Ajax.Request.Events[readyState];
var transport=this.transport,json=this.evalJSON();
if(event=='Complete'){
try{
(this.options['on'+this.transport.status]
||this.options['on'+(this.responseIsSuccess()?'Success':'Failure')]
||Prototype.emptyFunction)(transport,json);
}catch(e){
this.dispatchException(e);
}
if((this.header('Content-type')||'').match(/^text\/javascript/i))
this.evalResponse();
}
try{
(this.options['on'+event]||Prototype.emptyFunction)(transport,json);
Ajax.Responders.dispatch('on'+event,this,transport,json);
}catch(e){
this.dispatchException(e);
}
if(event=='Complete')
this.transport.onreadystatechange=Prototype.emptyFunction;
},
dispatchException:function(exception){
(this.options.onException||Prototype.emptyFunction)(this,exception);
Ajax.Responders.dispatch('onException',this,exception);
}
});
Ajax.Updater=Class.create();
Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{
initialize:function(container,url,options){
this.containers={
success:container.success?$(container.success):$(container),
failure:container.failure?$(container.failure):
(container.success?null:$(container))
}
this.transport=Ajax.getTransport();
this.setOptions(options);
var onComplete=this.options.onComplete||Prototype.emptyFunction;
this.options.onComplete=(function(transport,object){
this.updateContent();
onComplete(transport,object);
}).bind(this);
this.request(url);
},
updateContent:function(){
var receiver=this.responseIsSuccess()?
this.containers.success:this.containers.failure;
var response=this.transport.responseText;
if(!this.options.evalScripts)
response=response.stripScripts();
if(receiver){
if(this.options.insertion){
new this.options.insertion(receiver,response);
}else{
Element.update(receiver,response);
}
}
if(this.responseIsSuccess()){
if(this.onComplete)
setTimeout(this.onComplete.bind(this),10);
}
}
});
Ajax.PeriodicalUpdater=Class.create();
Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{
initialize:function(container,url,options){
this.setOptions(options);
this.onComplete=this.options.onComplete;
this.frequency=(this.options.frequency||2);
this.decay=(this.options.decay||1);
this.updater={};
this.container=container;
this.url=url;
this.start();
},
start:function(){
this.options.onComplete=this.updateComplete.bind(this);
this.onTimerEvent();
},
stop:function(){
this.updater.onComplete=undefined;
clearTimeout(this.timer);
(this.onComplete||Prototype.emptyFunction).apply(this,arguments);
},
updateComplete:function(request){
if(this.options.decay){
this.decay=(request.responseText==this.lastText?
this.decay*this.options.decay:1);
this.lastText=request.responseText;
}
this.timer=setTimeout(this.onTimerEvent.bind(this),
this.decay*this.frequency*1000);
},
onTimerEvent:function(){
this.updater=new Ajax.Updater(this.container,this.url,this.options);
}
});
document.getElementsByClassName=function(className,parentElement){
var children=($(parentElement)||document.body).getElementsByTagName('*');
return $A(children).inject([],function(elements,child){
if(child.className.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))
elements.push(child);
return elements;
});
}
if(!window.Element){
var Element=new Object();
}
Object.extend(Element,{
visible:function(element){
return $(element).style.display!='none';
},
toggle:function(){
for(var i=0;i<arguments.length;i++){
var element=$(arguments[i]);
Element[Element.visible(element)?'hide':'show'](element);
}
},
hide:function(){
for(var i=0;i<arguments.length;i++){
var element=$(arguments[i]);
element.style.display='none';
}
},
show:function(){
for(var i=0;i<arguments.length;i++){
var element=$(arguments[i]);
element.style.display='';
}
},
remove:function(element){
element=$(element);
element.parentNode.removeChild(element);
},
update:function(element,html){
$(element).innerHTML=html.stripScripts();
setTimeout(function(){html.evalScripts()},10);
},
replace:function(element,html){
element=$(element);
if(element.outerHTML){
element.outerHTML=html.stripScripts();
}else{
var range=element.ownerDocument.createRange();
range.selectNodeContents(element);
element.parentNode.replaceChild(
range.createContextualFragment(html.stripScripts()),element);
}
setTimeout(function(){html.evalScripts()},10);
},
getHeight:function(element){
element=$(element);
return element.offsetHeight;
},
classNames:function(element){
return new Element.ClassNames(element);
},
hasClassName:function(element,className){
if(!(element=$(element)))return;
return Element.classNames(element).include(className);
},
addClassName:function(element,className){
if(!(element=$(element)))return;
return Element.classNames(element).add(className);
},
removeClassName:function(element,className){
if(!(element=$(element)))return;
return Element.classNames(element).remove(className);
},
cleanWhitespace:function(element){
element=$(element);
for(var i=0;i<element.childNodes.length;i++){
var node=element.childNodes[i];
if(node.nodeType==3&&!/\S/.test(node.nodeValue))
Element.remove(node);
}
},
empty:function(element){
return $(element).innerHTML.match(/^\s*$/);
},
childOf:function(element,ancestor){
element=$(element),ancestor=$(ancestor);
while(element=element.parentNode)
if(element==ancestor)return true;
return false;
},
scrollTo:function(element){
element=$(element);
var x=element.x?element.x:element.offsetLeft,
y=element.y?element.y:element.offsetTop;
window.scrollTo(x,y);
},
getStyle:function(element,style){
element=$(element);
var value=element.style[style.camelize()];
if(!value){
if(document.defaultView&&document.defaultView.getComputedStyle){
var css=document.defaultView.getComputedStyle(element,null);
value=css?css.getPropertyValue(style):null;
}else if(element.currentStyle){
value=element.currentStyle[style.camelize()];
}
}
if(window.opera&&['left','top','right','bottom'].include(style))
if(Element.getStyle(element,'position')=='static')value='auto';
return value=='auto'?null:value;
},
setStyle:function(element,style){
element=$(element);
for(name in style)
element.style[name.camelize()]=style[name];
},
getDimensions:function(element){
element=$(element);
if(Element.getStyle(element,'display')!='none')
return{width:element.offsetWidth,height:element.offsetHeight};
var els=element.style;
var originalVisibility=els.visibility;
var originalPosition=els.position;
els.visibility='hidden';
els.position='absolute';
els.display='';
var originalWidth=element.clientWidth;
var originalHeight=element.clientHeight;
els.display='none';
els.position=originalPosition;
els.visibility=originalVisibility;
return{width:originalWidth,height:originalHeight};
},
makePositioned:function(element){
element=$(element);
var pos=Element.getStyle(element,'position');
if(pos=='static'||!pos){
element._madePositioned=true;
element.style.position='relative';
if(window.opera){
element.style.top=0;
element.style.left=0;
}
}
},
undoPositioned:function(element){
element=$(element);
if(element._madePositioned){
element._madePositioned=undefined;
element.style.position=
element.style.top=
element.style.left=
element.style.bottom=
element.style.right='';
}
},
makeClipping:function(element){
element=$(element);
if(element._overflow)return;
element._overflow=element.style.overflow;
if((Element.getStyle(element,'overflow')||'visible')!='hidden')
element.style.overflow='hidden';
},
undoClipping:function(element){
element=$(element);
if(element._overflow)return;
element.style.overflow=element._overflow;
element._overflow=undefined;
}
});
var Toggle=new Object();
Toggle.display=Element.toggle;
Abstract.Insertion=function(adjacency){
this.adjacency=adjacency;
}
Abstract.Insertion.prototype={
initialize:function(element,content){
this.element=$(element);
this.content=content.stripScripts();
if(this.adjacency&&this.element.insertAdjacentHTML){
try{
this.element.insertAdjacentHTML(this.adjacency,this.content);
}catch(e){
if(this.element.tagName.toLowerCase()=='tbody'){
this.insertContent(this.contentFromAnonymousTable());
}else{
throw e;
}
}
}else{
this.range=this.element.ownerDocument.createRange();
if(this.initializeRange)this.initializeRange();
this.insertContent([this.range.createContextualFragment(this.content)]);
}
setTimeout(function(){content.evalScripts()},10);
},
contentFromAnonymousTable:function(){
var div=document.createElement('div');
div.innerHTML='<table><tbody>'+this.content+'</tbody></table>';
return $A(div.childNodes[0].childNodes[0].childNodes);
}
}
var Insertion=new Object();
Insertion.Before=Class.create();
Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'),{
initializeRange:function(){
this.range.setStartBefore(this.element);
},
insertContent:function(fragments){
fragments.each((function(fragment){
this.element.parentNode.insertBefore(fragment,this.element);
}).bind(this));
}
});
Insertion.Top=Class.create();
Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'),{
initializeRange:function(){
this.range.selectNodeContents(this.element);
this.range.collapse(true);
},
insertContent:function(fragments){
fragments.reverse(false).each((function(fragment){
this.element.insertBefore(fragment,this.element.firstChild);
}).bind(this));
}
});
Insertion.Bottom=Class.create();
Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'),{
initializeRange:function(){
this.range.selectNodeContents(this.element);
this.range.collapse(this.element);
},
insertContent:function(fragments){
fragments.each((function(fragment){
this.element.appendChild(fragment);
}).bind(this));
}
});
Insertion.After=Class.create();
Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'),{
initializeRange:function(){
this.range.setStartAfter(this.element);
},
insertContent:function(fragments){
fragments.each((function(fragment){
this.element.parentNode.insertBefore(fragment,
this.element.nextSibling);
}).bind(this));
}
});
Element.ClassNames=Class.create();
Element.ClassNames.prototype={
initialize:function(element){
this.element=$(element);
},
_each:function(iterator){
this.element.className.split(/\s+/).select(function(name){
return name.length>0;
})._each(iterator);
},
set:function(className){
this.element.className=className;
},
add:function(classNameToAdd){
if(this.include(classNameToAdd))return;
this.set(this.toArray().concat(classNameToAdd).join(' '));
},
remove:function(classNameToRemove){
if(!this.include(classNameToRemove))return;
this.set(this.select(function(className){
return className!=classNameToRemove;
}).join(' '));
},
toString:function(){
return this.toArray().join(' ');
}
}
Object.extend(Element.ClassNames.prototype,Enumerable);
var Selector=Class.create();
Selector.prototype={
initialize:function(expression){
this.params={classNames:[]};
this.expression=expression.toString().strip();
this.parseExpression();
this.compileMatcher();
},
parseExpression:function(){
function abort(message){throw'Parse error in selector: '+message;}
if(this.expression=='')abort('empty expression');
if(this.expression=='*')return this.params.wildcard=true;
var params=this.params,expr=this.expression,match,modifier,clause,rest;
while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){
modifier=match[1],clause=match[2],rest=match[3];
switch(modifier){
case'#':params.id=clause;break;
case'.':params.classNames.push(clause);break;
case undefined:params.tagName=clause.toUpperCase();break;
default:abort(expr.inspect());
}
expr=rest;
}
if(expr.length>0)abort(expr.inspect());
},
buildMatchExpression:function(){
var params=this.params,conditions=[],clause;
if(params.wildcard)
return'true';
if(clause=params.id)
conditions.push('element.id == '+clause.inspect());
if(clause=params.tagName)
conditions.push('element.tagName.toUpperCase() == '+clause.inspect());
if((clause=params.classNames).length>0)
for(var i=0;i<clause.length;i++)
conditions.push('Element.hasClassName(element, '+clause[i].inspect()+')');
return conditions.join(' && ');
},
compileMatcher:function(){
this.match=eval('function(element) { if (!element.tagName) return false; \
      return '+this.buildMatchExpression()+' }');
},
findElements:function(scope){
var element;
if(element=$(this.params.id))
if(this.match(element))
if(!scope||Element.childOf(element,scope))
return[element];
scope=(scope||document).getElementsByTagName(this.params.tagName||'*');
var results=[];
for(var i=0;i<scope.length;i++)
if(this.match(element=scope[i]))
results.push(element);
return results;
},
toString:function(){
return this.expression;
}
}
function $$(){
return $A(arguments).map(function(expression){
return expression.strip().split(/\s+/).inject([null],function(results,expr){
var selector=new Selector(expr);
return results.map(selector.findElements.bind(selector)).flatten();
});
}).flatten();
}
var Field={
clear:function(){
for(var i=0;i<arguments.length;i++)
$(arguments[i]).value='';
},
focus:function(element){
$(element).focus();
},
present:function(){
for(var i=0;i<arguments.length;i++)
if($(arguments[i]).value=='')return false;
return true;
},
select:function(element){
$(element).select();
},
activate:function(element){
element=$(element);
element.focus();
if(element.select)
element.select();
}
}
var Form={
serialize:function(form){
var elements=Form.getElements($(form));
var queryComponents=new Array();
for(var i=0;i<elements.length;i++){
var queryComponent=Form.Element.serialize(elements[i]);
if(queryComponent)
queryComponents.push(queryComponent);
}
return queryComponents.join('&');
},
getElements:function(form){
form=$(form);
var elements=new Array();
for(tagName in Form.Element.Serializers){
var tagElements=form.getElementsByTagName(tagName);
for(var j=0;j<tagElements.length;j++)
elements.push(tagElements[j]);
}
return elements;
},
getInputs:function(form,typeName,name){
form=$(form);
var inputs=form.getElementsByTagName('input');
if(!typeName&&!name)
return inputs;
var matchingInputs=new Array();
for(var i=0;i<inputs.length;i++){
var input=inputs[i];
if((typeName&&input.type!=typeName)||
(name&&input.name!=name))
continue;
matchingInputs.push(input);
}
return matchingInputs;
},
disable:function(form){
var elements=Form.getElements(form);
for(var i=0;i<elements.length;i++){
var element=elements[i];
element.blur();
element.disabled='true';
}
},
enable:function(form){
var elements=Form.getElements(form);
for(var i=0;i<elements.length;i++){
var element=elements[i];
element.disabled='';
}
},
findFirstElement:function(form){
return Form.getElements(form).find(function(element){
return element.type!='hidden'&&!element.disabled&&
['input','select','textarea'].include(element.tagName.toLowerCase());
});
},
focusFirstElement:function(form){
Field.activate(Form.findFirstElement(form));
},
reset:function(form){
$(form).reset();
}
}
Form.Element={
serialize:function(element){
element=$(element);
var method=element.tagName.toLowerCase();
var parameter=Form.Element.Serializers[method](element);
if(parameter){
var key=encodeURIComponent(parameter[0]);
if(key.length==0)return;
if(parameter[1].constructor!=Array)
parameter[1]=[parameter[1]];
return parameter[1].map(function(value){
return key+'='+encodeURIComponent(value);
}).join('&');
}
},
getValue:function(element){
element=$(element);
var method=element.tagName.toLowerCase();
var parameter=Form.Element.Serializers[method](element);
if(parameter)
return parameter[1];
}
}
Form.Element.Serializers={
input:function(element){
switch(element.type.toLowerCase()){
case'submit':
case'hidden':
case'password':
case'text':
return Form.Element.Serializers.textarea(element);
case'checkbox':
case'radio':
return Form.Element.Serializers.inputSelector(element);
}
return false;
},
inputSelector:function(element){
if(element.checked)
return[element.name,element.value];
},
textarea:function(element){
return[element.name,element.value];
},
select:function(element){
return Form.Element.Serializers[element.type=='select-one'?
'selectOne':'selectMany'](element);
},
selectOne:function(element){
var value='',opt,index=element.selectedIndex;
if(index>=0){
opt=element.options[index];
value=opt.value;
if(!value&&!('value'in opt))
value=opt.text;
}
return[element.name,value];
},
selectMany:function(element){
var value=new Array();
for(var i=0;i<element.length;i++){
var opt=element.options[i];
if(opt.selected){
var optValue=opt.value;
if(!optValue&&!('value'in opt))
optValue=opt.text;
value.push(optValue);
}
}
return[element.name,value];
}
}
var $F=Form.Element.getValue;
Abstract.TimedObserver=function(){}
Abstract.TimedObserver.prototype={
initialize:function(element,frequency,callback){
this.frequency=frequency;
this.element=$(element);
this.callback=callback;
this.lastValue=this.getValue();
this.registerCallback();
},
registerCallback:function(){
setInterval(this.onTimerEvent.bind(this),this.frequency*1000);
},
onTimerEvent:function(){
var value=this.getValue();
if(this.lastValue!=value){
this.callback(this.element,value);
this.lastValue=value;
}
}
}
Form.Element.Observer=Class.create();
Form.Element.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{
getValue:function(){
return Form.Element.getValue(this.element);
}
});
Form.Observer=Class.create();
Form.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{
getValue:function(){
return Form.serialize(this.element);
}
});
Abstract.EventObserver=function(){}
Abstract.EventObserver.prototype={
initialize:function(element,callback){
this.element=$(element);
this.callback=callback;
this.lastValue=this.getValue();
if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();
else
this.registerCallback(this.element);
},
onElementEvent:function(){
var value=this.getValue();
if(this.lastValue!=value){
this.callback(this.element,value);
this.lastValue=value;
}
},
registerFormCallbacks:function(){
var elements=Form.getElements(this.element);
for(var i=0;i<elements.length;i++)
this.registerCallback(elements[i]);
},
registerCallback:function(element){
if(element.type){
switch(element.type.toLowerCase()){
case'checkbox':
case'radio':
Event.observe(element,'click',this.onElementEvent.bind(this));
break;
case'password':
case'text':
case'textarea':
case'select-one':
case'select-multiple':
Event.observe(element,'change',this.onElementEvent.bind(this));
break;
}
}
}
}
Form.Element.EventObserver=Class.create();
Form.Element.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{
getValue:function(){
return Form.Element.getValue(this.element);
}
});
Form.EventObserver=Class.create();
Form.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{
getValue:function(){
return Form.serialize(this.element);
}
});
if(!window.Event){
var Event=new Object();
}
Object.extend(Event,{
KEY_BACKSPACE:8,
KEY_TAB:9,
KEY_RETURN:13,
KEY_ESC:27,
KEY_LEFT:37,
KEY_UP:38,
KEY_RIGHT:39,
KEY_DOWN:40,
KEY_DELETE:46,
element:function(event){
return event.target||event.srcElement;
},
isLeftClick:function(event){
return(((event.which)&&(event.which==1))||
((event.button)&&(event.button==1)));
},
pointerX:function(event){
return event.pageX||(event.clientX+
(document.documentElement.scrollLeft||document.body.scrollLeft));
},
pointerY:function(event){
return event.pageY||(event.clientY+
(document.documentElement.scrollTop||document.body.scrollTop));
},
stop:function(event){
if(event.preventDefault){
event.preventDefault();
event.stopPropagation();
}else{
event.returnValue=false;
event.cancelBubble=true;
}
},
findElement:function(event,tagName){
var element=Event.element(event);
while(element.parentNode&&(!element.tagName||
(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;
return element;
},
observers:false,
_observeAndCache:function(element,name,observer,useCapture){
if(!this.observers)this.observers=[];
if(element.addEventListener){
this.observers.push([element,name,observer,useCapture]);
element.addEventListener(name,observer,useCapture);
}else if(element.attachEvent){
this.observers.push([element,name,observer,useCapture]);
element.attachEvent('on'+name,observer);
}
},
unloadCache:function(){
if(!Event.observers)return;
for(var i=0;i<Event.observers.length;i++){
Event.stopObserving.apply(this,Event.observers[i]);
Event.observers[i][0]=null;
}
Event.observers=false;
},
observe:function(element,name,observer,useCapture){
var element=$(element);
useCapture=useCapture||false;
if(name=='keypress'&&
(navigator.appVersion.match(/Konqueror|Safari|KHTML/)
||element.attachEvent))
name='keydown';
this._observeAndCache(element,name,observer,useCapture);
},
stopObserving:function(element,name,observer,useCapture){
var element=$(element);
useCapture=useCapture||false;
if(name=='keypress'&&
(navigator.appVersion.match(/Konqueror|Safari|KHTML/)
||element.detachEvent))
name='keydown';
if(element.removeEventListener){
element.removeEventListener(name,observer,useCapture);
}else if(element.detachEvent){
element.detachEvent('on'+name,observer);
}
}
});
Event.observe(window,'unload',Event.unloadCache,false);
var Position={
includeScrollOffsets:false,
prepare:function(){
this.deltaX=window.pageXOffset
||document.documentElement.scrollLeft
||document.body.scrollLeft
||0;
this.deltaY=window.pageYOffset
||document.documentElement.scrollTop
||document.body.scrollTop
||0;
},
realOffset:function(element){
var valueT=0,valueL=0;
do{
valueT+=element.scrollTop||0;
valueL+=element.scrollLeft||0;
element=element.parentNode;
}while(element);
return[valueL,valueT];
},
cumulativeOffset:function(element){
var valueT=0,valueL=0;
do{
valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
element=element.offsetParent;
}while(element);
return[valueL,valueT];
},
positionedOffset:function(element){
var valueT=0,valueL=0;
do{
valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
element=element.offsetParent;
if(element){
p=Element.getStyle(element,'position');
if(p=='relative'||p=='absolute')break;
}
}while(element);
return[valueL,valueT];
},
offsetParent:function(element){
if(element.offsetParent)return element.offsetParent;
if(element==document.body)return element;
while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element,'position')!='static')
return element;
return document.body;
},
within:function(element,x,y){
if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);
this.xcomp=x;
this.ycomp=y;
this.offset=this.cumulativeOffset(element);
return(y>=this.offset[1]&&
y<this.offset[1]+element.offsetHeight&&
x>=this.offset[0]&&
x<this.offset[0]+element.offsetWidth);
},
withinIncludingScrolloffsets:function(element,x,y){
var offsetcache=this.realOffset(element);
this.xcomp=x+offsetcache[0]-this.deltaX;
this.ycomp=y+offsetcache[1]-this.deltaY;
this.offset=this.cumulativeOffset(element);
return(this.ycomp>=this.offset[1]&&
this.ycomp<this.offset[1]+element.offsetHeight&&
this.xcomp>=this.offset[0]&&
this.xcomp<this.offset[0]+element.offsetWidth);
},
overlap:function(mode,element){
if(!mode)return 0;
if(mode=='vertical')
return((this.offset[1]+element.offsetHeight)-this.ycomp)/
element.offsetHeight;
if(mode=='horizontal')
return((this.offset[0]+element.offsetWidth)-this.xcomp)/
element.offsetWidth;
},
clone:function(source,target){
source=$(source);
target=$(target);
target.style.position='absolute';
var offsets=this.cumulativeOffset(source);
target.style.top=offsets[1]+'px';
target.style.left=offsets[0]+'px';
target.style.width=source.offsetWidth+'px';
target.style.height=source.offsetHeight+'px';
},
page:function(forElement){
var valueT=0,valueL=0;
var element=forElement;
do{
valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;
}while(element=element.offsetParent);
element=forElement;
do{
valueT-=element.scrollTop||0;
valueL-=element.scrollLeft||0;
}while(element=element.parentNode);
return[valueL,valueT];
},
clone:function(source,target){
var options=Object.extend({
setLeft:true,
setTop:true,
setWidth:true,
setHeight:true,
offsetTop:0,
offsetLeft:0
},arguments[2]||{})
source=$(source);
var p=Position.page(source);
target=$(target);
var delta=[0,0];
var parent=null;
if(Element.getStyle(target,'position')=='absolute'){
parent=Position.offsetParent(target);
delta=Position.page(parent);
}
if(parent==document.body){
delta[0]-=document.body.offsetLeft;
delta[1]-=document.body.offsetTop;
}
if(options.setLeft)target.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';
if(options.setTop)target.style.top=(p[1]-delta[1]+options.offsetTop)+'px';
if(options.setWidth)target.style.width=source.offsetWidth+'px';
if(options.setHeight)target.style.height=source.offsetHeight+'px';
},
absolutize:function(element){
element=$(element);
if(element.style.position=='absolute')return;
Position.prepare();
var offsets=Position.positionedOffset(element);
var top=offsets[1];
var left=offsets[0];
var width=element.clientWidth;
var height=element.clientHeight;
element._originalLeft=left-parseFloat(element.style.left||0);
element._originalTop=top-parseFloat(element.style.top||0);
element._originalWidth=element.style.width;
element._originalHeight=element.style.height;
element.style.position='absolute';
element.style.top=top+'px';;
element.style.left=left+'px';;
element.style.width=width+'px';;
element.style.height=height+'px';;
},
relativize:function(element){
element=$(element);
if(element.style.position=='relative')return;
Position.prepare();
element.style.position='relative';
var top=parseFloat(element.style.top||0)-(element._originalTop||0);
var left=parseFloat(element.style.left||0)-(element._originalLeft||0);
element.style.top=top+'px';
element.style.left=left+'px';
element.style.height=element._originalHeight;
element.style.width=element._originalWidth;
}
}
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){
Position.cumulativeOffset=function(element){
var valueT=0,valueL=0;
do{
valueT+=element.offsetTop||0;
valueL+=element.offsetLeft||0;
if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;
element=element.offsetParent;
}while(element);
return[valueL,valueT];
}
}
var Scriptaculous={
Version:'1.5.3',
require:function(libraryName){
document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
},
load:function(){
if((typeof Prototype=='undefined')||
parseFloat(Prototype.Version.split(".")[0]+"."+
Prototype.Version.split(".")[1])<1.4)
throw("script.aculo.us requires the Prototype JavaScript framework >= 1.4.0");
}
}
Scriptaculous.load();
var Builder={
NODEMAP:{
AREA:'map',
CAPTION:'table',
COL:'table',
COLGROUP:'table',
LEGEND:'fieldset',
OPTGROUP:'select',
OPTION:'select',
PARAM:'object',
TBODY:'table',
TD:'table',
TFOOT:'table',
TH:'table',
THEAD:'table',
TR:'table'
},
node:function(elementName){
elementName=elementName.toUpperCase();
var parentTag=this.NODEMAP[elementName]||'div';
var parentElement=document.createElement(parentTag);
try{parentElement.innerHTML="<"+elementName+"></"+elementName+">";
}catch(e){}
var element=parentElement.firstChild||null;
if(element&&(element.tagName!=elementName))
element=element.getElementsByTagName(elementName)[0];
if(!element)element=document.createElement(elementName);
if(!element)return;
if(arguments[1])
if(this._isStringOrNumber(arguments[1])||
(arguments[1]instanceof Array)){
this._children(element,arguments[1]);
}else{
var attrs=this._attributes(arguments[1]);
if(attrs.length){
try{parentElement.innerHTML="<"+elementName+" "+
attrs+"></"+elementName+">";
}catch(e){}
element=parentElement.firstChild||null;
if(!element){
element=document.createElement(elementName);
for(attr in arguments[1])
element[attr=='class'?'className':attr]=arguments[1][attr];
}
if(element.tagName!=elementName)
element=parentElement.getElementsByTagName(elementName)[0];
}
}
if(arguments[2])
this._children(element,arguments[2]);
return element;
},
_text:function(text){
return document.createTextNode(text);
},
_attributes:function(attributes){
var attrs=[];
for(attribute in attributes)
attrs.push((attribute=='className'?'class':attribute)+
'="'+attributes[attribute].toString().escapeHTML()+'"');
return attrs.join(" ");
},
_children:function(element,children){
if(typeof children=='object'){children.flatten().each(function(e){
if(typeof e=='object')
element.appendChild(e)
else
if(Builder._isStringOrNumber(e))
element.appendChild(Builder._text(e));
});
}else
if(Builder._isStringOrNumber(children))
element.appendChild(Builder._text(children));
},
_isStringOrNumber:function(param){
return(typeof param=='string'||typeof param=='number');
}
}
var Droppables={
drops:[],
remove:function(element){
this.drops=this.drops.reject(function(d){return d.element==$(element)});
},
add:function(element){
element=$(element);
var options=Object.extend({
greedy:true,
hoverclass:null
},arguments[1]||{});
if(options.containment){
options._containers=[];
var containment=options.containment;
if((typeof containment=='object')&&
(containment.constructor==Array)){
containment.each(function(c){options._containers.push($(c))});
}else{
options._containers.push($(containment));
}
}
if(options.accept)options.accept=[options.accept].flatten();
Element.makePositioned(element);options.element=element;
this.drops.push(options);
},
isContained:function(element,drop){
var parentNode=element.parentNode;
return drop._containers.detect(function(c){return parentNode==c});
},
isAffected:function(point,element,drop){
return(
(drop.element!=element)&&
((!drop._containers)||
this.isContained(element,drop))&&
((!drop.accept)||
(Element.classNames(element).detect(
function(v){return drop.accept.include(v)})))&&
Position.within(drop.element,point[0],point[1]));
},
deactivate:function(drop){
if(drop.hoverclass)
Element.removeClassName(drop.element,drop.hoverclass);
this.last_active=null;
},
activate:function(drop){
if(drop.hoverclass)
Element.addClassName(drop.element,drop.hoverclass);
this.last_active=drop;
},
show:function(point,element){
if(!this.drops.length)return;
if(this.last_active)this.deactivate(this.last_active);
this.drops.each(function(drop){
if(Droppables.isAffected(point,element,drop)){
if(drop.onHover)
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));
if(drop.greedy){
Droppables.activate(drop);
throw $break;
}
}
});
},
fire:function(event,element){
if(!this.last_active)return;
Position.prepare();
if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
if(this.last_active.onDrop)
this.last_active.onDrop(element,this.last_active.element,event);
},
reset:function(){
if(this.last_active)
this.deactivate(this.last_active);
}
}
var Draggables={
drags:[],
observers:[],
register:function(draggable){
if(this.drags.length==0){
this.eventMouseUp=this.endDrag.bindAsEventListener(this);
this.eventMouseMove=this.updateDrag.bindAsEventListener(this);
this.eventKeypress=this.keyPress.bindAsEventListener(this);
Event.observe(document,"mouseup",this.eventMouseUp);
Event.observe(document,"mousemove",this.eventMouseMove);
Event.observe(document,"keypress",this.eventKeypress);
}
this.drags.push(draggable);
},
unregister:function(draggable){
this.drags=this.drags.reject(function(d){return d==draggable});
if(this.drags.length==0){
Event.stopObserving(document,"mouseup",this.eventMouseUp);
Event.stopObserving(document,"mousemove",this.eventMouseMove);
Event.stopObserving(document,"keypress",this.eventKeypress);
}
},
activate:function(draggable){
window.focus();this.activeDraggable=draggable;
},
deactivate:function(){
this.activeDraggable=null;
},
updateDrag:function(event){
if(!this.activeDraggable)return;
var pointer=[Event.pointerX(event),Event.pointerY(event)];
if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect()))return;
this._lastPointer=pointer;
this.activeDraggable.updateDrag(event,pointer);
},
endDrag:function(event){
if(!this.activeDraggable)return;
this._lastPointer=null;
this.activeDraggable.endDrag(event);
this.activeDraggable=null;
},
keyPress:function(event){
if(this.activeDraggable)
this.activeDraggable.keyPress(event);
},
addObserver:function(observer){
this.observers.push(observer);
this._cacheObserverCallbacks();
},
removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element});
this._cacheObserverCallbacks();
},
notify:function(eventName,draggable,event){if(this[eventName+'Count']>0)
this.observers.each(function(o){
if(o[eventName])o[eventName](eventName,draggable,event);
});
},
_cacheObserverCallbacks:function(){
['onStart','onEnd','onDrag'].each(function(eventName){
Draggables[eventName+'Count']=Draggables.observers.select(
function(o){return o[eventName];}
).length;
});
}
}
var Draggable=Class.create();
Draggable.prototype={
initialize:function(element){
var options=Object.extend({
handle:false,
zindex:1000,
revert:false,
scroll:false,
scrollSensitivity:20,
scrollSpeed:15,
snap:false},arguments[1]||{});
this.element=$(element);
if(options.handle&&(typeof options.handle=='string'))
this.handle=Element.childrenWithClassName(this.element,options.handle)[0];
if(!this.handle)this.handle=$(options.handle);
if(!this.handle)this.handle=this.element;
if(options.scroll)options.scroll=$(options.scroll);
Element.makePositioned(this.element);
this.delta=this.currentDelta();
this.options=options;
this.dragging=false;
this.eventMouseDown=this.initDrag.bindAsEventListener(this);
Event.observe(this.handle,"mousedown",this.eventMouseDown);
Draggables.register(this);
},
destroy:function(){
Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);
Draggables.unregister(this);
},
currentDelta:function(){
return([
parseInt(Element.getStyle(this.element,'left')||'0'),
parseInt(Element.getStyle(this.element,'top')||'0')]);
},
initDrag:function(event){
if(Event.isLeftClick(event)){
var src=Event.element(event);
if(src.tagName&&(
src.tagName=='INPUT'||
src.tagName=='SELECT'||
src.tagName=='OPTION'||
src.tagName=='BUTTON'||
src.tagName=='TEXTAREA'))return;
if(this.element._revert){
this.element._revert.cancel();
this.element._revert=null;
}
var pointer=[Event.pointerX(event),Event.pointerY(event)];
var pos=Position.cumulativeOffset(this.element);
this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});
Draggables.activate(this);
Event.stop(event);
}
},
startDrag:function(event){
this.dragging=true;
if(this.options.zindex){
this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);
this.element.style.zIndex=this.options.zindex;
}
if(this.options.ghosting){
this._clone=this.element.cloneNode(true);
Position.absolutize(this.element);
this.element.parentNode.insertBefore(this._clone,this.element);
}
if(this.options.scroll){
this.originalScrollLeft=this.options.scroll.scrollLeft;
this.originalScrollTop=this.options.scroll.scrollTop;
}
Draggables.notify('onStart',this,event);
if(this.options.starteffect)this.options.starteffect(this.element);
},
updateDrag:function(event,pointer){
if(!this.dragging)this.startDrag(event);
Position.prepare();
Droppables.show(pointer,this.element);
Draggables.notify('onDrag',this,event);
this.draw(pointer);
if(this.options.change)this.options.change(this);
if(this.options.scroll){
this.stopScrolling();
var p=Position.page(this.options.scroll);
p[0]+=this.options.scroll.scrollLeft;
p[1]+=this.options.scroll.scrollTop;
p.push(p[0]+this.options.scroll.offsetWidth);
p.push(p[1]+this.options.scroll.offsetHeight);
var speed=[0,0];
if(pointer[0]<(p[0]+this.options.scrollSensitivity))speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);
if(pointer[1]<(p[1]+this.options.scrollSensitivity))speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);
if(pointer[0]>(p[2]-this.options.scrollSensitivity))speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);
if(pointer[1]>(p[3]-this.options.scrollSensitivity))speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);
this.startScrolling(speed);
}
if(navigator.appVersion.indexOf('AppleWebKit')>0)window.scrollBy(0,0);
Event.stop(event);
},
finishDrag:function(event,success){
this.dragging=false;
if(this.options.ghosting){
Position.relativize(this.element);
Element.remove(this._clone);
this._clone=null;
}
if(success)Droppables.fire(event,this.element);
Draggables.notify('onEnd',this,event);
var revert=this.options.revert;
if(revert&&typeof revert=='function')revert=revert(this.element);
var d=this.currentDelta();
if(revert&&this.options.reverteffect){
this.options.reverteffect(this.element,
d[1]-this.delta[1],d[0]-this.delta[0]);
}else{
this.delta=d;
}
if(this.options.zindex)
this.element.style.zIndex=this.originalZ;
if(this.options.endeffect)
this.options.endeffect(this.element);
Draggables.deactivate(this);
Droppables.reset();
},
keyPress:function(event){
if(event.keyCode!=Event.KEY_ESC)return;
this.finishDrag(event,false);
Event.stop(event);
},
endDrag:function(event){
if(!this.dragging)return;
this.stopScrolling();
this.finishDrag(event,true);
Event.stop(event);
},
draw:function(point){
var pos=Position.cumulativeOffset(this.element);
var d=this.currentDelta();
pos[0]-=d[0];pos[1]-=d[1];
if(this.options.scroll){
pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;
pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;
}
var p=[0,1].map(function(i){
return(point[i]-pos[i]-this.offset[i])
}.bind(this));
if(this.options.snap){
if(typeof this.options.snap=='function'){
p=this.options.snap(p[0],p[1]);
}else{
if(this.options.snap instanceof Array){
p=p.map(function(v,i){
return Math.round(v/this.options.snap[i])*this.options.snap[i]}.bind(this))
}else{
p=p.map(function(v){
return Math.round(v/this.options.snap)*this.options.snap}.bind(this))
}
}}
var style=this.element.style;
if((!this.options.constraint)||(this.options.constraint=='horizontal'))
style.left=p[0]+"px";
if((!this.options.constraint)||(this.options.constraint=='vertical'))
style.top=p[1]+"px";
if(style.visibility=="hidden")style.visibility="";},
stopScrolling:function(){
if(this.scrollInterval){
clearInterval(this.scrollInterval);
this.scrollInterval=null;
}
},
startScrolling:function(speed){
this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
this.lastScrolled=new Date();
this.scrollInterval=setInterval(this.scroll.bind(this),10);
},
scroll:function(){
var current=new Date();
var delta=current-this.lastScrolled;
this.lastScrolled=current;
this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;
this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;
Position.prepare();
Droppables.show(Draggables._lastPointer,this.element);
Draggables.notify('onDrag',this);
this.draw(Draggables._lastPointer);
if(this.options.change)this.options.change(this);
}
}


/*Dialog begin*/
EventPublisher=Class.create();
EventPublisher.prototype={
initialize:function(){
},
attachEventHandler:function(eventName,handler){
if(this.allEvents==null)
this.allEvents=new Array();
var len=this.allEvents.length;
var foundEvent=false;
for(var i=0;i<len;i++){
if(this.allEvents[i]==eventName){
foundEvent=true;
break;
}
}
if(!foundEvent)
this.allEvents.push(eventName);
eventName=eventName+"_evt";
if(this[eventName]==null)
this[eventName]=new Array();
var asynchVar=arguments.length>2?arguments[1]:false;
var handlerObj={
method:handler,
asynch:asynchVar
};
this[eventName].push(handlerObj);
},
removeEventHandler:function(eventName,handler){
eventName=eventName+"_evt";
if(this[eventName]!=null)
this[eventName]=this[eventName].reject(function(obj){return obj.method==handler;});
},
clearEventHandlers:function(eventName){
eventName=eventName+"_evt";
this[eventName]=null;
},
clearAllEventHandlers:function(){
if(this.allEvents){
var len=this.allEvents.length;
for(var i=0;i<len;i++){
this.clearEventHandlers(this.allEvents[i]);
}
}
},
fireEvent:function(eventName){
var evtName=eventName+"_evt";
if(this[evtName]!=null){
var len=this[evtName].length;
for(var i=0;i<len;i++)
{
try
{
if(arguments.length>1)
{
if(this[evtName][i].asynch)
{
var eventArgs=arguments[1];
var eventHandler=function(evt,index,args){this[evt][index].method(args);}.bind(this);
var eventHandlerPointer=function(){eventHandler(evtName,i,eventArgs);}.bind(this);
setTimeout(eventHandlerPointer,1);
}
else
if(this&&this[evtName]&&this[evtName][i]&&this[evtName][i].method)
this[evtName][i].method(arguments[1]);
}else{
if(this[evtName][i].asynch)
{
if(this&&this[evtName]&&this[evtName][i]&&this[evtName][i].method){
var eventHandler=this[evtName][i].method;
setTimeout(eventHandler,1);
}
}
else
if(this&&this[evtName]&&this[evtName][i]&&this[evtName][i].method)
this[evtName][i].method();
}
}
catch(e){
if(this.id){
alert("ERROR: error in "+this.id+".fireEvent():\n\n"+e.message);
}else{
alert("ERROR: error in [unknown object].fireEvent():\n\n"+e.message);
}
}
}
}
}
};
var Dialogs={
dialogs:[],
currentZIndex:1000,
boolPosition:false,
themes:'blue, red, green',
pos:[0,0],
boolFirst:true,
dTitleOffset:0,
defaultTheme:'default',
themeRoot:'themes',
messages:{msgMinimize:'minimize',
msgMaximize:'maximize/restore',
msgClose:'close',
msgResize:'resize',
msgModal:'modal',
msgSetTitle:'title set',
msgClearTitle:'title cleared',
msgSetContent:'content set',
msgClearContent:'content cleared',
msgAppendContent:'content appended',
msgPrependContent:'content prepended',
msgScrollbar:'overflow'},
_registerDialog:function(dialog){
if(this.dialogs.length==0){
this._addObservers();
this.isIE=this._isIE();
this.dModal=this._createHTML();
dialog._unhide();
this.dTitleOffset=Element.getHeight(dialog.dTitle);
dialog._hide();
}
this.dialogs.push(dialog);
},
_addObservers:function(){
this.eventMouseMove=this._updateResize.bindAsEventListener(this);
this.eventWindowResize=this._position.bindAsEventListener(this);
Event.observe(window,'resize',this.eventWindowResize);
},
_stopObservers:function(){
Event.stopObserving(document,'mousemove',this.eventMouseMove);
Event.stopObserving(window,'resize',this.eventWindowResize);
this.eventMouseMove=null;
this.eventWindowResize=null;
},
_unregisterDialog:function(dialog){
if(dialog.options.remove){
this.dialogs=this.dialogs.reject(function(d){return d==dialog});
if(dialog.boolRemove)Element.remove(dialog.dContainer);
Dialogs._notify('onRemove',{sender:dialog,message:'removed'});
}
if(this.dialogs.length==0){
Element.remove(this.dModal);
this._stopObservers();
}else{
var dlgs=this.dialogs.select(function(d){return(d.boolVisible)});
if(dlgs.length!=0)dlgs[dlgs.length-1].top();
}
},
_top:function(dialog){
var nextModal=this._nextModal(dialog);
if(dialog!=nextModal){
Element.setStyle(this.activeDialog.dContainer,{zIndex:(this.currentZIndex-2)});
nextModal.top();
}else{
if(this.activeDialog!=dialog){
if(this.currentZIndex>1000){
Element.setStyle(this.activeDialog.dContainer,{zIndex:this.currentZIndex});
Dialogs._notify('onDeactivate',{sender:this.activeDialog});
if(this.activeDialog.options.debug)this.activeDialog.clearStatus();
}
this.currentZIndex=(this.currentZIndex+2);
Element.setStyle(this.dModal,{zIndex:(this.currentZIndex-1)});
if(this.activeDialog)Element.removeClassName(this.dModal,this.activeDialog.options.theme);
Element.addClassName(this.dModal,dialog.options.theme);
this.activeDialog=dialog;
Dialogs._notify('onActivate',{sender:this.activeDialog,message:'done'});
if(this.activeDialog.options.debug)this.activeDialog.setStatus('done',true);
}
return this.currentZIndex;
}
},
_nextModal:function(obj){
this.dialogs.select(function(d){return(d.options.modal&&d.boolVisible)}).each(function(d){
obj=d;
}.bind(this));
return obj;
},
_updateResize:function(event){
if(Event.element(event).nodeName=='iframe')return false;
if(!this.activeDialog)return false;
var pointer=[Event.pointerX(event),Event.pointerY(event)];
this.activeDialog._updateResize(pointer);
Event.stop(event);
},
_position:function(event){
if(this.activeDialog.boolMaximize)return false;
if(!this.boolPosition)return false;
this.boolPosition=false;
this.boolFirst=true;
this.dialogs.select(function(d){return d.options.show}).each(function(d){
this._updatePosition(d);
}.bind(this));
this.boolPosition=true;
Event.stop(event);
},
_updatePosition:function(dialog){
if(this.boolFirst){
this.boolFirst=false;
var windowDim=Element.getDimensions(document.body);
var dContainerDim=Element.getDimensions(dialog.dContainer);
var cumVal;
var maxDim;
var cumOffset;
var shows=Dialogs.dialogs.select(function(s){
return s.options.show;
}.bind(this));
$A(shows).each(function(s,index){
cumVal=(this.dTitleOffset*(shows.length-(index+1)));
maxDim=Element.getDimensions(s.dContainer);
dContainerDim.width=(maxDim.width>=dContainerDim.width)?(maxDim.width-cumVal):dContainerDim.width;
dContainerDim.height=(maxDim.height>=dContainerDim.height)?(maxDim.height-cumVal):dContainerDim.height;
}.bind(this));
var cumOffset=parseInt(this.dTitleOffset*(shows.length-1));
var posX=parseInt((windowDim.width-dContainerDim.width-cumOffset)/2);
var posY=parseInt((windowDim.height-dContainerDim.height-cumOffset)/2);
}else{
var posX=(Dialogs.pos[0]+this.dTitleOffset);
var posY=(Dialogs.pos[1]+this.dTitleOffset);
}
dialog.move(posX,posY,true)
this.pos=[posX,posY];
},
_chkDuplicatePos:function(dialog,posX,posY){
this.dialogs.each(function(d){
if(dialog!=d){
if(!d.boolVisible){
d._unhide();
}
var pos=Position.cumulativeOffset(d.dContainer);
if(pos[0]==posX)posX=(posX+this.dTitleOffset);
if(pos[1]==posY)posY=(posY+this.dTitleOffset);
if(!d.boolVisible){
d._hide();
}
}
}.bind(this));
return[posX,posY];
},
_isIE:function(){
return navigator.appVersion.indexOf('MSIE')>0;
},
_notify:function(eventName){
var options=arguments[1]||'[]';
var sender=options.sender||this.activeDialog;
var message=options.message||sender.dTitleText.innerHTML+': '+eventName;
sender.fireEvent(eventName,{eventName:eventName,sender:sender,message:message});
},
_createHTML:function(){
var modal,iframe,div,node;
modal=document.createElement('DIV');
Element.addClassName(modal,'dModal');
Element.setStyle(modal,{position:'absolute',width:'100%',height:'100%',top:'0px',left:'0px',zIndex:999,display:'none'});
node=document.body.firstChild;
node=(node.nodeType==3)?node.nextSibling:node;
document.body.insertBefore(modal,node);
if(this.isIE){
iframe=document.createElement('IFRAME');
div=document.createElement('DIV');
iframe.frameborder=0;
Element.setStyle(iframe,{border:'0px',position:'absolute',width:'100%',height:'100%',top:'0px',left:'0px',zIndex:-1});
Element.setStyle(div,{position:'absolute',width:'100%',height:'100%',top:'0px',left:'0px',zIndex:0});
modal.appendChild(div);
modal.appendChild(iframe);
}
if(navigator.userAgent.indexOf('Opera')>0)Element.setStyle(modal,{backgroundColor:'transparent'});
return modal;
},
load:function(){
if((typeof Scriptaculous=='undefined')||parseFloat(Scriptaculous.Version.split(".")[0]+"."+
Scriptaculous.Version.split(".")[1])<1.5)
throw("This dialog script requires the script.aculo.us JavaScript framework >= 1.5.0");
var path=null;
$A(document.getElementsByTagName('head')[0].childNodes).findAll(function(s){
return(s.src&&s.src.match(/MessengerFX\.js(\?.*)?$/))
}).each(function(s){
path=s.src.replace(/MessengerFX\.js(\?.*)?$/,'');
var includes=s.src.match(/\?.*themes=(.+)$/);
var themes=new Array();
(includes?includes[1]:Dialogs.themes).split(',').each(
function(include){themes.push(include.strip());Dialogs.require(path,include.strip());}
);
Dialogs.themes=themes;
});
Dialogs.require(path,Dialogs.defaultTheme);
document.write('<link href="'+path+Dialogs.themeRoot+'/_dCommon.css?v=1.1" rel="stylesheet" type="text/css" media="all" />');
this.path=path;
},
require:function(path,theme){
document.write('<link href="'+path+Dialogs.themeRoot+'/'+theme+'/_dStyle.css?v=1.1" rel="stylesheet" type="text/css" media="all" />');
}
}
Dialogs.load();
var Dialog=Class.create();
Object.extend(Object.extend(Dialog.prototype,EventPublisher.prototype),{
initialize:function(element){
this.options=Object.extend({
top:10,
left:10,
width:200,
height:200,
mwidth:100,
mheight:80,
moveable:true,
resizable:true,
minimizable:true,
maximizable:true,
closeable:true,
scrollbar:'hidden',
statusbar:true,
modal:false,
show:true,
remove:true,
effects:false,
limit:false,
theme:'default',
isResizing:'',
debug:false
},arguments[1]||{});
this.sPos=[];
this.sDim=[];
if($(element)){
this.element=$(element);
this.boolRemove=false;
}else{
this.element=this._createHTML('dialog');
this.boolRemove=true;
}
Element.cleanWhitespace(this.element);
$A(this.element.getElementsByTagName('*')).each(function(e,index){
Element.cleanWhitespace(e);
}.bind(this));
this.dContainer=this.element;
this.dTitle=this.dContainer.childNodes[0];
this.dTitleText=this.dTitle.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0];
this.dContentWrap=this.dContainer.childNodes[1];
this.dContent=this.dContentWrap.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0];
this.dContentText=this.dContent.childNodes[0];
this.dStatus=this.dContentWrap.childNodes[1];
this.dStatusText=this.dStatus.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0];
this.dBtnExpand=this.dTitle.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[1].getElementsByTagName('INPUT')[0];
this.dBtnMaximize=this.dTitle.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[1].getElementsByTagName('INPUT')[1];
this.dBtnClose=this.dTitle.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[1].getElementsByTagName('INPUT')[2];
this.dBtnResize=this.dStatus.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[1];
this._addObservers();
this._addEventHandler();
Dialogs._registerDialog(this);
this._setup();
},
_addObservers:function(){
this.dContainerClick=this.top.bindAsEventListener(this);
this.dContainerHover=this._hover.bindAsEventListener(this);
this.dTitleFocus=this._focus.bindAsEventListener(this);
this.dTitleDblClick=this.maximize.bindAsEventListener(this);
this.dBtnExpandClick=this.minimize.bindAsEventListener(this);
this.dBtnMaximizeClick=this.maximize.bindAsEventListener(this);
this.dBtnCloseClick=this.close.bindAsEventListener(this);
this.dBtnResizeClick=this._resize.bindAsEventListener(this);
this.dBtnResizeUp=this._endResize.bindAsEventListener(this);
Event.observe(this.dContainer,'click',this.dContainerClick);
Event.observe(this.dContainer,'mouseover',this.dContainerHover);
Event.observe(this.dTitle,'focus',this.dTitleFocus);
Event.observe(this.dTitle,'mousedown',this.dContainerClick);
Event.observe(this.dTitle,'dblclick',this.dTitleDblClick);
Event.observe(this.dBtnExpand,'click',this.dBtnExpandClick);
Event.observe(this.dBtnMaximize,'click',this.dBtnMaximizeClick);
Event.observe(this.dBtnClose,'click',this.dBtnCloseClick);
Event.observe(this.dBtnResize,'mousedown',this.dBtnResizeClick);
Event.observe(this.dBtnResize,'mouseup',this.dBtnResizeUp);
},
_addEventHandler:function(){
if(this.options.onActivate)this.attachEventHandler('onActivate',this.options.onActivate.bind(this));
if(this.options.onDeactivate)this.attachEventHandler('onDeactivate',this.options.onDeactivate.bind(this));
if(this.options.onDragStart)this.attachEventHandler('onDragStart',this.options.onDragStart.bind(this));
if(this.options.onDrag)this.attachEventHandler('onDrag',this.options.onDrag.bind(this));
if(this.options.onDragEnd)this.attachEventHandler('onDragEnd',this.options.onDragEnd.bind(this));
if(this.options.onShow)this.attachEventHandler('onShow',this.options.onShow.bind(this));
if(this.options.onClose)this.attachEventHandler('onClose',this.options.onClose.bind(this));
if(this.options.onRemove)this.attachEventHandler('onRemove',this.options.onRemove.bind(this));
if(this.options.onResize)this.attachEventHandler('onResize',this.options.onResize.bind(this));
if(this.options.onMove)this.attachEventHandler('onMove',this.options.onMove.bind(this));
if(this.options.onMaximize)this.attachEventHandler('onMaximize',this.options.onMaximize.bind(this));
if(this.options.onMinimize)this.attachEventHandler('onMinimize',this.options.onMinimize.bind(this));
if(this.options.onBeforeContent)this.attachEventHandler('onBeforeContent',this.options.onBeforeContent.bind(this));
if(this.options.onAfterContent)this.attachEventHandler('onAfterContent',this.options.onAfterContent.bind(this));
},
_setup:function(){
if(Dialogs.isIE)this.dFrame=''
this.setTheme(this.options.theme);
(this.options.resizable)?Element.show(this.dBtnResize):Element.hide(this.dBtnResize);
(this.options.minimizable)?Element.show(this.dBtnExpand):Element.hide(this.dBtnExpand);
(this.options.maximizable)?Element.show(this.dBtnMaximize):Element.hide(this.dBtnMaximize);
(this.options.maximizable)?Element.show(this.dBtnMaximize):Event.stopObserving(this.dTitle,'dblclick',this.dTitleDblClick);;
(this.options.closeable)?Element.show(this.dBtnClose):Element.hide(this.dBtnClose);
this.scrollbar(this.options.scrollbar);
var strTitle=(this.options.title)?this.options.title:'window '+parseInt(Dialogs.dialogs.length);
strTitle=strTitle.charAt(0).toUpperCase()+strTitle.substr(1).toLowerCase();
this.setTitle(strTitle);
if(!this.options.statusbar)Element.addClassName(this.dStatus,'hide');
this.options.modal=(Dialogs.dModal)?this.options.modal:false;
this.options.limit=(this.options.modal)?true:this.options.limit;
if(this.options.moveable)this._move();
this.resize(this.options.width,this.options.height,false);
if(this.options.show){
this._position();
this.show(true);
this.boolVisible=true;
}else{
this.boolVisible=false;
this.position(this.options.left,this.options.top);
}
},
_move:function(){
Element.setStyle(this.dTitle,{cursor:'move'});
this.moveable=new Draggable(this.dContainer,{
handle:this.dTitle,
zindex:this.currentZIndex,
snap:function(x,y){
var pos=this._chkLimitPos(x,y);
return[pos[0],pos[1]];
}.bind(this)
});
this.moveableObserver={
onStart:function(eventName,draggable,event){
if(draggable==this.moveable){
Dialogs._notify('onDragStart',{sender:this});
}
}.bind(this),
onDrag:function(eventName,draggable,event){
if(draggable==this.moveable){
var pos=Position.cumulativeOffset(this.dContainer);
if(this.options.debug)this.setStatus('x: '+pos[0]+' y: '+pos[1]);
Dialogs._notify('onDrag',{sender:this});
}
}.bind(this),
onEnd:function(eventName,draggable,event){
if(draggable==this.moveable){
var pos=Position.cumulativeOffset(this.dContainer);
if(this.options.debug)this.setStatus('x: '+pos[0]+' y: '+pos[1],true);
Dialogs._notify('onDragEnd',{sender:this});
}
}.bind(this)
}
Draggables.addObserver(this.moveableObserver);
},
_resize:function(event){
if(this.options.isResizing)
this.options.isResizing='';
Event.observe(document,'mousemove',Dialogs.eventMouseMove);
Event.stopObserving(document,"mouseup",Draggables.eventMouseUp);
Event.observe(document,'mouseup',this.dBtnResizeUp);
if(Event.isLeftClick(event)){
this.top();
this.sDim=[Element.getDimensions(this.dContainer).width,Element.getDimensions(this.dContainer).height];
this.sPos=[Event.pointerX(event),Event.pointerY(event)];
this.boolResize=true;
}
},
_updateResize:function(pointer){
if(this.boolResize){
var w=Math.max(this.options.mwidth,this.sDim[0]+pointer[0]-this.sPos[0]);
var h=Math.max(this.options.mheight,this.sDim[1]+pointer[1]-this.sPos[1]);
this.resize(w,h,false);
if(this.options.debug)this.setStatus(w+' x '+Element.getDimensions(this.dContainer).height+'px');
};
},
_endResize:function(event){
if(this.boolResize){
this.boolResize=false;
this.boolMaximize=false;
this.clearStatus(true);
}
this.options.isResizing='end';
var w=Element.getDimensions(this.dContainer).width;
var h=Element.getDimensions(this.dContainer).height;
this.resize(w,h,false);
Event.stop(event);
Event.stopObserving(document,'mousemove',Dialogs.eventMouseMove);
Event.stopObserving(document,'mouseup',this.dBtnResizeUp);
Event.observe(document,"mouseup",Draggables.eventMouseUp);
},
_close:function(){
if(this.options.modal)Element.hide(Dialogs.dModal);
if(this.boolMinimize){
this.boolMinimize=false;
Element.show(this.dContentWrap);
};
this._unregisterDialog();
},
_unregisterDialog:function(){
if(this.options.remove)this._stopObservers();
Dialogs._unregisterDialog(this);
},
_stopObservers:function(){
Event.stopObserving(this.dContainer,'click',this.dContainerClick);
Event.stopObserving(this.dContainer,'mouseover',this.dContainerHover);
Event.stopObserving(this.dTitle,'focus',this.dTitleFocus);
Event.stopObserving(this.dTitle,'mousedown',this.dContainerClick);
Event.stopObserving(this.dBtnExpand,'click',this.dBtnExpandClick);
Event.stopObserving(this.dBtnMaximize,'click',this.dBtnMaximizeClick);
Event.stopObserving(this.dBtnClose,'click',this.dBtnCloseClick);
Event.stopObserving(this.dBtnResize,'mousedown',this.dBtnResizeClick);
Event.stopObserving(this.dBtnResize,'mouseup',this.dBtnResizeUp);
this.dContainerClick=null;
this.dContainerHover=null;
this.dTitleFocus=null;
this.dContainerClick=null;
this.dBtnExpandClick=null;
this.dBtnMaximizeClick=null;
this.dBtnCloseClick=null;
this.dBtnResizeClick=null;
this.dBtnResizeUp=null;
if(this.options.moveable){
Draggables.observers=Draggables.observers.reject(function(o){return o==this.moveableObserver}.bind(this));
Draggables.unregister(this.moveable);
}
},
_unhide:function(){
Element.setStyle(this.dContainer,{visibility:'hidden',display:'block'});
},
_hide:function(){
Element.setStyle(this.dContainer,{visibility:'visible',display:'none'});
},
_position:function(){
this._unhide();
if(Dialogs.boolFirst==true){
Dialogs.boolFirst=false;
var pos=Position.cumulativeOffset(this.dContainer);
Dialogs.pos[0]=pos[0];
Dialogs.pos[1]=pos[1];
}else{
Dialogs.pos[0]=(Dialogs.pos[0]+Dialogs.dTitleOffset);
Dialogs.pos[1]=(Dialogs.pos[1]+Dialogs.dTitleOffset);
var dim=Element.getDimensions(document.body);
var cDim=Element.getDimensions(this.dContainer);
if(Dialogs.pos[0]>(dim.width-cDim.width))
Dialogs.pos[0]=(Dialogs.pos[0]-200)+Dialogs.dTitleOffset;
if(Dialogs.pos[1]>(dim.height-cDim.height))
Dialogs.pos[1]=(Dialogs.pos[1]-200)+Dialogs.dTitleOffset;
this.move(Dialogs.pos[0],Dialogs.pos[1],false);
}
this._hide();
},
_sizeFrame:function(){
},
_focus:function(event){
var element=Event.element(event);
if(element.nodeName=='INPUT')element.blur();
Event.stop(event);
},
_hover:function(event){
var element=Event.element(event);
var msg;
if(element==this.dBtnExpand){
msg=Dialogs.messages.msgMinimize;
}else if(element==this.dBtnMaximize){
msg=Dialogs.messages.msgMaximize;
}else if(element==this.dBtnClose){
msg=Dialogs.messages.msgClose;
}else if(element==this.dBtnResize&&!this.boolResize){
msg=Dialogs.messages.msgResize;
}else{
return false;
}
if(msg.length>0&&this.options.debug)this.setStatus(msg,true);
Event.stop(event);
},
_chkLimitPos:function(posX,posY){
var minX,minY,maxX,maxY;
minY=0;
if(this.options.limit){
minX=0;
maxX=(Element.getDimensions(document.body).width-Element.getDimensions(this.dContainer).width);
maxY=(Element.getDimensions(document.body).height-Element.getDimensions(this.dContainer).height);
posX=(posX<minX)?minX:(posX>maxX)?maxX:posX;
posY=(posY<minY)?minY:(posY>maxY)?maxY:posY;
}else{
minX=(Dialogs.dTitleOffset-Element.getDimensions(this.dContainer).width);
if(Element.getStyle(document.body,'overflow')=='hidden'){
maxX=(Element.getDimensions(document.body).width-Dialogs.dTitleOffset);
maxY=(Element.getDimensions(document.body).height-Dialogs.dTitleOffset);
posX=(posX<minX)?minX:(posX>maxX)?maxX:posX;
posY=(posY<minY)?minY:(posY>maxY)?maxY:posY;
}else{
posX=(posX<minX)?minX:posX;
posY=(posY<minY)?minY:posY;
}
}
return[posX,posY];
},
_createHTML:function(type){
var obj=null;
if(type=='iframe'){
if(Dialogs.isIE){
obj=document.createElement('IFRAME');
obj.frameborder=0;
Element.setStyle(obj,{border:0+'px',position:'absolute',backgroundColor:'#ffffff',top:0+'px',left:0+'px',zIndex:-1});
this.dContainer.insertBefore(obj,this.dTitle);
}
}else if(type=='dialog'){
var spacer=Dialogs.path+Dialogs.themeRoot+'/'+this.options.theme+'/spacer.gif';
obj=Builder.node('div',{className:'dContainer',style:'display: none'});
obj.innerHTML="<DIV class=dTitle>"+
"       <TABLE class=dTitleTable cellpadding=\"0\" cellspacing=\"0\" style=\"width:100%;\">"+
"           <tr>"+
"               <td class=dTitleTdLeft></td>"+
"               <td class=dTitleTdCenter>"+
"                   <SPAN></SPAN>"+
"                   <DIV class=dTitleBtn><INPUT class=dBtnExpand onmouseover=\"this.className='dBtnExpand2'\" onmouseout=\"this.className='dBtnExpand'\" type=image src=\""+spacer+"\"><INPUT class=dBtnMaximize onmouseover=\"this.className='dBtnMaximize2'\" onmouseout=\"this.className='dBtnMaximize'\" type=image src=\""+spacer+"\"><INPUT class=dBtnClose onmouseover=\"this.className='dBtnClose2'\" onmouseout=\"this.className='dBtnClose'\" type=image src=\""+spacer+"\">"+
"                   </DIV>"+
"               </td>"+
"               <td class=dTitleTdRight></td>"+
"           </tr>"+
"       </TABLE>"+
"   </DIV>"+
"   <DIV class=dContentWrap>"+
"       <TABLE class=dContentTable cellpadding=\"0\" cellspacing=\"0\" style=\"width:100%;\">"+
"           <tr>"+
"               <td class=dContentTdBorder></td>"+
"               <td class=dContentTdCenter>"+
"                   <DIV class=dContent>"+
"                       <DIV>."+
"                       </DIV>"+
"                   </DIV>"+
"               </td>"+
"               <td class=dContentTdBorder></td>"+
"           </tr>"+
"       </TABLE>"+
"       <DIV class='"+((this.options.statusbar)?'dStatus':'dStatus hide')+"'>"+
"          <TABLE class=dStatusTable cellpadding=\"0\" cellspacing=\"0\">"+
"               <tr>"+
"                   <td class=dStatusTdLeft></td>"+
"                   <td class=dStatusTdCenter>"+
"                       <SPAN></SPAN>"+
"                       <DIV class=dBtnResize></DIV>"+
"                   </td>"+
"                   <td class=dStatusTdRight></td>"+
"               </tr>"+
"           </TABLE>"+
"       </DIV>"+
"   </DIV>";
var node=document.body.firstChild;
node=(node.nodeType==3)?node.nextSibling:node;
document.body.insertBefore(obj,node);
}
return obj;
},
show:function(t){
if(this.boolVisible)return false;
this.boolVisible=true;
Dialogs._notify('onShow',{sender:this});
if(t)this.top();
if(this.options.modal&&(!t))this.top();
(this.options.effects)?Effect.Appear(this.dContainer):Element.show(this.dContainer);
},
open:function(t){
this.show(t);
},
close:function(event){
if(!this.boolVisible)return false;
this.boolVisible=false;
Dialogs._notify('onClose',{sender:this});
if(this.options.effects){
Effect.Fade(this.dContainer,{
afterFinish:function(){
this._close();
}.bind(this)
});
}else{
Element.hide(this.dContainer);
this._close();
}
if(event)Event.stop(event);
},
hide:function(){
this.close();
},
remove:function(){
if(!this.options.remove)this.options.remove=true;
if(!this.boolVisible)this.boolVisible=true;
this.close();
},
top:function(){
this.currentZIndex=Dialogs._top(this);
Element.setStyle(this.dContainer,{zIndex:(this.currentZIndex)});
if(this.options.modal&&!Element.visible(Dialogs.dModal)){
Element.show(Dialogs.dModal);
if(this.options.debug)this.setStatus(Dialogs.messages.msgModal,true);
}
},
move:function(posX,posY,m){
var pos=this._chkLimitPos(posX,posY);
if(!this.options.show&&Dialogs.dialogs.length>1){
pos=Dialogs._chkDuplicatePos(this,pos[0],pos[1]);
}
Dialogs._notify('onMove',{sender:this});
m=(this.options.effects)?m:false;
if(m==false){
Element.setStyle(this.dContainer,{left:pos[0]+'px',top:pos[1]+'px',marginTop:0+'px',marginLeft:0+'px'});
if(this.options.debug)this.setStatus('x: '+pos[0]+' y: '+pos[1],true);
}else{
new Effect.Move(this.dContainer,{x:pos[0],y:pos[1],mode:'absolute',
afterFinish:function(){
if(this.options.debug)this.setStatus('x: '+pos[0]+' y: '+pos[1],true);
}.bind(this)
});
}
},
position:function(posX,posY){
this.move(posX,posY,false);
},
center:function(m){
var posX=parseInt((Element.getDimensions(document.body).width-Element.getDimensions(this.dContainer).width)/2);
var posY=parseInt((Element.getDimensions(document.body).height-Element.getDimensions(this.dContainer).height)/2);
this.move(posX,posY,m);
},
centerX:function(m){
var pos=Position.cumulativeOffset(this.dContainer);
var posX=parseInt((Element.getDimensions(document.body).width-Element.getDimensions(this.dContainer).width)/2);
var posY=pos[1];
this.move(posX,posY,m);
},
centerY:function(m){
var pos=Position.cumulativeOffset(this.dContainer);
var posX=pos[0];
var posY=parseInt((Element.getDimensions(document.body).height-Element.getDimensions(this.dContainer).height)/2);
this.move(posX,posY,m);
},
resize:function(w,h,m){
if(!this.boolVisible){
this._unhide();
m=false;
}
this.options.mheight=(this.options.mheight<(Dialogs.dTitleOffset+Element.getHeight(this.dStatus))?(Dialogs.dTitleOffset+Element.getHeight(this.dStatus)):this.options.mheight);
m=(this.options.effects)?m:false;
var h=(Element.getDimensions(this.dContent).height-((Element.getDimensions(this.dContainer).height-h)));
if(m==false){
Element.setStyle(this.dContainer,{width:w+'px'});
Element.setStyle(this.dContent,{height:h+'px',width:(w-2)+'px'});
Element.setStyle(this.dContentWrap,{height:(h+Element.getDimensions(this.dStatus).height)+'px'});
if(Dialogs.isIE)this._sizeFrame();
if(!this.boolResize){
if(this.options.debug)this.setStatus(w+' x '+h+'px',true);
}
}else{
Element.setStyle(this.dContentWrap,{height:'auto'});
var pos=Position.cumulativeOffset(this.dContainer);
new Effect.MoveAndResizeTo(this.dContainer,this.dContent,pos[0],pos[1],w,h,{
queue:'front',
afterFinish:function(){
if(Dialogs.isIE)this._sizeFrame();
if(this.options.debug)this.setStatus(w+' x '+h+'px',true);
}.bind(this)
});
}
if(!this.boolVisible){
this._hide();
}
Dialogs._notify('onResize',{sender:this});
},
maximize:function(event){
if(!this.boolVisible)return false;
this.top();
if(this.boolMaximize){
var w=this.sDim[0];
var h=this.sDim[1];
var posX=this.sPos[0];
var posY=this.sPos[1];
}else{
if(!this.boolMinimize){
this.sDim=[Element.getDimensions(this.dContainer).width,Element.getDimensions(this.dContainer).height];
}
this.sPos=Position.cumulativeOffset(this.dContainer);
var w=parseInt(Element.getDimensions(document.body).width);
var h=parseInt(Element.getDimensions(document.body).height);
var posX=0;
var posY=0;
}
if(this.boolMinimize){
Element.setStyle(this.dContentWrap,{display:''});
this.boolMinimize=false;
Element.setStyle(this.dBtnExpand,{backgroundPosition:'0px 0px'});
}
Element.setStyle(this.dContentWrap,{height:'auto'});
var offset=(Dialogs.dTitleOffset+Element.getHeight(this.dStatus));
if(this.options.effects){
new Effect.MoveAndResizeTo(this.dContainer,this.dContent,posX,posY,w,(h-offset),{
queue:'front',
afterFinish:function(){
if(Dialogs.isIE)this._sizeFrame();
if(this.options.debug)this.setStatus('x: '+posX+' y: '+posY+' | '+w+' x '+h+'px',true);
}.bind(this)
});
}else{
this.resize(w,h,false);
this.position(posX,posY);
}
this.boolMaximize=(this.boolMaximize)?false:true;
Dialogs._notify('onMaximize',{sender:this});
if(event)Event.stop(event);
},
minimize:function(event){
if(!this.boolVisible)return false;
this.top();
if(!this.boolMinimize)this.sDim=[Element.getDimensions(this.dContainer).width,Element.getDimensions(this.dContainer).height];
if(this.options.effects){
Effect.toggle(this.dContentWrap,'blind',{
queue:'front',
afterFinish:function(){
this.boolMinimize=(Element.visible(this.dContentWrap))?false:true;
(this.boolMinimize)?Element.setStyle(this.dBtnExpand,{backgroundPosition:'0px 0px'}):Element.setStyle(this.dBtnExpand,{backgroundPosition:'0px 0px'});
Dialogs._notify('onMinimize',{sender:this});
}.bind(this)
});
}else{
Element.toggle(this.dContentWrap);
this.boolMinimize=(Element.visible(this.dContentWrap))?false:true;
(this.boolMinimize)?Element.setStyle(this.dBtnExpand,{backgroundPosition:'0px 0px'}):Element.setStyle(this.dBtnExpand,{backgroundPosition:'0px 0px'});
Dialogs._notify('onMinimize',{sender:this});
}
if(event)Event.stop(event);
},
visible:function(){
return this.boolVisible;
},
setTitle:function(str){
Element.update(this.dTitleText,str);
if(this.options.debug)this.setStatus(Dialogs.messages.msgSetTitle,true);
},
clearTitle:function(){
Element.update(this.dTitleText,'');
if(this.options.debug)this.setStatus(Dialogs.messages.msgClearTitle,true);
},
addContent:function(str){
this.setContent(str);
},
setContent:function(str){
Dialogs._notify('onBeforeContent',{sender:this});
Element.update(this.dContentText,str);
if(this.options.debug)this.setStatus(Dialogs.messages.msgSetContent,true);
Dialogs._notify('onAfterContent',{sender:this});
},
clearContent:function(){
Element.update(this.dContentText,'');
if(this.options.debug)this.setStatus(Dialogs.messages.msgClearContent,true);
},
prependContent:function(str){
new Insertion.Top(this.dContentText,str);
if(this.options.debug)this.setStatus(Dialogs.messages.msgPrependContent,true);
},
appendContent:function(str){
new Insertion.Bottom(this.dContentText,str);
if(this.options.debug)this.setStatus(Dialogs.messages.msgAppendContent,true);
},
setStatus:function(str,boolFade){
if(!this.options.statusbar)return false;
if(this.currentEffect){
this.currentEffect.cancel();
Element.setOpacity(this.dStatusText,1);
}
Element.update(this.dStatusText,str);
if(boolFade)this.clearStatus(boolFade);
},
clearStatus:function(boolFade){
if(!this.options.statusbar)return false;
if(boolFade){
if(this.currentEffect){
this.currentEffect.cancel();
}
}else{
Element.update(this.dStatusText,'');
}
},
setTheme:function(theme){
Element.removeClassName(this.dContainer,this.options.theme);
if(Dialogs.themes.detect(function(t){return t==theme;})){
this.options.theme=theme;
}else{
this.options.theme=Dialogs.defaultTheme;
}
Element.addClassName(this.dContainer,this.options.theme);
},
getTheme:function(){
return this.options.theme;
},
scrollbar:function(o){
o=(o=='hidden'||o=='auto'||o=='scroll')?o:'hidden';
Element.setStyle(this.dContent,{overflow:o});
if(this.options.debug)this.setStatus(Dialogs.messages.msgScrollbar+': '+o,true);
}
});


/*Dialog end*/









/*MessengerFX*/
var Browser=new Object();
var ua=navigator.userAgent.toLowerCase();
Browser.Mozilla=(typeof document.implementation!='undefined')&&(typeof document.implementation.createDocument!='undefined')&&(typeof HTMLDocument!='undefined');
Browser.IE=window.ActiveXObject?true:false;
Browser.Firefox=(ua.indexOf("firefox")!=-1);
Browser.Safari=(ua.indexOf("safari")!=-1);
Browser.Opera=(typeof window.opera!='undefined');
var windowState = 'active';
    if (Browser.IE) {
            document.onfocusout = function(e) {
            windowState = 'deactive';
        }
    }
    else {
        Event.observe(window, "blur", function() {
            windowState = 'deactive';
        });
    }
    
Event.observe(window,'focus',clearTitle,false);
Event.observe(document,'click',clearTitle,false);
var MyContacts=null;
window.onbeforeunload=function()
{
if($('ctl00_CphMain_hidChatWindow'))
{
$('ctl00_CphMain_hidChatWindow').value='';
$('ctl00_CphMain_hidWindow').value='';
}
if(mfx.isSignedIn==true)
return UnLoadMessage;
}
var previousPage='';
function myTracker(page,id)
{if(page=='ads1')alert(1);
if(page!=''&&page==previousPage&&id=='UA-94276-10')
return false;
previousPage=page;
try
{
_uacct="UA-94276-8";
if(page!='/main/changeContact'&&page!='/main/getContactList'&&page!='/main/chatMinimize')
urchinTracker(page);
}
catch(exception){}
}
var r=0;
var newMessageLoop=new Array();
var tit=0;
var cbMessengerState;
function createMessenger()
{
var messenger=new Messenger(null,{modal:false,remove:false,closeable:false,maximizable:false,width:225,height:Element.getDimensions(document.body).height-50,mwidth:200,mheight:250,debug:false,onResize:messengerOnResize,id:'Messenger',onMinimize:chatWindowMinimize});
messenger.hide();
messenger.position(Element.getDimensions(document.body).width-230,35);
messenger.setContent($('MPart').innerHTML);
Element.remove($('MPart'));
cbMessengerState=new ComboBox('cbMessengerState');
cbMessengerState.add(new ComboBoxItem(sOnline,'3'),
new ComboBoxItem(sBusy,'5'),
new ComboBoxItem(sBRB,'6'),
new ComboBoxItem(sAway,'4'),
new ComboBoxItem(sPhone,'8'),
new ComboBoxItem(sLunch,'7'),
new ComboBoxItem(sHidden,'2'));
Element.setStyle(cbMessengerState.txtview,{width:38+'px'});
cbMessengerState.choose('Online','Online');
cbMessengerState.chooseEnd=function(realval,txtval)
{
mfx.setMessengerState(realval);
}
$('divMessengerState').appendChild(cbMessengerState.view);
messenger.setTitle($('divHeader').innerHTML);
Event.observe(window,'resize',messenger.windowResize);
try{
Element.setStyle($('divContactList'),{height:(Element.getDimensions(messenger.dContent).height-(Element.getDimensions($('divStatus')).height+125))+'px'});
}catch(ex){}
chatWindows.push(messenger);
myTracker('/main/ws/' + Element.getDimensions(document.body).width + 'x' + Element.getDimensions(document.body).height, 'UA-94276-9');
return messenger;
}
var Messenger=Class.create();
Object.extend(Object.extend(Messenger.prototype,Dialog.prototype),{
mState:false,
intervalCode:0,
interval:2000,
isSignedIn:false,
isChanged:false,
isCalledContactList:false,
isConnecting:false,
sound:true,
invisible:false,
messages:null,
status:new Object(),
ownerName:'',
ownerMail:'',
ownerNameEditing:false,
errorCount:0,
onListStatus:'',
offListStatus:'none',
contactList:null,
settings:null,
saveSettings:function()
{
var ht=$H(mfx.settings);
data=ht.toQueryString();
AjaxServices.MessengerFX.SaveSettings
(
data,
onComplete=function(result)
{
},
onError=function(result){showMessage('Error',result.get_message()+' \r\n- throwed by saveSettings_OnError');}
);
},
getSettings:function()
{
AjaxServices.MessengerFX.GetSettings(mfx.getSettings_OnComplete,mfx.getSettings_OnError);
},
getSettings_OnComplete:function(result)
{
mfx.settings=result.toQueryParams();
if(mfx.settings!=null)
{
mfx.settings.Color=unescape(mfx.settings.Color);
if(mfx.settings.Color=='')
mfx.settings.Color='#000000';
if(mfx.settings.Font=='')
mfx.settings.Font='Arial';
if(mfx.settings.FontSize==''||mfx.settings.FontSize==0)
mfx.settings.FontSize=10;
if(mfx.settings.Bold==''||mfx.settings.Bold=='false')
mfx.settings.Bold=false;
if(mfx.settings.Italic==''||mfx.settings.Italic=='false')
mfx.settings.Italic=false;
if(mfx.settings.Underline==''||mfx.settings.Underline=='false')
mfx.settings.Underline=false;
if(mfx.settings.ChatX==''||mfx.settings.ChatX==0)
mfx.settings.ChatX=275;
if(mfx.settings.ChatY==''||mfx.settings.ChatY==0)
mfx.settings.ChatY=300;
if(mfx.settings.UserImage=='ok')
mfx.getOwnerImage();
}
},
getSettings_OnError:function(result)
{
showMessage('Error',result.get_message()+' \r\n- throwed by getSettings_OnError');
},
windowResize:function()
{
if(!mfx.boolVisible)
return false;
var w=Math.max(mfx.options.mwidth,Element.getDimensions(mfx.dContainer).width);
var h=Math.max(mfx.options.mheight,Element.getDimensions(document.body).height-50);
mfx.resize(w,h,false);
mfx.position(Element.getDimensions(document.body).width-(Element.getDimensions(mfx.dContainer).width+5),35);
if(Element.getDimensions(mfx.dContent).height>Element.getDimensions($('divStatus')).height)
{
if(mfx.isSignedIn)
Element.setStyle($('divContactList'),{height:(Element.getDimensions(mfx.dContent).height-(Element.getDimensions($('divStatus')).height+60))+'px'});
else
Element.setStyle($('divContactList'),{height:(Element.getDimensions(mfx.dContent).height-(Element.getDimensions($('divStatus')).height+125))+'px'});
}
},
setSound:function(sender)
{
$('chkSound').checked=sender.checked;
$('chkSound1').checked=sender.checked;
mfx.sound=sender.checked;
},
setInvisible:function(sender)
{
$('chkInvisible').checked=sender.checked;
mfx.invisible=sender.checked;
},
signIn:function(uid,pwd)
{
try
{
if(uid==''||pwd=='')
return false;
mfx.isConnecting=true;
Element.hide('divMNormal');
Element.show('divMConnecting');
Element.show('divMConnecting2');
$('spnLoginMessage').innerHTML='&nbsp;';
$('mp1_txtUid').value=uid;
$('mp1_txtPwd').value=pwd;
initKey();
pwd=encryptedString(key,base64encode(pwd));
mfx.isSignedIn=false;
mfx.ownerMail=uid;
first=2;
AjaxServices.MessengerFX.GetMessenger(String(uid),String(pwd),mfx.invisible,mfx.signIn_OnComplete,mfx.signIn_OnError);
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by SignIn');
}
},
signIn_OnComplete:function(result)
{
try
{
if(!result)
return false;
document.title='MessengerFX.com - Web Messenger';
if(result=="1")
{
if(!mfx.mState)
{
getUserContext();
}
}
else
{
showMessage('Error',ex.message+' \r\n- throwed by signIn_OnComplete');
}
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by signIn_OnComplete');
}
myTracker('/main/signedIn','UA-94276-8');
},
signIn_OnError:function(result)
{
try
{
mfx.stateMessage(AuthenticationFailed);
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by signIn_OnError');
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by signIn_OnError');
}
},
signOutClient:function()
{
try{Element.setStyle($('divContactList'),{height:(Element.getDimensions(mfx.dContent).height-(Element.getDimensions($('divStatus')).height+125))+'px'});}catch(ex){}
try
{
if(mfx.dStatusText.innerHTML!='')
mfx.clearStatus();
Element.show('divLogin');
Element.hide('divStatus');
Element.hide('divFooter');
Element.show('divMNormal');
Element.hide('divMConnecting');
Element.hide('divMConnecting2');
$('mp1_lblmessenger2').innerHTML='';
$('spnLoginMessage').innerHTML='&nbsp;';
mfx.isSignedIn=false;
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by signOutClient');
}
},
stateMessage:function(msg)
{
mfx.signOutClient();
if($('mp1_lblmessenger'))
$('mp1_lblmessenger').innerHTML=msg;
if($('spnLoginMessage'))
$('spnLoginMessage').innerHTML=msg;
},
getState:function()
{
try
{
if(newMessageLoop!=null&&newMessageLoop.length>0)
{
if(tit>newMessageLoop.length-1)
tit=0;
document.title=newMessageLoop[tit];
tit++;
}
AjaxServices.MessengerFX.GetMessengerState(r,mfx.getState_OnComplete,mfx.getState_OnError);
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by getState',{pageDebug:false});
}
},
getState_OnComplete:function(result)
{
try
{
if(!result)
{
r++;
return false;
}
r=0;
mfx.isSignedIn=result[0]=='True'?true:false;
mfx.status=result[1];
if(mfx.messages!=null&&result[2]!=null)
{
result[2].each(function(msg)
{
mfx.messages.push(msg);
});
}
else
{
mfx.messages=result[2]==null?mfx.messages:result[2];
}
mfx.ownerName=result[3]==''?mfx.ownerName:result[3];
if(mfx.isSignedIn)
{
if(mfx.dStatusText.innerHTML=='')
mfx.setStatus($('divFooter').innerHTML);
mfx.isConnecting=false;
if(newMessageLoop=='')
document.title='MessengerFX.com - Web Messenger';
mfx.errorCount=0;
if($('divStatus').style.display!='')
{
if($('mp1_lblmessenger'))
mfx.isChanged=true;
}
Element.hide('divLogin');
Element.show('divStatus');
ShowPage();
if(mfx.ownerName!=''&&!mfx.ownerNameEditing)
{
$('txtOwnerName').value=mfx.ownerName;
$('txtOwnerName').title=mfx.ownerName;
}
if(mfx.status!=null&&mfx.status.length>0)
{
var i=mfx.status.length-1;
for(;i>=0;i--)
{
var current=mfx.status[i];
switch(current)
{
case'Changed':
if($('mp1_lblmessenger'))
mfx.isChanged=true;
break;
case'NewMessage':
if(mfx.messages!=null)
mfx.showChatMessage();
break;
case'Requested':
break;
case'Invited':
break;
case'Off':
mfx.stateMessage(AuthenticationFailed);
break;
case'Connecting failed':
mfx.stateMessage(ConnFailedMessage);
break;
case'InvalidParameter':
showMessage('Error','Invalid Mail!');
break;
case'UserListFull':
showMessage('Error','Contact list full!');
break;
default:
if(current.User)
{
mfx.changeUserDetails(current);
}
else if(current[0]!=null&&current[0]=='ImageReceived')
{
var randomId=Math.round(100*Math.random());
$('imgContact'+current[2]).src='getimage.aspx?t=contact&c='+current[1]+'&id='+randomId;
}
else if(current[0]!=null&&current[0]=='SettingsReceived')
{
mfx.getSettings_OnComplete(current[1]);
mfx.getSettings();
}
break;
}
}
}
if(mfx.isChanged)
{
mfx.getContactList();
mfx.isChanged=false;
}
}
else
{
if(!mfx.isSignedIn&&!mfx.isConnecting)
{
document.title=OfflineMessage;
}
mfx.errorCount++;
if(mfx.errorCount>5)
{
if(!mfx.isSignedIn&&!mfx.isConnecting)
{
mfx.signOutClient();
}
if(mfx.errorCount>20)
{
mfx.errorCount=0;
if(!mfx.isSignedIn&&!mfx.isConnecting)
{
mfx.signOutClient();
mfx.signIn($F('mp1_txtUid'),$F('mp1_txtPwd'));
}
}
}
if(mfx.status!=null&&mfx.status.length>0)
{
for(i=mfx.status.length-1;i>=0;i--)
{
var current=mfx.status[i];
switch(current)
{
case'Changed':
if($('mp1_lblmessenger'))
mfx.isChanged=true;
break;
case'Off':
mfx.stateMessage(AuthenticationFailed);
break;
case'SignedinElsewhere':
mfx.stateMessage(ElseWhereMessage);
break;
case'None':
if(!mfx.isConnecting)
{
mfx.signOutClient();
}
break;
case'ServerShutDown':
mfx.stateMessage(AuthenticationFailed);
mfx.signIn($F('mp1_txtUid'),$F('mp1_txtPwd'));
break;
case'Connecting failed':
mfx.stateMessage(ConnFailedMessage);
break;
case'Authentication failed':
mfx.stateMessage(AuthenticationFailed);
break;
case'AuthenticationFailed':
mfx.stateMessage(AuthenticationFailed);
break;
case'ServerIsUnavailable':
mfx.stateMessage('MSN Server Is Unavailable');
break;
default:
if(current!='')
{
mfx.signOutClient();
if($('mp1_lblmessenger')&&current!='None'&&typeof(current)=='string')
$('mp1_lblmessenger').innerHTML=current;
}
break;
}
}
}
}
mfx.mState=true;
if(mfx.intervalCode==''||mfx.intervalCode==0)
{
mfx.mState=false;
}
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by getState_OnComplete',{pageDebug:false});
}
mfx.status=new Object();
},
getState_OnError:function(result)
{
try
{
mfx.errorCount++;
if(mfx.errorCount>10)
{
mfx.errorCount=0;
mfx.signOutClient();
if(!mfx.isSignedIn&&!mfx.isConnecting)
{
mfx.signIn($F('mp1_txtUid'),$F('mp1_txtPwd'));
}
}
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by getState_OnError1',{pageDebug:false});
errCount--;
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by getState_OnError2',{pageDebug:false});
}
},
changeUserDetails:function(current)
{
if(MyContacts==null||typeof(MyContacts)=='undefined')
return mfx.getContactList();
try
{
if(MyContacts.Users[current.User]&&current.Status=='Changed')
{
loadContent(current.UserDetail,'cContact');
MyContacts.Users[current.User]=cContact.Users[current.User];
MyContacts.OnlineView=$('divOnline').style.display;
MyContacts.OfflineView=$('divOffline').style.display;
mfx.contactList=mfx.createContactList();
$('mp1_lblmessenger2').innerHTML='';
$('mp1_lblmessenger2').appendChild(mfx.contactList);
myTracker('/main/changeContact','UA-94276-8');
}
else if(current.Status=='Changed')
{
mfx.getContactList();
}
}
catch(exception)
{
mfx.getContactList();
}
},
getContactList:function()
{
try
{
if(mfx.isCalledContactList)
return false;
mfx.isCalledContactList=true;
AjaxServices.MessengerFX.GetContactList(mfx.onListStatus,mfx.offListStatus,mfx.getContactList_OnComplete,mfx.getContactList_OnError);
}
catch(ex)
{
mfx.isCalledContactList=false;
showMessage('Error',ex.message+' \r\n- throwed by getContactList',{pageDebug:false});
}
},
getContactList_OnComplete:function(result)
{
try
{
mfx.isCalledContactList=false;
if(!result)
return false;
Element.setStyle($('divContactList'),{height:(Element.getDimensions(mfx.dContent).height-(Element.getDimensions($('divStatus')).height+60))+'px'});
if(result[1]>0)
{
Element.show('divMLoading');
Element.hide('divMConnecting');
Element.hide('divMNormal');
eval(result[0]);
mfx.contactList=mfx.createContactList();
$('mp1_lblmessenger2').innerHTML='';
$('mp1_lblmessenger2').appendChild(mfx.contactList);
myTracker('/main/bl/' + (parseInt(MyContacts.OnlineCount) + parseInt(MyContacts.OfflineCount)), 'UA-94276-9');
                    myTracker('/main/bl_off/' + MyContacts.OfflineCount, 'UA-94276-9');
}
else
{
mfx.isChanged=true;
}
if(result[2]!='')
{
mfx.getWindow('Confirm',result[2]);
}
}
catch(ex)
{
mfx.isCalledContactList=false;
showMessage('Error',ex.message+' \r\n- throwed by getContactList_OnComplete',{pageDebug:false});
}
myTracker('/main/getContactList','UA-94276-8');
result=null;
},
getContactList_OnError:function(result)
{
try
{
mfx.isCalledContactList=false;
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by getContactList_OnError1',{pageDebug:false});
}
catch(ex)
{
mfx.isCalledContactList=false;
showMessage('Error',ex.message+' \r\n- throwed by getContactList_OnError2',{pageDebug:false});
}
},
createContactList:function()
{
if(MyContacts==null||typeof(MyContacts)=='undefined')
return document.createElement('div');


var divOnline=document.createElement('div');
divOnline.id='divOnline';
divOnline.style.display=MyContacts.OnlineView;
var divOffline=document.createElement('div');
divOffline.id='divOffline';
divOffline.style.display=MyContacts.OfflineView;
var offlineCount=0;
var onlineCount=0;
for(var i in MyContacts.Users)
{
if(MyContacts.Users[i]==null)continue;
var pass=i;
if(MyContacts.Users[i].IsOnline=='True')
{
onlineCount++;
}
else
{
offlineCount++;
}
var uImg=document.createElement('img');
uImg.id='img'+pass;
uImg.title=MyContacts.Users[i].Status;
uImg.style.marginRight='1px';
uImg.setAttribute('align','top');
uImg.src='App_Themes/'+MyContacts.Theme+'/images/msn/'+MyContacts.Users[i].Img+'.gif';
var uDetail=document.createElement('div');
uDetail.className='mUserDetailDiv';
uDetail.title=MyContacts.Users[i].Name+' ('+MyContacts.Users[i].Status+')  <'+MyContacts.Users[i].Mail+'>';
uDetail.appendChild(uImg);
uDetail.appendChild(document.createTextNode(unescape(MyContacts.Users[i].Name)));
var divBlock=document.createElement('div');
divBlock.id='dvBlock'+pass;
divBlock.style.display='none';
divBlock.className='mDivBlock';
var aMessage=document.createElement('a');
aMessage.setAttribute('bId',i);
aMessage.appendChild(document.createTextNode(MyContacts.Messages.Message));
aMessage.onclick=function(){
var id=this.getAttribute('bId');
mfx.getChatWindow(id,MyContacts.Users[id].Mail,MyContacts.Users[id].Name,MyContacts.OwnerMail,MyContacts.OwnerName,true);
};
var aBlock=document.createElement('a');
aBlock.setAttribute('bId',i);
if(MyContacts.Users[i].IsBlocked=='True')
{
aBlock.appendChild(document.createTextNode(MyContacts.Messages.UnBlock));
aBlock.onclick=function(){
var id=this.getAttribute('bId');
mfx.blockUser(MyContacts.Users[id].Mail,'2');
};
}
else
{
aBlock.appendChild(document.createTextNode(MyContacts.Messages.Block));
aBlock.onclick=function(){
var id=this.getAttribute('bId');
mfx.blockUser(MyContacts.Users[id].Mail,'1');
};
}
var aRemove=document.createElement('a');
aRemove.setAttribute('bId',i);
aRemove.appendChild(document.createTextNode(MyContacts.Messages.Remove));
aRemove.onclick=function(){
var id=this.getAttribute('bId');
mfx.removeUser(MyContacts.Users[id].Mail);
};
divBlock.appendChild(aMessage);
divBlock.appendChild(document.createTextNode(' | '));
divBlock.appendChild(aBlock);
divBlock.appendChild(document.createTextNode(' | '));
divBlock.appendChild(aRemove);
var user=document.createElement('div');
user.id=pass;
user.className='mUserDiv';
user.onselectstart=function(){return false;};
user.onmouseover=function(){this.className='mUserDivOver';};
user.onmouseout=function(){this.className='mUserDiv';};
user.ondblclick=function(){
var id=this.id;
mfx.getChatWindow(id,MyContacts.Users[id].Mail,MyContacts.Users[id].Name,MyContacts.OwnerMail,MyContacts.OwnerName,true);
$('dvBlock'+id).style.display='none';
$(id).style.height='20px';
};
user.onclick=function(){
var id=this.id;
if($('dvBlock'+id).style.display=='')
{
$('dvBlock'+id).style.display='none';
$(id).style.height='20px';
}
else
{
$('dvBlock'+id).style.display='';
$(id).style.height='40px';
}
};
user.appendChild(uDetail);
user.appendChild(divBlock);
if(MyContacts.Users[i].IsOnline=='True')
{
divOnline.appendChild(user);
}
else
{
divOffline.appendChild(user);
}
}
var onMain=document.createElement('div');
onMain.style.cursor='pointer';
onMain.style.fontWeight='bold';
onMain.onclick=function(){mfx.contactListToggle('divOnline','App_Themes/'+MyContacts.Theme+'/images/');};
var onImg=document.createElement('img');
onImg.id='imgdivOnline';
onImg.setAttribute('align','top');
var imgNo='0';
if(MyContacts.OnlineView=='none')
imgNo='1';
onImg.src='App_Themes/'+MyContacts.Theme+'/images/left'+imgNo+'.gif';
var onText=document.createTextNode(MyContacts.Messages.Online+' ('+onlineCount+')');
onMain.appendChild(onImg);
onMain.appendChild(onText);
var offMain=document.createElement('div');
offMain.style.cursor='pointer';
offMain.style.fontWeight='bold';
offMain.onclick=function(){mfx.contactListToggle('divOffline','App_Themes/'+MyContacts.Theme+'/images/');};
var offImg=document.createElement('img');
offImg.id='imgdivOffline';
offImg.setAttribute('align','top');
imgNo='1';
if(MyContacts.OfflineView=='')
imgNo='0';
offImg.src='App_Themes/'+MyContacts.Theme+'/images/left'+imgNo+'.gif';
var offText=document.createTextNode(MyContacts.Messages.Offline+' ('+offlineCount+')');
offMain.appendChild(offImg);
offMain.appendChild(offText);
var list=document.createElement('div');
list.appendChild(onMain);
list.appendChild(divOnline);
list.appendChild(offMain);
list.appendChild(divOffline);
return list;
},
contactListToggle:function(cnt,imgPath)
{
if($(cnt).style.display=='')
{
if(cnt=='trOnline')
{
mfx.onListStatus='none';
}
else
{
mfx.offListStatus='none';
}
$(cnt).style.display='none';
$('img'+cnt).src=imgPath+'left1.gif';
}
else
{
if(cnt=='trOnline')
{
mfx.onListStatus='';
}
else
{
mfx.offListStatus='';
}
$(cnt).style.display='';
$('img'+cnt).src=imgPath+'left0.gif';
}
},
getChatWindow:function(pass,cntMail,cntName,ownerMail,ownerName,focus)
{
var cChat=getChatWindowById(pass);
if(cChat!=null)
{
removeToogle(cChat);
cChat.top();
cChat.show();
if(focus)
$(pass+'cTxtMessage').focus();
return false;
}
AjaxServices.MessengerFX.CreateChatSession
(
cntMail,
onComplete=function(result)
{
},
onError=function(result){showMessage('Error',result.get_message()+' \r\n- throwed by CreateChatSession_OnError');}
);
var chat=new ChatWindow(null,
{
id:pass,
modal:false,
remove:false,
debug:false,
width:mfx.settings.ChatX,
height:mfx.settings.ChatY,
mwidth:220,
mheight:200,
onResize:chatResize,
onActivate:chatWindowActive,
onMinimize:chatWindowMinimize
});
chat.ownerMail=ownerMail;
chat.ownerName=ownerName;
chat.contactMail=cntMail;
chat.contactName=cntName;
chat.setTitle('<div class="mHeader"><span title=\''+chat.contactName+' &#60'+chat.contactMail+'&#62  \'>'+chat.contactName+' <span style=font-size:7pt; >&#60'+chat.contactMail+'&#62</span></span></div>');
chat.create(chat);
if(focus)
$(pass+'cTxtMessage').focus();
return chat;
},
sendMessage:function(pass,message)
{
if(pass==''||message=='')
return false;
var cWindow=getChatWindowById(pass);
if(!cWindow)
return false;
if(message=='$typing$'&&cWindow.typing==true)
return false;
else if(message=='$typing$'&&cWindow.typing!=true)
cWindow.typing=true;
else if(message!='$typing$'&&cWindow.typing==true)
cWindow.typing=false;
var font=new Array(cWindow.fontName,
(cWindow.fontSize-1)+'pt',
cWindow.fontColor,
(cWindow.bold==true?'bold':''),
(cWindow.italic==true?'italic':''),
(cWindow.underline==true?'underline':''));
var snd=document.createElement('span');
snd.innerHTML=''+cWindow.ownerName+' : ';
snd.style.color='#FF6400'
var snd2=document.createElement('span');
snd2.innerHTML=createMessageUrl(message);
Element.setStyle(snd2,
{
fontFamily:font[0],
fontSize:font[1],
color:font[2],
fontWeight:font[3],
fontStyle:font[4],
textDecoration:font[5]
});
var br=document.createElement('br');
var dv=document.createElement('div');
dv.appendChild(snd);
dv.appendChild(snd2);
dv.appendChild(br);
dv.className='sndHistory';
if(message!='$typing$')
{
$(pass+'cSpanHistory').appendChild(dv);
$(pass+'cSpanHistory').innerHTML=mfx.getWithEmotions($(pass+'cSpanHistory').innerHTML);
$(pass+'cDivHistoryBar').scrollTop=$(pass+'cDivHistoryBar').scrollHeight;
$(pass+'cSpanHistory').scrollTop=$(pass+'cSpanHistory').scrollHeight;
$(pass+'cTxtMessage').value='';
$(pass+'cTxtMessage').focus();
}
AjaxServices.MessengerFX.SendMessage(cWindow.ownerMail,cWindow.contactMail,message,font,mfx.sendMessage_OnComplete,mfx.sendMessage_OnError);
if(message!='$typing$')
{
myTracker('/main/send/','UA-94276-9');
}
},
sendMessage_OnComplete:function(result)
{
if(!result)
return false;
if(result[0]!='')
{
var pass=result[1];
var snd=document.createElement('span');
snd.innerHTML=result[0];
snd.style.color='#FF0000';
snd.style.fontWeight='bold';
var br=document.createElement('br');
$(pass+'cSpanHistory').appendChild(snd);
$(pass+'cSpanHistory').appendChild(br);
$(pass+'cSpanHistory').scrollTop=$(pass+'cSpanHistory').scrollHeight;
}
result=null;
},
sendMessage_OnError:function(result)
{
try
{
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by sendMessage_OnError');
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by sendMessage_OnError');
}
},
showChatMessage:function()
{
var message=null;
if(mfx.messages.length>0)
message=mfx.messages.shift();
else
return false;
if(!message)
return false;
var pass=message.Pass;
var cWindow=getChatWindowById(pass);
if((!cWindow||!cWindow.boolVisible)&&message.Text=='$typing$')
{
return false;
}
var aDialog=null;
if(Dialogs.activeDialog!=mfx)
aDialog=Dialogs.activeDialog;
if(!cWindow)
{
cWindow=mfx.getChatWindow(pass,message.SUserPassport,message.SUserNick,message.MyUserPassport,message.MyUserNick,false);
}
removeToogle(cWindow);
cWindow.show();
Element.setStyle(cWindow.dContainer,{zIndex:(cWindow.dContainer.style.zIndex-2)});
if(aDialog)
Dialogs.activeDialog=aDialog;
Dialogs.activeDialog.top();
var news=getChatWindowById('News');
Element.setStyle(news.dContainer,{zIndex:(cWindow.dContainer.style.zIndex-2)});
if(Dialogs.activeDialog!=cWindow&&message.Text!='$typing$')
{
if(cWindow.intervalCode!='')
{
clearInterval(cWindow.intervalCode);
cWindow.setTheme('Default');
}
cWindow.intervalCode=setInterval(function(){cWindow.getTheme()=='green'?cWindow.setTheme('default'):cWindow.setTheme('green');},500);
}
if(message.Text=='$typing$')
{
var typing=document.createElement('span');
typing.appendChild(document.createTextNode(message.SUserPassport+' '+typingMessage));
Element.setStyle(cWindow.dStatus,{fontSize:'7pt'});
cWindow.setStatus(typing.innerHTML);
if(mfx.messages.length>0)
mfx.showChatMessage();
return false;
}
if(mfx.sound)
mySoundObj1a.TGotoAndPlay('/snd1','snd');
var font=new Array(message.Font,'',
'#'+message.Color,
(message.Bold?'bold':''),
(message.Italic?'italic':''),
(message.Underline?'underline':''));
var snd=document.createElement('snap');
newMessageLoop[0]=message.SUserNick;
newMessageLoop[1]='\"'+message.Text+'\"';
newMessageLoop[2]='MessengerFX.com';
snd.innerHTML=''+message.SUserNick+' : ';
snd.style.color='#3C7FB8'
var snd2=document.createElement('snap');
snd2.innerHTML=createMessageUrl(message.Text);
Element.setStyle(snd2,
{
fontFamily:font[0],
color:font[2],
fontWeight:font[3],
fontStyle:font[4],
textDecoration:font[5]
});
var br=document.createElement('br');
var dv=document.createElement('div');
dv.appendChild(snd);
dv.appendChild(snd2);
dv.appendChild(br);
dv.className='sndHistory';
$(pass+'cSpanHistory').appendChild(dv);
$(pass+'cSpanHistory').innerHTML=mfx.getWithEmotions($(pass+'cSpanHistory').innerHTML);
$(pass+'cDivHistoryBar').scrollTop=$(pass+'cDivHistoryBar').scrollHeight;
$(pass+'cSpanHistory').scrollTop=$(pass+'cSpanHistory').scrollHeight;
cWindow.setStatus('');
myTracker('/main/receive/','UA-94276-9');
if(mfx.messages.length>0)
mfx.showChatMessage();
},
setMessengerState:function(d)
{
myTracker('/main/setMessengerState','UA-94276-8');
AjaxServices.MessengerFX.SetMessengerState(d);
},
setOwnerName:function(ownerName)
{
myTracker('/main/setOwnerName','UA-94276-8');
mfx.ownerNameEditing=true;
AjaxServices.MessengerFX.SetOwnerName(ownerName,mfx.setOwnerName_OnComplete,mfx.setOwnerName_OnError);
},
setOwnerName_OnComplete:function(result)
{
mfx.ownerNameEditing=false;
},
setOwnerName_OnError:function(result)
{
try
{
mfx.ownerNameEditing=false;
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by setOwnerName_OnError');
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by setOwnerName_OnError');
}
},
addUser:function(userId)
{
if(userId!=null&&userId!='')
{
AjaxServices.MessengerFX.AddMessengerUser(userId,mfx.addUser_OnComplete,mfx.addUser_OnError);
}
},
addUser_OnComplete:function(result)
{
if(result!='')
showMessage('Error',result);
var aWindow=getChatWindowById('Add');
if(aWindow)
aWindow.hide();
var cWindow=getChatWindowById('Confirm');
if(cWindow)
cWindow.hide();
},
addUser_OnError:function(result)
{
try
{
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by addUser_OnError');
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by addUser_OnError');
}
},
removeUser:function(userId)
{
if(!confirm(String.format(RemoveMessage,userId)))
return;
if(userId!=null&&userId!='')
{
AjaxServices.MessengerFX.RemoveMessengerUser(userId,mfx.removeUser_OnComplete,mfx.removeUser_OnError);
}
},
removeUser_OnComplete:function(result)
{
if(result!='')
showMessage('Error',result);
var rWindow=getChatWindowById('Remove');
if(rWindow)
rWindow.hide();
var cWindow=getChatWindowById('Confirm');
if(cWindow)
cWindow.hide();
},
removeUser_OnError:function(result)
{
try
{
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by removeUser_OnError');
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by removeUser_OnError');
}
},
blockUser:function(userId,mode)
{
if(userId!=null&&userId!='')
{
AjaxServices.MessengerFX.BlockMessengerUser(userId,mode,mfx.blockUser_OnComplete,mfx.blockUser_OnError);
}
},
blockUser_OnComplete:function(result)
{
var rWindow=getChatWindowById('Block');
if(rWindow)
rWindow.hide();
var rWindow=getChatWindowById('UnBlock');
if(rWindow)
rWindow.hide();
result=null;
},
blockUser_OnError:function(result)
{
try
{
if(!result)
return false;
showMessage('Error',result.get_message()+' \r\n- throwed by blockUser_OnError');
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by blockUser_OnError');
}
},
getWindow:function(type,mail)
{
AjaxServices.MessengerFX.GetWindow(type,mail,mfx.getWindow_onComplete);
},
getWindow_onComplete:function(result)
{
var gWindow=getChatWindowById(result[1]);
if(!gWindow)
{
showMessage(result[3],result[0],{id:result[1]});
}
else
{
gWindow.setContent(result[0]);
gWindow.top();
gWindow.show();
}
},
signOut:function()
{
AjaxServices.MessengerFX.SignOut(mfx.signOut_OnComplete);
},
signOut_OnComplete:function(result)
{
clearInterval(mfx.intervalCode);
mfx.mState=false;
mfx.intervalCode='';
//showMessage('Mobile Messenger', '<div style="float:left;"><img src="images/gizmo5.gif" alt="Gizmo5" /></div>'+
//'<div style="float:left;padding:10px;padding-top:25px;">Do IM on your mobile with Gizmo5 - <a onclick="myTracker(\'/main/gizmoClick\', \'UA-94276-8\');" href="http://gizmo5.com/mobile/">www.gizmo5.com</a></div>');
 
// showMessage('Mobile Messenger', '<div style="float:left;width:55px;"><img src="images/gizmo5.gif" alt="Gizmo5" /></div>'+
//                        '<div style="float:left;width:230px;padding:10px;padding-top:25px;">Do IM on your mobile with Gizmo5 - <a onclick="myTracker(\'/main/gizmoClick\', \'UA-94276-8\');" href="http://gizmo5.com/mobile/">www.gizmo5.com</a></div><div style="clear:both"></div>');
//            
// 
showMessage('Mobile Messenger', '<div style="float:left;width:55px;"><img src="images/gizmo5.gif" alt="Gizmo5" /></div>'+
                        '<div style="float:left;width:225px;padding:5px;">Do IM on your mobile with Gizmo5 - <a onclick="myTracker(\'/main/gizmoClick\', \'UA-94276-8\');" href="http://gizmo5.com/mobile/">www.gizmo5.com</a></div><div style="clear:both"></div>');
     
 myTracker('/main/gizmoView', 'UA-94276-8');
      
mfx.signOutClient();
},
onTimeout:function(result)
{
showMessage('Error','Request Time Out!');
},
getWithEmotions:function(message)
{
message=replaceIt(message,':-)','<img alt=Smile src=images/emotions/smile.gif>');
message=replaceIt(message,':)','<img alt=Smile src=images/emotions/smile.gif>');
message=replaceIt(message,':-(','<img alt=Sad src=images/emotions/sad.gif>');
message=replaceIt(message,':(','<img alt=Sad src=images/emotions/sad.gif>');
message=replaceIt(message,':\'(','<img alt=Crying src=images/emotions/cry.gif>');
message=replaceIt(message,':-P','<img alt=Tongue src=images/emotions/tongue.gif>');
message=replaceIt(message,':-p','<img alt=Tongue src=images/emotions/tongue.gif>');
message=replaceIt(message,':P','<img alt=Tongue src=images/emotions/tongue.gif>');
message=replaceIt(message,':p','<img alt=Tongue src=images/emotions/tongue.gif>');
message=replaceIt(message,'(&amp;)','<img alt=Dog src=images/emotions/dog.gif>');
message=replaceIt(message,';-)','<img alt=Wink src=images/emotions/wink.gif>');
message=replaceIt(message,';)','<img alt=Wink src=images/emotions/wink.gif>');
message=replaceIt(message,':@','<img alt=Angry src=images/emotions/angry.gif>');
message=replaceIt(message,':-D','<img alt=Teeth src=images/emotions/teeth.gif>');
message=replaceIt(message,':-d','<img alt=Teeth src=images/emotions/teeth.gif>');
message=replaceIt(message,':D','<img alt=Teeth src=images/emotions/teeth.gif>');
message=replaceIt(message,':d','<img alt=Teeth src=images/emotions/teeth.gif>');
message=replaceIt(message,':-$','<img alt=Embarassed src=images/emotions/red.gif>');
message=replaceIt(message,':$','<img alt=Embarassed src=images/emotions/red.gif>');
message=replaceIt(message,'(A)','<img alt=Angel src=images/emotions/angel.gif>');
message=replaceIt(message,'(a)','<img alt=Angel src=images/emotions/angel.gif>');
message=replaceIt(message,'8-|','<img alt=Nerd src=images/emotions/nerd.gif>');
message=replaceIt(message,'|-)','<img alt=Sleepy src=images/emotions/sleepy.gif>');
message=replaceIt(message,'8-)','<img alt=Eyes src=images/emotions/eyes.gif>');
message=replaceIt(message,':o','<img alt=Surprised src=images/emotions/omg.gif>');
message=replaceIt(message,':O','<img alt=Surprised src=images/emotions/omg.gif>');
message=replaceIt(message,'^o)','<img alt=Sarcastic src=images/emotions/sarcastic.gif>');
message=replaceIt(message,'^O)','<img alt=Sarcastic src=images/emotions/sarcastic.gif>');
message=replaceIt(message,':-|','<img alt=Disapointed src=images/emotions/what.gif>');
message=replaceIt(message,':|','<img alt=Disapointed src=images/emotions/what.gif>');
message=replaceIt(message,'8o|','<img alt=Baring Teeth src=images/emotions/baring.gif>');
message=replaceIt(message,'8O|','<img alt=Baring Teeth src=images/emotions/baring.gif>');
message=replaceIt(message,':s','<img alt=Confused src=images/emotions/confused.gif>');
message=replaceIt(message,':S','<img alt=Confused src=images/emotions/confused.gif>');
message=replaceIt(message,'(6)','<img alt=Devil src=images/emotions/devil.gif>');
message=replaceIt(message,'(h)','<img alt=Hot src=images/emotions/shades.gif>');
message=replaceIt(message,'(H)','<img alt=Hot src=images/emotions/shades.gif>');
message=replaceIt(message,'+o(','<img alt=Sick src=images/emotions/sick.gif>');
message=replaceIt(message,'+O(','<img alt=Sick src=images/emotions/sick.gif>');
message=replaceIt(message,':-#','<img alt=Silence src=images/emotions/silence.gif>');
message=replaceIt(message,'*-)','<img alt=Thinking src=images/emotions/thinking.gif>');
message=replaceIt(message,'(x)','<img alt=Girl src=images/emotions/girl.gif>');
message=replaceIt(message,'(X)','<img alt=Girl src=images/emotions/girl.gif>');
message=replaceIt(message,'(})','<img alt=Girl Hug src=images/emotions/girl_hug.gif>');
message=replaceIt(message,'(z)','<img alt=Boy src=images/emotions/guy.gif>');
message=replaceIt(message,'(Z)','<img alt=Boy src=images/emotions/guy.gif>');
message=replaceIt(message,'({)','<img alt=Boy Hug src=images/emotions/guy_hug.gif>');
message=replaceIt(message,'(L)','<img alt=Heart src=images/emotions/heart.gif>');
message=replaceIt(message,'(l)','<img alt=Heart src=images/emotions/heart.gif>');
message=replaceIt(message,'(u)','<img alt=Broken Heart src=images/emotions/broken_heart.gif>');
message=replaceIt(message,'(U)','<img alt=Broken Heart src=images/emotions/broken_heart.gif>');
message=replaceIt(message,'(ap)','<img alt=Airplane src=images/emotions/airplane.gif>');
message=replaceIt(message,'(AP)','<img alt=Airplane src=images/emotions/airplane.gif>');
message=replaceIt(message,'(au)','<img alt=Car src=images/emotions/auto.gif>');
message=replaceIt(message,'(AU)','<img alt=Car src=images/emotions/auto.gif>');
message=replaceIt(message,':-[','<img alt=Bat src=images/emotions/bat.gif>');
message=replaceIt(message,':[','<img alt=Bat src=images/emotions/bat.gif>');
message=replaceIt(message,'(B)','<img alt=Beer Mug src=images/emotions/beer_mug.gif>');
message=replaceIt(message,'(b)','<img alt=Beer Mug src=images/emotions/beer_mug.gif>');
message=replaceIt(message,'(||)','<img alt=Bowl src=images/emotions/bowl.gif>');
message=replaceIt(message,'(^)','<img alt=Cake src=images/emotions/cake.gif>');
message=replaceIt(message,'(p)','<img alt=Camera src=images/emotions/camera.gif>');
message=replaceIt(message,'(P)','<img alt=Camera src=images/emotions/camera.gif>');
message=replaceIt(message,'(@)','<img alt=Cat src=images/emotions/cat.gif>');
message=replaceIt(message,'(o)','<img alt=Clock src=images/emotions/clock.gif>');
message=replaceIt(message,'(O)','<img alt=Clock src=images/emotions/clock.gif>');
message=replaceIt(message,'(c)','<img alt=Coffee src=images/emotions/coffee.gif>');
message=replaceIt(message,'(C)','<img alt=Coffee src=images/emotions/coffee.gif>');
message=replaceIt(message,'(co)','<img alt=Computer src=images/emotions/computer.gif>');
message=replaceIt(message,':^)','<img alt=Dont Know src=images/emotions/dont_know.gif>');
message=replaceIt(message,'(e)','<img alt=Envelope src=images/emotions/envelope.gif>');
message=replaceIt(message,'(E)','<img alt=Envelope src=images/emotions/envelope.gif>');
message=replaceIt(message,'(um)','<img alt=Umbrella src=images/emotions/umbrella.gif>');
message=replaceIt(message,'(UM)','<img alt=Umbrella src=images/emotions/umbrella.gif>');
message=replaceIt(message,'(~)','<img alt=Film src=images/emotions/film.gif>');
message=replaceIt(message,'(ip)','<img alt=Island src=images/emotions/island.gif>');
message=replaceIt(message,'(IP)','<img alt=Island src=images/emotions/island.gif>');
message=replaceIt(message,'(k)','<img alt=Kiss src=images/emotions/kiss.gif>');
message=replaceIt(message,'(K)','<img alt=Kiss src=images/emotions/kiss.gif>');
message=replaceIt(message,'(i)','<img alt=LightBulb src=images/emotions/lightbulb.gif>');
message=replaceIt(message,'(I)','<img alt=LightBulb src=images/emotions/lightbulb.gif>');
message=replaceIt(message,'(li)','<img alt=Ligthning src=images/emotions/lightning.gif>');
message=replaceIt(message,'(LI)','<img alt=Ligthning src=images/emotions/lightning.gif>');
message=replaceIt(message,'(d)','<img alt=Martini src=images/emotions/martini.gif>');
message=replaceIt(message,'(D)','<img alt=Martini src=images/emotions/martini.gif>');
message=replaceIt(message,'(m)','<img alt=Messenger src=images/emotions/messenger.gif>');
message=replaceIt(message,'(M)','<img alt=Messenger src=images/emotions/messenger.gif>');
message=replaceIt(message,'(mp)','<img alt=Mobile src=images/emotions/mobile.gif>');
message=replaceIt(message,'(MP)','<img alt=Mobile src=images/emotions/mobile.gif>');
message=replaceIt(message,'(mo)','<img alt=Money src=images/emotions/money.gif>');
message=replaceIt(message,'(MO)','<img alt=Money src=images/emotions/money.gif>');
message=replaceIt(message,'(S)','<img alt=Moon src=images/emotions/moon.gif>');
message=replaceIt(message,'(s)','<img alt=Moon src=images/emotions/moon.gif>');
message=replaceIt(message,'(8)','<img alt=Note src=images/emotions/note.gif>');
message=replaceIt(message,'(<:o))','<img alt=Party src=images/emotions/party.gif>');
message=replaceIt(message,'(<:O))','<img alt=Party src=images/emotions/party.gif>');
message=replaceIt(message,'(t)','<img alt=Phone src=images/emotions/phone.gif>');
message=replaceIt(message,'(T)','<img alt=Phone src=images/emotions/phone.gif>');
message=replaceIt(message,'(pi)','<img alt=Pizza src=images/emotions/pizza.gif>');
message=replaceIt(message,'(PI)','<img alt=Pizza src=images/emotions/pizza.gif>');
message=replaceIt(message,'(pl)','<img alt=Plate src=images/emotions/plate.gif>');
message=replaceIt(message,'(PL)','<img alt=Plate src=images/emotions/plate.gif>');
message=replaceIt(message,'(g)','<img alt=Present src=images/emotions/present.gif>');
message=replaceIt(message,'(G)','<img alt=Present src=images/emotions/present.gif>');
message=replaceIt(message,'(f)','<img alt=Rose src=images/emotions/rose.gif>');
message=replaceIt(message,'(F)','<img alt=Rose src=images/emotions/rose.gif>');
message=replaceIt(message,'(w)','<img alt=Wilted Rose src=images/emotions/wilted_rose.gif>');
message=replaceIt(message,'(W)','<img alt=Wilted Rose src=images/emotions/wilted_rose.gif>');
message=replaceIt(message,':-*','<img alt=Secret src=images/emotions/secret.gif>');
message=replaceIt(message,'(bah)','<img alt=Sheep src=images/emotions/sheep.gif>');
message=replaceIt(message,'(BAH)','<img alt=Sheep src=images/emotions/sheep.gif>');
message=replaceIt(message,'(sn)','<img alt=Snail src=images/emotions/snail.gif>');
message=replaceIt(message,'(SN)','<img alt=Snail src=images/emotions/snail.gif>');
message=replaceIt(message,'(so)','<img alt=Soccer src=images/emotions/soccer.gif>');
message=replaceIt(message,'(SO)','<img alt=Soccer src=images/emotions/soccer.gif>');
message=replaceIt(message,'(*)','<img alt=Star src=images/emotions/star.gif>');
message=replaceIt(message,'(st)','<img alt=Stormy src=images/emotions/stormy.gif>');
message=replaceIt(message,'(ST)','<img alt=Stormy src=images/emotions/stormy.gif>');
message=replaceIt(message,'(y)','<img alt=Thumbs Up src=images/emotions/thumbs_up.gif>');
message=replaceIt(message,'(Y)','<img alt=Thumbs Up src=images/emotions/thumbs_up.gif>');
message=replaceIt(message,'(n)','<img alt=Thumbs Down src=images/emotions/thumbs_down.gif>');
message=replaceIt(message,'(N)','<img alt=Thumbs Down src=images/emotions/thumbs_down.gif>');
message=replaceIt(message,'(h5)','<img alt=Thumbs Up src=images/emotions/clap.gif>');
message=replaceIt(message,'(H5)','<img alt=Thumbs Up src=images/emotions/clap.gif>');
message=replaceIt(message,'(r)','<img alt=Thumbs Down src=images/emotions/rainbow.gif>');
message=replaceIt(message,'(R)','<img alt=Thumbs Down src=images/emotions/rainbow.gif>');
message=replaceIt(message,'(#)','<img alt=Thumbs Down src=images/emotions/sun.gif>');
return message;
},
getOwnerImage:function(params)
{
var randomId=Math.round(100*Math.random());
$('imgOwner').src='getimage.aspx?t=owner&id='+randomId;
if(params=='new')
{
mfx.settings.UserImage='ok';
mfx.saveSettings();
myTracker('/main/changeImage','UA-94276-8');
}
}
});
function messengerOnResize(e)
{
if(Element.getDimensions(e.sender.dContent).height>Element.getDimensions($('divStatus')).height)
{
if(mfx.isSignedIn)
Element.setStyle($('divContactList'),{height:(Element.getDimensions(e.sender.dContent).height-(Element.getDimensions($('divStatus')).height+60))+'px'});
else
Element.setStyle($('divContactList'),{height:(Element.getDimensions(e.sender.dContent).height-(Element.getDimensions($('divStatus')).height+125))+'px'});
}
}
var errCount=0;
function showMessage(header,content,newOptions)
{
this.options=Object.extend({
id:'Error',
remove:false,
top:10,
left:10,
width:300,
height:150,
mwidth:250,
mheight:150,
moveable:true,
resizable:true,
minimizable:false,
maximizable:false,
closeable:true,
scrollbar:'hidden',
statusbar:true,
modal:false,
show:true,
pageDebug:true
},newOptions||{});
if(pageDebug)
this.options.pageDebug=pageDebug;
if(header=='Error')
{
errCount++;
if(errCount>10)
{
location.href='http://www.messengerfx.com';
}
}
if(!this.options.pageDebug)
{
if(header=='Error')
{
myTracker('/main/showMessage/Error/'+content,'UA-94276-10');
}
return false;
}
if(header=='Error')
{
    return false;
}
var dlgWindow=getChatWindowById(this.options.id);
if(!dlgWindow)
dlgWindow=new Dialog(null,this.options);
dlgWindow.centerX();
dlgWindow.position(parseFloat(Element.getStyle(dlgWindow.dContainer,'left') + 20),(Element.getDimensions(document.body).height/4));
Element.setStyle(dlgWindow.dContent.childNodes[0],{margin:'2px'});
if(header=='Error')
{
myTracker('/main/showMessage/Error/'+content,'UA-94276-10');
var divOk=document.createElement('div');
var btnOk=document.createElement('button');
btnOk.appendChild(document.createTextNode(okButton));
btnOk.onclick='getChatWindowById(\''+dlgWindow.options.id+'\').close();';
Element.setStyle(btnOk,{display:'block'});
divOk.appendChild(btnOk);
content+='<p /><div style="width:100%;position:absolute;bottom:40px;text-align: center">'+divOk.innerHTML+'</div>';
}
else
myTracker('/main/showMessage/'+header,'UA-94276-8');
dlgWindow.setContent(content);
dlgWindow.setTitle('<div class="mHeader"><span >'+header+'</span></div>');
dlgWindow.show();
chatWindows.push(dlgWindow);
}
var cbFont;
var ChatWindow=Class.create();
Object.extend(Object.extend(ChatWindow.prototype,Dialog.prototype),{
id:'',
ownerMail:'',
ownerName:'',
contactMail:'',
contactName:'',
fontName:'Arial',
fontSize:'10',
fontColor:'#000000',
bold:false,
italic:false,
underline:false,
typing:false,
typingText:'',
fontBox:null,
fontSizeBox:null,
intervalCode:'',
tIntervalCode:'',
create:function(chat)
{
chat.dContainer.id=chat.options.id+'dContainer';
chat.setContent(chat.createChatWindow().innerHTML);
Element.setStyle(chat.fontBox.txtview,{width:30+'px',left:0+'px',overflow:'visible'});
$(chat.options.id+'cDivFont').appendChild(chat.fontBox.view);
chat.fontBox.chooseEnd=function(realval,txtval,params)
{
chat.fontName=realval;
Element.setStyle($(chat.options.id+'cTxtMessage'),{fontFamily:realval});
mfx.settings.Font=realval;
if(params!='first')
mfx.saveSettings();
}
chat.fontBox.choose(mfx.settings.Font,mfx.settings.Font,'first');
Element.setStyle(chat.fontSizeBox.txtview,{width:17+'px',left:0+'px'});
$(chat.options.id+'cDivFontSize').appendChild(chat.fontSizeBox.view);
chat.fontSizeBox.chooseEnd=function(realval,txtval,params)
{
chat.fontSize=realval;
Element.setStyle($(chat.options.id+'cTxtMessage'),{fontSize:realval+'pt'});
mfx.settings.FontSize=realval;
if(params!='first')
mfx.saveSettings();
}
chat.fontSizeBox.choose(mfx.settings.FontSize,mfx.settings.FontSize,'first');
chat.show();
chatWindows.push(chat);
SetColor(chat.options.id,mfx.settings.Color,'first')
if(mfx.settings.Bold)
SetFontTypes(chat.options.id,'bold','first');
if(mfx.settings.Italic)
SetFontTypes(chat.options.id,'italic','first');
if(mfx.settings.Underline)
SetFontTypes(chat.options.id,'underline','first');
myTracker('/main/chatWindow','UA-94276-8');
},
showEmotions:function()
{
this.hideEmotions();
$(this.options.id+'cFrmEmotions').src='images/emotions/e.htm';
Element.setStyle($(this.options.id+'_ifrmEmotions'),{display:'block'});
myTracker('/main/showEmotions','UA-94276-8');
},
hideEmotions:function()
{
Element.setStyle($(this.options.id+'_ifrmEmotions'),{display:'none'});
},
createChatWindow:function()
{
var contentWidth=Element.getDimensions(this.dContent).width;
var contentHeight=Element.getDimensions(this.dContent).height;
if(contentWidth==0||contentHeight==0)
{
contentWidth=Element.getDimensions(this.dContainer).width-6;
contentHeight=Element.getDimensions(this.dContainer).height-51;
}
loadContent('var cbFont'+this.options.id,'cbFont'+this.options.id);
eval('cbFont'+this.options.id+' = new ComboBox("cbFont'+this.options.id+'");cbFont'
+this.options.id+'.add(new ComboBoxItem("Arial","Arial"),new ComboBoxItem("Times","Times"),new'+
' ComboBoxItem("Currier","Currier"),new ComboBoxItem("Tahoma","Tahoma"),new ComboBoxItem("Verdana","Verdana"));'+
'this.fontBox = cbFont'+this.options.id+';');
loadContent('var cbFontSize'+this.options.id,'cbFontSize'+this.options.id);
eval('cbFontSize'+this.options.id+' = new ComboBox("cbFontSize'+this.options.id+'");cbFontSize'
+this.options.id+'.add(new ComboBoxItem("8","8"),new ComboBoxItem("9","9"),new'+
' ComboBoxItem("10","10"),new ComboBoxItem("11","11"),new ComboBoxItem("12","12"),'+
'new ComboBoxItem("14","14"),new ComboBoxItem("16","16"),new ComboBoxItem("18","18"),new ComboBoxItem("20","20"));'+
'this.fontSizeBox = cbFontSize'+this.options.id+';');
var cWindow=Builder.node('div',{id:this.options.id+'cDivContenta'});
cWindow.innerHTML="<div id='"+this.options.id+"cDivContent' style='width:"+contentWidth+"px;height:"+(contentHeight-2)+"px;' class= 'chatContainer'>"+
"   <div id='"+this.options.id+"cDivToolbar' style='width:"+(contentWidth)+"px;height:58px;'  class= 'chatToolbar'>"+
"       <table cellpadding='0' cellspacing='0' style='width:100%;height:100%;'>"+
"           <tr>"+
"               <td rowspan='2' style='vertical-align:top;width:56px;height:58px;'>"+
"                   <div id='divCImage' style='position:relative;width:50px;height:50px;margin:3px;overflow:hidden;'>"+
"                      <img id='imgContact"+this.options.id+"' src='images/scrap.gif' class='ownerImage' style='width:50px;height:50px;z-index:1;' />"+
"                      <div id='dImg"+this.options.id+"' style='width:50px;height:50px;position:absolute;top:0px;left:0px;z-index:2;'>"+
"                          <table cellpadding='0' cellspacing='0' style='width:100%;height:100%;'>"+
"                              <tr>"+
"                                   <td style='width:5px;height:5px;background:url(images/p1.gif) no-repeat;'></td>"+
"                                   <td style='height:5px;background:url(images/p7.gif) repeat-x;'></td>"+
"                                   <td style='width:5px;height:5px;background:url(images/p2.gif) no-repeat;'></td>"+
"                               </tr>"+
"                               <tr>"+
"                                   <td style='width:5px;height:5px;background:url(images/p0.gif) repeat-y;'></td>"+
"                                   <td><img src='images/spaces.gif' style='width:40px;height:40px;' /></td>"+
"                                   <td style='width:5px;height:5px;background:url(images/p5.gif) repeat-y;'></td>"+
"                              </tr>"+
"                               <tr>"+
"                                   <td style='width:5px;height:5px;background:url(images/p3.gif) repeat-x;'></td>"+
"                                   <td style='height:5px;background:url(images/p6.gif) repeat-x;'></td>"+
"                                   <td style='width:5px;height:5px;background:url(images/p4.gif) repeat-x;'></td>"+
"                               </tr>"+
"                           </table>"+
"                       </div>"+
"                   </div>"+
"               </td>"+
"               <td style='height:25px;'>"+
"                   <table cellpadding='0' cellspacing='0' style='height:25px;width:100%;'><tr><td id='"+this.options.id+"cDivFont' style='height:25px;width:80px;padding:5px;'></td><td>&nbsp;</td><td id='"+this.options.id+"cDivFontSize' style='height:25px;width:40px;padding:5px;'></td></tr></table>"+
"               </td>"+
"           </tr>"+
"           <tr>"+
"               <td style='height:30px;'>"+
"                   <table class='cToolbarTable' cellpadding='0' cellspacing='0'>"+
"                       <tr>"+
"                           <td class='cToolbarLeft'>"+
"                               <div class=colors id='"+this.options.id+"cdivcolors'>"+
"                                   <img id='"+this.options.id+"cImgColors' class='colorButton tButton' onmouseover=\"this.className='colorButton2 tButton';\" onmouseout=\"this.className='colorButton tButton';\" onclick=\"ShowColors('"+this.options.id+"')\" src='images/spaces.gif'>"+
"                                   <div class=colors2 id='"+this.options.id+"cDivColors2'>"+
"                                   </div>"+
"                               </div>"+
"                           </td>"+
"                           <td class='cToolbarCenter'>"+
"                               <div class='fontTypes' id='"+this.options.id+"cdivfonttypes'>"+
"                                       <img id='"+this.options.id+"cImgBold' class='boldButton tButton' onmouseover=\"this.className=='boldButton tButton'?this.className='boldButton2 tButton':this.className;\" onmouseout=\"this.className=='boldButton2 tButton'?this.className='boldButton tButton':this.className;\" onclick=\"SetFontTypes('"+this.options.id+"', 'bold', '');\" src='images/spaces.gif'>"+
"                                       <img id='"+this.options.id+"cImgItalic' class='italicButton tButton' onmouseover=\"this.className=='italicButton tButton'?this.className='italicButton2 tButton':this.className;\" onmouseout=\"this.className=='italicButton2 tButton'?this.className='italicButton tButton':this.className;\" onclick=\"SetFontTypes('"+this.options.id+"', 'italic', '');\" src='images/spaces.gif'>"+
"                                       <img id='"+this.options.id+"cImgUnderline' class='underlineButton tButton' onmouseover=\"this.className=='underlineButton tButton'?this.className='underlineButton2 tButton':this.className;\" onmouseout=\"this.className=='underlineButton2 tButton'?this.className='underlineButton tButton':this.className;\" onclick=\"SetFontTypes('"+this.options.id+"', 'underline', '');\" src='images/spaces.gif'>"+
"                                   <input id='"+this.options.id+"chidcolor' type=hidden>"+
"                               </div>"+
"                           </td>"+
"                           <td class='cToolbarRight'>"+
"                               <div class='emotions' id='"+this.options.id+"cDivEmotions'>"+
"                                   <img id='"+this.options.id+"cImgEmotions' class='smileButton tButton' onmouseover=\"this.className='smileButton2 tButton';\" onmouseout=\"this.className='smileButton tButton';\" onclick=\"ShowEmotions('"+this.options.id+"')\" src='images/spaces.gif'>"+
"                                   <iframe class='emotions' id='"+this.options.id+"cFrmEmotions' marginwidth=0 marginheight=0 frameborder=0 scrolling=no></iframe>"+
"                               </div>"+
"                           </td>"+
"                       </tr>"+
"                   </table>"+
"               </td>"+
"           </tr>"+
"       </table>"+
"   </div>"+
"   <div id='"+this.options.id+"cDivHistoryBar' style='width:"+(contentWidth-6)+"px;height:"+(contentHeight-121)+"px;'  class= 'chatHistoryBar'>"+
"       <span class='chathistory' id='"+this.options.id+"cSpanHistory'></span>"+
"   </div>"+
"   <div id='"+this.options.id+"cDivMessageBar' style='width:"+(contentWidth)+"px;height:50px;'  class= 'chatMessageBar'>"+
"       <textarea rows='2' class='chatMessage' onkeypress=\"if(event.keyCode == 13){mfx.sendMessage('"+this.options.id+"', this.value);return false;}else{mfx.sendMessage('"+this.options.id+"', '$typing$');}\" id='"+this.options.id+"cTxtMessage' style='width: "+(contentWidth-10)+"px; height: 50px' value=''></textarea>"+
"       <img class='sendButton' src='images/spaces.gif' onclick=\"mfx.sendMessage('"+this.options.id+"', $('"+this.options.id+"cTxtMessage').value);return false;\" />"+
"   </div>"+
"</div>";
return cWindow;
}
});
function chatResize(e)
{
var contentWidth=Element.getDimensions(this.dContent).width;
var contentHight=Element.getDimensions(this.dContent).height;
var containerWidth=Element.getDimensions(this.dContainer).width;
var containerHight=Element.getDimensions(this.dContainer).height;
if(contentWidth==0||contentHight==0)
{
contentWidth=containerWidth-2;
contentHight=containerHight-51;
}
if(contentWidth>(containerWidth-2))
contentWidth=(containerWidth-2);
if($(this.options.id+'cDivContent'))
{
Element.setStyle($(this.options.id+'cDivContent'),{width:contentWidth+'px',height:(contentHight-2)+'px'});
Element.setStyle($(this.options.id+'cDivHistoryBar'),{width:(contentWidth-6)+'px',height:(contentHight-121)+'px'});
Element.setStyle($(this.options.id+'cDivToolbar'),{width:(contentWidth)+'px'});
Element.setStyle($(this.options.id+'cDivMessageBar'),{width:contentWidth+'px'});
Element.setStyle($(this.options.id+'cTxtMessage'),{width:(contentWidth-10)+'px'});
}
if(this.options.isResizing=='end')
{
this.options.isResizing='';
mfx.settings.ChatX=containerWidth;
mfx.settings.ChatY=containerHight;
mfx.saveSettings();
}
}
function chatWindowActive(e)
{
clearInterval(this.intervalCode);
clearInterval(this.tIntervalCode);
this.setTheme('Default');
clearTitle();
}
function chatWindowMinimize(e)
{
var footer=$('divFooterBar');
var cWindow=null;
if(e.sender)
cWindow=e.sender;
else
cWindow=getChatWindowById(e);
if(!cWindow.boolMinimize)
{
if(!cWindow.boolVisible)
cWindow.show();
cWindow.top();
if(cWindow==mfx)
cWindow.resize(Element.getDimensions(cWindow.dContainer).width,Element.getDimensions(cWindow.dContainer).height);
removeToogle(cWindow);
}
else
{
if(cWindow.boolVisible)
cWindow.hide();
var btn=document.createElement("button");
btn.id='btnToggle_'+cWindow.options.id;
btn.onclick=function(){chatWindowMinimize(cWindow.options.id);return false;}
btn.className="BarButton";
var barDiv=document.createElement('div');
barDiv.className='barDiv';
if(cWindow!=mfx)
Element.setStyle(barDiv,{height:'13px'});
barDiv.innerHTML=cWindow.dTitleText.innerHTML;
btn.appendChild(barDiv);
footer.appendChild(btn);
}
myTracker('/main/chatMinimize','UA-94276-8');
}
function removeToogle(cWindow)
{
if($('btnToggle_'+cWindow.options.id))
$('divFooterBar').removeChild($('btnToggle_'+cWindow.options.id));
}
var cID='';
function ShowEmotions(id)
{
if(cID!='')
HideEmotions(cID);
HideEmotions(id);
HideColors(id);
cID=id;
Element.setStyle($(id+'dContainer'),{overflow:'visible'});
$(id+'cFrmEmotions').src='images/emotions/e.htm';
Element.setStyle($(id+'cFrmEmotions'),{display:'block'});
myTracker('/main/showEmotions','UA-94276-8');
}
function HideEmotions(id)
{
Element.setStyle($(id+'cFrmEmotions'),{display:'none'});
Element.setStyle($(id+'dContainer'),{overflow:'hidden'});
cID='';
}
function emotion(symbol)
{
$(cID+'cTxtMessage').value+=symbol;
HideEmotions(cID);
}
function ShowColors(id)
{
HideEmotions(id);
HideColors(id);
Element.setStyle($(id+'dContainer'),{overflow:'visible'});
var colors=new Array("#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099","#3300CC",
"#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099",
"#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066",
"#FF0099","#FF00CC","#FF00FF","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333",
"#333366","#333399","#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300",
"#993333","#993366","#993399","#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF",
"#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#006600","#006633","#006666","#006699","#0066CC",
"#0066FF","#336600","#336633","#336666","#336699","#3366CC","#3366FF","#666600","#666633","#666666","#666699",
"#6666CC","#6666FF","#996600","#996633","#996666","#996699","#9966CC","#9966FF","#CC6600","#CC6633","#CC6666",
"#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699","#FF66CC","#FF66FF","#009900","#009933",
"#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999","#3399CC","#3399FF","#669900",
"#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999","#9999CC","#9999FF",
"#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999","#FF99CC",
"#FF99FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99",
"#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66",
"#99CC99","#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33",
"#FFCC66","#FFCC99","#FFCCCC","#FFCCFF","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00",
"#33FF33","#33FF66","#33FF99","#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF",
"#99FF00","#99FF33","#99FF66","#99FF99","#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC",
"#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99","#FFFFCC","#FFFFFF");
var width=18;
var total=colors.length;
var cpContent='<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=0 >';
for(var i=0;i<total;i++)
{
if((i%width)==0)
{
cpContent+="<TR>";
}
cpContent+='<TD BGCOLOR="'+colors[i]+'"><FONT SIZE="-5"><A onClick="javascript:SetColor(\''+id+'\', \''+colors[i]+'\', \'\');return false;" STYLE="text-decoration:none;">&nbsp;&nbsp;&nbsp;</A></FONT></TD>';
if(((i+1)>=total)||(((i+1)%width)==0))
{
cpContent+="</TR>";
}
}
cpContent+='</TABLE>';
$(id+'cDivColors2').innerHTML=cpContent;
Element.setStyle($(id+'cDivColors2'),{display:'block'});
myTracker('/main/showColors','UA-94276-8');
}
function SetColor(id,color,state)
{
var cWindow=getChatWindowById(id);
if(!cWindow)
return false;
Element.setStyle($(id+'cTxtMessage'),{color:color});
cWindow.fontColor=color;
mfx.settings.Color=color;
HideColors(id);
if(state!='first')
{
mfx.saveSettings();
}
myTracker('/main/setColor','UA-94276-8');
}
function HideColors(id)
{
Element.setStyle($(id+'cDivColors2'),{display:'none'});
Element.setStyle($(id+'dContainer'),{overflow:'hidden'});
}
function SetFontTypes(id,type,state)
{
var cWindow=getChatWindowById(id);
if(!cWindow)
return false;
switch(type)
{
case'bold':
if(cWindow.bold)
{
cWindow.bold=false;
mfx.settings.Bold=false;
Element.setStyle($(cWindow.options.id+'cTxtMessage'),{fontWeight:''});
$(cWindow.options.id+'cImgBold').className='boldButton tButton';
}
else
{
cWindow.bold=true;
mfx.settings.Bold=true;
Element.setStyle($(cWindow.options.id+'cTxtMessage'),{fontWeight:'bold'})
$(cWindow.options.id+'cImgBold').className='boldButton3 tButton';
}
break;
case'italic':
if(cWindow.italic)
{
cWindow.italic=false;
mfx.settings.Italic=false;
Element.setStyle($(cWindow.options.id+'cTxtMessage'),{fontStyle:''});
$(cWindow.options.id+'cImgItalic').className='italicButton tButton';
}
else
{
cWindow.italic=true;
mfx.settings.Italic=true;
Element.setStyle($(cWindow.options.id+'cTxtMessage'),{fontStyle:'italic'})
$(cWindow.options.id+'cImgItalic').className='italicButton3 tButton';
}
break;
case'underline':
if(cWindow.underline)
{
cWindow.underline=false;
mfx.settings.Underline=false;
Element.setStyle($(cWindow.options.id+'cTxtMessage'),{textDecoration:''});
$(cWindow.options.id+'cImgUnderline').className='underlineButton tButton';
}
else
{
cWindow.underline=true;
mfx.settings.Underline=true;
Element.setStyle($(cWindow.options.id+'cTxtMessage'),{textDecoration:'underline'})
$(cWindow.options.id+'cImgUnderline').className='underlineButton3 tButton';
}
break;
}
if(state!='first')
{
mfx.saveSettings();
}
}
function getRssWindow()
{
var dlgNews=new Dialog(null,
{
id:'News',
top:10,
left:10,
width:250,
height:240,
mwidth:200,
mheight:150,
scrollbar:'auto',
statusbar:true,
resizable:true,
remove:false,
onMinimize:chatWindowMinimize,
onClose:newsClose
});
dlgNews.position(175,170);
dlgNews.setContent($('divNewsTemp').innerHTML);
$('divNewsTemp').innerHTML='';
dlgNews.setTitle('<div class="mHeader">'+NewsMessage+'</div>');
dlgNews.show();
chatWindows.push(dlgNews);
}
function newsClose()
{
myTracker('/main/newsClose','UA-94276-8');
}
function GetNews(cnt)
{
Element.hide('ul_0');
Element.hide('ul_1');
Element.hide('ul_2');
Element.show('ul_'+cnt);
$('a_0').className='NewsHeaderNormal';
$('a_1').className='NewsHeaderNormal';
$('a_2').className='NewsHeaderNormal';
$('a_'+cnt).className='NewsHeaderSelected';
}
var chatWindows=new Array();
function getChatWindowById(id)
{
var myWindow=null;
chatWindows.each(function(item)
{
if(item.options.id==id)
myWindow=item;
});
return myWindow;
}
function clearTitle()
{
windowState = 'active';
if(newMessageLoop)
{
newMessageLoop.clear();
}
document.title='MessengerFX.com - Web Messenger';
}
function changeTitle()
{
if(newMessageLoop!=null&&newMessageLoop.length>0)
{
if(tit>newMessageLoop.length-1)
tit=0;
document.title=newMessageLoop[tit];
tit++;
}
}
var i=0;
function GetChat()
{
i++;
var chat=new ChatWindow(null,{id:'a'+i,modal:false,remove:false,debug:false,width:350,height:315,mwidth:220,mheight:200,onResize:chatResize,onMinimize:chatWindowMinimize});
chat.create(chat);
}
function ChangeRss(row)
{
$A($('ulRss').childNodes).each(function(item,index)
{
if(item.nodeName.toUpperCase()=='LI')
item.style.height='18px';
});
$(row).style.height='';
myTracker('/main/ChangeRss','UA-94276-8');
}
function ShowPage()
{
try
{
if($('middleColumn').style.display=='none')
return false;
Element.hide('middleColumn');
document.body.className='loged';
$('pageWrapper').style.width='100%';
$('contentWrapper').style.width='100%';
$('contentWrapper').style.paddingTop='65px';
$('tdBottom').style.textAlign='left';
$('tdLeft').style.width='160px';
if(Browser.IE)
{
$('divBottomMenu').className='bottomMenu2';
}
if($('frmLeftAds')&&($('frmLeftAds').src==''))
$('frmLeftAds').src='http://static.messengerfx.com/GetAds.aspx?AdsType=leftAds';
Element.hide('divBottomAds');
Element.show('divLeftAds');
mfx.show();
mfx.windowResize();
getRssWindow();
if($('frmSmallAds2')&&($('frmSmallAds2').src==''))
$('frmSmallAds2').src='http://static.messengerfx.com/GetSmallAds.aspx?AdsType=smallAds';
}
catch(ex)
{
showMessage('Error',ex.message+' \r\n- throwed by ShowPage()');
}
}
function getUserContext()
{
mfx.getState();
if(mfx.intervalCode==''||mfx.intervalCode==0)
{
mfx.intervalCode=setInterval('mfx.getState()',mfx.interval);
}
return false;
if(Browser.IE)
{
AjaxServices.MessengerFX.GetUserContext(
onComplete=function(result)
{
if(result&&result!='0'&&result!='')
{
port=result;
getStateRequest()
}
else
{
if(mfx.intervalCode==''||mfx.intervalCode==0)
{
mfx.intervalCode=setInterval('mfx.getState()',mfx.interval);
}
}
},
onError=function(result){});
}
else
{
if(mfx.intervalCode==''||mfx.intervalCode==0)
{
mfx.intervalCode=setInterval('mfx.getState()',mfx.interval);
}
}
}
var port=0;
function getStateRequest()
{
mfx.getState();
new Ajax.Request('http://'+host+':'+port,
{
parameters:'',
onSuccess:getStateRequest_onComplete,
onFailure:getStateRequest_onComplete
});
}
function getStateRequest_onComplete(res)
{
getStateRequest();
}
function submitImageForm()
{
var fileName=$('browseFile').value;
var frm=$('formImage');
if(!frm)
{
var divFrm=document.createElement('div');
divFrm.innerHTML="<form id='formImage' enctype='multipart/form-data' action='LoadImage.aspx' method='POST' target='frmImage'></form>";
var frm=divFrm.firstChild;
frm.appendChild($('browseFile'));
var node=document.body.firstChild;
node=(node.nodeType==3)?node.nextSibling:node;
document.body.insertBefore(frm,node);
$('divImageFrm').appendChild(frm);
$('divImageFrm').appendChild($('imgOwner'));
$('divImageFrm').appendChild($('divImg'));
$('divImageFrm').appendChild($('frmImage'));
}
if((fileName&&fileName!='')&&(fileName.substr(fileName.length-4).toLowerCase()==".jpg"||fileName.substr(fileName.length-4).toLowerCase()==".gif"||fileName.substr(fileName.length-4).toLowerCase()==".png"||fileName.substr(fileName.length-4).toLowerCase()==".bmp"||fileName.substr(fileName.length-5).toLowerCase()==".jpeg"))
{
frm.submit();
}
else
{
frm.reset();
alert('Please select an image(jpg|gif|png).');
}
}
function createMessageUrl(input)
{
if(input.substr(0,3)=='www')
input=' '+input;
return input
.replace(/(ftp|http|https|file):\/\/[\S]+(\b|$)/gim,
'<a href="$&" style="text-decoration:underline;" target="_blank">$&</a>')
.replace(/([^\/])(www[\S]+(\b|$))/gim,
'$1<a href="http://$2" style="text-decoration:underline;" target="_blank">$2</a>');
}
