var currentTable = 0;
var lng = "lt";

var s_fields = new Array();
var s_field_depends = new Array();
var s_field_children = new Array();

function checkTyping(e) {
	var key = (IE) ? window.event.keyCode : e.which;
	var obj = (IE) ? event.srcElement : e.target;
	var isNum = (key > 47 && key < 58) ? true:false;
	if(key < 32) return true;
	return isNum;
}

function updateSearchCallback(xmlHttp, parm) {
	var el;
	var xml = xmlHttp.responseXML;
	var msg = getXmlData( xml, "message" );
	var err = getXmlData( xml, "error" );
	var frm = getXmlChildren( xml, "form" );
	var updl = getXmlChildren( xml, "options" );
	if( err ) {
		alert( err );
		return;
	}
	if( frm ) {
		var hasgroups = getXmlChildren( frm[0], "hasgroups" );
		var clear = getXmlChildren( frm[0], "clear" );
		frm = getXmlChildren( frm[0], "field" );
		
		field_html = hasgroups?"":"<table cellspacing=0 cellpadding=2 border=0 class=\"search_tables\">";
		delete s_fields;
		delete s_field_children;
		delete s_field_depends;
		s_fields = new Array();
		s_field_children = new Array();
		s_field_depends = new Array();
		var lastfgroup = null;
		for( var n=0; frm && n<frm.length; n++ ) {
			var id = getXmlData( frm[n], "id" );
			var name = getXmlData( frm[n], "name" );
			var units = getXmlData( frm[n], "units" );
			var type = getXmlData( frm[n], "type" );
			var data_type = getXmlData( frm[n], "data_type" );
			var width = getXmlData( frm[n], "width" );
			var height = getXmlData( frm[n], "height" );
			var cols = getXmlData( frm[n], "cols" );
			var rows = getXmlData( frm[n], "rows" );
			var maxlen = getXmlData( frm[n], "maxlen" );
			var fgroup = getXmlData( frm[n], "fgroup" );
			var depends = getXmlData( frm[n], "depends" );
			var source_id = getXmlData( frm[n], "source_id" );
			if( depends && depends != "" ) {
				if( !s_field_children[depends] )
					s_field_children[depends] = new Array();
				s_field_children[depends][s_field_children.length] = id;
				s_field_depends[id] = depends;
			}
			if( !fgroup ) fgroup = "";
			if( hasgroups && lastfgroup != fgroup ) {
				if( lastfgroup != null )
					field_html += "</table></fieldset>";
				field_html += "<fieldset style=\"position:relative; float:left; clear:both; width:400px; padding:3px;\"><legend>" + fgroup + "</legend><table>";
				lastfgroup = fgroup;
			}

			s_fields[id] = 0;
			if( !name ) name = "";
			if( !units ) units = "";
			var style = "";
			if( width && (width>0) ) style += "width:" + (Math.floor(width) + (( type == "check" || type == "radio" || (data_type != "text" && type != "combobox") )?0:45)) + "px;";
			if( height && (height>0) ) style += "height:" + height + "px;";
			if( type == "check" || type == "radio" ) style += "border: none ! important;";
			if( style != "" ) style = " style=\"" + style + "\"";

			if( type && (type == "list" || type == "multilist" ) )
				rows = (rows && (rows>0))?(" size=" + rows):"";
			else
				onlytype = (data_type=="text" || type=="combobox")?"":(" onkeypress=\"return checkTyping(event);\"");

			maxlen = (maxlen && (maxlen>0))?(" maxlength=" + maxlen):"";
			if( !hasgroups || (type != "check" && type != "radio") )
				field_html += "<tr id=\"row_"+ id + "\"><td class=\"sr_name\" width=\"120\">" + name + "</td>";

			if( type == "combobox" || type == "list" || type == "multilist" ) {
				var opts = getXmlChildren( frm[n], "option" );
				var optxt = "";
				if( opts )
					for( var k=0; k<opts.length; k++ ) {
						var val = getXmlData( opts[k], "value" );
						var txt = getXmlData( opts[k], "text" );
						var optstyle = (txt.match(/\([\d]+\)$/gim))?" style=\"color:black;\" ":"";
						optxt += "<option value=\"" + val + "\"" + (( field_vals && field_vals[id] && field_vals[id]==val )?" selected":"") + optstyle + ">" + txt + "</option>";
					}
				field_html += "<td id=\"s_td_" + id + "\"><select name=\"s_field_" + id + "\" id=\"s_field_" + id + "\"" + cols + rows + style + maxlen + " onchange=\"searchComboChanged('" + id + "');\" class=\"sr_sel\">" + optxt + "</select>";
			} else if( type == "check" || type == "radio") {
			    var checked = (field_vals && field_vals[id] && (field_vals[id]=="1" || field_vals[id]=="on"));
				checked = checked?" checked ":"";
				if( hasgroups )
					field_html += "<input name=\"s_field_" + id + "\" id=\"s_field_" + id + "\" type=\"" + ((type=="check")?"checkbox":"radiobutton") + "\"" + style + checked + maxlen + onlytype + " value=1 />&nbsp;" + name + " ";
				else
					field_html += "<td><input name=\"s_field_" + id + "\" id=\"s_field_" + id + "\" type=\"" + ((type=="check")?"checkbox":"radiobutton") + "\"" + style + checked + maxlen + onlytype + " value=1 />";
			} else {
				if( data_type == "text" )
					field_html += "<td><input name=\"s_field_" + id + "\" id=\"s_field_" + id + "\" value=\"" + ((field_vals && field_vals[id])?field_vals[id]:"") + "\" type=\"text\"" + style + maxlen + onlytype + "  />";
				else {
					s_fields[id] = 1;
					field_html += "<td><span style=\"font:12px arial; color:#7d7d7d;\">" + nuo + "</span><input name=\"s_field_" + id + "1\" id=\"s_field_" + id + "1\" value=\"" + ((field_vals && field_vals[id+"1"])?field_vals[id+"1"]:"") + "\" type=\"text\"" + style + maxlen + onlytype + " class=\"sr_ninp\" />  <span style=\"font:12px arial; color:#7d7d7d;\">" + iki + "</span><input name=\"s_field_" + id + "2\" id=\"s_field_" + id + "2\" value=\"" + ((field_vals && field_vals[id+"2"])?field_vals[id+"2"]:"") + "\" type=\"text\"" + style + maxlen + onlytype + " class=\"sr_ninp\" />";
				}
			}
			field_html += "&nbsp; <font class=\"units\">" + units + "</font></td>";
			if( !hasgroups || (type != "check" && type != "radio") )
				field_html += "</tr>\n";
		}
		field_html += "</table>" + (hasgroups?"</fieldset>":"");
		el = document.getElementById( "nt_search_form" );
		if( el )
			el.innerHTML = field_html;
	}
	if( updl ) {
		for( var n=0; n<updl.length; n++ ) {
			var id = getXmlData( updl[n], "id" );
			var current = getXmlData( updl[n], "current" );
			var opts = getXmlChildren( updl[n], "option" );
			var optxt = "";
			if( opts )
				for( var k=0; k<opts.length; k++ ) {
					var val = getXmlData( opts[k], "value" );
					var txt = getXmlData( opts[k], "text" );
					var optstyle = (txt.match(/\([\d]+\)$/gim))?" style=\"color:black;\" ":"";
					optxt += "<option value=\"" + val + "\"" + optstyle + ">" + txt + "</option>";
				}
			
			var el = document.getElementById( "s_td_" + id ) ;
			var el2 = document.getElementById( "s_field_" + id ) ;
			if( el && el2 ) {
				var oval = el2.value;
				var matches1 = el.innerHTML.match(/<select[^>]*>/ig);
				var matches2 = el.innerHTML.match(/<img[^>]*>/ig);
				if( !matches2 )
					matches2 = "";
				if( matches1 )
					el.innerHTML = matches1 + optxt + "</select>" + matches2;
				el2 = document.getElementById( "field_" + id ) ;
				if( el2 )
					el2.value = current?current:oval;
			}
		}
	}
	if( msg )
		alert(msg);
	
	if( parm )
		parm();
}

function searchComboChanged(id) {
	if( !s_field_children[id] )
		return;
	var val = document.getElementById( "s_field_" + id );
	val = val?val.value:0;
	var rent = (field_vals && field_vals["rent"] && (field_vals["rent"]=="1" || field_vals["rent"]=="on"))?"&rent=1":"";
	var url = "ajax.search.php?lng=" + lng + "&updl=" + id + "&val=" + val + "&tbl=" + currentTable + rent;
	AjaxRequestData( updateSearchCallback, "", false, url, null );
}

function exampleScript( text ) {
	return " value=\"" + text + "\" onfocus=\"if( this.value == '" + text + "' ) this.value='';\" onblur=\"if( this.value == '' ) this.value='" + text + "';\" ";
}

function prepareSearchForm( ln, table, addparam ) {
	lng = ln;
	currentTable = table;
	var rent = (field_vals && field_vals["rent"] && (field_vals["rent"]=="1" || field_vals["rent"]=="on"))?"&rent=1":"";
	var url = "ajax.search.php?lng=" + ln + "&table=" + currentTable + rent + addparam;
	AjaxRequestData( updateSearchCallback, null, false, url, null );
}

function cleanupSearchForm() {
	for( var i in s_fields ) {
		if( s_fields[i] == 0 ) {
			el1 = document.getElementById( "s_field_" + i );
			if( !el1 )
				continue;
			el1.value = el1.value.replace(/ iki/g, "" ).replace(/ nuo/g, "" );
		} else {
			el1 = document.getElementById( "s_field_" + i + "1" );
			el2 = document.getElementById( "s_field_" + i + "2" );
			if( !el1 || !el2 )
				continue;
			el1.value = el1.value.replace(/ iki/g, "" ).replace(/ nuo/g, "" );
			el2.value = el2.value.replace(/ iki/g, "" ).replace(/ nuo/g, "" );
		}
	}
}

