/*

	Some basic JavaScript functions.

*/

var dom = document.getElementById ? 1 : 0; // DOM1 supported?

function __attachEvent(elementObj, eventName, eventHandlerFunctionName){
	if (elementObj.addEventListener) { 
			// Non-IE browsers
			elementObj.addEventListener(eventName, eventHandlerFunctionName, false);		
		} 
		else if (elementObj.attachEvent) { 
			// IE 6+
			elementObj.attachEvent("on" + eventName, eventHandlerFunctionName);
		} 
		else { 
			// Older browsers 
			var currentEventHandler = elementObj["on" + eventName];
		  
			if (currentEventHandler == null) {
				elementObj["on" + eventName] = eventHandlerFunctionName;
			} 
			else {
				elementObj["on" + eventName] = function(e) { currentEventHandler(e); eventHandlerFunctionName(e); }
			}
	}
}
// possibly also part of sifr js --> renamed with __
function __addLoadEvent(func) {   
	var oldonload = window.onload;
	if (typeof window.onload != "function"){
		window.onload = func;
	} 
	else {
		window.onload = function(){
			oldonload();
			func();
		}
	}
}

/* 	


	Zebra Tables
	




	var stripe = function() {
		var tables = document.getElementsByTagName("table");

		for(var x=0;x!=tables.length;x++){
			var table = tables[x];
			if (! table) { return; }
			
			var tbodies = table.getElementsByTagName("tbody");
			
			for (var h = 0; h < tbodies.length; h++) {
				var even = true;
				var trs = tbodies[h].getElementsByTagName("tr");
				
				for (var i = 0; i < trs.length; i++) {
					trs[i].onmouseover=function(){
						this.className += " ruled"; return false
					}
					trs[i].onmouseout=function(){
						this.className = this.className.replace("ruled", ""); return false
					}
					
					if(even)
						trs[i].className += " even";
					
					even = !even;
				}
			}
		}
	}

	window.onload = stripe;	
*/
// tooltip  ----------------------------------------------------------------------------
var tooltip; // stores reference to tooltip layer

// utility functions
function getH(e){return e.offsetHeight;} // get actual height of element
function getW(e){return e.offsetWidth;} // get actual height of element
function setX(e,x){e.style.left=x + "px";} // set x-coordinate of element
function setY(e,y){e.style.top=y + "px";} // set y-coordinate of element

// hide tooltip layer
function hideTooltip(){
	if (tooltip){
		tooltip.style.display="none";
		tooltip = null;
	}
}

// show tooltip layer
function showTooltip(object,tipContent,centered){
	tooltip = getElement(object);
	if (tooltip){
		var evt = window.event || arguments.callee.caller.arguments[0];
		var target = window.event ? evt.srcElement : evt.target;
		target.onmouseout = hideTooltip;
		if (tipContent) tooltip.innerHTML='<div class="tooltipbody"><div class="tooltiptext">'+unescape(tipContent)+'</div></div> ';
		tooltip.style.display="block";
		positionTooltip(evt, centered);
		target.onmousemove = positionTooltip;
	}
}
/*
function showTooltip(object,tipContent){
	tooltip = getElement(object);
	if (tooltip){
		var evt = window.event || arguments.callee.caller.arguments[0];
		var target = window.event ? evt.srcElement : evt.target;
		target.onmouseout = hideTooltip;
		if (tipContent) tooltip.innerHTML='<div class="tooltipbody"><div class="tooltiptext">'+unescape(tipContent)+'</div></div> ';
		tooltip.style.display="block";
		positionTooltip(evt);
		target.onmousemove = positionTooltip;
	}
}
*/
var isCentered;


// postitioning of tooltip above mouse pointer
function positionTooltip(evt, centered){

if (centered) {
  isCentered=centered;
}
	if (tooltip){
		if (!evt) var evt = window.event;
		getMousePosition(evt);
		if (isCentered==true) {
			setX(tooltip,mouseX - 15 -125);
		} else {
			setX(tooltip,mouseX - 15);
		}
		setY(tooltip,mouseY - getH(tooltip) - 10 - 170);
	}
}
/*
function positionTooltip(evt){
	if (tooltip){
		if (!evt) var evt = window.event;
		getMousePosition(evt);
		setX(tooltip,mouseX - 15 -125);
		setY(tooltip,mouseY - getH(tooltip) - 10);
	}
}
*/

// Refresh and store current position of the mouse pointer
var mouseX = 0; // stores current x-coordinate of mouse pointer
var mouseY = 0; // stores current y-coordinate of mouse pointer
function getMousePosition(evt){
	var scrollX = window.innerHeight ? 0 : ((document.documentElement.scrollLeft > document.body.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft);
	var scrollY = window.innerHeight ? 0 : ((document.documentElement.scrollTop > document.body.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop);
	if (evt.pageX || evt.pageY){ // DOM event model supported
		mouseX = evt.pageX;
		mouseY = evt.pageY;
	} else { // IE event model supported
		mouseX = evt.clientX + scrollX;
		mouseY = evt.clientY + scrollY;
	}
}

// open popup window ------------------------------------------------------------------
var defaultWidth = 510; // default popup window width
var defaultHeight = 550; // default popup window height

function openWindow(url,w,h,name){
	if (name == null) name = "";
	var props = "resizable,scrollbars";
	props += ",width=" + (w ? w : defaultWidth);
	props += ",height=" + ( h ? h : defaultHeight);
	props += ",status";
	var newwin = window.open(url,name,props);
}

// utility functions ------------------------------------------------------------------
// return object reference
function getElement(e){if (dom)return document.getElementById(e);if (document.all)return document.all[e]; return false;}

// Returns the first key for the value that matches the given value.
// When the value is not found, -1 is returned.
Array.prototype.find = function (element) 
{
  for (var keys in this) 
  {
    if (this[keys] == element) 
    {
      return keys;
      break;
    }
  }
  return -1;
};
// Go back one step in the form
function goBack(formid) {
	document.getElementById(formid).elements['next-step'].value=document.getElementById(formid).elements['step'].value-1;					
	document.getElementById(formid).elements['step'].value=document.getElementById(formid).elements['step'].value-1;	
	doSubmitForm(formid);
}

function doSubmitForm(formid) {
	document.getElementById(formid).submit();
}

// Remove the [-], [ ] and [+] sign from the entered msisdn.
function convertMsisdn(msisdn){
	var msisdn; 
	var array = new Array(); 
	array[0] = /\-/g; 
	array[1] = /\ /g; 
	array[2] = /\+/g;
	 
	for ( var i=0, len=array.length; i < len; i++ ){ 
		msisdn =	msisdn.replace(array[i],""); 
	}
	return msisdn;
}

// Use to unescape characters like "&eacute" etc. 
// It is tested for the following browsers: IE6, IE7 and FireFox
function unescapeHTML(elementId, valueToUnescape) {
	var htmlNode = document.getElementById(elementId);
	var result;
	
	if(htmlNode.canHaveHTML == false) {
		htmlNode = document.createElement("div");
	}
	
	htmlNode.innerHTML = valueToUnescape;
	if(htmlNode.innerText) {
		result = htmlNode.innerText; // IE
	} else {
		result = htmlNode.textContent; // FF
	}
	
	return result;
}			

// Hide the given element 
// For example the MessagesPortlet message box can be made invisible when calling this function
function closeDiv(divID){
	document.getElementById(divID).style.display="none";
}


//function to disable a button until a checkbox on the form has been checked...
//for instance : you should not submit a form until a disclaimer checkbox is checked...
//explanation parameters : 
//chkboxid = the id of the checkbox that should be checked before you can click the button
//buttonid = the id of the button that should be enabled/disabled when clicking on the checkbox
//hrefurl = the href attribute of the button 
//active class = the style when the button is active
//inactive class = the style when the button is inactive -->						
function actDeactive_btn(chkboxid,buttonid,href,activeclass, inactiveclass){
	chkObj = document.getElementById(chkboxid);
	btnObj = document.getElementById(buttonid);
	if (chkObj.checked){
		btnObj.setAttribute('href',href);
		changeClassName(btnObj,activeclass,inactiveclass);
	} 
	else {
		btnObj.removeAttribute('href');
		changeClassName(btnObj,inactiveclass,activeclass);
	}

	function changeClassName(obj,class1,class2){
		oldClassName=obj.className;
		obj.className=oldClassName.replace(class2,class1);
 	}
}
