var lteIE6=false;

// Shorthand
var d=document;

// Ad click counter
var adx=new Array();

// This global variable is required by the checkCapsLock function
var timer=new Object();

// This global variable is required by the inputs function
var inputsarray=new Object();

// This global variable is required by the highlight, updatesbi and playlist functions
var highlightcolor='#ccff66';

// This global variable is required by the initrs function
var mode;

// Reserve space for scrollbar (CSS 3)
d.write('<style type="text/css"> html { overflow-y: scroll; } </style>');

// Increase checkbox and radio size
d.write('<style type="text/css"> input.checkbox { -webkit-transform: scale(1.2,1.2); } </style>');

// Protect against missing JS method. Note: NOT prefixed with object
function getElementsByClassName(s)
{
 if(d.getElementsByClassName) return d.getElementsByClassName(s);
 else
 {
  var c=[], e=d.getElementsByTagName('*'), r=new RegExp("(^|\\s)"+s+"(\\s|$)");
  for (var i=0,j=e.length;i<j;i++) r.test(e[i].className)?c.push(e[i]):'';
  return c;
 }
}

function showbox(x)
{
 d.getElementById('xsp4').style.display="none";
 d.getElementById('xsp6').style.display="none";
 if(typeof(x)!='undefined') d.getElementById('x'+x).style.display="block";
}

// Read a cookie
function readCookie(name)
{
 var nameEQ=name+"=";
 var ca=d.cookie.split(';');
 for(var i=0;i<ca.length;i++)
 {
  var c=ca[i];
  while (c.charAt(0)==' ') c=c.substring(1,c.length);
  if(c.indexOf(nameEQ)==0) return c.substring(nameEQ.length,c.length);
 }
 return 0;
}

// Note: The the event order is FIFO for FF and LIFO for IE
function addEvent(obj, evType, fn)
{ 
 if(obj.addEventListener)
 {
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent)
 { 
   var r=obj.attachEvent("on"+evType, fn); 
   return r; 
 } else return false;
}

// Remove the pseudo-AJAX div
function loading()
{
 d.getElementById('loading').style.display="none";
}

// Get the current status of form objects - used for hightlighting changes
function inputs()
{
 var inputelements=d.getElementsByTagName('select');
 for(var i=0;i<inputelements.length;i++)
 {
  var thei=inputelements[i].id;
  if(thei) inputsarray[thei]=d.getElementById(thei).value;
 }
 var inputelements=d.getElementsByTagName('textarea');
 for(var i=0;i<inputelements.length;i++)
 {
  var thei=inputelements[i].id;
  if(thei) inputsarray[thei]=d.getElementById(thei).value;
 }
 var inputelements=d.getElementsByTagName('input');
 for(var i=0;i<inputelements.length;i++)
 {
  if(inputelements[i].type=='text' || inputelements[i].type=='password')
  {
   var thei=inputelements[i].id;
   if(thei) inputsarray[thei]=d.getElementById(thei).value;
  }
  else if(inputelements[i].type=='checkbox' || inputelements[i].type=='radio')
  {
   var thei=inputelements[i].id;
   if(thei) inputsarray[thei]=d.getElementById(thei).checked;
  }
 }
}

// Highlight changed form elements - dependent on inputsarray & function inputs()
function highlight(o)
{
 if(!o.id) return false;
 var h=false;
 if(o.type=='radio')
 {
  var els=d.getElementsByName(o.name);
  for(var i=0;i<els.length;i++)
  {
   if(els[i].checked!=inputsarray[els[i].id])
   {
    els[i].parentNode.style.backgroundColor=highlightcolor;
    h=true;
   }
   else els[i].parentNode.style.backgroundColor="black";
  }
 }
 else if(o.type=='checkbox')
 {
  if(d.getElementById(o.id).checked==inputsarray[o.id]) o.parentNode.style.backgroundColor="black";
  else
  {
   o.parentNode.style.backgroundColor=highlightcolor;
   h=true;
  }
 } else
 {
  if(d.getElementById(o.id).value==inputsarray[o.id]) o.style.backgroundColor="white";
  else
  {
   o.style.backgroundColor=highlightcolor;
   h=true;
  }
 }
 return h;
}

// Update select box converted to image select - requires highlight function
function updatsbi(sbid,optv)
{
 var sbi=d.getElementById(sbid);
 sbi.value=optv;
 var iid="i"+sbid;
 d.getElementById(iid).style.display="none";
 sbi.style.display="inline";
 highlight(sbi);
}

// Convert select box to image select on edit-audios page - requires updatsbi function
function optsasimages(rid,chk,auth)
{
 if(lteIE6) return;
 var sboxes=getElementsByClassName("sbi"); // Set the class name in the html
 for(var i=0;i<sboxes.length;i++)
 {
  var sb=d.getElementById(sboxes[i].id);
  var sbw=sb.style.width; // must be set
  var xid=sb.id;
  var newdiv=d.createElement("div");
  newdiv.id="i"+xid;
  newdiv.className="imageselect";
  var text="";
  var opts=sboxes[i].getElementsByTagName('option');
  for(var k=0;k<opts.length;k++)
  {
   var imgsrc='';
   if(opts[k].value)
   {
    if(opts[k].value=='default') imgsrc='/phpimg.php?img=audios.jpg';
    else imgsrc="/phpimg.php?img="+opts[k].value+"&amp;x=audios-"+rid+"-"+chk+"-"+auth;
   } else imgsrc="/phpimg.php";
   text+="<div onclick='updatsbi(\""+sboxes[i].id+"\",\""+opts[k].value+"\")'><img src='"+imgsrc+"' alt='' /></div>";
  }
  newdiv.innerHTML=text;
  newdiv.style.width=sbw;
  sb.parentNode.insertBefore(newdiv,sb);
  newdiv.style.zIndex="10";
  newdiv.style.display="none";
  sb.onmousedown=function()
  {
   this.style.display="none";
   var ddb=getElementsByClassName("imageselect");
   for(var l=0;l<ddb.length;l++) ddb[l].style.display="none";
   var ddb=getElementsByClassName("sbi");
   for(var l=0;l<ddb.length;l++) if(ddb[l]!=this) ddb[l].style.display="inline";
   var did="i"+this.id;
   d.getElementById(did).style.display="inline-block";
   d.onmousedown=function()
   {
    d.onclick=function()
    {
     var ddb=getElementsByClassName("imageselect");
     for(var l=0;l<ddb.length;l++) ddb[l].style.display="none";
     var ddb=getElementsByClassName("sbi");
     for(var l=0;l<ddb.length;l++) ddb[l].style.display="inline";
     d.onclick=null;
     d.onmousedown=null;
    }
   }
  }
 }
}

// Removes already selected options from subsequent playlist select boxes - requires highlight function
function playlist(calledfrompage)
{
 var sboxes=getElementsByClassName("jsplaylist"); // Set the class name in the html
 if(!sboxes[0]) return;
 var opts=sboxes[0].getElementsByTagName('option'); // They are all the same
 var allopts=new Array();
 var alloptstext=new Array();
 for(var i=0;i<opts.length;i++)
 {
  allopts[i]=opts[i].value;
  alloptstext[i]=opts[i].innerHTML;
 }
 var usedopts=new Array();
 for(var i=0;i<sboxes.length;i++)
 {
  usedopts[i]=sboxes[i].value;
  sboxes[i].selectedIndex=0;
  sboxes[i].options.length=0;
  var m=0;
  for(var k=0;k<allopts.length;k++)
  {
   var inc=true;
   var sel=false;
   for(var l=0;l<usedopts.length;l++)
   {
    if(usedopts[l] && allopts[k]==usedopts[l])
    {
     if(l==i) sel=true;
     else inc=false;
     break;
    }
   }
   if(sel)
   {
    sboxes[i].options[m]=new Option(alloptstext[k],allopts[k],false,true);
    sboxes[i].selectedIndex=m;
    m++;
   } else if(inc)
   {
    sboxes[i].options[m]=new Option(alloptstext[k],allopts[k],false,false);
    m++;
   }
  }
  if(calledfrompage==1) highlight(sboxes[i]);
  else sboxes[i].blur();
 }
}

// z-index pair
function bringtofront(o)
{
 o.style.zIndex=o.style.zIndex*1+10;
}
function restorez(o)
{
 o.style.zIndex=o.style.zIndex-10;
}

// AJAX functions...

// Original script by Richard D. LeCour
var opacity = 96; // Avoid starting at 100% due to Mozilla bug
var slowly=
{
 fade:function(id,rtext)
 {
  rtext=(typeof(rtext)!='undefined')?rtext:0;
  this.fadeLoop(id,opacity,rtext);
 },
 fadeLoop:function(id,opacity,rtext)
 {
  var o=document.getElementById(id);
  if(opacity>=5)
  {
   slowly.setOpacity(o,opacity);
   opacity-=4;
   window.setTimeout("slowly.fadeLoop('"+id+"',"+opacity+",'"+rtext+"')",25);
  } else
  {
   if(rtext)
   {
    o.className="lfnotify";
    o.innerHTML=rtext;
   } else o.style.display="none";
   slowly.setOpacity(o, 100);
  }
 },
 setOpacity:function(o,opacity)
 {
  o.style.filter="alpha(style=0,opacity:"+opacity+")"; // IE
  o.style.KHTMLOpacity=opacity/100; // Konqueror
  o.style.MozOpacity=opacity/100; // Mozilla (old)
  o.style.opacity=opacity/100; // Mozilla (new)
 }
}

function trigger(domain,rt,id,tc)
{
 if(rt.substring(0,1)=='<')
 {
  var parts=rt.split('"',4);
  if(parts[1]=='refresh')
  {
   var url=parts[3].substring(parts[3].indexOf('http'));
   window.location=url;
   return;
  }
 }

 if(id=='xfs')
 {
  if(rt>0) d.getElementById('xf').style.display='block';
  return;
 }
 else if(tc=='hide')
 {
  var notice='';
  if(rt!='showrdp') notice=rt;
  slowly.fade(id,notice);
  if(rt=='showrdp') d.getElementById('rdp').style.display="block";
 }
 else d.getElementById(id).innerHTML=rt;
 if((tc.substring(0,5)=='photo' || tc.substring(0,5)=='audio') && rt=='0') window.location=domain+'/editprofile.php?x='+tc;
}

function createRequestObject()
{
 var ro;
 var browser=navigator.appName;
 if(browser=="Microsoft Internet Explorer") ro=new ActiveXObject("Microsoft.XMLHTTP");
 else ro=new XMLHttpRequest();
 return ro;
}

function ajax(host, Method, URL, ID, data, image, tcode)
{
 image=(typeof(image)!='undefined')?image:0;
 tcode=(typeof(tcode)!='undefined')?tcode:'';
 tcode=tcode.replace(/~/, "&");
 if(tcode=='adtrac')
 {
  for (i=0;i<adx.length;i++) if(adx[i]===data) return true;
  adx.push(data);
 }
 var httpObject=createRequestObject();
 if(httpObject!=null)
 {
  Method=Method.toUpperCase();
  var params='x='+data;
  if(Method!="POST") URL+='?'+params+'&ms='+new Date().getTime();
  httpObject.open(Method, URL, true);
  if(Method=="POST")
  {
   httpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   httpObject.setRequestHeader("Content-length", params.length);
   httpObject.setRequestHeader("Connection", "close");
  }
  var updateID=ID;
  httpObject.onreadystatechange=function()
  {
   if(image && httpObject.readyState<4) d.getElementById(updateID).innerHTML='<img class="'+ID+'" src="/phpimg.php?img='+image+'" alt="" />';
   else if(httpObject.readyState==4 && tcode!='adtrac') trigger(host,httpObject.responseText,updateID,tcode);
  }
  if(Method=="POST") httpObject.send(params);
  else httpObject.send(null);
 }
 return true;
} 

// The rest in alphabetical order...

function amff(x,y)
{
 if(x=='c_act' && y=='Individual') d.getElementById("amf").style.visibility="visible";
 else d.getElementById("amf").style.visibility="hidden";
}

function cf(x)
{
 var ans=confirm(x);
 if(ans) return true;
 else return false;
}

function checkboxes(x)
{
 var inputs=d.getElementsByTagName("input");
 if(x.id!="seall")
 {
  var pieces=x.id.split("-");
  if(typeof(pieces[1])!='undefined')
  {
   for (var i=0;i<inputs.length;i++)
   {
    var parts=inputs[i].name.split("-");
    if(typeof(parts[1])!='undefined')
    {
     var chk=false;
     if(typeof(pieces[2])!='undefined' && typeof(parts[2])!='undefined')
     {
      if(pieces[2]==parts[2] && x.innerHTML==inputs[i].value) chk=true;
     } else
     {
      if(pieces[1]==parts[1]) chk=true;
     }
     if(chk)
     {
      inputs[i].checked=!inputs[i].checked;
      highlight(inputs[i]);
     }
    }
   }
  }
 } else
 {
  var checked=x.checked;
  for (var i=0;i<inputs.length;i++)
  {
   inputs[i].checked=checked;
   highlight(inputs[i]);
  }
 }
}

function checkboxselect(x)
{
 var inputs=d.getElementsByTagName("input");
 for (var i=0;i<inputs.length;i++)
 {
  if(inputs[i].type=='checkbox')
  {
   var parts=inputs[i].id.split("-");
   switch(x)
   {
    case 'invert' : inputs[i].checked=!inputs[i].checked; break;
    case 'sflag' : if(parts[1].charAt(3)==1) inputs[i].checked=true; break;
    case 'snr' : if(parts[1].charAt(2)==1) inputs[i].checked=true; break;
    case 'stmm' : if(parts[1].charAt(1)==1) inputs[i].checked=true; break;
    default : inputs[i].checked=false;
   }
   highlight(inputs[i]);
  }
 }
}

// THIS fUNCTION IS iNVOKED WITH onkeypress="checkCapsLock(event)" ADDED TO THE INPUT TAG
function checkCapsLock(e,cid)
{
 var myKeyCode=0;
 var myShiftKey=false;
 if(d.all)
 {
  myKeyCode=e.keyCode;
  myShiftKey=e.shiftKey;
 } else if(d.layers || d.getElementById)
 {
  myKeyCode=e.which;
  myShiftKey=(myKeyCode==16)?true:false;
 }
 var myMsg=( ((myKeyCode>=65 && myKeyCode<=90) && !myShiftKey) || ((myKeyCode>=97 && myKeyCode<=122) && myShiftKey)) ? 'CAPS LOCK' : '&nbsp;';
 if(typeof(timer[cid])!='undefined') clearTimeout(timer[cid]);
 d.getElementById(cid).innerHTML=myMsg;
 timer[cid]=setTimeout("d.getElementById('"+cid+"').innerHTML='&nbsp;'",2000);
}

function email(name,domain,subj,mode)
{
 var addr=name+"@"+domain;
 var addrd=(mode=='short')?('email&nbsp;'+name):addr;
 var subject=(subj!='')?('?subject='+subj):'';
 d.write('<a href="mailto:'+addr+subject+'">'+addrd+'</a>');
}

function ffocus()
{
 d.getElementById("focus").focus();
}

function hidebyid(id,x)
{
 if(d.getElementById(id))
 {
  if(typeof(x)=='undefined') x=0;
  if(x) d.getElementById(id).style.display="block";
  else d.getElementById(id).style.display="none";
 }
}

function initrs(m)
{
 m&=1;
 hidebyid("initrx",m);
 mode=!m;
 hidebyid("initr",mode);
 var pm=(mode)?"-":"+";
 if(d.getElementById('showinitrs'))
 {
  d.getElementById('showinitrs').innerHTML="["+pm+"]";
  d.cookie='initrs='+m;
 }
}

function inputLimiter(inp,maxchars)
{
 if(inp.value.length > maxchars)
 {
  inp.value=inp.value.substring(0, maxchars);
//Workaround for Firefox overflow no scroll problem:
//Trigger a "space" keypress.
  var evt=d.createEvent("KeyboardEvent");
  evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32);
  inp.dispatchEvent(evt);
// Trigger a "backspace" keypress.
  evt=d.createEvent("KeyboardEvent");
  evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 8, 0);
  inp.dispatchEvent(evt);
  alert('Text truncated!');
 }
}

function localizeDate()
{
 var els=getElementsByClassName('dte2');
 for (var i=0, len=els.length; i<len; ++i)
 {
  var code=els[i].id.substring(0,1);
  var phpdate=els[i].id.substring(1);
  var jsdateObject=new Date(phpdate*1000);
  var jsdate=jsdateObject.toString();
  var dparts=jsdate.split(" ");
  var year=jsdateObject.getYear();
  if(year<1900) year=year+1900;
  var hours=jsdateObject.getHours();
  var minutes=jsdateObject.getMinutes();
  var seconds=jsdateObject.getSeconds();
  if(minutes < 10) minutes='0'+minutes;
  if(seconds < 10) seconds='0'+seconds;
  if(code=="v") els[i].innerHTML=dparts[1]+', '+year;
  else if(code=="s") els[i].innerHTML=dparts[0]+', '+dparts[1]+' '+parseFloat(dparts[2])+', '+year;
  else els[i].innerHTML=dparts[0]+', '+dparts[1]+' '+parseFloat(dparts[2])+' '+hours+':'+minutes+':'+seconds;
 }
}

function pmsg()
{
 d.getElementById("pmsg").className="vg";
 var h=Math.max(d.body.clientHeight, d.documentElement.clientHeight);
 d.getElementById('pmsg').style.height=h+'px';
 d.getElementById("pmsgt").className="vgt";
 var a=Math.max(d.documentElement.scrollTop, d.body.scrollTop)+0.33*d.documentElement.clientHeight;
 d.getElementById('pmsgt').style.marginTop=a+'px';
 d.getElementById("pmsgx").style.display="block";
 d.getElementById("pmsg").style.display="block";
 d.getElementById("pmsgb").focus();
}
function pmsghide()
{
 d.getElementById("pmsg").style.display="none";
}

function pmsgsrch(m)
{
 d.getElementById(m+'w').className="vg";
 d.getElementById(m+'x').style.display="block";
 var h=Math.max(d.body.clientHeight, d.documentElement.clientHeight);
 d.getElementById(m+'w').style.height=h+'px';
 d.getElementById(m+'rapper').className="vgts";
 var a=Math.max(d.documentElement.scrollTop, d.body.scrollTop)+0.19*d.documentElement.clientHeight;
 d.getElementById(m+'rapper').style.marginTop=a+'px';
 d.getElementById(m+'w').style.display="block";
}
function pmsgsrchhide(m)
{
 d.getElementById(m+'w').style.display="none";
}

function taCounter(taid,cid,maxchars)
{
 var ta=d.getElementById(taid);
 var spanaid=taid+"a";
 var spanbid=taid+"b";
 if(d.getElementById(spanaid)) d.getElementById(spanaid).style.display="none";;
 if(d.getElementById(spanbid)) d.getElementById(spanbid).style.display="inline";;
 if(ta.value.length > maxchars)
 {
  ta.value=ta.value.substring(0, maxchars);
  ta.scrollTop=ta.scrollHeight;
  alert('Text truncated!');
 }
 if(d.getElementById(cid)) d.getElementById(cid).innerHTML=maxchars-ta.value.length;
}

function yahboo(eml,str)
{
 if(eml.toLowerCase().match('@yahoo.') && typeof(yahbooed)=='undefined')
 {
  var txt=str.substring(0,Math.round(str.length/2));
  txt+=str.substring(Math.round(str.length/2)).replace(/ /,"\n");
  alert(txt);
  yahbooed=true;
 }
}
