var Element =
{
	_width : 0,
	_element : 0,
	_scroll : true,
	url:"",

	hasClass : function (ele,cls)
	{
		if(ele != null)
		return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
	},

	addClass : function (ele,cls)
	{
		if(!this.hasClass(ele,cls)) ele.className += " " + cls;
	},

	removeClass : function (ele,cls)
	{
		if (this.hasClass(ele,cls))
		{
			var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
			ele.className = ele.className.replace(reg,' ');
		}
	},
	toggleDisplay : function(elementID)
	{
		var el = $(elementID);
		if(el.style.display == "none")
		el.style.display = "block"
		else
		el.style.display = "none"
	},

	toggleHeight : function(elementID, minHeight, maxHeight)
	{
	    var el = $(elementID);
	    if(el.currentHeight_ == undefined)
	    {
		    el.currentHeight_ = el.currentHeight_ || minHeight;
		    el.endHeight = el.endHeight || maxHeight;
		}
		else
		{
		    el.currentHeight_ = el.currentHeight_ == minHeight ? maxHeight : minHeight;
		    el.endHeight = el.endHeight == minHeight ? maxHeight : minHeight;
		}
	
		Element.resize(el,el.currentHeight_,el.endHeight, 10,10,1.5, 'height');
	},

	toggleWidth:function(elementID, minWidth, maxWidth)
	{
		var el = $(elementID);
		if(el.currentWidth_ == undefined)
	    {
		    el.currentWidth_ = el.currentWidth_ || minWidth;
		    el.endWidth = el.endWidth || maxWidth;
		}
		else
		{
		    el.currentWidth_ = el.currentWidth_ == minWidth ? maxWidth : minWidth;
		    el.endWidth = el.endWidth == minWidth ? maxWidth : minWidth;
		}

		Element.resize(el,el.currentWidth_,el.endWidth, 20,10,0.5, 'width');
	},

	resize:function(elem,start,end,steps,intervals,powr, direction, extra)
	{
	    extra = extra || [];
	    extra.hideOnZero = extra.hideOnZero ||false;
		if (elem.resizeInt)
		    window.clearInterval(elem.resizeInt);
		var actStep = 0;
		elem.resizeInt = window.setInterval(
		function()
		{

			if(direction == 'width')
			{
				elem.currentWidth = Element.easeInOut(start,end,steps,actStep,powr);
				elem.style.width = elem.currentWidth + "px";
			}
			else if(direction == 'height')
			{
				elem.currentHeight = Element.easeInOut(start,end,steps,actStep,powr);
				elem.style.height = elem.currentHeight + "px";
				//BugFix Move za CV
				if(elem.id == "headerMore")
				{
				    document.body.style.backgroundPosition = "50% " + elem.currentHeight  + "px";
				    $('headcontainer').style.height = (210 + elem.currentHeight) + "px";
				    $('menu').style.top = (100 + elem.currentHeight) + "px";
				    $('headcontainer').style.PaddingTop = elem.currentHeight + "px";
				    $('headcontainer').style.backgroundPosition = "50% " + elem.currentHeight + "px";
				    $('head_banner_left').style.top = (20 + elem.currentHeight) + "px";
				    $('headmore_toggle').style.top = (elem.currentHeight) + "px";
				    $('headscroll').style.top = (155 + elem.currentHeight) + "px";
				    $('headsearch').style.top = (100 + elem.currentHeight) + "px";
				}
				if(extra.hideOnZero == true)
				{
				    if(elem.style.height == "0px")
				    {
				        Element.hide(elem);
				    }
				}
				//End bug fix
			}
			actStep++;
			if (actStep > steps)
			{
				window.clearInterval(elem.resizeInt);
				if(elem.id == "headerMore")
				{
				    if(direction == 'height' && elem.currentHeight == end && end == 0)
				    $('headmore_toggle').style.background = 'url(' + Element.url + '/art/arrow_down.gif) no-repeat';
				    else if(direction == 'height' && elem.currentHeight == end && start == 0)
				    $('headmore_toggle').style.background = 'url(' + Element.url + '/art/arrow_up.gif) no-repeat';
			    }
			}
		}
		,intervals)
	},

	easeInOut:function(minValue,maxValue,totalSteps,actualStep,powr)
	{
		var delta = maxValue - minValue;
		var stepp = minValue+(Math.pow(((1 / totalSteps) * actualStep), powr) * delta);
		return Math.ceil(stepp)
	},
	move:function(elem, from, to, steps, intervals, powr, direction)
	{
		if (elem.moveInt)
		window.clearInterval(elem.moveInt);
		var actStep = 0;
		elem.moveInt = window.setInterval(
		function()
		{

			if(direction == 'vertical')
			{
				elem.currentY = Element.easeInOut(from,to,steps,actStep,powr);
				elem.style.marginTop = elem.currentY + "px";
			}
			else if (direction == 'horizontal')
			{
				elem.currentX = Element.easeInOut(from,to,steps,actStep,powr);
				elem.style.marginLeft = elem.currentX + "px";
			}
			actStep++;
			if (actStep > steps)
			{
				window.clearInterval(elem.moveInt);
			}
		}
		,intervals);
	},
	horizontalScroll:function(elementID, speed, step, continues)
	{
		var el = $(elementID);
		Observer.attachEventListener(el, 'mouseover',
		function()
		{
			Element._scroll = false;
		});
		Observer.attachEventListener(el, 'mouseout',
		function()
		{
			Element._scroll = true;
		});

		try
		{
			if (Element._element.scrollInt)
			window.clearInterval(_element.scrollInt);
		}
		catch(ex)
		{
			Element._element = el;
		}
		el.style.whiteSpace = "nowrap";

		var elementLeft = Element.retrieveComputedStyle(el, 'marginLeft').substring(0, el.length - 2);
		var conteinerWidth = el.parentNode.offsetWidth;
		el.parentNode.style.overflow = 'hidden';
		el.innerText = Element.getInnerText(el.innerHTML);
		var elWidth = el.innerText.length * 4.8;
		elementLeft = el.parentNode.offsetWidth;

		//el.parentNode.style.width = elWidth + 'px';

		Element._element.scrollInt = window.setInterval(
		function()
		{
			if(Element._scroll)
			{
				el.style.marginLeft = (elementLeft - step) + 'px';
				elementLeft = (elementLeft - step);
				if((elementLeft * -1) > elWidth + 50)
				elementLeft = el.parentNode.offsetWidth;
			}
		}
		, speed);

	},
	getInnerText:function(xStr)
	{
		var regExp = /<\/?[^>]+>/gi;
		xStr = xStr.replace(regExp,"");
		return xStr;
	},
	retrieveComputedStyle: function (element, styleProperty)
	{
		var computedStyle = null;
		if (typeof element.currentStyle != "undefined")
		{
			computedStyle = element.currentStyle;
		}
		else
		{
			computedStyle = document.defaultView.getComputedStyle(element, null);
		}
		return computedStyle[styleProperty];
	},

	getElementsByClassName:function(className)
	{
		var all = document.all ? document.all : document.getElementsByTagName('*');
		var elements = new Array();
		for (var e = 0; e < all.length; e++)
		{
			if (all[e].className == className)
			elements[elements.length] = all[e];
		}
		return elements;
	},
    
	getElementsByAttribute:function(attribute, attributeValue, element, elementType)
	{
		var elementArray = new Array();
		elementType = elementType || "A";
		var matchedArray = new Array();
		var similarArray = new Array();
		similarArray["count"] = 0;
		
		if(element == undefined)
		{
		    if (document.all)
		        elementArray = document.all;
		    else
		        elementArray = document.getElementsByTagName("*");
        }
        else
        {
            element = $(element);
            
            elementArray = element.getElementsByTagName(elementType);
        }   
		for (var i = 0; i < elementArray.length; i++)
		{
			var val = elementArray[i].getAttribute(attribute);
			
			if (attribute == "class")
			{
				var pattern = new RegExp("(^| )" + attributeValue + "( |$)");

				if (elementArray[i].className.match(pattern))
				matchedArray[matchedArray.length] = elementArray[i];
			}
			else if (attribute == "for")
			{
				if (elementArray[i].getAttribute("htmlFor") || elementArray[i].getAttribute("for"))
				{
					if (elementArray[i].htmlFor == attributeValue)
					matchedArray[matchedArray.length] = elementArray[i];
				}
			}
			else if (elementArray[i].getAttribute(attribute) == attributeValue)
			matchedArray[matchedArray.length] = elementArray[i];
			else
			{
				
				try
				{
					if (val.substring(0, attributeValue.length) == attributeValue)
					{
						if(similarArray[val] == undefined)
						    similarArray[val] = new Array();
						    
						similarArray[val].push(elementArray[i]);
						similarArray["count"]++;
					}
				}
				catch (e)
				{
					if(val == 'tab_1')
					alert(e);
				}
			}
		}
		if(matchedArray.length == 0 && similarArray.count > 0)
		{
		    return similarArray;
		}
		return matchedArray;
	},
	create: function(type, attributes)
	{
		var newEl = document.createElement(type);
		for(i in attributes)
		{
			switch(i)
			{
				case "innerHTML":
				if(typeof attributes[i] != "string" && typeof attributes[i] != "number")
				    newEl.appendChild(attributes[i]);
				else
				    newEl.innerHTML = attributes[i];
				break;
				case "class":
				Element.addClass(newEl, attributes[i]);
				break;
				case "click":
				if(attributes[i] == "flags")
				Observer.attachEventListener(newEl, i, function(){Widgets.ComboBox.selectFlag(newEl);}, true);
				else
				Observer.attachEventListener(newEl, i, function(){Widgets.ComboBox.select(newEl);}, true);
				break;
				default:
				if(attributes[i].length > 0)
				newEl.setAttribute(i, attributes[i]);
				break;
			}
		}
		return newEl;
	},
	add: function(el, dest)
	{
		var dest = $(dest);
		dest.appendChild(el);
	},

	remove: function(el)
	{
		var el = $(el);
		if(el)
		    el.parentNode.removeChild(el);
	},
	toogleSelectClass: function(arrayOfElements, selectElement, className, attachToElementType)
	{
		if(arrayOfElements.length == undefined)
		{
			arrayOfElements = arrayOfElements.getElementsByTagName("li");
		}

		for(var i = 0; i < arrayOfElements.length; i++)
		{
			if(selectElement.nodeName != arrayOfElements[i].nodeName)
			{
				Element.removeClass(arrayOfElements[i].getElementsByTagName(attachToElementType)[0], className);
			}
			else
			Element.removeClass(arrayOfElements[i], className);
		}
		Element.addClass(selectElement, className);
	},
	show: function(el, effects)
	{
	    effects = effects || 'none';
	    el = $(el);
		
	    switch(effects)
	    {
	        case 'none':
		        el.style.display = "block";
		        //alert(effects);
		        break;
		    case 'alphaOn':
		        alert(effects);
		        break;
		    case 'alphaOff':
		        alert(effects);
		        break;
		    default:
                alert('default');		    
		    break;
		}
	},
	hide: function(el, effects)
	{
		effects = effects || 'none';
        el = $(el);
	    switch(effects)
	    {
	        case 'none':
        		el.style.display = "none";
    		    //alert(effects);
		        break;
		    case 'alphaOn':
		        alert(effects);
		        break;
		    case 'alphaOff':
		        Element.setAlpha(el, 100, 0, 15, 20, 1, 'hide');
		        break;
		    default:
                alert('default');		    
		    break;
		}
	},
	setAlpha:function(elem,start,end,steps,intervals,powr, direction)
	{
		if (elem.alphaInt)
		    window.clearInterval(elem.alphaInt);
		var actStep = 0;
		elem.alphaInt = window.setInterval(
		function()
		{
			if(direction == 'show')
			{
				elem.currentOpacity = Element.easeInOut(start,end,steps,actStep,powr);
				elem.style.opacity = elem.currentOpacity / 100;
			}
			else if(direction == 'hide')
			{
				elem.currentOpacity = Element.easeInOut(start,end,steps,actStep,powr);
				elem.style.opacity = elem.currentOpacity / 100;
			}
			actStep++;
			if (actStep > steps)
			{
				window.clearInterval(elem.alphaInt);
			    if(direction == 'hide' && elem.currentOpacity == end && end == 0)
			    {
			    	elem.style.overflow = 'hidden';
	                elem.style.padding = 0;
					Element.resize(elem,elem.offsetHeight,0, 5,20,1.5, 'height', {hideOnZero:true});
                }
//				    else if(direction == 'show' && elem.currentHeight > 1 && actStep == 1)
//				        Element.show(elem);
			}
		}
		,intervals);
	},
	
	
	getPosition: function(theElement)
	{
		theElement = $(theElement);
		var positionX = 0;
		var positionY = 0;
		while (theElement != null)
		{
			positionX += theElement.offsetLeft;
			positionY += theElement.offsetTop;
			theElement = theElement.offsetParent;
		}
		return [positionX, positionY];
	},
	getElementSize: function(elem)
	{
		elem = $(elem);
		xPos = elem.offsetWidth;
		yPos = elem.offsetHeight;
		return [xPos, yPos];
	},
	getScrollingPosition: function()
	{
		var position = [0, 0];

		if (typeof window.pageYOffset != 'undefined')
		{
			position = [
			window.pageXOffset,
			window.pageYOffset
			];
		}

		else if (typeof document.documentElement.scrollTop != 'undefined'
		&& (document.documentElement.scrollTop > 0 ||
		document.documentElement.scrollLeft > 0))
		{
			position = [
			document.documentElement.scrollLeft,
			document.documentElement.scrollTop
			];
		}

		else if (typeof document.body.scrollTop != 'undefined')
		{
			position = [
			document.body.scrollLeft,
			document.body.scrollTop
			];
		}

		return position;
	}
};


var Util =
{
	getAllPNGimages:function ()
	{
		var all = document.all ? document.all :
		document.getElementsByTagName('img');
		var elements = new Array();
		var pattern = /.png$/;


		for (var i = 0; i < all.length; i++)
		{
			if (pattern.test(all[i].src))
			elements[elements.length] = all[i];
		}
		return elements;
	},

	fixPng:function()
	{
		var pngs = new Array();
		pngs = Util.getAllPNGimages();
		for (var i = 0; i < pngs.length; i++)
		{
			var img = pngs[i];
			var src = img.src;
			//img.style.visibility = "hidden";
			var div = document.createElement("div");
			div.style.width = 50;
			div.className = "div_png";
			div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='trim')";
			img.replaceNode(div);
		}
	},

	alphaBackgrounds:function()
	{
		var rslt = Util.identifyBrowser();
		var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
		if(itsAllGood)
		{
			for (i=0; i<document.all.length; i++)
			{
				var bg = document.all[i].currentStyle.backgroundImage;
				if (bg)
				{
					if (bg.match(/\.png/i) != null)
					{
						var mypng = bg.substring(5,bg.length-2);
						document.all[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='scale')";
						document.all[i].style.backgroundImage = "url('art/pixel.gif')";
					}
				}
			}
		}
	},
	identifyBrowser: function()
	{
		var agent = navigator.userAgent.toLowerCase();

		if (typeof navigator.vendor != "undefined" && navigator.vendor == "KDE" && typeof window.sidebar != "undefined")
		{
			return "kde";
		}
		else if (typeof window.opera != "undefined")
		{
			var version = parseFloat(agent.replace(/.*opera[\/ ]([^ $]+).*/, "$1"));

			if (version >= 7)
			{
				return "opera7";
			}
			else if (version >= 5)
			{
				return "opera5";
			}

			return false;
		}
		else if (typeof document.all != "undefined")
		{
			if (typeof document.getElementById != "undefined")
			{
				var browser = agent.replace(/.*ms(ie[\/ ][^ $]+).*/, "$1").replace(/ /, "");

				if (typeof document.uniqueID != "undefined")
				{
					if (browser.indexOf("5.5") != -1)
					{
						return browser.replace(/(.*5\.5).*/, "$1");
					}
					else
					{
						return browser.replace(/(.*)\..*/, "$1");
					}
				}
				else
				{
					return "ie5mac";
				}
			}

			return false;
		}
		else if (typeof document.getElementById != "undefined")
		{
			if (navigator.vendor.indexOf("Apple Computer, Inc.") != -1)
			{
				if (typeof window.XMLHttpRequest != "undefined")
				{
					return "safari1.2";
				}

				return "safari1";
			}
			else if (agent.indexOf("gecko") != -1)
			{
				return "mozilla";
			}
		}

		return false;
	},

	included_files : new Array(),
	include_once: function(script_filename)
	{
		if (!Util.in_array(script_filename, Util.included_files))
		{
			Util.included_files[Util.included_files.length] = script_filename;
			Util.include(script_filename);
		}
	},

	in_array: function (needle, haystack)
	{
		for (var i = 0; i < haystack.length; i++)
		{
			if (haystack[i] == needle)
			return true;
		}
		return false;
	},

	include: function(script_filename)
	{
		var html_doc = document.getElementsByTagName('head').item(0);
		html_doc.appendChild(Element.create('script', {"language":"javascript",
		"type":"text/javascript", "src":script_filename}));
		return false;
	},
	countChars: function(el, params)
	{
	    params = params || new Array();
	    params.max = params.max || 300;
	    
	    var inputEl = $(el + "_t");
	    var spanEl = $(el + "_s");
	    spanEl.innerHTML = params.max;
	    Observer.attachEventListener(inputEl, "keydown", function()
	    {
	        if(inputEl.value.length > params.max)
	        {
	            inputEl.value = inputEl.value.substring(0, params.max);
	        }
	        //alert(inputEl.value.length);
	        spanEl.innerHTML = params.max - inputEl.value.length;
	    }, true);
	},
	changeStar: function(el, updateElement, currentStar)
	{
		
		var newStar = 0;
		if(el.rel == 0)
			newStar = 1;
		else
			newStar = 0;
			
		el.rel = newStar;	
		el.href = el.href.substring(0, parseInt(el.href.length - 1)) + newStar;	
		el.getElementsByTagName('IMG')[0].src = Element.url + '/art/stared-' + newStar + '.gif'; 	
		Ajax.openLink(el, updateElement)
	},
    checkAll: function()
    {
        var elements = Element.getElementsByAttribute('type', 'checkbox', 'list', 'INPUT');
        
        for(var i = 0; i < elements.length; i++)
        {
            if(i > 0)
                elements[i].checked = elements[0].checked;
        }
    },
    getJavascript: function(str)
    {
        var re = /<script[^>]*>([\S\s]*?)<\/script>/ig;
        var matches = str.match(re);
        var res = "";
        if (matches && matches.length) 
        {
            for (var x = 0; x < matches.length; x++) 
            {
                res += Util.getElementValue(matches[x], "script");
            }
        }
        return res;  
    },
    
    getElementValue: function(InStr, Tag)
    {
        var pattern = "<" + Tag + "[^>]*>(([^<]|\n)*)</" + Tag + ">";
        var re = new RegExp(pattern, "m");
        var arr = re.exec(InStr);

        if (arr != null)
        {
                return arr[1];
        }
        else
        {
                return "nista";
        }
    },
  redirect: function (url)
	{
		if(url != "")
			window.location = url;
	},
	init : function()
	{
		Ajax.Responders.loading = function(){Element.show('xerLoading');};
		Ajax.Responders.loaded = function(){Element.hide('xerLoading');};

		window.onscroll = function()
		{
			var el = $('xerLoading');
			var startAt = -20;
			var scrollpos = Element.getScrollingPosition();
			var elSize = Element.getElementSize(el);

			if(scrollpos[1] > startAt)
			{
				el.style.top = (scrollpos[1] - startAt) + "px";
			}
			else
			el.style.top = "0px";
			var elPosition = Element.getPosition(el);
		};








		//Util.alphaBackgrounds();

		//Util.fixPng();
		//Widgets.ComboBox.init();
		Widgets.Searchbox.init(); 
		//Menu.procesTabbedMenues();
		Menu.procesTabbedMenuesBlock();
		Menu.menuHandler();
		//News.scrollNews();
		//Element.horizontalScroll('hscroll', 30, 2, true);
	}
}
createNamespace("Util.Sharp");

Util.Sharp = 
{
    init: function(updateEl)
    {
 
        
        var nizSharp = new Array();
        nizSharp = document.URL.split("#");
         
        if(nizSharp.length > 1)
        {
          
            var nizSlash = new Array();
            nizSlash = nizSharp[1].split("/");
            if(nizSharp.length > 0)
            var sharpValue = nizSlash[0];
            
            //TODO:Slash
            var url = nizSharp[0];
            
            if(url[url.length-1] == "/")
		    {
		        url += ":sharpValue=" + sharpValue +"/";
		    }
		    else
		    {
		        url += "/:sharpValue=" + sharpValue +"/";
		    }
            updateEl = updateEl || 'img_placeholder'; 
            Ajax.open(url, {updateElement:updateEl});
        }
    }
}
var Menu =
{
	menuHandler : function()
	{
		var menuList = ["header"];
		if(menuList.length>0)
		{
			for(i=0; i<menuList.length; i++)
			{

				var menu_element = document.getElementById(menuList[i]);
				if(menu_element)
				{
					var menu_list = menu_element.getElementsByTagName('ul')[0];
					if(menu_list)
					{
						var sub_menues = menu_list.getElementsByTagName('ul');
						if(sub_menues)
						{
							if(sub_menues.length>0)
							{
								for(u=0; u<sub_menues.length; u++)
								{
									sub_menues[u].style.display = 'none';
									sub_menues[u].parentNode.onmouseover = function()
									{
										var sub_menu_list = this.getElementsByTagName('ul')[0];
										if(sub_menu_list)
										{
											holder_li = sub_menu_list.parentNode;
											holder_a = holder_li.getElementsByTagName('a')[0];

											sub_menu_list.style.display = 'block';
											Element.addClass(holder_a, 'active');
											Element.addClass(holder_a.parentNode, 'parent');

										}
									}

									sub_menues[u].parentNode.onmouseout = function()
									{

										var sub_menu_list = this.getElementsByTagName('ul')[0];
										if(sub_menu_list)
										{
											Element.removeClass(holder_a, 'active')
											Element.removeClass(holder_a.parentNode, 'parent');

											sub_menu_list.style.display = 'none';
										}
									}
								}
							}
						}
					}
				}
			}
		}
	},
	tabbedMenues: new Array(),
	tabbedMenuesBlock: new Array(),
	procesTabbedMenues: function ()
	{
		var tabbedMenusArr = ["izdvojeno", "widget_article_navigation"];
		if(tabbedMenusArr.length>0)
		{
			for(i=0; i < tabbedMenusArr.length; i++)
			{
			    if($(tabbedMenusArr[i]))
			    {
				    this.tabbedMenues = Element.getElementsByAttribute('rel', 'tab', $(tabbedMenusArr[i]));
				    for(var i in this.tabbedMenues)
		            {
			            for(var j = 0; j < this.tabbedMenues[i].length; j++)
			            {
				            Observer.attachEventListener(this.tabbedMenues[i][j], 'click',
				            function(){Menu.tabbedMenuClick(this);return false;}, true);
				            //this.tabbedMenues[i][j] .onclick += function(){Menu.tabbedMenuClick(this);return false;};
				            this.tabbedMenues[i][j].onmouseover = function(){Util.alphaBackgrounds();};
				            ///
			            }
		            }
		        }
	        }
	    }
	},
	procesTabbedMenuesBlock: function ()
	{
		var tabbedMenusArr = ["widget_block_navigation"];
		//alert(tabbedMenusArr.length);
		if(tabbedMenusArr.length > 0)
		{
			for(i=0; i < tabbedMenusArr.length; i++)
			{
			    if($(tabbedMenusArr[i]))
			    {
				    this.tabbedMenuesBlock = Element.getElementsByAttribute('rel', 'tabblock', $(tabbedMenusArr[i]));
				    var elsNumber = 0;
				    for(var i in this.tabbedMenuesBlock)
		            {
			            for(var j = 0; j < this.tabbedMenuesBlock[i].length; j++)
			            {
			                if(elsNumber > 0)
			                {
			                    Element.hide(this.tabbedMenuesBlock[i][j].rel);
			                }
			                elsNumber++;
				            Observer.attachEventListener(this.tabbedMenuesBlock[i][j], 'click',
				            function(){Menu.tabbedMenuBlockClick(this);return false;}, true);
				            //this.tabbedMenues[i][j] .onclick += function(){Menu.tabbedMenuClick(this);return false;};
				            this.tabbedMenuesBlock[i][j].onmouseover = function(){Util.alphaBackgrounds();};
				            ///
			            }
		            }
		        }
	        }
	    }
	},
	tabbedMenuBlockClick : function(el)
	{
        for(var i in this.tabbedMenuesBlock)
		{
		    for(var j = 0; j < this.tabbedMenuesBlock[i].length; j++)
			{
			    Element.removeClass(this.tabbedMenuesBlock[i][j], 'selected');
			    if(this.tabbedMenuesBlock[i][j].rel == el.getAttribute("rel"))
		            Element.show($(this.tabbedMenuesBlock[i][j].rel));
		        else
		            Element.hide($(this.tabbedMenuesBlock[i][j].rel));
			}
		}
		Element.addClass(el, 'selected');
	},
	tabbedMenuClick : function(el)
	{
	    if(el.href == undefined)
        {
            el = window.event.srcElement;
        }
	    for(var i = 0; i < Menu.tabbedMenues[el.getAttribute("rel")].length; i++)
		{
			Element.removeClass(this.tabbedMenues[el.rel][i], 'selected');
		}
		var ajaxParams = el.href.split("/");
		var par = ajaxParams[parseInt( ajaxParams.length - 1)];
		var urlToOpen = el.href;
		if(el.href[el.href.length-1] == "/")
		{
			urlToOpen += ":ajax_callback=1/";
		}
		else
		{
			urlToOpen += "/:ajax_callback=1/";
		}
		Ajax.open(urlToOpen, {updateElement:par});

		Element.addClass(el, 'selected');
		Util.alphaBackgrounds();
	}
}
var Observer =
{
	addLoadListener:function(fn)
	{
		if (typeof window.addEventListener != 'undefined')
		{
			window.addEventListener('load', fn, false);
		}
		else if (typeof document.addEventListener != 'undefined')
		{
			document.addEventListener('load', fn, false);
		}
		else if (typeof window.attachEvent != 'undefined')
		{
			window.attachEvent('onload', fn);
		}
		else
		{
			var oldfn = window.onload;
			if (typeof window.onload != 'function')
			{
				window.onload = fn;
			}
			else
			{
				window.onload = function()
				{
					oldfn();
					fn();
				};
			}
		}
	},

	attachEventListener:function(target, eventType, functionRef, capture)
	{
		if (typeof target.addEventListener != "undefined")
		{
			target.addEventListener(eventType, functionRef, capture);
		}
		else if (typeof target.attachEvent != "undefined")
		{
			target.attachEvent("on" + eventType, functionRef);
		}
		else
		{
			eventType = "on" + eventType;

			if (typeof target[eventType] == "function")
			{
				var oldListener = target[eventType];

				target[eventType] = function()
				{
					oldListener();

					return functionRef();
				}
			}
			else
			{
				target[eventType] = functionRef;
			}
		}

		return true;
	},

	detachEventListener:function (target, eventType, functionRef, capture)
	{
		if (typeof target.removeEventListener != "undefined")
		{
			target.removeEventListener(eventType, functionRef, capture);
		}
		else if (typeof target.detachEvent != "undefined")
		{
			target.detachEvent("on" + eventType, functionRef);
		}
		else
		{
			target["on" + eventType] = null;
		}

		return true;
	},

	stopDefaultAction:function(event)
	{
		event.returnValue = false;

		if (typeof event.preventDefault != "undefined")
		{
			event.preventDefault();
		}

		return true;
	},

	stopEvent:function(event)
	{
		if(!event) event = window.event;
		if (typeof event.stopPropagation != "undefined")
		{
			event.stopPropagation();
		}
		else
		{
			event.cancelBubble = true;
		}

		return true;
	},

	addEvent:function(obj, evType, fn)
	{
		if (obj.addEventListener)
		{
			obj.addEventListener(evType, fn, false);
			return true;
		}
		else if (obj.attachEvent)
		{
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		}
		else
		return false;
	}
}

var News =
{
	_currentIndex : 0,
	_newsArray : new Array(),
	_scrolling : true,
	_scroll : true,
	scrollNews : function()
	{
		if($('newscolumn1'))
		{
			setTimeout(
			function()
			{
				if(News._scrolling == true && $('newscolumn1'))
				{
					Element.add($('newscolumn1').getElementsByTagName('A')[0].cloneNode(true), 'newscolumn1');
					Element.add($('newscolumn2').getElementsByTagName('A')[0].cloneNode(true), 'newscolumn2');
					Element.add($('newscolumn3').getElementsByTagName('A')[0].cloneNode(true), 'newscolumn3');

					Observer.attachEventListener($('scrollForNews'), 'mouseover',
					function()
					{
						News._scroll = false;
					});
					Observer.attachEventListener($('scrollForNews'), 'mouseout',
					function()
					{
						News._scroll = true;
					});
				}
				News._scrolling = false,
				News.scrollNews();
			}
			, 10000);
		}

		if(News._scrolling == false && News._scroll == true)
		{
			var newsLength = $('newscolumn1').getElementsByTagName('A').length;

			News._scrolling = true;
			News._newsArray = [$('newscolumn1'), $('newscolumn2'), $('newscolumn3')];

			var containerHeight = 390;
			var from = News._currentIndex * containerHeight;
			var to = (News._currentIndex + 1) * containerHeight;

			if(News._currentIndex + 1  == newsLength)
			{
				News._currentIndex = 0;
				from = News._currentIndex * containerHeight;
				to = (News._currentIndex + 1) * containerHeight;
			}

			for(var i = 0; i < News._newsArray.length; i++)
			{
				Element.move(News._newsArray[i], from * -1, to * -1, 70, 10, 1.5, 'vertical')
			}

			News._currentIndex++;
			News._scrolling = false;
		}
	}
}

createNamespace("Widgets.ComboBox");
Widgets.ComboBox =
{
	init: function(params)
	{
		var comboBoxes = new Array();
		comboBoxes = Element.getElementsByAttribute("rel", "xerComboBox");
		for(var i = 0; i < comboBoxes.length; i++)
		{
			Widgets.ComboBox.createCB(comboBoxes[i], params);
		}
	},
	createCB: function(comboBox,  params)
	{
		params = params || new Array();
		params.val2class = params.val2class || false;

		var divHolder = Element.create("div", {"class":"comboBox"});
		divHolder.appendChild(Element.create("h3", {innerHTML:comboBox[comboBox.selectedIndex].text}));
		divHolder.appendChild(Element.create("a",{href:"#", innerHTML:":", "class":"removeText"}));

		divHolder.getElementsByTagName("A")[0].onclick = function(e){Widgets.ComboBox.openClose(divHolder); Observer.stopEvent(e); return false;};
		divHolder.onclick = function(e){Widgets.ComboBox.openClose(divHolder); Observer.stopEvent(e)};
		document.onclick = function(){Widgets.ComboBox.close(divHolder.getElementsByTagName("OL")[0]);};

		var olHolder = Element.create("ol");
		for(var i = 0; i < comboBox.length; i++)
		{
			var className = "";
			var liClassName = "";
			var callFunction = "select";

			if(comboBox.selectedIndex == i)
			className = "selected";

			if(params.val2class)
			{
				liClassName = comboBox[i].value;
				callFunction = "flags";
			}
			var aLink = Element.create("a", {rel:comboBox[i].value, click:callFunction,onclick:"return false", innerHTML:comboBox[i].text, href:"#", "class":className, "style":"background: url(art/flags/" + comboBox[i].value + ".gif) no-repeat 0 50%;"});

			var li = Element.create("li", {innerHTML: aLink, "class":liClassName});
			olHolder.appendChild(li);
		}
		if(params.val2class)
		divHolder.getElementsByTagName("H3")[0].style.background = "url(art/flags/" + comboBox[comboBox.selectedIndex].value + ".gif) no-repeat 0 50%;"

		divHolder.appendChild(Element.create("input", {type:"hidden", name:comboBox.name, value:comboBox[comboBox.selectedIndex].value}));
		comboBox.style.display = "none";

		divHolder.appendChild(olHolder);
		comboBox.parentNode.appendChild(divHolder);
	},
	openClose: function(el)
	{
		//alert(el);
		if(el.getElementsByTagName("OL")[0].style.display == "block")
		this.close(el.getElementsByTagName("OL")[0]);
		else
		this.open(el.getElementsByTagName("OL")[0]);
	},
	open: function(el)
	{
		el.style.display = "block";
	},
	close: function (el)
	{
		el.style.display = "none";
	},
	select: function(el)
	{
		el.parentNode.parentNode.parentNode.getElementsByTagName("INPUT")[0].value = el.rel;
		Element.toogleSelectClass(el.parentNode.parentNode, el, "selected", "a");
		Element.addClass(el, "selected");
		el.parentNode.parentNode.parentNode.getElementsByTagName("H3")[0].innerHTML = Element.getInnerText(el.innerHTML);
	},
	selectFlag: function(el)
	{

		el.parentNode.parentNode.parentNode.getElementsByTagName("INPUT")[0].value = el.rel;
		Element.toogleSelectClass(el.parentNode.parentNode, el, "selected", "a");
		Element.addClass(el, "selected");
		el.parentNode.parentNode.parentNode.getElementsByTagName("H3")[0].innerHTML = Element.getInnerText(el.innerHTML);
		el.parentNode.parentNode.parentNode.getElementsByTagName("H3")[0].style.background = el.style.background;
		el.parentNode.parentNode.parentNode.getElementsByTagName("H3")[0].style.backgroundPosition = "10px 50%";
	}
}
createNamespace("Widgets.InlineEdit");
Widgets.InlineEdit =
{
	init: function()
	{
	},
	create: function(element)
	{

	}

}
createNamespace("Widgets.Searchbox");
Widgets.Searchbox = 
{
    _search: new Array(),
    init: function()
    {
        Widgets.Searchbox._search = ["s"];
        for (var i = 0; i < Widgets.Searchbox._search.length; i++)
        {
            if($(Widgets.Searchbox._search[i]))
            {
                var a = Widgets.Searchbox._search[i];
                Widgets.Searchbox._search[a] = new Array();
                Widgets.Searchbox._search[a]["default"] =  $(Widgets.Searchbox._search[i]).value;
                
                Observer.attachEventListener($(Widgets.Searchbox._search[i]), "focus", function()
                {
                    Widgets.Searchbox.changeText(this);
                }, false);
                Observer.attachEventListener($(Widgets.Searchbox._search[i]), "blur", function()
                {
                    Widgets.Searchbox.changeText(this);
                }, false);
            }
        }
    },
    changeText: function(el)
    {
        //alert(el.value);
        if(el.value == undefined)
        {
            el = window.event.srcElement;
        }
       if(el.value == Widgets.Searchbox._search[el.id]["default"])
            el.value = "";
       else if(el.value == "")
            el.value = Widgets.Searchbox._search[el.id]["default"];
    }
}
Ajax =
{
	open: function(url, params)
	{
		params = params || new Array();
		params.method = params.method || "GET";
		params.updateElement = params.updateElement || false;
		params.completed = params.completed || false;
		params.loading = params.loading || false;
		params.loaded = params.loaded || false;
		params.faild = params.faild || false;
		params.params = params.params || "";
		params.append = params.append ||false;
		params.ac = params.ac || true;

		if(params.ac == true)
		{
		    if(url[url.length-1] == "/")
		        url += ":ajax_callback=1/";
		    else
		        url += "/:ajax_callback=1/";
	    }
		var requester;
		try
		{
			requester = new XMLHttpRequest();
			if (requester.overrideMimeType)
			requester.overrideMimeType('text/html');
		}
		catch (error)
		{
			try
			{
				requester = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (error)
			{
				requester = null;
			}
		}

		if (requester != null)
		{
		    requester.open(params.method, url, true);
		
			if(params.method == "POST")
			{
			    requester.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				requester.setRequestHeader("Content-length", 1);
				requester.setRequestHeader("Connection", "close");
			}
			else
				requester.setRequestHeader("Content-type", "text/html; charset=utf-8" );

			requester.onreadystatechange = function()
			{
				if(requester.readyState == 1)
				{
					if(Ajax.Responders.loading != null)
					Ajax.Responders.loading();

					if(params.loading != false)
					params.loading();
				}
				else if(requester.readyState == 2)
				{
					if(Ajax.Responders.loaded != null)
					Ajax.Responders.loaded();

					if(params.loaded != false)
					params.loaded();
				}

				else if (requester.readyState == 4)
				{
					if (requester.status == 200 || requester.status == 304)
					{
						if(params.updateElement != false)
						    Ajax.success(requester, params.updateElement, params.append);
                        
                        eval(Util.getJavascript(requester.responseText));


						if(params.completed != false)
						    params.completed();
					}
					else
					{
						if(params.faild != false)
						    params.faild();
						else
						    Ajax.failure(requester, false);
					}
				}
				//return true;
			};
          	requester.send(params.params);
		}
		else
		{
			//return false;
		}

		//return false;
	},
	success: function(requestObject, el, append)
	{
		if(el != false)
		{
		    if(append)
		    {
		        var prev = $(el).innerHTML;
		        $(el).innerHTML = prev + requestObject.responseText;
		    }
		    else
		    {
		        $(el).innerHTML = requestObject.responseText;
		        
		    }
		}
		else
		    alert(requestObject.responseText);
		return true;
	},
	failure: function(requestObject, el)
	{
		if(el != false)
		$(el).innerHTML = requestObject.responseText;

		alert("XMLHttpRequest error - status code: " + requestObject.status);
		return true;
	},
	submitForm: function(form, params)
	{
		params = params || new Array();
		params.method = params.method || form.method.toUpperCase();
		
		Ajax.getData(form, form.action, params);
	},
	getData: function(obj, url, params)
	{
		params = params || new Array();
		params.method = params.method || "POST";

		var getstr = "";
		if(params.method != "POST")
		getstr = "?";

		if(params.fckEdit != undefined)
		{
		    getstr += params.fckEdit + '=' + encodeURIComponent(FCKeditorAPI.GetInstance(params.fckEdit).GetHTML()) + '&';
       }
		var submitInputs = obj.getElementsByTagName("INPUT");
		var submitSelects = obj.getElementsByTagName("SELECT");
		var submitTextAreas = obj.getElementsByTagName("TEXTAREA");
		for (var i=0; i<submitSelects.length; i++)
		{
			var sel = submitSelects[i];
			getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
		}

		for (var i=0; i<submitTextAreas.length; i++)
		{
			getstr += submitTextAreas[i].name + "=" + encodeURI(submitTextAreas[i].value) + "&";
		}

		for (var i=0; i<submitInputs.length; i++)
		{
			switch(submitInputs[i].type)
			{
				case "text":
				case "password":
				getstr += submitInputs[i].name + "=" + encodeURI(submitInputs[i].value) + "&";
				break;
				case "checkbox":
				if (submitInputs[i].checked)
				getstr += submitInputs[i].name + "=" + submitInputs[i].value + "&";
				else
				getstr += submitInputs[i].name + "=&";
				break;
				case "radio":
				if(submitInputs[i].checked)
				getstr += submitInputs[i].name + "=" + submitInputs[i].value + "&";
				break;
				case "hidden":
				if(submitInputs[i].name != params.fckEdit)
				    getstr += submitInputs[i].name + "=" + submitInputs[i].value + "&";
				break;

			}
		}

		if(params.method != "POST")
		{
			var urlToOpen = url;
			Ajax.open(url + getstr, params);
		}
		else
		{
			var urlToOpen = url;
    		params.params = getstr;
			Ajax.open(urlToOpen, params);
		}
	},
	openLink: function(el, updateElement)
	{
		if(updateElement == undefined)
			updateElement = true;
		var ajaxParams = el.href.split("/");
		var par = ajaxParams[parseInt( ajaxParams.length - 1)];
		var urlToOpen = el.href;
		if(updateElement)
			Ajax.open(urlToOpen, {updateElement:par});
		else
			Ajax.open(urlToOpen);
			
	},
	openSharpLink: function(el, updateElement)
	{
		if(updateElement == undefined)
			updateElement = true;
		var ajaxParams = el.rel.split("/");
		var par = ajaxParams[parseInt( ajaxParams.length - 1)];
		var urlToOpen = el.rel;
		if(updateElement)
			Ajax.open(urlToOpen, {updateElement:par});
		else
			Ajax.open(urlToOpen);
			
	},
			
	openComboBox: function(el, url, id, callbackFunciton)
	{
		var val = 0;
		try
		{
		    val = el[el.selectedIndex].value;
		}
		catch(e)
		{
		    
		}
		url += '/' + val;
		Ajax.open(url, {updateElement:id,'completed':callbackFunciton})
	}
}

createNamespace("Ajax.Responders");
Ajax.Responders =
{
	loading: null,
	loaded: null,
	register: function(params)
	{
		params = params || new Array();
		params.loading = params.loading || null;
		params.loaded = params.loaded || null;

		Ajax.loading = params.loading;
		Ajax.loaded = params.loaded;
	}
}

Validator =
{
	isValidate: false,
	errors:"",
	attach: function(el, validate)
	{
		el = $(el);
		Observer.attachEventListener(el, "blur", function(){ Validator.validate(el, validate);}, true);
	},
	validate: function(el, validate)
	{
		validate = validate || new Array();
		validate.blank = validate.blank || false;
		validate.email = validate.email || false;
		validate.userREGX = validate.userREGX || false;
		
		for(i in validate)
		{
			if(validate[i] == true)
			{
				Validator.checkRules(el, i, validate);
			}
		}

		if(validate.userREGX)
		{
			Validator.checkRules(el, "userREGX", validate);
		}
		
	},
	isEmpty: function(str)
	{
		return (str == null) || (str.length == 0);
	},
	isEmail: function(str)
	{
		if(Validator.isEmpty(str)) return false;
		var re = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i
		//var re = /^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/;
		return re.test(str);
	},
	isAlpha: function(str){
		var re = /[^a-zA-Z]/g
		if (re.test(str)) return false;
		return true;
	},
	isNumeric: function(str)
	{
		var re = /[\D]/g
		if (re.test(str)) return false;
		return true;
	},
	isAlphaNumeric: function(str)
	{
		var re = /[^a-zA-Z0-9]/g
		if (re.test(str)) return false;
		return true;
	},
	isLength: function(str, len)
	{
		return str.length == len;
	},
	isLengthBetween: function(str, min, max)
	{
		return (str.length >= min)&&(str.length <= max);
	},
	isDate: function(str)
	{
		//prihvaceni formati mm dd yyyy, mm/dd/yyyy, mm.dd.yyyy, mm-dd-yyyy
		var re = /^(\d{1,2})[\s\.\/-](\d{1,2})[\s\.\/-](\d{4})$/
		if (!re.test(str)) return false;
		var result = str.match(re);
		var m = parseInt(result[1]);
		var d = parseInt(result[2]);
		var y = parseInt(result[3]);
		if(m < 1 || m > 12 || y < 1900 || y > 2100) return false;
		if(m == 2){
			var days = ((y % 4) == 0) ? 29 : 28;
		}else if(m == 4 || m == 6 || m == 9 || m == 11){
			var days = 30;
		}else{
			var days = 31;
		}
		return (d >= 1 && d <= days);
	},
	isMatch: function(str1, str2)
	{
		return str1 == str2;
	},
	isWhitespace: function(str)
	{
		var re = /[\S]/g
		if (re.test(str)) return false;
		return true;
	},
	isWebsiteAddress: function(str)
	{
		var re = /^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([\w]+)(.[\w]+){1,2}$/;
		if(re.test(str)) return false;
		return true;
	},

	stripWhitespace: function(str, replacement)
	{
		if (replacement == null) replacement = '';
		var result = str;
		var re = /\s/g
		if(str.search(re) != -1)
		result = str.replace(re, replacement);
		return result;
	},

	checkRules: function(el, type, params)
	{

		if(Element.hasClass(el.parentNode, "error"))//remove displayed error if it's there
		{
			var clone = el.cloneNode(true);
			
			var lbl = el.parentNode.getElementsByTagName('LABEL')[0];
		    if(lbl)
		        el.parentNode.parentNode.appendChild(lbl.cloneNode(true));
			el.parentNode.parentNode.appendChild(clone);
			
			
			Element.remove(el.parentNode);
			Validator.attach(clone, params);
			el = clone;
		}

		var message = "";
		switch(type)
		{
			case "blank":
			Validator.stripWhitespace(el.value, "");
			if(Validator.isEmpty(el.value))
			message = "Unesite vrijednost";
			break;
			case "email":
			if(!Validator.isEmail(el.value))
			message = "Unesite ispravnu email adresu"
			break;
			case "userREGX":
			if(!params.userREGX.test(el.value))
			{
				message = "Ispravite unos";
			}
			break;
			default:
			message = "Greska na formi";
			break;
		}

		if(message.length > 0)
		Validator.displayError(el, message, params);

	},
	displayError: function(el, message, params)
	{

		var errorDiv = Element.create("div", {"class":"error"});

		var span = Element.create("span", {"innerHTML":message, "class":"msg"});
		var elCopy = el.cloneNode(true)
		var lbl = el.parentNode.getElementsByTagName('LABEL')[0];
		if(lbl)
		    errorDiv.appendChild(lbl.cloneNode(true));
		errorDiv.appendChild(elCopy);
		errorDiv.appendChild(span);
		el.parentNode.appendChild(errorDiv);
		Validator.attach(elCopy, params);
		Element.remove(el);
		Element.remove(lbl);
	}
}

Autocomplete = 
{
    items: Array(),
    selectedItem: "",
    listItems: Array(),
    params : "",
    ListItem: function()
    {
        this.Title = "";
        this.ID = 0;
        return true;
    },

    attach: function(el, params)
    {
        el = $(el);
        params = params || new Array();
        params.removeHolder = params.removeHolder || true;
        params.updateElement = params.updateElement || 'ac_holder';
        params.idHolder = params.idHolder || params.updateElement + "_idHolder"; 
        params.updateTable = params.updateTable || 'autocomplete-list';
        params.updateRows = params.updateRows || params.updateTable + '-rows'; 
        Autocomplete.params = params;
        Observer.attachEventListener(el, "keyup", function(e)
        {
            params.originalUrl = params.originalUrl || params.url;
            params.url = encodeURI(params.originalUrl + '/' + el.value);
            Autocomplete.params = params;
            Autocomplete.creatTable();
        
            Autocomplete.run(el, params, e);
        });
        
        Observer.attachEventListener(document, "mousedown", 
        function(event)
        {
            if(params.removeHolder)
            {
                if($(params.updateElement) != undefined)
                {
                    var scrollingPosition = Element.getScrollingPosition();
                    var cursorPosition = [0, 0];
                    var elementPosition = [0, 0];
                    var elementSize = Element.getElementSize(params.updateElement);
                    elementPosition = Element.getPosition(params.updateElement);
                    
                    if (typeof event.pageX != "undefined" && typeof event.x != "undefined")
                    {
                        cursorPosition[0] = event.pageX;
                        cursorPosition[1] = event.pageY;
                    }
                    else
                    {
                        cursorPosition[0] = event.clientX + scrollingPosition[0];
                        cursorPosition[1] = event.clientY + scrollingPosition[1];
                    }
                    
                    var isElCliked = false;
                    
                    //IsClikedOnList
                    if(cursorPosition[0] > elementPosition[0] && cursorPosition[0] < elementPosition[0] + elementSize[0]
                    && cursorPosition[1] > elementPosition[1] && cursorPosition[1] < elementPosition[1] + 100) 
                    {
                        isElCliked = true;
                    }
                    if(!isElCliked)
                        Autocomplete.hideList(params.updateElement);
                }
            }
       });
        


    },
    init: function()
    {
        
    },
    run: function(el, params, event)
    {
       var intKey = (window.Event) ? event.which : event.keyCode;
 
       if($(params.updateElement) == undefined)
       {
           var acHolder = Element.create('div', {'id':params.updateElement, style:"position:relative"});
           el.parentNode.appendChild(acHolder);
       }
       if($(params.idHolder) == undefined)
       {           
            var idHolder = Element.create('input', {'id':params.idHolder, 'name':params.idHolder, type:"hidden"});
           el.parentNode.appendChild(idHolder);
       }
       
       switch(intKey)
       {
       
        case 38: //up
            Autocomplete.move("up", el);
            Observer.stopDefaultAction(event);
            break;
        case 40: //down
            Autocomplete.move("down", el);
            break;
        case 27: //escape
            break;
        default:
        if (el.keyInterval)
		    window.clearTimeout(el.keyInterval);
		el.keyInterval = window.setTimeout(
		function()
		{
            Ajax.open(params.url, {updateElement:params.updateElement, /*"ac":"false",*/ completed:function(){Autocomplete.ajaxCompleted(params.updateElement, el);}});
        }, 500);    
            break;
       }
    },
    move: function(direction, inputField)
    {
        //alert(direction + " " + Autocomplete.items.length);
        for(var i = 0; i < Autocomplete.items.length; i++)
        {
            //alert(Autocomplete.items[i]);
            if(Element.hasClass(Autocomplete.items[i], "selected"))
            {
                Element.removeClass(Autocomplete.items[i], "selected");
                if(direction == "up")
                {
                  if(i == 0)
                        i = Autocomplete.items.length;
                    Autocomplete.selectedItem = Autocomplete.items[i - 1];
                }
                else if(direction == "down")
                {
                    if(Autocomplete.items.length == i + 1)
                        i = -1;
                    Autocomplete.selectedItem = Autocomplete.items[i + 1];                        
                }
                else //select current
                    Autocomplete.selectedItem = Autocomplete.items[0];                        

                Element.addClass(Autocomplete.selectedItem, "selected");
                Autocomplete.selectItem(inputField);            
                return;
            }
        }
    },
    ajaxCompleted:function(id, inputEl)
    {
        if($(id).getElementsByTagName("OL").length > 0)
        {
            Autocomplete.items = $(id).getElementsByTagName("OL")[0].getElementsByTagName("LI");
            var start = inputEl.value.length;
            Autocomplete.move("current", inputEl);
            inputEl.value = Element.getInnerText(Autocomplete.selectedItem.innerHTML);
            var end = inputEl.value.length;
            var range = "";
            if (typeof inputEl.createTextRange != 'undefined')
            {
              var range = inputEl.createTextRange();
              range.select();
            }
            else if (typeof inputEl.setSelectionRange != 'undefined')
            {
              inputEl.setSelectionRange(start, end);
            }
            Autocomplete.createAddLinks();
        }
    },
    createAddLinks: function()
    {
        for(var i = 0; i < Autocomplete.items.length; i++)
        {
            var listItem = new Autocomplete.ListItem();
            var li = Autocomplete.items[i];
            listItem.Title = Element.getInnerText(li.innerHTML);
            listItem.ID = Element.getElementsByAttribute("type", "hidden", li, 'INPUT')[0].value;
            var a = Element.create('a', {'innerHTML' : 'Add','href':'javascript:Autocomplete.addToListHref(' + listItem.ID + ',\'' + listItem.Title + '\')'});
            li.appendChild(a);
        }
    },
    hideList: function(el)
    {
        Element.remove(el);
        Autocomplete.items = Array();
    },
    selectItem: function(inputEl)
    {
        var listItem = new Autocomplete.ListItem();
        listItem.Title = Element.getInnerText(Autocomplete.selectedItem.getElementsByTagName("SPAN")[0].innerHTML);
        listItem.ID = Element.getElementsByAttribute("type", "hidden", Autocomplete.selectedItem, 'INPUT')[0].value;
        inputEl.value = listItem.Title;
        //Autocomplete.addToListHref(listItem.ID, listItem.Title);
     },
     addToListHref: function(id, title)
     {
        var listItem = new Autocomplete.ListItem();
        listItem.Title = title;
        listItem.ID = id;
        Autocomplete.addToList(listItem);
        Autocomplete.addToRows();
        Autocomplete.addToIdHolder();
     },
    addToList: function(listItem)
    {
        var add = true;
        for(var i = 0; i < Autocomplete.listItems.length; i++)
        {
            if(Autocomplete.listItems[i].ID == listItem.ID)
                add = false;
        }
        if(add == true)
            Autocomplete.listItems.push(listItem);
    },
    addToIdHolder: function()
    {
        
        $(Autocomplete.params.idHolder).value = "";
        for(var i = 0; i < Autocomplete.listItems.length; i++)
        {
            if(i == Autocomplete.listItems.length - 1)
                $(Autocomplete.params.idHolder).value += Autocomplete.listItems[i].ID;
            else
                $(Autocomplete.params.idHolder).value += Autocomplete.listItems[i].ID + ',';
        }
    },
    removeFromIdHolder: function(itemId)
    {
        for(var i = 0; i < Autocomplete.listItems.length; i++)
        {
            if(Autocomplete.listItems[i].ID == itemId)
                Autocomplete.listItems.splice(i, 1);
        }
        Autocomplete.addToIdHolder();
        Autocomplete.addToRows();
    },
    creatTable: function()
    {
        if($(Autocomplete.params.updateRows) == undefined)
        {
            $(Autocomplete.params.updateTable).innerHTML = "<table>" +
	    "<thead><tr>" +
		    "<th width=\"15\">#</th>" +
		    "<th>Naziv</th>"+
		    "<th width=\"30\">Akcije</th>" +
	    "</tr>" +
	    "</thead>"+
	    "<tbody id=\"" + Autocomplete.params.updateRows + "\">"+
    	
	    "<tr><td colspan=\"3\">Prazna lista</td></tr></tbody></table>";
	    }
    },
    addToRows: function()
    {
        $(Autocomplete.params.updateRows).innerHTML = "";
        
        for(var i = 0; i < Autocomplete.listItems.length; i++)
        {
            var row = Element.create('tr');
        
            var id = Element.create('td', {'innerHTML': parseInt(i + 1)});
            var title = Element.create('td', {'innerHTML':Autocomplete.listItems[i].Title});
            var a = Element.create('a', {'innerHTML' : 'Remove','href':'javascript:Autocomplete.removeFromIdHolder(' + Autocomplete.listItems[i].ID + ')'});
            var actions = Element.create('td', {'innerHTML':a});
            row.appendChild(id);
            row.appendChild(title);
            row.appendChild(actions);
            $(Autocomplete.params.updateRows).appendChild(row); 
        }
    }
}



//Functions
function createNamespace(ns)
{
	var nsParts = ns.split(".");
	var root = window;

	for(var i=0; i<nsParts.length; i++)
	{
		if(typeof root[nsParts[i]] == "undefined")
		root[nsParts[i]] = new Object();

		root = root[nsParts[i]];
	}
}

function $(elementID)
{
	if( typeof elementID == "string")
	return document.getElementById(elementID);
	else
	return elementID;
}

















