function init()
{
  links = document.getElementsByName('username');
  for(i=0;i<links.length;i++) {
    if(links[i].nodeName == 'A' && document.getElementById('popup'+links[i].id)) {
      register(links[i]);
    }
  }
  
  if(null != document.getElementById('form-password')) {
  	passwordBlur(document.getElementById("form-password"));
  }
  
  if(null !== document.getElementById('messageDialog')) {
	  showMessageBox('messageDialog');
  }
}

function AddEvent(obj, type, fn)
{
  if(!obj) {
    return false;
  }

  if(obj.addEventListener) {
    obj.addEventListener(type, fn, false);
    return true;
  }
  else if(obj.attachEvent) {
    var r = obj.attachEvent("on"+type, fn);
    return r;
  }

  return false;
}

function mouseX(e)
{
  if(e.pageX) {
    return e.pageX;
  }
  else if(e.clientX) {
    return e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
  }

  return null;
}

function mouseY(e) {
  if(e.pageY) {
    return e.pageY;
  }
  else if(e.clientY) {
    return e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
  }

  return null;
}

function register(node)
{
  AddEvent(node, 'mouseover', OnItemMouseOver);
  AddEvent(node, 'mousemove', OnItemMouseMove);
  AddEvent(node, 'mouseout', OnItemMouseOut);
}

function getEvent(e)
{
  return e ? e : window.event;
}

function getTarget(e)
{
  e = getEvent(e);

  return e.target ? e.target : e.srcElement;
}

function OnItemMouseOver(e)
{
  var id = getTarget(e).id;
  var node = document.getElementById('popup' + id);

  node.style.display = 'block';
  node.style.left = (mouseX(e) + 5) + 'px';
  node.style.top = (mouseY(e) - 40) + 'px';
}

function OnItemMouseMove(e)
{
  var id = getTarget(e).id;
  var node = document.getElementById('popup' + id);

  node.style.left = (mouseX(e) + 5) + 'px';
  node.style.top = (mouseY(e) - 40) + 'px';
}

function OnItemMouseOut(e)
{
  var id = getTarget(e).id;
  var node = document.getElementById('popup' + id);
  node.style.display = 'none';
}

function showMessageBox(id)
{
	var box = document.getElementById(id);
	box.className = "message-dialog message-dialog-active";
	
	var overlay = document.createElement("div");
	overlay.id = "message-box-overlay"
	overlay.className = "message-box-overlay";
	overlay.style.height = getWindowInnerHeight() + "px";
	overlay.style.width = getWindowInnerWidth() + "px";
	
	overlay.onclick = function(){ closeMessageBox(id); }
	box.onclick = function(){ closeMessageBox(id); }
	
	document.body.appendChild(overlay);
	window.onresize = resizeMessageBoxOverlay;
}

function getWindowInnerHeight()
{
	return max(window.innerHeight, max(document.body.offsetHeight,document.documentElement.offsetHeight));
}

function getWindowInnerWidth()
{
	return max(window.innerWidth, max(document.body.offsetWidth,document.documentElement.offsetWidth));
}

function resizeMessageBoxOverlay()
{
	var overlay = document.getElementById("message-box-overlay");
	overlay.style.height = window.innerHeight + "px";
	overlay.style.width = window.innerWidth + "px";
}

function closeMessageBox(id)
{
	box = document.getElementById(id);
	//box.className = "hidden";
	
	box.parentNode.removeChild(box);
	
	var overlay = document.getElementById("message-box-overlay");
	document.body.removeChild(overlay);
	window.onresize = null;
}

function max(v1, v2)
{
	if(v1>v2) {
		return v1;
	}
	
	return v2;
}

function updateMainContent(req, params)
{
	hideLoadingIcon();
	
	  if(req.responseText == "NULL") {
	    return;
	  }
	  
	  var ivw = document.getElementById("ivw-tag");
	  var ga = document.getElementById("google-analytics");
	  var main = document.getElementById("main_content");
	  
	  main.innerHTML = req.responseText;
	  main.appendChild(ga);
	  main.appendChild(ivw);
}

function updatePartialContent(req, id)
{
	hideLoadingIcon();
	
  if(req.responseText == "NULL") {
    return;
  }
  
  document.getElementById(id).innerHTML = req.responseText;
}

function messagebox(text)
{
	 request('/ajax/util/messagebox', 'POST', 'text='+encodeURI(text), ajaxMessageboxCallback);
}

function dialogbox(text, link_yes, link_no)
{
	if(dialogbox.arguments.length == 2) {
		link_no = "close";
	}
	
	 request('/ajax/util/dialogbox', 'POST', 'text='+encodeURI(text)+'&link_yes='+encodeURI(link_yes)+'&link_no='+encodeURI(link_no), ajaxMessageboxCallback);
}

function ajaxMessageboxCallback(req, params)
{
	if(req.responseText == "NULL") {
		return;
	}
	
	document.getElementById('main_content').innerHTML = req.responseText + document.getElementById('main_content').innerHTML;
	showMessageBox('ajaxMessageBox');
}


function showAllItems()
{
	var li = document.getElementById('itemselection').getElementsByTagName('a');

	for(i=0;i<=2;i++) {
		li[i].className = "active";
	}
	
	updateSelectedItems();
}

function updateSelectedItems()
{
	var li = document.getElementById('itemselection').getElementsByTagName('a');
	var types = new Array();
	
	for(i=0;i<=2;i++) {
		if(li[i].className == "active") {
			types.push(li[i].name);
			
			if(li[i].name == 'image') {
				types.push('website');
			}
		}
	}
	
	var expire = new Date();
	expire.setTime(expire.getTime() + 31536000000);
	document.cookie = "ls_types=" + types + ";expires=" + expire.toGMTString() + ";path=/";
	
	if(module == 'default' && controller == 'gallery') {
		showLoadingIcon();
		request("/ajax/" + controller + "/" + action, "GET", '', updateMainContent);
	} else {
		location.href = "/gallery/";
	}
}

function itemSelection(element)
{
	if(element.className == "active") {
		element.className = "";
	} else {
		element.className = "active";
	}
	
	updateSelectedItems();
}

function singleEvent(e)
{
 if(e.stopPropagation)
  e.stopPropagation();
 else e.cancelBubble = true;
}

function showType(type)
{
	if(controller != "gallery") {
		window.location.href = '/gallery/type/' + type;
		return;
	}
	showLoadingIcon();
	request("/ajax/gallery/index/type/" + type, "GET", '', updateMainContentAndGalleryTabs, type);
}

function updateMainContentAndGalleryTabs(req, type) {
	
	document.getElementById('tab-image').className = (type == 'image' || type == 'all') ? 'active' : '';
	document.getElementById('tab-joke').className = (type == 'joke' || type == 'all') ? 'active' : '';
	document.getElementById('tab-video').className = (type == 'video' || type == 'all') ? 'active' : '';
	
	updateMainContent(req, type);
}