var ie4 = document.all?true:false;
var nn6=document.getElementById&&!document.all;
var isdrag=false;
var tempX=tempY=0;
var dragme;
var counters=new Array();
var spans=new Array();
var showmenus=new Array();
var hidemenus=new Array();

if(!ie4) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = mousemove;
document.onmousedown=mousedown;
document.onmouseup=mouseup;

function mousedown(e){
 var fobj=nn6 ? e.target : event.srcElement;
 var topelement=nn6 ? "HTML" : "BODY";
 while(fobj.tagName!=topelement && fobj.getAttribute("kind") != "dragdrop"){
  fobj=nn6 ? fobj.parentNode : fobj.parentElement;
 }
 fobj.style.position='relative';
 if(fobj.getAttribute("kind")=="dragdrop"){
  isdrag=true;
  dragme=fobj;
  tx=parseInt(fobj.style.left+0);
  ty=parseInt(fobj.style.top+0);
  x=nn6 ? e.clientX : event.clientX;
  y=nn6 ? e.clientY : event.clientY;
  return false;
 }
}

function mouseup(e){
 isdrag=false;
}

function mousemove(e){
 if(ie4){
  tempX=event.clientX + document.body.scrollLeft;
  tempY=event.clientY + document.body.scrollTop;
 }else{
  tempX=e.pageX;
  tempY=e.pageY;
 }  
 if(tempX<0) tempX=0;
 if(tempY<0) tempY=0;
 if(isdrag){
  dragme.style.left=nn6 ? tx + e.clientX - x : tx + event.clientX - x;
  dragme.style.top=nn6 ? ty + e.clientY - y : ty + event.clientY - y;
  return false;
 }
}

function getObject(id){
 return document.getElementById(id);
}

function spankind(){
 var loop=1;
 while(loop>0){
  loop=0;
  for(var i=0; i<spans.length; i++){
   if(spans[i].loaded==true) continue;
   spans[i].loaded=true;
   loop++;
   var kind=spans[i].getAttribute("kind");
   if(!kind) continue;
   switch(kind){
    case "counter":
     counters[i]=setInterval("counter("+i+")",'1000');
    break;
    case "dragdrop":
     spans[i].onmouseover=spans[i].style.cursor='move';
    break;
    case "menu":
     if(empty(spans[i].getAttribute("body"))) continue;
     var hide=spans[i].getAttribute("hide");
     if(empty(hide)||!is_numeric(hide)) hide=1;
     var show=spans[i].getAttribute("show");
     if(empty(show)||!is_numeric(show)) show=1;
     var moveleft=spans[i].getAttribute("moveleft")*1;
     if(empty(moveleft)||!is_numeric(moveleft)) moveleft=0;
     var movedown=spans[i].getAttribute("movedown")*1;
     if(empty(movedown)||!is_numeric(movedown)) movedown=0;
     spans[i].style.cursor='pointer';
     spans[i].style.color='#c18c94';
     spans[i].onclick=new Function('getObject("menu'+i+'-c").style.display=\'block\';');
     spans[i].onmouseover=new Function('clearTimeout(hidemenus['+i+']);');
     spans[i].onmouseout=new Function('hidemenus['+i+']=setTimeout("getObject(\'menu'+i+'-c\').style.display=\'none\'",1000);');
     var newdiv=document.createElement('div');
     newdiv.innerHTML=spans[i].getAttribute("body");
     newdiv.id='menu'+i+'-c';
     newdiv.style.display='none';
     newdiv.style.position='absolute';
     newdiv.style.background='white';
     newdiv.style.padding='5px';
     newdiv.style.borderRight='1px solid gray';
     newdiv.style.borderBottom='1px solid gray';
     newdiv.style.top=getObjectTop(spans[i])+15+movedown;
     newdiv.style.left=getObjectLeft(spans[i])+15+moveleft;
     newdiv.onmouseover=new Function('clearTimeout(hidemenus['+i+']);');
     newdiv.onmouseout=new Function('hidemenus['+i+']=setTimeout("getObject(\'menu'+i+'-c\').style.display=\'none\';",500);');
     insertAfter(spans[i],newdiv);
    break;
    case "bubble":
     if(empty(spans[i].getAttribute("body"))) continue;
     var method=(spans[i].getAttribute("method")=='mouse') ? 'onmouseover' : 'onclick';
     makebubble(i);
     if(method=='onclick'){
      spans[i].onclick=new Function('bubble('+i+')');
     }else{
      spans[i].onmouseover=new Function('bubble('+i+')');
      spans[i].onmouseout=new Function('bubble('+i+')');
     }
     spans[i].style.color='red';
     spans[i].style.textDecoration='underline';
    break;
   case "collapse":
    if(empty(spans[i].getAttribute("body"))) continue;
    var n=spans[i].getAttribute("name");
    spans[i].setAttribute('open',false);
    spans[i].style.cursor='pointer';
    spans[i].id='collapse'+i;
    var show=(getCookie('collapse['+n+']['+i+']')=='shown') ? '-' : '+';
    spans[i].innerHTML='<span id="collapse'+i+'-a" style="float:left;margin-right:10px;" align=center>'+show+'</span>'+spans[i].innerHTML;
    var newdiv=document.createElement('div');
    newdiv.innerHTML=spans[i].getAttribute("body");
    newdiv.style.display=(getCookie('collapse['+n+']['+i+']')=='shown') ? 'block' : 'none';
    newdiv.style.paddingLeft='20px';
    newdiv.id='collapse'+i+'-c';
    insertAfter(spans[i],newdiv);
    spans[i].onclick=new Function('collapse('+i+',"'+n+'")');
   break;
   }
  }
 }
}

function setCookie(c_name,value,expiredays){
 var exdate=new Date();
 exdate.setDate(exdate.getDate()+expiredays);
 document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name){
 if(document.cookie.length>0){
  c_start=document.cookie.indexOf(c_name + "=");
  if(c_start!=-1){
   c_start=c_start + c_name.length+1;
   c_end=document.cookie.indexOf(";",c_start);
   if(c_end==-1) c_end=document.cookie.length;
   return unescape(document.cookie.substring(c_start,c_end));
  }
 }
 return "";
}

function insertAfter(first, second) {
 first.parentNode.insertBefore(second,first);
 second.parentNode.insertBefore(first,second);
}

function collapse(id,n){
 if(getObject('collapse'+id+'-c').style.display=='none'){
  getObject('collapse'+id+'-c').style.display='block';
  getObject('collapse'+id+'-a').innerHTML='-';
  setCookie('collapse['+n+']['+id+']','shown');
 }else{
  getObject('collapse'+id+'-c').style.display='none';
  getObject('collapse'+id+'-a').innerHTML='+';
  setCookie('collapse['+n+']['+id+']','hidden');
 }
}

function is_numeric(integer){
 return (!isNaN(integer*1));
}

function counter(id){
 var val=spans[id].getAttribute("innerHTML");
 if(isNaN(val)) val=unmake_time(val);
 if(isNaN(val)) val=0;
 val++;
 spans[id].innerHTML=make_time(val);
}

function unmake_time(string){
 var string=string.split(' ');
 string=string.reverse();
 var hours=minutes=seconds=out=0*1;
 if(string.length>=3){
  hours=string[2].substring(0,string[2].length-1)*1;
  out+=hours*3600;
 }
 if(string.length>=2){
  minutes=string[1].substring(0,string[1].length-1)*1;
  out+=minutes*60;
 }
 seconds=string[0].substring(0,string[0].length-1)*1;
 out+=seconds;
 return out*1;
}

function make_time(integer){
 var minutes=hours=0;
 var string='';
 while(integer>=3600){
  integer-=3600;
  hours++;
 }
 while(integer>=60){
  integer-=60;
  minutes++;
 }
 if(hours>0) string+=hours+'h ';
 if(minutes>0||hours>0) string+=minutes+'m ';
 string+=integer+'s';
 return string;
}

function SimpleSwap(el,which){
 el.src=el.getAttribute(which || "origsrc");
}

var images=document.getElementsByTagName("img");
function SimpleSwapSetup(){
 for(var i=0; i<images.length; i++){
  images[i].loaded=false;
  var oversrc=images[i].getAttribute("oversrc");
  var clicksrc=images[i].getAttribute("clicksrc");
  if(oversrc){
   images[i].oversrc_img=new Image();
   images[i].oversrc_img.src=oversrc;
   images[i].onmouseover=new Function("SimpleSwap(this,'oversrc');");
   images[i].onmouseout=new Function("SimpleSwap(this);");
   images[i].setAttribute("origsrc",images[i].src);
  }
  if(clicksrc){
   images[i].clicksrc_img=new Image();
   images[i].clicksrc_img.src=clicksrc;
   images[i].onmousedown=new Function("SimpleSwap(this,'clicksrc');");
   if(oversrc) images[i].onmouseup=new Function("SimpleSwap(this,'oversrc');");
   else images[i].onmouseup=new Function("SimpleSwap(this);");
   images[i].setAttribute("origsrc",images[i].src);
  }
 }
}

function currency(el){
 var temp='';
 var tempval=el.value;
 for(var t=0; t<el.value.length; t++){
  var letter=tempval.substring(0, 1);
  tempval=tempval.substring(1, tempval.length);
  if(letter=='1'||letter=='2'||letter=='3'||letter=='4'||letter=='5'||letter=='6'||letter=='7'||letter=='8'||letter=='9'||letter=='0') temp+=letter;
 }
 el.value=temp.substring(0, temp.length-2)+'.'+temp.substring(temp.length-2, temp.length);
}

function inputkind(){
 var x=document.getElementsByTagName("input");
 for(var i=0; i<x.length; i++){
  var kind=x[i].getAttribute("kind");
  var def=x[i].getAttribute("default");
  if(!empty(def)){
   if(empty(x[i].value)) x[i].value=def;
   x[i].style.color='#999999';
   x[i].onfocus=new Function("if('"+def+"'==this.value){ this.value=''; this.style.color='black'; }");
   x[i].onblur=new Function("if(empty(this.value)){ this.value='"+def+"'; this.style.color='#999999'; }");
  }
  if(x[i].getAttribute("type")=='text'){
   if(x[i].getAttribute("dynamicsize")=='true'){
    x[i].size=Math.ceil(x[i].value.length*1.1);
   }
  }
  switch(kind){
   case "numonly":
    x[i].onkeyup=new Function("numonly(this)");
    x[i].onkeydown=new Function("numonly(this)");
    x[i].onblur=new Function("numonly(this)");
   break;
   case "phone":
    x[i].maxLength='14';
    x[i].onkeydown=new Function("numonly(this)");
    x[i].onkeyup=new Function("numonly(this)");
    x[i].onblur=new Function("phone(this)");
   break;
   case "currency":
    x[i].onkeydown=new Function("numonly(this)");
    x[i].onkeyup=new Function("numonly(this,1)");
    x[i].onblur=new Function("currency(this)");
   break;
   case "postalcode":
    x[i].onblur=new Function("postalcode(this)");
   break;
  }
 }
}

function formsubmit(webpage,target){
 if(target==null) target='_top';
 document.form.target=target;
 document.form.action=webpage;
 document.form.submit();
}

function formconfirm(message,webpage,target){
 var conf=confirm(message);
 if(conf) formsubmit(webpage,target);
}

function phone(el){
 var out=temp="";
 var tempval=el.value;
 for(var t=0; t<el.value.length; t++){
  var letter=tempval.substring(0, 1);
  tempval=tempval.substring(1, tempval.length);
  if(letter=='1'||letter=='2'||letter=='3'||letter=='4'||letter=='5'||letter=='6'||letter=='7'||letter=='8'||letter=='9'||letter=='0') temp+=letter;
 }
 for(var t=0; t<14; t++){
  if(t==0) out+='(';
  else if(t==4){
   out+=') ';
   t++;
  }else if(t==9) out+='-';
  else{
   var number=temp.substring(0,1);
   temp=temp.substring(1, temp.length);
   out+=number;
  }
 }
 el.value=out;
}

function currency(el){
 var temp='';
 var tempval=el.value;
 for(var t=0; t<el.value.length; t++){
  var letter=tempval.substring(0, 1);
  tempval=tempval.substring(1, tempval.length);
  if(letter=='1'||letter=='2'||letter=='3'||letter=='4'||letter=='5'||letter=='6'||letter=='7'||letter=='8'||letter=='9'||letter=='0') temp+=letter;
 }
 el.value=temp.substring(0, temp.length-2)+'.'+temp.substring(temp.length-2, temp.length);
}

function numonly(el,phone){
 var temp="";
 var tempval=el.value;
 for(var t=0; t<el.value.length; t++){
  var letter=tempval.substring(0, 1);
  tempval=tempval.substring(1, tempval.length);
  if(temp.length==14&&phone==1) break;
  if(letter=='1'||letter=='2'||letter=='3'||letter=='4'||letter=='5'||letter=='6'||letter=='7'||letter=='8'||letter=='9'||letter=='0'||letter=='('||letter==')'||letter==' '||letter=='-'||letter=='.') temp+=letter;
 }
 el.value=temp;
}

function postalcode(el){
 var temp='';
 var tempval=el.value;
 for(var t=0; t<el.value.length; t++){
  if(t>'5') continue;
  var letter=tempval.substring(0, 1);
  tempval=tempval.substring(1, tempval.length);
  if(t=='3') temp+=' ';
  temp+=letter;
 }
 el.value=temp;
}

function ajaxsubmit(div,file){
 var forms=document.getElementsByTagName("input");
 var data=new Array();
 var k=0;
 for(var i=0; i<forms.length; i++){
  switch(forms[i].type){
   case "radio":
    if(forms[i].checked==true){
     data[k]=forms[i].name+'='+forms[i].value;
     k++;
    }
   break;
   case "text":
   case "textbox":
    if(!empty(forms[i].value)){
     data[k]=forms[i].name+'='+forms[i].value;
     k++;
    }
   break;
  }
 }
 var data=cleanup(data);
 if(file.indexOf('?')==-1) var file=file+'?'+data.join('&');
 else var file=file+'&'+data.join('&');
 ajax(div,urlencode(file));
}

function ajax(target_div,file){
 var MyHttpRequest = false;
 if(window.XMLHttpRequest){
  try{
   MyHttpRequest = new XMLHttpRequest();
  }catch(e){
   MyHttpRequest = false;
  }
 }else if(window.ActiveXObject){
  try{
   MyHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
  }catch(e){
   try{
    MyHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
   }catch(e){
    MyHttpRequest = false;
   }
  }
 }else MyHttpRequest = false;
 if(MyHttpRequest){
  MyHttpRequest.open("POST", file, true);
  MyHttpRequest.onreadystatechange = function (){
   if(MyHttpRequest.readyState == 4) document.getElementById(target_div).innerHTML = MyHttpRequest.responseText;
   else getObject(target_div).innerHTML='<img src="images/loading.gif">';
  }
  MyHttpRequest.send(null);
 }else document.getElementById(target_div).innerHTML = 'Sorry - No XMLHTTP support in your browser, buy a newspaper instead';
}

function urlencode(string){
 var string;
 var safechars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/-_.&?=";
 var hex = "0123456789ABCDEF";
 var encoded_string="";
 for(var i=0; i<string.length; i++){
  var character = string.charAt(i);
  if(character == " ") encoded_string += "+";
  else if(safechars.indexOf(character) != -1) encoded_string += character;
  else{
   var hexchar = character.charCodeAt(0);
   if(hexchar > 255) encoded_string += "+";
   else{
    encoded_string += "%";
    encoded_string += hex.charAt((hexchar >> 4) & 0xF);
    encoded_string += hex.charAt(hexchar & 0xF);
   }
  }
 }
 return encoded_string;
}

function selectfirstinput(int){
 var inputs=document.getElementsByTagName("input");
 var i=0;
 for(var i=0; i<inputs.length; i++){
  var type=inputs[i].getAttribute("type");
  if(type!='text'&&type!='textbox') continue;
  i++;
  if(i==int){
   inputs[i].focus();
   break;
  }
 }
}

function playSound(id){
 if(document.embeds){
  document.embeds["sound"+id].play();
 }
}

function autoform(){
 var a=document.getElementsByTagName("a");
 var url=location.href.substr(0,location.href.lastIndexOf('/')+1);
 for(i=0; i<a.length; i++){
  var target=a[i].getAttribute("to");
  if(target==null) target='';
  var href=a[i].getAttribute("href");
  if(href==''||href.indexOf('javascript')!='-1'||href.indexOf(url)=='-1') continue;
  a[i].href='javascript:formsubmit("'+href+'","'+target+'");';
 }
}

function swatch(url){
 var picture=getObject('picture');
 if(picture.src.indexOf(url)==-1) picture.src=url;
}

function uncheck(el){
 el=getObject(el);
 if (el.checked==true) el.checked=false;
}

function unselect(el){
 el=getObject(el);
 info=el.childNodes;
 for(var i=0; i<info.length;i++){
  if(info[i].tagName!='OPTION') continue;
  info[i].selected=false;
 }
}

function empty(string){
 if(string==''||string==undefined||string.length==0) return true;
 return false;
}

function is_hex(hex){
 if(hex.indexOf('#')!=-1) hex=hex.substr(1);
 hex=hex.toLowerCase();
 if(hex.length=='3'){
  var out='';
  for(var i=0; i<hex.length; i++) out+=hex.substr(i,1)+hex.substr(i,1);
  hex=out;
 }
 if(hex.length!='6') return false;
 for(var i=0; i<hex.length; i++){
  if(hex.substr(i,1)!=1&&hex.substr(i,1)!=2&&hex.substr(i,1)!=3&&hex.substr(i,1)!=4&&hex.substr(i,1)!=5&&hex.substr(i,1)!=6&&hex.substr(i,1)!=7&&hex.substr(i,1)!=8&&hex.substr(i,1)!=9&&hex.substr(i,1)!=0&&hex.substr(i,1)!='a'&&hex.substr(i,1)!='b'&&hex.substr(i,1)!='c'&&hex.substr(i,1)!='d'&&hex.substr(i,1)!='e'&&hex.substr(i,1)!='f') return false;
 }
 return true;
}

function getEleHeight(id){
 return getObject(id).offsetHeight;
}

function getEleWidth(id){
 return getObject(id).offsetWidth;
}

var md5= function (string){
 function RotateLeft(lValue, iShiftBits){
  return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
 }

 function AddUnsigned(lX,lY){
  var lX4,lY4,lX8,lY8,lResult;
  lX8 = (lX & 0x80000000);
  lY8 = (lY & 0x80000000);
  lX4 = (lX & 0x40000000);
  lY4 = (lY & 0x40000000);
  lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
  if(lX4 & lY4){
   return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
  }
  if(lX4 | lY4){
   if(lResult & 0x40000000){
    return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
   }else{
    return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
   }
  }else{
   return (lResult ^ lX8 ^ lY8);
  }
 }

 function F(x,y,z){ return (x & y) | ((~x) & z); }
 function G(x,y,z){ return (x & z) | (y & (~z)); }
 function H(x,y,z){ return (x ^ y ^ z); }
 function I(x,y,z){ return (y ^ (x | (~z))); }

 function FF(a,b,c,d,x,s,ac){
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
 };

 function GG(a,b,c,d,x,s,ac){
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
 };

 function HH(a,b,c,d,x,s,ac){
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
 };

 function II(a,b,c,d,x,s,ac){
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
  return AddUnsigned(RotateLeft(a, s), b);
 };

 function ConvertToWordArray(string){
  var lWordCount;
  var lMessageLength = string.length;
  var lNumberOfWords_temp1=lMessageLength + 8;
  var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
  var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
  var lWordArray=Array(lNumberOfWords-1);
  var lBytePosition = 0;
  var lByteCount = 0;
  while ( lByteCount < lMessageLength ){
   lWordCount = (lByteCount-(lByteCount % 4))/4;
   lBytePosition = (lByteCount % 4)*8;
   lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
   lByteCount++;
  }
  lWordCount = (lByteCount-(lByteCount % 4))/4;
  lBytePosition = (lByteCount % 4)*8;
  lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
  lWordArray[lNumberOfWords-2] = lMessageLength<<3;
  lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
  return lWordArray;
 };

 function WordToHex(lValue){
  var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
  for (lCount = 0;lCount<=3;lCount++){
   lByte = (lValue>>>(lCount*8)) & 255;
   WordToHexValue_temp = "0" + lByte.toString(16);
   WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
  }
  return WordToHexValue;
 };

 function Utf8Encode(string){
  string = string.replace(/\r\n/g,"\n");
  var utftext = "";
  for (var n = 0; n < string.length; n++){
   var c = string.charCodeAt(n);
   if (c < 128){
    utftext += String.fromCharCode(c);
   }else if((c > 127) && (c < 2048)){
    utftext += String.fromCharCode((c >> 6) | 192);
    utftext += String.fromCharCode((c & 63) | 128);
   }else{
    utftext += String.fromCharCode((c >> 12) | 224);
    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
    utftext += String.fromCharCode((c & 63) | 128);
   }
  }
  return utftext;
 };

 var x=Array();
 var k,AA,BB,CC,DD,a,b,c,d;
 var S11=7, S12=12, S13=17, S14=22;
 var S21=5, S22=9 , S23=14, S24=20;
 var S31=4, S32=11, S33=16, S34=23;
 var S41=6, S42=10, S43=15, S44=21;
 string = Utf8Encode(string);
 x = ConvertToWordArray(string);
 a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
 for (k=0;k<x.length;k+=16){
  AA=a; BB=b; CC=c; DD=d;
  a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
  d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
  c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
  b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
  a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
  d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
  c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
  b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
  a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
  d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
  c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
  b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
  a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
  d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
  c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
  b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
  a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
  d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
  c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
  b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
  a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
  d=GG(d,a,b,c,x[k+10],S22,0x2441453);
  c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
  b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
  a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
  d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
  c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
  b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
  a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
  d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
  c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
  b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
  a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
  d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
  c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
  b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
  a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
  d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
  c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
  b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
  a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
  d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
  c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
  b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
  a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
  d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
  c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
  b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
  a=II(a,b,c,d,x[k+0], S41,0xF4292244);
  d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
  c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
  b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
  a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
  d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
  c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
  b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
  a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
  d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
  c=II(c,d,a,b,x[k+6], S43,0xA3014314);
  b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
  a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
  d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
  c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
  b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
  a=AddUnsigned(a,AA);
  b=AddUnsigned(b,BB);
  c=AddUnsigned(c,CC);
  d=AddUnsigned(d,DD);
 }
 var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
 return temp.toLowerCase();
}

function istag(string){
 return (string.substr(0,1)=='<') ? true : false;
}

function isclosetag(string){
 return (string.substr(1,2)=='/') ? true : false;
}

function makebubble(i){
 if(ie4){
  var left=(getObjectLeft(spans[i])*1);
  var top=(getObjectTop(spans[i])*1)+46;
 }else{
  var left=(getObjectLeft(spans[i])*1-10);
  var top=(getObjectTop(spans[i])*1-20);
 }
 var newdiv=document.createElement('div');
 newdiv.id=i+'-bubble';
 newdiv.style.display='none';
 newdiv.style.position='absolute';
 newdiv.style.padding='2px 0px';
 newdiv.style.left=left;
 newdiv.style.top=top;
 newdiv.innerHTML+='<table><tr><td><table width=100%><tr><td><img src="images/bubble-tl.png"></td><td style="background:url(\'images/bubble-t.png\');width:100%;"></td><td><img src="images/bubble-tr.png"></td></tr></table></td></tr><tr><td><table width=100%><tr><td style="background:url(\'images/bubble-l.png\') repeat-y;"><img src="images/spacer.gif" height=1 width=25></td><td style="width:100%;background:#dceafd;padding:0px 8px;padding-top:8px;"><a style="float:right;" href="javascript:bubble(\''+i+'\');"><img src="images/bubble-close.png"></a>'+spans[i].getAttribute("body")+'</td><td align=right style="background:url(\'images/bubble-r.png\') repeat-y;"><img src="images/spacer.gif" height=1 width=32></td></tr></table></td></tr><tr><td><table style="width:100%;"><tr><td><img src="images/bubble-bl.png"></td><td style="background:url(\'images/bubble-b.png\');width:100%;"></td><td><img src="images/bubble-br.png"></td></tr></table></td></tr></table>';
 getObject('body').appendChild(newdiv);
}

function bubble(id){
 if(getObject(id+'-bubble').style.display=='none'){
  getObject(id+'-bubble').style.display="block";
 }else{
  getObject(id+'-bubble').style.display="none";
 }
}

function openmenu(id){
 getObject(id+'-menu').style.display="inline";
 spans[id].setAttribute('open',true);
}

function closemenu(id){
 getObject(id+'-menu').style.display="none";
 spans[id].setAttribute('open',false);
}

function getObjectLeft(eElement){
 var nLeftPos = eElement.offsetLeft;
 var eParElement = eElement.offsetParent;
 while (eParElement != null){
  nLeftPos += eParElement.offsetLeft;
  eParElement = eParElement.offsetParent;
 }
 return nLeftPos;
}

function getObjectTop(eElement){
 var nTopPos = eElement.offsetTop;
 var eParElement = eElement.offsetParent;
 while (eParElement != null){
  nTopPos += eParElement.offsetTop;
  eParElement = eParElement.offsetParent;
 }
 return nTopPos;
}

function currency(value){
 value=''+value+'';
 value=value.split('.');
 if(value.length==1) value[1]='';
 for(var i=value[1].length; i<2; i++) value[1]+=0;
 return value.join('.');
}
