

	/* ///////////////////////////////////////////////////////////////////// //
	//                                                                       //
	//                                                                       //
	//    FWK 3.0                                                            //
	//    FWK common JavaScript                                              //
	//    (c) 1995-2008 Indrek Siitan / IS Holdings OÜ <tfr@cafe.ee>         //
	//                                                                       //
	//                                                                       //
	// ///////////////////////////////////////////////////////////////////// */


	function fwk_nothing()
	{
	}


	function fwk_updateDropdownValues(field,updatefield,url)
	{
	  var reqURL = url + '/' + field + '=' + escape(document.getElementById(field).options[document.getElementById(field).selectedIndex].value) + '/';
	  rupd_fld = updatefield;
	  http_inuse=1;
	  http.open("GET", reqURL, true);
	  http.onreadystatechange = fwk_handleHttpResponse;
	  http.send(null);
	}


	function fwk_handleHttpResponse()
	{
	  if (http.readyState == 4) 
	   {
			// Split the comma delimited response into an array
			results = http.responseText.split("\t");

			// Delete current values
			var updatefield=document.getElementById(rupd_fld);
			updatefield.options.length=0;

			// Populate with new values
			for (var i=0;i<results.length;i++) 
			 {
				opt=results[i].split("|");
				var newOption = new Option();
				newOption.value = opt[0];
				newOption.text = opt[1];
				updatefield.options[i]=newOption;
			 }

			// Release the HTTP object
			http_inuse=0;
	   }
	}


	function fwk_getHttpObject() 
	{
	  var xmlhttp;
	  if (window.XMLHttpRequest)
	  {
			if (!xmlhttp && typeof XMLHttpRequest != 'undefined') 
			{
				try 
				{
					xmlhttp = new XMLHttpRequest();
				} 
				catch (e) 
				{
					xmlhttp = false;
				}
			}
		}
		else if (window.ActiveXObject)
		{
			try 
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) 
			{
				xmlhttp = false;
			}
		}
		else
		{
			xmlhttp = false;
		}
	  return xmlhttp;
	}


	function fwk_getFormContents(fobj)
	{ 
		var str='';
		var els='';
		var fn='';
		var fv='';
		var els='';
		for(var i=0;i<fobj.elements.length;i++)
		{ 
			els = fobj.elements[i]; 
			ft = els.title; 
			fv = els.value; 
			fn = els.name; 
			switch (els.type)
			{
				case 'text':
				case 'hidden':
				case 'textarea':
					str += fn + "=" + encodeURI(fv) + "&";  
					break;   
				case 'checkbox':  
				case 'radio':  
			  	if(els.checked)
					{
						str += fn + "=" + encodeURI(fv) + "&";
					}
				  break;
				case 'select-one':
					if (els.options.length>0)
					{
						str += fn + "=" +  els.options[els.selectedIndex].value + "&";  
					}
					break;  
			}
		}
		str=str.substr(0,(str.length-1));  
		return str;
	}


	function fwk_getFormContentsAsObject(fobj)
	{ 
		var returnobject = new Object();
		var els='';
		var fn='';
		var fv='';
		var els='';
		for(var i=0;i<fobj.elements.length;i++)
		{ 
			els = fobj.elements[i]; 
			ft = els.title; 
			fv = els.value; 
			fn = els.name; 
			switch (els.type)
			{
				case 'text':
				case 'hidden':
				case 'textarea':
					returnobject[fn]=fv;
					break;   
				case 'checkbox':  
				case 'radio':  
			  	if(els.checked)
					{
						returnobject[fn]=fv;
					}
				  break;
				case 'select-one':
					if (els.options.length>0)
					{
						returnobject[fn]=els.options[els.selectedIndex].value;
					}
					break;  
			}
		}
		return returnobject;
	}


	function fwk_toggle( className, open )
	{
		if (open<0)
		{
			if (fwk_toggleArray[className]==1)
			{
				open=0;
				fwk_toggleArray[className]=0;
			} 
			else 
			{
				open=1;
				fwk_toggleArray[className]=1;
			}
		}
		if (open)
		{
			var style_0='none';
			var style_1='';
		}
		else
		{
			var style_0='';
			var style_1='none';
		}
		var els=getElementsByClass(className+'_0');
		for (i=0;i<els.length;++i)
		{
			els[i].style.display=style_0;
		}
		var els=getElementsByClass(className+'_1');
		for (i=0;i<els.length;++i)
		{
			els[i].style.display=style_1;
		}
	}
	
	function fwk_toggleWithImage( className, open, imgId )
	{
		if (open<0)
		{
			if (fwk_toggleArray[className]==1)
			{
				open=0;
				fwk_toggleArray[className]=0;
			} 
			else 
			{
				open=1;
				fwk_toggleArray[className]=1;
			}
		}
		fwk_toggle(className,open);
		document.getElementById(imgId).src='/static/fwk/toggle-'+open+'.png';
	}


	function getElementsByClass(searchClass,tag,node) 
	{
		var classElements = new Array();
		if ( tag == null )
			tag = '*';
		if ( node == null )
			node = document;
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) 
		{
			if ( els[i].className.indexOf(' ') != -1 )
			{
				var classNames = els[i].className.split(' ');
				for (k = 0; k < classNames.length; k++)
				{
					if ( pattern.test(classNames[k]) ) 
					{
						classElements[j] = els[i];
						j++;
					}
				}
			}
			else if ( pattern.test(els[i].className) ) 
			{
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	}


	// Init vars
	rupd_fld='';
	fwk_toggleArray=new Array();

	// Create the HTTP object for AJAX requests
	http=fwk_getHttpObject();
	http_inuse=0;
	
	function FWK_getElement(name)
	{
		if (typeof name != 'object')
		{
			if (typeof name == 'string')
			{
				if (document.layers) return document.layers[name];  
				else if (document.all) return document.all[name];
				else if (document.getElementById) return document.getElementById(name);
				else alert('Unknown browser');
			} else alert('An element has to be either an object or a string.');		
		} else return name;
	}

	function FWK_fireEvent(elementObj, eventName)
	{
		if (document.createEvent)
		{
			var evObj = document.createEvent('HTMLEvents');
			evObj.initEvent(eventName, true, false);
			elementObj.dispatchEvent(evObj);
		}
		else if (document.createEventObject)
		{
			elementObj.fireEvent('on' + eventName);
		}
	}

	function FWK_attachEvent(elementObj, eventName, eventHandler)
	{
		if (elementObj.addEventListener)
		{
		  elementObj.addEventListener(eventName, eventHandler, false);
		}
		else if (elementObj.attachEvent)
		{
		  elementObj.attachEvent('on' + eventName, eventHandler);
		}
	}

	function FWK_isArray(obj)
	{
	    return ((typeof obj == 'object') && (obj instanceof Array));
	}
	
	function FWK_showHide(element, defaultDisplay)
	{
		if (FWK_isArray(element))
		{
			for (var key in element)
			{
				FWK_showHide(element[key], defaultDisplay);
			}
		}
		else
		{
			element = FWK_getElement(element);
			if (typeof element != 'object')
			{
				alert('Invalid type for element ' + element);
				return null;
			}
			element.style.display = ((element.style.display != defaultDisplay) ? defaultDisplay : 'none');
		}
		return false;
	}
	
	function FWK_setElementCoords(element, x, y)
	{
		element = FWK_getElement(element);
		element.style.left = x + 'px';
		element.style.top = y + 'px';
	}
	
	function FWK_invokeAJAX(ajaxURL, preparator, callBack, currentID, context)
	{
		if ((typeof YAHOO == undefined) || (typeof YAHOO == null))
		{
			alert('FWK_invokeAJAX requires Yahoo User Interface.');
		}
		if (preparator != null)
		{
			var preparatorResults = eval(preparator + '(currentID, context)');
		}
		if (FWK_isArray(context[0]))
		{
			var params = '';
			for (var pkey in context[0])
			{
				var pvalue = context[0][pkey];
				var pref = FWK_getElement(pvalue);
				var refValue = '';

				if (pref.selectedIndex != undefined)
				{
					if (pref.selectedIndex >= 0)
					{
						refValue = 'options[pref.selectedIndex].value';
					}
					else
					{
						refValue = null;
					}
				}
				else if (pref.value != undefined)
				{
					refValue = 'value';
				}
				else
				{
					refValue = 'innerHTML';
				}
				if (refValue != null)
				{
					params += pref.name + '=' + eval('pref.' + refValue) + '&';
				}
			}
		}
		else
		{
			var params = fwk_getFormContents(FWK_getElement(context[0]));
		}
		params = params + ((params.length > 0) && (preparatorResults != undefined) && (preparatorResults.length > 0) ? '&' + preparatorResults : '');
		ajaxCallbackContext = context;
		var request = YAHOO.util.Connect.asyncRequest('POST', ajaxURL, eval(callBack), params);
	}
	
	function FWK_setDropdownValue(dropdownname,value)
	{
		dropdown=FWK_getElement(dropdownname);
		for(var i=0;i<dropdown.options.length;++i)
		{
			if (dropdown.options[i].value==value)
			{
				dropdown.selectedIndex=i;
			}
		}
	}
	
