var $D = YAHOO.util.Dom;

var Utils = window.Utils || {};
var Gui = window.Gui || {};

Utils = {
	goToPage: function(uri) {
		if (uri!=null && uri.value!='') {
			window.location.href = uri;
		}
	},

	toggleDisplay: function(id) {
		obj = document.getElementById(id);
		if (obj!=null) {
			if ($D.hasClass(obj, 'hidden'))
				$D.removeClass(obj, 'hidden');
			else
				$D.addClass(obj, 'hidden');
		}
	}
};

Gui = {
	changeSection: function(obj, containerId) {
		if (obj==null)
			return false;
		var i, list, links, divs;
		var id = obj.href.substr(obj.href.indexOf('#')+1);
		var container = (containerId) ? document.getElementById(containerId) : document.body;
		
		// reset shown section		
		divs = container.getElementsByTagName('div');
		for (i=0; i<divs.length; i++) {
			divs[i].className = divs[i].className.replace(/(^|\s)active($|\s)/,'');
		}

		// reset tabs
		list = obj.parentNode;
		while(list && list.nodeName.toLowerCase()!='ul')
			list = list.parentNode;

		links = list.getElementsByTagName('li');
		for (i=0; i<links.length; i++) {
			links[i].className = links[i].className.replace(/(^|\s)active($|\s)/,'');
		}

		// set active link and section
		activeLink = obj.parentNode;
		while(activeLink && activeLink.nodeName.toLowerCase()!='li')
			activeLink = list.parentNode;

		activeLink.className += ' active';
		document.getElementById(id).className += ' active';		
	},
	
	toggleList: function(obj, containerId) {
		var isActive;
		
		while (obj && obj.nodeName.toLowerCase()!='li')
			obj = obj.parentNode;
		
		if (obj.className.indexOf('active')>=0)
			isActive = true;
		else
			isActive = false;
		
		if (!obj || !containerId)
			return false;
		
		var container = document.getElementById(containerId);
		var lis = container.getElementsByTagName('li');
		
		for (i=0; i<lis.length; i++)
			lis[i].className = lis[i].className.replace(/(^|\s)active($|\s)/,'');
		
		if (!isActive)
			obj.className += ' active';
	}
};

// getElementsByAttribute; original script by Dustin Diaz (www.dustindiaz.com)
YAHOO.util.Dom.getElementsByAttribute = function(values, tag, root) {
	var method = function(el) {
		var match = false;
		
		for (atr in values) {
			var re = new RegExp('(?:^|\\s+)' + values[atr] + '(?:\\s+|$)');
			if ( el.getAttribute(atr) && re.test(el.getAttribute(atr)) ) {
				match = true;
			}
		}
		return match;
	};
	
	return this.getElementsBy(method, tag, root);
};


/* dohvati sve elemente prema klasi */
function getElementsByClassName() {
	var scope; var results = new Array;

	args = getElementsByClassName.arguments;
	scope = (!args[1]) ? '*' : args[1];
	els = (document.all && scope=='*') ? document.all : document.getElementsByTagName(scope);

	if (args[0].search(/^\/.+\/$/)!=-1)
		query = new RegExp(args[0].replace(/^\/(.+)\/$/,'$1'),'g');
	else
		query = new RegExp('(^|\\s)'+args[0].replace(/\s/,'\\s')+'($|\\s)','g');

	for (a=0; a<els.length; a++) {
		if (els[a].className.search(query)!=-1)
			results.push(els[a]);
	}

	return results;
}

if (!Array.prototype.push) {
	Array.prototype.push = function(varija) {
		this[this.length]=varija;
		return this.length;
	}
}


/* izvuci vrijednost parametra iz uri-a */
function getParam(name) {
   params = window.location.search.substr(1).split('&');

   for (i in params) {
      if (params[i].indexOf(name)>=0)
         return params[i].substr(params[i].indexOf('=')+1);
   }

   return false;
}

// nadji parent el odredjenog tipa
function getParentByType(el, parentType) {
	while (el && el.nodeName.toLowerCase() != parentType.toLowerCase()) {
		el = el.parentNode;
	}
	return el;
}
