/* Palvelukohtaisia funktioita */






/**
 *	Pseudos - V1.30.050121 - hover & active
 *	---------------------------------------------
 *	Peterned - http://www.xs4all.nl/~peterned/
 *	(c) 2005 - Peter Nederlof
 *
 *	Credits  - Arnoud Berendsen 
 *	         - Martin Reurings
 *           - Robert Hanson
 *
 *	howto: body { behavior:url("csshover.htc"); }
 *	---------------------------------------------
 */

var currentSheet, doc = window.document, activators = {
	onhover:{on:'onmouseover', off:'onmouseout'},
	onactive:{on:'onmousedown', off:'onmouseup'}
}

function parseStylesheets() {
	var sheets = doc.styleSheets, l = sheets.length;
	for(var i=0; i<l; i++) 
		parseStylesheet(sheets[i]);
}
	function parseStylesheet(sheet) {
		if(sheet.imports) {
			try {
				var imports = sheet.imports, l = imports.length;
				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
			} catch(securityException){}
		}

		try {
			var rules = (currentSheet = sheet).rules, l = rules.length;
			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
		} catch(securityException){}
	}

	function parseCSSRule(rule) {
		var select = rule.selectorText, style = rule.style.cssText;
		if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return;
		
		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
		var affected = select.replace(/:hover.*$/, '');
		var elements = getElementsBySelect(affected);

		currentSheet.addRule(newSelect, style);
		for(var i=0; i<elements.length; i++)
			new HoverElement(elements[i], className, activators[pseudo]);
	}

function HoverElement(node, className, events) {
	if(!node.hovers) node.hovers = {};
	if(node.hovers[className]) return;
	node.hovers[className] = true;
	node.attachEvent(events.on,
		function() { node.className += ' ' + className; });
	node.attachEvent(events.off,
		function() { node.className = 
			node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
}

function getElementsBySelect(rule) {
	var parts, nodes = [doc];
	parts = rule.split(' ');
	for(var i=0; i<parts.length; i++) {
		nodes = getSelectedNodes(parts[i], nodes);
	}	return nodes;
}

	function getSelectedNodes(select, elements) {
		var result, node, nodes = [];
		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
		for(var i=0; i<elements.length; i++) {
			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
			for(var j=0; j<result.length; j++) {
				node = result[j];
				if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
					classname[1] + '\\b').exec(node.className)))) continue;
				nodes[nodes.length] = node;
			}
		}	return nodes;
	}



document.rfs = [];

function AutoRefreshImg ( name, rate )
{
  this.img = document.images[name];
  if (this.img)
  {
    this.img.srcOrig = this.img.src;
    document.rfs[document.rfs.length] = this;
    this.interval = setInterval("document.rfs["+(document.rfs.length-1)+"].refresh()", rate*1000);
  }
 // else
 //   alert ("Image : "+name+" not found in this document!");
}

AutoRefreshImg.prototype.refresh = function ()
{
  var now = new Date ();
//  window.status = "last updated >> " + now.getHours() + " : " + now.getMinutes() + " : " + now.getSeconds();
  this.img.src = this.img.srcOrig + "?rnd=" + now.getTime();
}

AutoRefreshImg.prototype.destroy = function ()
{
  clearInterval(this.interval);
}


document.onclick = function (e) {
  if (window.event && window.event.srcElement)
    var t = window.event.srcElement;
  else
    var t = e.target;
  
  if (document.pop) {
    document.pop.style.display = "none"; document.pop = null;
  }
  if (t.tagName.toLowerCase()=="td" && t.className.indexOf("int")!=-1 ) {
    showPopUp(t);
  }
}

function showPopUp(t) {
  var i,d;
  if (document.pop) { document.pop.style.display = "none"; }
  if (document.popOut) { clearTimeout(document.popOut) }
  for (i = 0; i < t.childNodes.length && i != -1; i++) {
     if (t.childNodes[i].tagName && t.childNodes[i].tagName.toLowerCase()=="div") {
	d = t.childNodes[i]; break;
     }
  }
  document.pop = d;
  d.style.position = "absolute";
  d.style.display = "block";
}

 // DWR rendering method
function renderLoginPopup(id, fragmenturl, options)
{
	options = options || {};
 	 
 	var title = options.title ? options.title : "Kirjaudu";
 	 
 	var okLabel = options.okLabel ? options.okLabel : "Ok";
 	delete options.okLabel;
 	 
 	var cancelLabel = options.cancelLabel ? options.cancelLabel : "Cancel";
 	delete options.cancelLabel;
 	 
 	// Tässä voisimme asettaa elementin päälle loader-animaation ennen kutsua
    RenderingService.renderHtmlFragment(
        fragmenturl,
        function(response) {
	        var window = Dialog.confirm(response,
     	       {className:"alphacube",
 	            width:400,
 	            okLabel: okLabel,
 	            cancelLabel: cancelLabel,
 	            onOk: AjaxAuthenticate,
 	            windowParameters: options
 	         });
 	    }
    );
}
 
function renderLogout(fragmenturl)
{
	RenderingService.renderHtmlFragment(
	        fragmenturl,
	        function(response) {
	        	var now = new Date ();
	        	window.location.href=window.location.href + "?rnd=" + now.getTime();
	        });
}
 	 
function AjaxAuthenticate(win)
{
	var form = $('loginform');
 	var username = form.username.value
 	var password = form.password.value
 	 
 	AuthenticationService.doAuthentication(username, password,
 	{
 		callback: function() {
 			if (typeof(t) != 'undefined' && typeof(t) != 'string')
 				clearTimeout(t);
 			
 			var now = new Date ();
 	    	window.location.href=window.location.href + "?rnd=" + now.getTime();
 	    },
 	    errorHandler: function(message, exception) {
 	    	$('loginerror').innerHTML = "<b>" + exception.message + "</b>";
 	        Windows.focusedWindow.updateHeight();
 	    }
 	});
    return false;
}
