// Check for IE6
var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();
var is_minor = parseFloat(appVer);
var is_major = parseInt(is_minor);
var iePos = appVer.indexOf('msie');
if (iePos !=-1) {
  is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)))
  is_major = parseInt(is_minor);
}
var is_ie = ((iePos!=-1));
var is_ie6 = (is_ie && is_major == 6);

var timerID = 0;
var isWindow = 0;

function xmlhttpPost(strURL,qstr,elem) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText,elem);
        }
    }
    self.xmlHttpReq.send(qstr);
}
function updatepage(str,e){
    document.getElementById(e).innerHTML = str;
}
function checkUserAvailability () {
  var writeto  = document.getElementById('msg');
  var username = document.getElementById('username');
  if (writeto && username) {
    if (username.value.length > 0 ) {
      if (username.value.length < 4 || username.value.length > 16) {
        writeto.innerHTML = '<font style="color: #FF0000">Username must have 4-16 characters long.</font>';
      } else {
        var re=/^[a-z0-9]+$/i;
        if (username.value.match(re) == null) {
          writeto.innerHTML = '<font style="color: #FF0000">Username must contain only letters and numbers.</font>';
        } else {
          xmlhttpPost('/ajax.checkusername.php','&u='+username.value,'msg');
        }
      }
    } else {
      writeto.innerHTML = '<font style="color: #FF0000">Please enter desired username first.</font>';
    }
  }
}

function validateLogin (frm) {
  if (frm.user.value.length < 3) {
    alert('Please enter your smartGPT username.');
    return false;
  }
  if (frm.pass.value == '' ) {
    alert('Plese enter your smartGPT password.');
    return false;
  }
}

function validateSignup (frm) {
  var re = /^[a-z\s\-]+$/i;
  if (frm.fname.value.length < 5) {
    alert('Please enter your full name.');
    return false;
  }
  if (frm.fname.value.match(re) == null) {
    alert('A valid full name contains only letters, space and dash.');
    return false;
  }
  if (frm.email.value.length < 6) {
    alert('Please enter your email address.');
    return false;
  }
  re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
  if (frm.email.value.match(re) == null) {
    alert('The email address you entered doesn\'t appear to be valid.');
    return false;
  }
  if (frm.user.value.length < 4 || frm.user.value.length > 16 ) {
    alert('Username must have 4-16 characters long.');
    return false;
  }
  re=/^[a-z0-9]+$/i;
  if (frm.user.value.match(re) == null ) {
    alert('Username can contain only letters and numbers.');
    return false;
  }
  if (frm.pass.value.length < 4 || frm.pass.value.length > 16) {
    alert('Password must have 4-16 characters.');
    return false;
  }
  if (frm.repass.value == '') {
    alert('Please re-type your chosen password.');
    return false;
  }
  if (frm.repass.value != frm.pass.value) {
    alert('Passwords does not match.');
    return false;
  }
  re = /^[0-9]+$/;
  if (frm.code.value.length != 4 || frm.code.value.match(re) == null) {
    alert('Please enter the security code as shown in the picture.');
    return false;
  }
}

function validateEmail (frm) {
  if (frm.email.value.length < 6) {
    alert('Please enter your email address.');
    return false;
  }
  var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
  if (frm.email.value.match(re) == null) {
    alert('The email address you entered doesn\'t appear to be valid.');
    return false;
  }
  re = /^[0-9]+$/;
  if (frm.code.value.length != 4 || frm.code.value.match(re) == null) {
    alert('Please enter the security code as shown in the picture.');
    return false;
  }
}
function validateComment (frm) {
  if (frm.email.value.length < 6) {
    alert('Please enter your email address.');
    return false;
  }
  var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
  if (frm.email.value.match(re) == null) {
    alert('The email address you entered doesn\'t appear to be valid.');
    return false;
  }
  if (frm.message.value.length < 16) {
    alert('Your comment must have at least 16 characters.');
    return false;
  }
  re = /^[0-9]+$/;
  if (frm.code.value.length != 4 || frm.code.value.match(re) == null) {
    alert('Please enter the security code as shown in the picture.');
    return false;
  }
}

// ---- hinting and ajax boxes
function findPosX(obj) {
  var curleft = 0;
  if (obj.offsetParent) {
    while (obj.offsetParent) {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  } else if (obj.x)
    curleft += obj.x;
  return curleft;
}

function findPosY(obj) {
  var curtop = 0;
  if (obj.offsetParent) {
    while (obj.offsetParent) {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  } else if (obj.y)
    curtop += obj.y;
  return curtop;
}
function showHint(Obj,desc,expanded) {
        var div = document.getElementById('hintdiv');
        var html = desc;
        div.style.left=findPosX(Obj) + 'px';
        div.style.top=findPosY(Obj)+16 + 'px';
        if (expanded == 1) 
          div.style.width='460px';
	else if (expanded == 2) 
	  div.style.width='120px';
        else
          div.style.width='240px';
        div.style.display = 'inline';
        div.style.visibility= 'visible';
        div.innerHTML = html;
}
function hideHint() {
        var div = document.getElementById('hintdiv');
        div.style.display = 'none';
        div.style.visibility= 'hidden';
}
function showProof(path,title) {
  var height = Math.max(Math.max(document.body.scrollHeight,document.body.clientHeight),Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight));
  var prepage=document.getElementById('prepage');
  var dialog=document.getElementById('dialog');
  if (prepage && dialog) {
    var yt = document.getElementById('ytvid');
    if (yt) yt.style.visibility='hidden';
    prepage.style.height=height+'px';
    prepage.style.display='block';
    var offset=0;
    if (document.documentElement && document.documentElement.scrollTop)
      offset=document.documentElement.scrollTop; // IE6 +4.01 and user has scrolled
    else if (document.body && document.body.scrollTop)
      offset= document.body.scrollTop;

    var h = 0;
    if (is_ie) {
      h = document.documentElement.clientHeight;
    } else {
      h = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
    }
    var pos=offset + ((h/2)-288);
    if (pos < 0) pos=0;
    dialog.style.top=pos+'px';
    dialog.style.display='block';
    var dc = document.getElementById('dcontent');
    if (dc) dc.innerHTML='<div style="width: 400px; margin-top: 4px;"><b style="color: #FFFFFF">Loading ...</b></div><center><br/><br/><br/>Loading...<br/><br/><img src="/site.images/loader.gif" border="0"/></center>';
    var param='p='+path+'&t='+title;
    xmlhttpPost('/ajax.show.proof.php',param,'dialog',1);
    isWindow=288;
  }
}
function hideDialog() {
  xmlhttpPost('/ajax.restore.dialog.php','','dialog',0);
  var prepage=document.getElementById('prepage');
  if (prepage) prepage.style.display='none';
  var dialog=document.getElementById('dialog');
  if (dialog) dialog.style.display = 'none';
  isWindow = 0;
  var yt = document.getElementById('ytvid');
  if (yt) yt.style.visibility='visible';
}
function scrollHandler() {
  if (isWindow > 0) {
    var dialog=document.getElementById('dialog');
    if (dialog) {
      var offset=0;
      if (document.documentElement && document.documentElement.scrollTop)
        offset=document.documentElement.scrollTop; // IE6 +4.01 and user has scrolled
      else if (document.body && document.body.scrollTop)
        offset= document.body.scrollTop;

      var h = 0;
      if (is_ie) {
        h = document.documentElement.clientHeight;
      } else {
        h = (typeof window.innerHeight != 'undefined' ? window.innerHeight : document.body.offsetHeight);
      }
      var pos=offset + ((h/2)-isWindow);
      if (pos < 0) pos=0;
      dialog.style.top=pos+'px';
    }
  } 
}
