    
    /*
    Dynamic Heading Generator by Stewart Rosenberger
    modified by Daniel Srb (i'm to lame to learn js)
    
    selector
    url
    wordwrap
    fontfile
    fontsize
    fontcolor
    backgroundcolor
    transparentbackground 
    */
    replaceSelector("h1.modra","/noRW_/page/header_gener.php",true,"006699");
    replaceSelector("h1.vinov","/noRW_/page/header_gener.php",true,"993333");
    replaceSelector("h1.oranz","/noRW_/page/header_gener.php",true,"ff8800");
    replaceSelector("h1.zelena","/noRW_/page/header_gener.php",true,"007d38");
    var items;

    function replaceSelector(selector,url,wordwrap,fontcolor)
    {
        	if(typeof items=="undefined")items=new Array();
        	
        	items[items.length]={selector:selector,url:url,wordwrap:wordwrap,fontcolor:fontcolor};
    }

    
    function replacement()
    {
    	for(var i=0;i<items.length;i++)
    	{
    		var elements=getElementsBySelector(items[i].selector);
    		
       	if(elements.length>0) for(var j=0;j<elements.length;j++)
    		{
    			if(!elements[j])
    				continue ;
    			var text=extractText(elements[j]);
        		while(elements[j].hasChildNodes())
    				elements[j].removeChild(elements[j].firstChild);
    			var tokens=items[i].wordwrap ? text.split(' ') : [text] ;
    			for(var k=0;k<tokens.length;k++)
    			{
    				var url=items[i].url + "?text="+tokens[k].replace(/&/,"%26")+' '+"&font_color="+items[i].fontcolor;
//    				var url=items[i].url + "?text="+tokens[k]+' '+"&font_color="+items[i].fontcolor+"&force=1";
    				var image=document.createElement("img");
    				image.className="replacement";
    				image.alt=tokens[k] ;
    				image.src=url;
    				elements[j].appendChild(image);
    			}
    		}
    	}
    }
    
    function extractText(element)
    {
    	if(typeof element=="string")
    		return element;
    	else if(typeof element=="undefined")
    		return element;
    	else if(element.innerText)
    		return element.innerText;
    
    	var text="";
    	var kids=element.childNodes;
    	for(var i=0;i<kids.length;i++)
    	{
    		if(kids[i].nodeType==1)
    		text += extractText(kids[i]);
    		else if(kids[i].nodeType==3)
    		text += kids[i].nodeValue;
    	}
    	return text;
    }
    
    /*
    	Finds elements on page that match a given CSS selector rule. Some
    	complicated rules are not compatible.
    	Based on Simon Willison's excellent "getElementsBySelector" function.
    	Original code (with comments and description):
    		http://simon.incutio.com/archive/2003/03/25/getElementsBySelector
    */
    
    function getElementsBySelector(selector)
    {
    	var tokens=selector.split(' ');
    	var currentContext=new Array(document);
    	for(var i=0;i<tokens.length;i++)
    	{
    		token=tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');
    		if(token.indexOf('#')>-1)
    		{
    			var bits=token.split('#');
    			var tagName=bits[0];
    			var id=bits[1];
    			var element=document.getElementById(id);
    			if(tagName && element.nodeName.toLowerCase() != tagName)
    				return new Array();
    			currentContext=new Array(element);
    			continue;
    		}
    
    		if(token.indexOf('.')>-1)
    		{
    			var bits=token.split('.');
    			var tagName=bits[0];
    			var className=bits[1];
    			if(!tagName)
    				tagName='*';
    
    			var found=new Array;
    			var foundCount=0;
    			for(var h=0;h<currentContext.length;h++)
    			{
    				var elements;
    				if(tagName=='*')
    					elements=currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
    				else
    					elements=currentContext[h].getElementsByTagName(tagName);
    
    				for(var j=0;j<elements.length;j++)
    					found[foundCount++]=elements[j];
    			}
    
    			currentContext=new Array;
    			var currentContextIndex=0;
    			for(var k=0;k<found.length;k++)
    			{
    				if(found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b')))
    					currentContext[currentContextIndex++]=found[k];
    			}
    			continue;
    	    }
    
    		if(token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/))
    		{
    			var tagName=RegExp.$1;
    			var attrName=RegExp.$2;
    			var attrOperator=RegExp.$3;
    			var attrValue=RegExp.$4;
    			if(!tagName)
    				tagName='*';
    			var found=new Array;
    			var foundCount=0;
    			for(var h=0;h<currentContext.length;h++)
    			{
    				var elements;
    	        	if(tagName=='*')
    					elements=currentContext[h].all ? currentContext[h].all : currentContext[h].getElementsByTagName('*');
    				else
    					elements=currentContext[h].getElementsByTagName(tagName);
    				for(var j=0;j<elements.length;j++)
    					found[foundCount++]=elements[j];
    			}
    			currentContext=new Array;
    			var currentContextIndex=0;
    			var checkFunction;
    			switch(attrOperator)
    			{
    				case '=':
    					checkFunction=function(e) { return (e.getAttribute(attrName)==attrValue); };
    					break;
    				case '~':
    					checkFunction=function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
    					break;
    				case '|':
    					checkFunction=function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
    					break;
    				case '^':
    					checkFunction=function(e) { return (e.getAttribute(attrName).indexOf(attrValue)==0); };
    					break;
    				case '$':
    					checkFunction=function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue)==e.getAttribute(attrName).length - attrValue.length); };
    					break;
    				case '*':
    					checkFunction=function(e) { return (e.getAttribute(attrName).indexOf(attrValue)>-1); };
    					break;
    				default :
    					checkFunction=function(e) { return e.getAttribute(attrName); };
    			}
    			currentContext=new Array;
    			var currentContextIndex=0;
    			for(var k=0;k<found.length;k++)
    			{if(checkFunction(found[k])) currentContext[currentContextIndex++]=found[k];}
    			continue;
    		}
    		tagName=token;
    		var found=new Array;
    		var foundCount=0;
    		for(var h=0;h<currentContext.length;h++)
    		{
    			var elements=currentContext[h].getElementsByTagName(tagName);
    			for(var j=0;j<elements.length; j++)
    				found[foundCount++]=elements[j];
    		}
    		currentContext=found;
    	}
    	return currentContext;
    }
