String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

var PageFaderVisible = false
var PageFaderSticky = false

var NavPosition = new Array()
var NavGotoPosition = new Array()
var NavDefaultLeftNormal = 25
var NavDefaultLeftHover = 36
var NavAmount = null

var MinPageHeight = 0
var MinPageWidth = 960

var Reg_xmlHttp = null
var reg_username = ''
var reg_email = ''

var xmlHttpKeepUserOnline = null

function ShowPageFader(text) {
  if (PageFaderVisible == true) {
    PageFaderSticky = false;
    HidePageFader();
  }
  document.getElementById('pagefader').style.display = 'block'
  document.getElementById('popupdiv').style.display = 'block'
  document.getElementById('pagefadercontent').innerHTML = text
  PageFaderVisible = true
  PageFaderSticky = false
  UpdatePageFader()
}

function ShowPageFaderSimple(text) {
  if (PageFaderVisible == true) {
    PageFaderSticky = false;
    HidePageFader()
  }
  document.getElementById('pagefader').style.display = 'block'
  document.getElementById('popupdivsimple').style.display = 'block'
  document.getElementById('pagefadersimplecontent').innerHTML = text
  PageFaderVisible = true
  PageFaderSticky = false
  UpdatePageFader()
}

function UpdatePageFader() {
  if (PageFaderVisible == true) {
    contentHeight = Math.max((window.innerHeight || 0), document.body.clientHeight, document.documentElement.clientHeight, document.body.scrollHeight, document.documentElement.scrollHeight)
    clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight)
    clientWidth = Math.max(document.body.clientWidth, document.documentElement.clientWidth)
    if (window.innerHeight) {
      pos = window.pageYOffset
      posx = window.pageXOffset
    } else if (document.documentElement && document.documentElement.scrollTop) {
      pos = document.documentElement.scrollTop
      posx = document.documentElement.scrollLeft
    } else if (document.body) {
      pos = document.body.scrollTop
      posx = document.body.scrollLeft
    }
    document.getElementById('pagefader').style.height = contentHeight + 'px'
    document.getElementById('popupdiv').style.top = Number(Math.round(clientHeight / 2) - Math.round(document.getElementById('popupdiv').clientHeight / 2) + pos) + 'px'
    document.getElementById('popupdiv').style.left = Number(Math.round(clientWidth / 2) - Math.round(document.getElementById('popupdiv').clientWidth / 2) + posx) + 'px'
    document.getElementById('popupdivsimple').style.top = pos + 'px'
  }
}

function HidePageFader() {
  if (PageFaderSticky == false) {
    document.getElementById('pagefader').style.display = 'none'
    document.getElementById('popupdiv').style.display = 'none'
    document.getElementById('popupdivsimple').style.display = 'none'
    PageFaderVisible = false
  }
}

function RemoveLoader() {
  document.getElementById('loading').style.display = 'none'
  document.getElementById('loading2').style.display = 'none'
}

function NavMouseOver(id) {
  NavGotoPosition[id] = NavDefaultLeftHover;
}

function NavMouseOut(id) {
  NavGotoPosition[id] = NavDefaultLeftNormal;
}

function NavLoop() {
  for (i=0; i<NavAmount; i++) {
    oldpos = NavPosition[i]
    NavPosition[i] = NavPosition[i] + ((NavGotoPosition[i] - NavPosition[i]) / 2.5)
    if (NavPosition[i] != oldpos) {
      document.getElementById('NavItem' + i).style.left = NavPosition[i] + 'px'
    }
  }
  setTimeout('NavLoop()', 25)
}

function Init() {
  for (i=0; i<NavAmount; i++) {
    NavGotoPosition[i] = NavDefaultLeftNormal
    NavPosition[i] = NavDefaultLeftNormal
  }
  NavLoop()
}

function UpdatePageSize() {
  clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight)
  clientWidth = Math.max(document.body.clientWidth, document.documentElement.clientWidth)
  if (document.getElementById('nav_whosonline')) {
    MinPageHeight = 320 + YPos('nav_whosonline') + document.getElementById('nav_whosonline').clientHeight
    if (document.getElementById('stylechooser').style) {
      document.getElementById('stylechooser').style.top = (YPos('nav_whosonline') + document.getElementById('nav_whosonline').clientHeight + 5) + 'px';
      document.getElementById('stylechooser').style.display = 'block';
    }
  }
    
  if (clientHeight < MinPageHeight) {
    document.getElementById('pagecont').style.height = MinPageHeight + 'px'
  } else {
    document.getElementById('pagecont').style.height = '100%'
  }
  if (clientWidth < MinPageWidth) {
    document.getElementById('pagecont').style.width = MinPageWidth + 'px'
    document.getElementById('cuddlesplaceholder').style.width = MinPageWidth + 'px'
    document.getElementById('pagefader').style.width = MinPageWidth + 'px'
  } else {
    document.getElementById('pagecont').style.width = '100%'
    document.getElementById('cuddlesplaceholder').style.width = '100%'
    document.getElementById('pagefader').style.width = '100%'
  }
}

function Register() {
  reg_username = ''
  reg_email = ''
  ShowPageFader('<b>Register - Step 1 of 3</b><br><br>Please verify that you are over or exactly 13 years old or cancel registration.<br><br><table width=100% cellpadding=0 cellspacing=0 border=0 style=\"margin-top: 5px;\"><tr><td align=left valign=top width=49%><input type=button value=\"Cancel\" onclick=\"PageFaderSticky=false;HidePageFader();\" style=\"width: 100%;\"></td><td style=\"width: 5px\"></td><td align=left valign=top width=49%><input type=button value=\"Continue\" onClick=\"Register2()\" style=\"width: 100%;\"></td></tr></table>')
  PageFaderSticky = true
}

function RegisterNotAllowed() {
  ShowPageFader('<b>Register</b><br><br>New registrations are temporarily not allowed. Sorry!<br><br>Click to close.')
}

function Register2() {
  ShowPageFader('<b>Register - Step 2 of 3</b><br><br>Please read the following Terms of Service carefully. By registering, you agree to be bound by the Terms.<br><br><iframe class=\"bgc_light\" style=\"border-style: solid;\" frameborder=0 noresize width=100% height=250 src=\"tos.php?version=lite\"></iframe><br><br>Do you agree to the terms?<br><br><table width=100% cellpadding=0 cellspacing=0 border=0 style=\"margin-top: 5px;\"><tr><td align=left valign=top width=49%><input type=button value=\"No, cancel registration\" onclick=\"PageFaderSticky=false;HidePageFader();\" style=\"width: 100%;\"></td><td style=\"width: 5px\"></td><td align=left valign=top width=49%><input type=button value=\"Yes, I agree\" onClick=\"Register3()\" style=\"width: 100%;\"></td></tr></table>')
  PageFaderSticky = true
}

function Register3(error) {
  if (!error) {
    error = 'Please enter your information. The e-mail address must be valid, as a confirmation e-mail will be sent. It will contain your account password.'
  } else {
    error = '<font color=red>Error: ' + error + '</font>'
  }
  ShowPageFader('<b>Register - Step 3 of 3</b><br><br>' + error + '<br><br><form action=\"javascript:RegisterSubmit()\" method=\"post\" style=\"display: inline;\"><table border=0 cellpadding=1 cellspacing=0 style=\"width: 100%\"><tr><td width=120 align=right valign=center>Username:&nbsp;</td><td align=left valign=center><input width=100% type=text id=\"reg_username\" maxlength=32 style=\"width: 100%;\"></td></tr><td width=120 align=right valign=center>E-mail:&nbsp;</td><td align=left valign=center><input type=text id=\"reg_email\" maxlength=256 style=\"width: 100%;\"></td></tr></table></form><br><table width=100% cellpadding=0 cellspacing=0 border=0 style=\"margin-top: 5px;\"><tr><td align=left valign=top width=49%><input type=button value=\"Cancel\" onclick=\"PageFaderSticky=false;HidePageFader();\" style=\"width: 100%;\"></td><td style=\"width: 5px\"></td><td align=left valign=top width=49%><input type=button value=\"Create account\" onClick=\"RegisterSubmit()\" style=\"width: 100%;\"></td></tr></table>')
  PageFaderSticky = true
  document.getElementById('reg_username').value = reg_username
  document.getElementById('reg_email').value = reg_email
}

function RegisterSubmit() {
  reg_username = document.getElementById('reg_username').value
  reg_email = document.getElementById('reg_email').value
  data = 'username=' + encodeURIComponent(reg_username) + '&email=' + encodeURIComponent(reg_email)
  ShowPageFader('<b>Register</b><br><br>Creating account, please wait...')
  try {
    Reg_xmlHttp = new XMLHttpRequest()
  } catch (e) {
    try {
      Reg_xmlHttp = new ActiveXObject('Msxml2.XMLHTTP')
    } catch (e) {
      Reg_xmlHttp = new ActiveXObject('Microsoft.XMLHTTP')
    }
  }
  if (Reg_xmlHttp == null) {
    ShowPageFader('<b>Error</b><br><br>Insufficient browser support. You need a newer browser to register.')
    return
  }
  Reg_xmlHttp.onreadystatechange = RegisterSubmitted;
  Reg_xmlHttp.open('POST', 'register.php', true);
  Reg_xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
  Reg_xmlHttp.setRequestHeader('Content-Length', data.length);
  Reg_xmlHttp.send(data);
}

function RegisterSubmitted() {
  if (Reg_xmlHttp.readyState == 4) {
    eval(Reg_xmlHttp.responseText)
  }
}

function RegisterCompleted() {
  ShowPageFader('<b>Register - Completed</b><br><br>Your account has been created. An e-mail with your log in information has been sent to your e-mail address. The e-mail contains your log in information. If it doesn<br><br>Click to close.')
}

function ResendConfirm(error) {
  if (!error) {
    error = 'If you haven\'t recieved your validation e-mail, enter your account name and e-mail address below. The e-mail address must be the same e-mail with which you registered the account.'
  } else {
    error = '<font color=red>Error: ' + error + '</font>'
  }
  ShowPageFader('<b>Re-send validation e-mail</b><br><br>' + error + '<br><br><form action=\"javascript:ResendConfirmSubmit()\" method=\"post\" style=\"display: inline;\"><table border=0 cellpadding=1 cellspacing=0 style=\"width: 100%\"><tr><td width=120 align=right valign=center>Username:&nbsp;</td><td align=left valign=center><input width=100% type=text id=\"reg_username\" maxlength=32 style=\"width: 100%;\"></td></tr><td width=120 align=right valign=center>E-mail:&nbsp;</td><td align=left valign=center><input type=text id=\"reg_email\" maxlength=256 style=\"width: 100%;\"></td></tr></table></form><br><table width=100% cellpadding=0 cellspacing=0 border=0 style=\"margin-top: 5px;\"><tr><td align=left valign=top width=49%><input type=button value=\"Cancel\" onclick=\"PageFaderSticky=false;HidePageFader();\" style=\"width: 100%;\"></td><td style=\"width: 5px\"></td><td align=left valign=top width=49%><input type=button value=\"Resend e-mail\" onClick=\"ResendConfirmSubmit()\" style=\"width: 100%;\"></td></tr></table>')
  PageFaderSticky = true
  document.getElementById('reg_username').value = reg_username
  document.getElementById('reg_email').value = reg_email
}

function ResendConfirmSubmit() {
  reg_username = document.getElementById('reg_username').value
  reg_email = document.getElementById('reg_email').value
  data = 'username=' + encodeURIComponent(reg_username) + '&email=' + encodeURIComponent(reg_email)
  ShowPageFader('<b>Re-send validation e-mail</b><br><br>Sending e-mail, please wait...')
  try {
    Reg_xmlHttp = new XMLHttpRequest()
  } catch (e) {
    try {
      Reg_xmlHttp = new ActiveXObject('Msxml2.XMLHTTP')
    } catch (e) {
      Reg_xmlHttp = new ActiveXObject('Microsoft.XMLHTTP')
    }
  }
  if (Reg_xmlHttp == null) {
    ShowPageFader('<b>Error</b><br><br>Insufficient browser support. You need a newer browser to register.')
    return
  }
  Reg_xmlHttp.onreadystatechange = ResendConfirmSubmitted;
  Reg_xmlHttp.open('POST', 'resendconfirm.php', true);
  Reg_xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
  Reg_xmlHttp.setRequestHeader('Content-Length', data.length);
  Reg_xmlHttp.send(data);
}

function ResendConfirmSubmitted() {
  if (Reg_xmlHttp.readyState == 4) {
    eval(Reg_xmlHttp.responseText)
  }
}

function ResendConfirmCompleted() {
  ShowPageFader('<b>Re-send validation e-mail - completed</b><br><br>Your validation e-mail has been re-sent.<br><br>Click to close.')
}

function KeepUserOnline() {
  try {
    xmlHttpKeepUserOnline = new XMLHttpRequest()
  } catch (e) {
    try {
      xmlHttpKeepUserOnline = new ActiveXObject("Msxml2.XMLHTTP")
    } catch (e) {
      xmlHttpKeepUserOnline = new ActiveXObject("Microsoft.XMLHTTP")
    }
  }
  if (!xmlHttpKeepUserOnline) return false
  var d = new Date();
  xmlHttpKeepUserOnline.onreadystatechange = KeepUserOnlineSubmitted;
  xmlHttpKeepUserOnline.open("GET", "keepuseronline.php?timezone=" + (-d.getTimezoneOffset() / 60) + '&random=' + Math.random(), true);
  xmlHttpKeepUserOnline.send(null);
  setTimeout('KeepUserOnline()', 270000);
}

function KeepUserOnlineSubmitted() {
  if (xmlHttpKeepUserOnline.readyState == 4) {
    eval(xmlHttpKeepUserOnline.responseText)
  }
}

var ctrlkey = false
var altkey = false
var shiftkey = false

function KeyDownHandler(evt) {
  evt = (evt) ? evt : ((event) ? event : null)
  if (evt == null) return
  ctrlkey = evt.ctrlKey
  altkey = evt.altKey
  shiftkey = evt.shiftKey
}

function KeyUpHandler(evt) {
  evt = (evt) ? evt : ((event) ? event : null)
  if (evt == null) return
  ctrlkey = evt.ctrlKey
  altkey = evt.altKey
  shiftkey = evt.shiftKey
}

function GateKeeper() {
  if (ctrlkey && shiftkey && (!altkey)) {
    location.replace('praetorian.php')
  }
}

document.onkeydown = KeyDownHandler
document.onkeyup = KeyUpHandler

setTimeout('KeepUserOnline()', 5000)
