
$(document).ready(function(){
	// mouseover person name to display tooltip
	$('a.userFaved', this).mouseover(function(event){
		var uid = $(this).attr('uid');
		var url = '/personTooltip.php?uid=' + uid;
		$('#personTooltip').empty().load(url);
		posPersonTooltip(event);
		$('#personTooltipContainer').show(250);
	});

	// mouseout to hide tooltip
	$('a.userFaved', this).mouseout(function(){
		$('#personTooltipContainer').hide(250);
	});

	// position person tool tip
	var posPersonTooltip = function(event) {
		var tPosX = event.pageX - 5;
		var tPosY = event.pageY + 10;
		$('#personTooltipContainer').css({top: tPosY, left: tPosX});
	};
});

// client side URL encoding and decoding
// credit: http://cass-hacks.com/articles/code/js_url_encode_decode/
function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

// credit: http://cass-hacks.com/articles/code/js_url_encode_decode/
function URLDecode (encodedString) {
  var output = encodedString;
  var binVal, thisString;
  var myregexp = /(%[^%]{2})/;
  while ((match = myregexp.exec(output)) != null
             && match.length > 1
             && match[1] != '') {
    binVal = parseInt(match[1].substr(1),16);
    thisString = String.fromCharCode(binVal);
    output = output.replace(match[1], thisString);
  }
  return output;
}

// +++++++ sign in & register ++++++++
var nicknameTimeout;
var COLOR_ATTN = "silver";
function updateNick() {
   var nickname = $("#nickname").val().toLowerCase();
   $("#errMsgNickname").hide();
   $("#nickname").css("color", "#222222");
   if (nickname.length < 3) {
      $("#nicknameurl").text('NICKNAME');
   }
   else {
      $("#nicknameurl").text(nickname);
   }
   $("#nicknamepreview").show();
   if (nickname.length >= 3) {
      if (nicknameTimeout)clearTimeout(nicknameTimeout);
      nicknameTimeout = setTimeout(curry(validateNick, nickname), 200);
   }
}

function validateName(form) {
   clearErrMsg();
   if (form.name.value.length < 3) {
      $("#errMsgName").append(document.createTextNode('Name must be between 3 to 20 characters long'));
      form.name.focus();

      return false;
   }
	return true;
}

function validateNick(nickname) {
   nickname = nickname.toLowerCase();
   $.post("/checknick_exe.php", {
	      nickname : nickname},
	      function(result) {
		      if ($("#nickname").val().toLowerCase() == nickname && result) {
		         if (result.error_html) {
		            $("#errMsgNickname").text(result.error_html); $("#nicknamepreview").hide(); $("#errMsgNickname").show(); $("#nickname").css("color", "#cc0000"); }
		         }
		  },
		  'json');
}

function validatePass(form) {
   clearErrMsg();
   if (!form.pass1.value && !form.pass2.value) {
      return true;
   }
   if (form.pass1.value.length < 6) {
      $("#errMsgPassword").append(document.createTextNode('Your password must be at least six characters long'));
      form.pass1.focus();
      return false;
   }
   if (form.pass1.value != form.pass2.value) {
      $("#errMsgPassword").append(document.createTextNode('The passwords do not match'));
      form.pass2.focus();
      return false;
   }
   return true;
}

function curry(C) {
   var A = [];
   for(var B = 1; B < arguments.length; B++) {
      A.push(arguments[B])}
   return function() {
      var D = [];
      for(var E = 0; E < A.length; E++) {
         D.push(A[E])}
      for(var E = 0; E < arguments.length; E++) {
         D.push(arguments[E])}
      return C.apply(null, D)}
}

function checkRequired(D, B) {
   var E = true;
   for(var C = 0; C < B.length; C++) {
      var A = D[B[C]];
      if(!A) {
         continue}
      if(!A.value || A.style.color == COLOR_ATTN) {
         A.style.backgroundColor = "#ffffcc";
         if(E) {
            A.focus()}
         E = false}
      else {
         A.style.backgroundColor = "white"}
   }
   return E
}

function validateEmail(form){
	clearErrMsg();
	var email = document.getElementById('email');
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(email.value)) {
		$("#errMsgEmail").append(document.createTextNode('Invalid email address'));
		$("#email").focus();

		return false;
	}
	return true;
}

function clearErrMsg(){
	$("#errMsgEmail").empty();
	$("#errMsgName").empty();
	$("#errMsgPassword").empty();
}
// ++++++++ end of sign in and register ++++++++++

