/* -------------- START INFOLOG TYPE SELECTION MENU HANDLING --------*/
function popup_infolog_type_selection(e)
{
	var form = document.getElementById('infolog_type_sel');
	if (!e) var e = window.event;
	form.type.size = form.type.getElementsByTagName('option').length;
	form.style.left = (e.clientX - 15) + 'px';
	form.style.top = (e.clientY - 15) + 'px';
	form.style.overflow = "hidden";
	form.style.visibility = 'visible';
}

function hide_infolog_type_selection(e)
{
	var el;
	if (e)
	{
		el = e.target;
		if (el.tagName.toLowerCase() == "form")
		{
			document.getElementById("infolog_type_sel")
			.style.visibility = 'hidden';
		}
	}
	else
	{
			document.getElementById("infolog_type_sel")
			.style.visibility = 'hidden';
	}
}

/* -------------- START COOKIE MANIPULATION FUNCTIONS ---------*/
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.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 null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

/* -------------- START getElementsByClassName FUNCTION ---------*/
document.getElementsByClassName = function (needle)
{
  var         my_array = document.getElementsByTagName("*");
  var         retvalue = new Array();
  var        i;
  var        j;

  for (i = 0, j = 0; i < my_array.length; i++)
  {
    var c = " " + my_array[i].className + " ";
    if (c.indexOf(" " + needle + " ") != -1)
      retvalue[j++] = my_array[i];
  }
  return retvalue;
}

/* -------------- START EVENT MANIPULATION FUNCTIONS ---------*/
function addEvent(obj, evType, fn)
{
	if (obj.addEventListener)
	{
		obj.addEventListener(evType, fn, true);
		return true;
	} 
	else if (obj.attachEvent)
	{
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} 
	else 
	{
		return false;
	}
}

/* -------------- START CLEAN-VIEW MANIPULATION FUNCTIONS ---------*/
/* Here, when a user press ScrollLock', toggle between clean / normal view */
function toggleCleanView(e)
{
	var code;
	var frameElementIds = new Array(
	"help", "navbar", "tabbar", "pad-top", "pad-bottom", "pagefoot");
	if (!e) var e = window.event;
	/* very strange though, ScrollLock is the only key I know of that could
	   trigger keypress event but does not return keyCode */
	if (!e.keyCode && ! e.which)
		if (inCleanView = !inCleanView) 
			for (var i=0; i<frameElementIds.length; i++)
			document.getElementById(frameElementIds[i]).style.display="none";
		else
			for (var i=0; i<frameElementIds.length; i++)
			document.getElementById(frameElementIds[i]).style.display="block";
}
var inCleanView = false;
//window.onkeypress=toggleCleanView;


/* -------------- START ACTION BUTTON MANIPULATION FUNCTIONS ---------*/
/* WbSH added these functions, I guess they must be (only) used for 
   Action Buttons */
	var action_buttons = new Array('button_ok', 'button_cancel', 'button_new', 'button_edit', 'button_delete', 'button_back');

	//fires when click the foot buttons, wbshang tts#0000015
	function click_button(id) {
		with(document.getElementById(id)) {
			if(tagName=='A') 
				location.href=href; 
			else 
				click();
		}
	}

function generate_action_buttons()
/* this function should be called only once on window.onload */
{
// Here we generate action buttons 
	for (i in action_buttons)
	if (button = document.getElementById(action_buttons[i]))
	with(document.getElementById("foot_" + action_buttons[i])) 
	{
		style.visibility="visible";
		if (button.tagName == 'INPUT')
			appendChild(document.createTextNode(button.value?button.value:button.title));
		else if (button.tagName == 'A' || button.tagName == 'BUTTON')
			appendChild(document.createTextNode(button.firstChild.nodeValue));
	}
}

/* Here we determine if the user is leaving a page with un-saved changes 
		to any 'textarea' element */
// rewrite by wbshang because textarea.firstChild.nodeValue is changed dynamicly as textarea.value when edit the text in IE (so textarea.firstChild.nodeValue is always equal with textarea.value) 
// todo: tiny_mce has some errors, so this dose not work in the pages using tiny_mce editor, wbshang
/*
	var textarea_updated = false;
	var textareas = document.getElementsByTagName('textarea');
	var orig_values = new Array(textareas.length);
	for(var i=0; i<textareas.length; i++) {
		orig_values[i] = textareas[i].value;
	}
	window.onbeforeunload = function () {
		for(var i=0; i<textareas.length; i++) {
			if(textareas[i].value != orig_values[i]) {
				textarea_updated = true;
				break;
			}
		}
		if (textarea_updated &&  ! document.submitted ) {
		// document.submitted should be false if 'button_ok' is pressed;
		return("<?php 
			print lang('discard the modification to this page?'); 
			?>");
		}
	}
	*/

function HelpHover()
{
	this._mousePosX = 0;
	this._mousePosY = 0;
	this._hoverItem = null;
	this._hoverContents = null;
}

HelpHover.prototype.init = function()
{
	var hh = this;
	/* here we find the elements who has helpContents defined 
   the original script of Mr livsey is very simple (as explained on his blog): 
	var helpItems = document.getElementsByClassName('hasHelp');
   now we have much compliated method, 
   in order not to use of 'hasHelp' class */
	var helpItems = new Array();
	for (var i=0; i< document.getElementsByClassName('helpContents').length; i++)
	with (document.getElementsByClassName('helpContents')[i])
		if (document.getElementById(id.substring(0, id.length-4)))
				helpItems[helpItems.length] = 
				document.getElementById(id.substring(0, id.length-4));
	/* we finished collecting 'helpItems' */
	for (var i=0; i<helpItems.length; i++)
	{
		helpItems[i].onmousemove = function(e)
		{
			if (!e) var e = window.event;
			if (e.pageX || e.pageY)
			{
				hh.mousePosX = e.pageX;
				hh.mousePosY = e.pageY;
			}
			else if (e.clientX || e.clientY)
			{
				hh.mousePosX = e.clientX + document.body.scrollLeft;
				hh.mousePosY = e.clientY + document.body.scrollTop;
			}
			hh._hoverItem = this;
			hh._hoverContents = document.getElementById(this.id+'Help');
			hh.move();
		}
		helpItems[i].onmouseout = function (e)
		{
			hh.out();
		}
	}
}

HelpHover.prototype.out = function()
{
	this._hoverContents.style.top = -10000+'px';
	this._hoverContents.style.left = -10000+'px';
	this._hoverItem = null;
	this._hoverContents = null;
}

HelpHover.prototype.move = function()
{
	this._hoverContents.style.top = this.mousePosY+10+'px';
	this._hoverContents.style.left = this.mousePosX+10+'px';
}

addEvent(window, 'load', function()
{
	var hh = new HelpHover();
	hh.init();
});
//  above we add hover help effect by modifying a script of Mr Livesey
// this is taken from  http://livsey.org/2005/03/17/help-tips-experiment/ -->


//addEvent(window, 'load', generate_action_buttons);
addEvent(window, 'load', function()
  {
	if (document.getElementById('infolog_navbar_icon'))
		document.getElementById('infolog_navbar_icon').onmouseover 
			= popup_infolog_type_selection;
	if (document.getElementById('infolog_type_sel'))
		document.getElementById('infolog_type_sel').onmouseout
			= hide_infolog_type_selection;
  }
)
