/**
 * Get arrays matching a CSS-Style search query
 * @param string	e		The CSS search query
 * @param element	elem	A specific element to search within (defaults to document.body)
 * @return array The found elements matching the query
 */
document.getElements = function(e, elem) {
	if (!e || !e.length || e.length == 0)
	return [];
	var store = [elem||document.body];
	var store_t = [];
	e = e.split(" ");
	for (var i=0; i<e.length; i++) {
		var r = {
			id:  "",
			tag: "*",
			clas:[]
		};
		var c, s, t=e[i];
		while (t.length > 0) {
			s = t.search(/.[#\.]/) + 1 || t.length;
			c = t.substr(0, s);

			if (c.substr(0, 1) == "#")		r.id = c.substr(1);
			else if (c.substr(0, 1) == ".")	r.clas.push(c.substr(1));
			else							r.tag = c;

			t = t.substr(s);
		}
		while (store.length > 0) {
			var curr = [], temp = store.shift().getElementsByTagName(r.tag);
			for (var j=0; j<temp.length; j++) {
				curr.push(temp[j]);
			}
			while (curr.length > 0) {
				var ok = true, ce = curr.shift();
				if (r.id && ce.id!=r.id) ok = false;
				for (j=0; j<r.clas.length; j++) {
					if ((" "+ce.className+" ").indexOf(" "+r.clas[j]+" ") == -1) {
						ok = false;
						break;
					}
				}
				if (ok) store_t.push(ce);
			}
		}
		store = store_t;
		store_t = [];
	}
	return store;
};

/**
 * Funkcija je namenjena podpori vecim onload eventom
 */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/**
 * Funkcija doda puscice table headerjem
 */
function setArrows(){
	var th=document.getElements("th.sortable");
	for(var i=0; i<th.length; ++i)
	{
		if(th[i].className.indexOf("order1")>0)
		{
			arrowasc = document.createElement('img');
			arrowasc.setAttribute('src','img/ikona-ascending.png');
			arrowasc.style.paddingLeft = '10px';
			th[i].style.whiteSpace="nowrap";
			th[i].appendChild(arrowasc);
		}
		else if(th[i].className.indexOf("order2")>0)
		{
			arrowdesc = document.createElement('img');
			arrowdesc.setAttribute('src','img/ikona-descending.png');
			arrowdesc.style.paddingLeft = '10px';
			th[i].style.whiteSpace="nowrap";
			th[i].appendChild(arrowdesc);
		}
	}
}
addLoadEvent(setArrows);

function parseQueryParameters() {
	var param = new Object();
	var qs = location.search;
	if (!qs) return param;
	
	qs = qs.substring(1);
	var params = qs.split('&');
	var name, value, e, p, i;
	for (i in params) {
		p = params[i];
		e = p.indexOf('=');
		if (e > 0) {
			name = p.substring(0,e);
			value = p.substring(e+1);
			param[name] = value;
		}
	}
	return param;
}

function serializeQueryParameters(param) {
	if (!param) return "";
	var params = "";
	var name;
	for (name in param) {
		if (param[name] != null) {
			if (params.length > 0)
				params += '&';
			params += name + '=' + param[name];
		}
	}
	return params;
}

function applyPageParameter(paramName, paramValue) {
	var param = parseQueryParameters();
	param[paramName] = paramValue.value;
	var qs = serializeQueryParameters(param);
	location.search = qs;
}

function applyParameterField(paramName, selectField) {
	var value = selectField[selectField.selectedIndex].value;
	applyPageParameter(paramName, value);
}

/*
 * Function sets the selected atttribute of LI element 
 * for menu
  */
function setSelectedMenu(){
	var list = document.getElementById("upperMenu");
	var elements = list.getElementsByTagName('a');
	var pathArray = window.location.pathname.split('/');
	var lastPath = pathArray[pathArray.length-1];
	
	for(var i=0; i<elements.length; ++i)
	{
		
		if(lastPath.length > 1 && elements[i].href.indexOf(lastPath) > -1)
			elements[i].className = "selected"; 
	}
}
addLoadEvent(setSelectedMenu);

