
//
// FWK
// Core JavaScript routines
// (c) 2003-2008 Indrek Siitan <tfr@cafe.ee>
//


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':
				str += fn + "=" +  els.options[els.selectedIndex].value + "&";  
				break;  
		 }
	 }
	str=str.substr(0,(str.length-1));  
	return str;
 }
 
 
function fwk_nothing()
 {
 }


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 ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
 }


// Init vars
var rupd_fld='';

// Create the HTTP object for AJAX requests
var http=fwk_gethttpobject();
var http_inuse=0;
