﻿// JScript File
function hideWithDelay(event, element) {
	var box = document.getElementById(element);
	if(!event) event = window.event; // IE - event

	var node = event.toElement; // IE - clicked node
	if(!node)                   // FF - clicked node
		node = event.relatedTarget ;
	
	while(node.tagName != 'BODY') {
		if(node.className == 'help')
			return;
		node = node.parentNode;
	}
	pausecomp(250);
	hideNow(element);
}

function hideNow(element) {
	var box = document.getElementById(element);
	pausecomp(100);
	box.style.visibility='hidden';
	showSelects();
}

// IE-fix
function showSelects() {
	var selectas = document.getElementsByTagName("select");
	
	for(var i = 0; i < selectas.length; i++) {
		var select = selectas[i];
			if(select.style.visibility = 'hidden')
				select.style.visibility = 'visible';
		
	}
}


function show(event, element) {
	var limit = 410; // <= pixels from the left side -> align from left, otherwise from right.
	var box = document.getElementById(element);
	var box_offset = 0;
	
	if(!event) event = window.event; // IE - event
	var node = event.srcElement; // IE - clicked node
	if(!node) {                  // FF - clicked node
		node = event.target;
		while(node.nodeType != node.ELEMENT_NODE)
			node = node.parentNode;
	}

	var imgPos = findPos(node);
	
	if(imgPos[0] > limit)
		box_offset = imgPos[0] - box.offsetWidth + node.offsetWidth;
	else
		box_offset = imgPos[0];
	if(box_offset - node.offsetWidth < 10) // IE/FF fix (wacky 0 vs 30px difference)
		box_offset = 0;
		
	box.style.visibility = 'visible';
	box.style.left = box_offset+'px';
	box.style.top = imgPos[1] - box.offsetHeight/2 - 10 +'px';
	
	// IE fix: select-elements are rendered always on top so they must be forced hidden.
	
	var boxPos = findPos(box);
	var boxLeft = boxPos[0];
	var boxTop = boxPos[1];
	var boxRight = boxPos[0] + box.offsetWidth;
	var boxBottom = boxPos[1] + box.offsetHeight;
	
	
	var selectas = document.getElementsByTagName("select");
	
	for(var i = 0; i < selectas.length; i++) {
		var select = selectas[i];
		var selectPos = findPos(select);
		var selectLeft = selectPos[0];
		var selectTop = selectPos[1];
		
		// 2 = pieni virhemarginaali.
		if(selectLeft - 2 > boxLeft && 
			selectLeft + 2 < boxRight && 
			selectTop - 2  > boxTop &&
			selectTop + 2  < boxBottom) {
				select.style.visibility = 'hidden';
		}
		
	}
	
}

function pausecomp(millis) {
	date = new Date();
	var curDate = null;

	do { var curDate = new Date();} 
	while(curDate-date < millis);
} 


/***************************************************************/
// Zebra & sorttables

addEvent(window, "load", sortables_init);
addEvent(window, "load", CimoStripe);

function CimoStripe() {
	if(!document.getElementById('Admin_ProcessProgramApplications')) return;
	stripe('Admin_ProcessProgramApplications', '#dddddd', '#ffffff');
}

/***************************************************************/
// Tools

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
} 

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

