function starRating_StarOn(index)
{
  var img = document.getElementById('STAR_RATING_IMG_' + index);
  if(img && img.src)
    img.src = "/skin/mountainVista/images/icons/icon_rating_on.gif";
}

function starRating_StarOff(index)
{
  var img = document.getElementById('STAR_RATING_IMG_' + index);
  if(img && img.src)
    img.src = "/skin/mountainVista/images/icons/icon_rating_off.gif";
}

function starRating_StarOver(index)
{
  var img = document.getElementById('STAR_RATING_IMG_' + index);
  if(img && img.src)
    img.src = "/skin/mountainVista/images/icons/icon_rating_over.gif";
}

function starRating_MouseOver(index)
{
  var rating = 1;
  var ratingfield = document.getElementById('ReviewRating');
  if(ratingfield) rating = ratingfield.value;
  for (var i = 1; i <= 5; i++) {
    if(i<=index){
      starRating_StarOver(i);
    }
    else{
      if(i<= rating){
        starRating_StarOn(i);
      }
      else{
        starRating_StarOff(i);
      }
    }
  }
}

function starRating_Click(index)
{
  var ratingfield = document.getElementById('ReviewRating');
  if(ratingfield) ratingfield.value = index;
  starRating_MouseOver(index)
}


function showAddress(address,divid) {
var map = null;
var geocoder = null;
if (GBrowserIsCompatible()) {
  map = new GMap2(document.getElementById(divid));
  map.addControl(new GLargeMapControl);
  //map.setCenter(new GLatLng(37.4419, -122.1419), 13);
  geocoder = new GClientGeocoder();
}
if (geocoder) {
  geocoder.getLatLng(address,
    function(point) {
      if (!point) {
    	var myDiv = document.getElementById(divid);
    	myDiv.innerHTML = "Google Maps could not find this address"
        //alert(1)
          } else {
            map.setCenter(point, 13);
            var marker = new GMarker(point);
            map.addOverlay(marker);
            //marker.openInfoWindowHtml(address);
          }
        }
      )
    }
 }


/* ########## GOOGLE API - GEOCODER - V3 ############*/
function showAddressV3(address,divid) {
	
	var myOptions = {
		zoom: 13,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	geocoder = new google.maps.Geocoder();
	map = new google.maps.Map(document.getElementById(divid),myOptions);
    
    if (geocoder) {
      geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          map.setCenter(results[0].geometry.location);
          var marker = new google.maps.Marker({
              map: map, 
              position: results[0].geometry.location
          });
        } else {
        	map = null;
        	document.getElementById("map_canvas").innerHTML = 'Geocode was not successful for the following reason: ' + status;
        }
      });
    }
	
}

function printEx(target)
{
//alert(target)
//alert(target.id)
	target.focus();
	print();
//alert(target.id)
}

function getFileName(fullName)
{
    //alert("gfn=" + fullName);
    var ret = fullName;
    var i = fullName.lastIndexOf('/');
    //alert("i=" + i)
    if(i>=0)
    {
      ret = ret.substring(i);
      //alert("ret=" + ret)
      i = ret.lastIndexOf('\\')
    //alert("i=" + i)
      if(i>=0)
      {
        i = ret.substring(i);
      //alert("ret=" + ret)
      }
    }
    return ret
}

function imageUrl(imageName, imageBase, id) {
	var ext = ''
	var ix = imageName.lastIndexOf('.');
	if (ix >= 0) {
		ext = imageName.substr(ix);
	}
}

function listItemClicked(tableId, rowIndex, value, selectedRowLinkColumnValue) {
	var selectionValueHolder = document.getElementById(tableId + "_SelectionValue");
	selectionValueHolder.value = value;

	var selectedRowLinkColumnValueHolder = document.getElementById(tableId + "_SelectedRowLinkColumnValue");
	selectedRowLinkColumnValueHolder.value = selectedRowLinkColumnValue;

	//alert(tableId + " clicked " + selectionValueHolder.value + "," + selectedRowLinkColumnValueHolder.value);

	var table = document.getElementById(tableId + "_table");
	// alert("Clicked on " + rowIndex + " with value " + value);
	var targetRowIndex = rowIndex + 1; // TODO allow for header row
	for ( var i = 0; i < table.rows.length; i++) {
		// alert("check row " + i);
		var row = table.rows[i];
		if (row) {
			// alert(" nice row");
			for ( var j = 0; j < row.cells.length; j++) {
				var cell = row.cells[j];
				// alert("cell " + j + " has class " + cell.className);
				if (i == targetRowIndex) {
					if (cell.className == "listColumnValueReadOnly") {
						// alert("set to " + "listColumnValueReadOnlySelected");
						cell.className = "listColumnValueReadOnlySelected";
					} else if (cell.className == "listColumnValue") {
						// alert("set to " + "listColumnValueSelected");
						cell.className = "listColumnValueSelected";
					}
				} else {
					if (cell.className == "listColumnValueReadOnlySelected") {
						// alert("set to " + "listColumnValueReadOnly");
						cell.className = "listColumnValueReadOnly";
					} else if (cell.className == "listColumnValueSelected") {
						// alert("set to " + "listColumnValue");
						cell.className = "listColumnValue";
					}
				}
				// alert(cell.className);
			}
		}
	}

	// var p = document.getElementById(valueItemHolderName);
	// if(p)
	// {
	// p.value = value;
	// }
}


/* brainerror.net/scripts/javascript/blendtrans/ --> */

var stack = new Array();


function StackElement() {
	this.actionPane = null;
	this.contentPane = null;
	this.auxPane = null;
	this.target = null;
	this.action = null;
	this.parameters = null;
	this.pop = null;
	this.backParameters = null;
}

function pushToStack(target, action, parameters, backParameters) {
	
	var s = new StackElement();

	var a = document.getElementById('actionPane');
	
	
	s.actionPane = a.innerHTML;
	var c = document.getElementById('contentPane');
//	alert(" pushing " + c.innerHTML.substring(17040, 17300)) // !!!! there is no value for 
	s.contentPane = c.innerHTML;
	
	var x = document.getElementById('auxPane');
	s.auxPane = x.innerHTML;
	s.target = target;
	s.action = action;
	s.parameters = parameters;

	var stck = document.getElementById('______stack______');
	if(stck)
	{
		//alert("yo")
		if(s.parameters==null) s.parameters = ""
		s.parameters += ",______stack______=" + encodeURIComponent(stck.value)
		//alert(s.parameters)
	}
	s.backParameters = backParameters;
//	if(s.backParameters.indexOf("Equipment_pane_EquipmentFormPane_row_1002_item_strMake=") > 0)
//	{
//		alert("YAAAA 3")
//	}
	stack.push(s);

}

function popFromStack(popAction, popParameters) {
	//alert("popFromStack")
	if(dialogOpen)
	{
		//alert("c;osing dialog")
		//alert(2);
		closeDialog();
		//alert("closed")
//		var ss = stack[stack.length-1];
//		alert(ss.target);
	}
	
	//alert("restoring old html")
	var s = stack.pop();
	if(s)
		;
	else
		{
			//	Nothing on the stack
			//	Send them to the dashboard
			s = new StackElement();
			s.actionPane = null;
			s.contentPane = null;
			s.auxPane = null;
			s.target = "DB";
			s.action = null;
			s.parameters = "menuItem=TopMenu_Account_General_mi_Dashboard";
			s.pop = null;
			s.backParameters = null;
		}
	var a = document.getElementById('actionPane');
	a.innerHTML = s.actionPane;
	var c = document.getElementById('contentPane');
//	alert("content was " + c.innerHTML)
//	alert("setting to " + s.contentPane)
	c.innerHTML = s.contentPane;
	var x = document.getElementById('auxPane');
	x.innerHTML = s.auxPane;
	//alert("restored")
	var newArray = null;
	if(s.backParameters)
	{
		newArray = s.backParameters.split(",")
	
		if(s.parameters==null)s.parameters=""
			var xx
			var nameEqValue
			var name
			var eq
			var value
			var tzs

			for(xx in newArray)
			{
				nameEqValue = newArray[xx]
				eq = nameEqValue.indexOf("=")
				if(eq > 0)
				{
					name = nameEqValue.substring(0, eq)
					if(name == "Popup" || name == "Pushed")
					{
					}
					else
					{
						s.parameters = nameEqValue + "," + s.parameters
					}
				}
			}

		s.parameters = evaluateParameters(s.parameters, true)
		//alert(s.parameters)
	}
	
	
	if (s.target) {
//		var ttt = newParams.indexOf("Equipment_pane_EquipmentFormPane_row_1002_item_strMake=");
//		if( ttt > 0)
//		{
//			alert("YAAAA final " + newParams.substring(ttt, ttt + 100))
//		}
		//alert('NA='+newArray)
		
		var action = s.action;
		if(popAction)
		{
			action = popAction
			//alert("Override action with " + action)
		}
		
		var pars = s.parameters;
		if(popParameters)
		{
			pars = popParameters + "," + pars
			//alert("Override pars with " + pars)
		}
		
		new WSClient().send(s.target, action, pars, false, false, newArray);
//		executeRequestInternal(s.target, s.action, newParams);
	}
	return s;
}

function popping(newArray)
{
	//alert("popping")
	
	var xx
	var nameEqValue
	var name
	var eq
	var value
	var tzs

	for(xx in newArray)
	{
		nameEqValue = newArray[xx]
		eq = nameEqValue.indexOf("=")
		if(eq > 0)
		{
			name = nameEqValue.substring(0, eq)
			value = nameEqValue.substring(eq+1)
			value = decodeURIComponent(value)
			tzs = document.getElementById(name);
			if(tzs)
			{
				if(value != tzs.value)
				{
					//alert("name=[" + name + "], o=[" + tzs.value + "],new=[" + value+"]")
					tzs.value = value
				}
			}
		}
	}
}

function MaException() {
	this.text = null;
	this.details = null;
}

function UiResponse() {
	this.popup = null;
	this.pop = null;
	this.newArray = null;
	this.topPaneHtml = null;
	this.sidebarPaneHtml = null;
	this.actionPaneHtml = null;
	this.contentPaneHtml = null;
	this.notificationPaneHtml = null;
	this.auxPaneHtml = null;
	this.hoverPaneHtml = null;
	this.targetPaneName = null;
	this.targetPaneHtml = null;
	this.targetPaneName1 = null;
	this.targetPaneHtml1 = null;
	this.targetPaneName2 = null;
	this.targetPaneHtml2 = null;
	this.exception = null;
	this.popAction = null;
	this.popParameters = null;
}

function setAndExecute(divId, innerHTML) {
	// reset DEFAULTS FOR MAIN CONTENT AREA
	// 1) overflow of the main content pane
	//alert('se ' + divId + "\n" + innerHTML);
	getObjectFromID('contentPane').style.overflow = 'auto';
	mainContrib = new Array(); // reset this mainContrib Item;
	mainLayout = ''; // set layout back to nothing (one pane)
	mainLayoutFullFillPane = ''; // remove the auto set pane

	var div = document.getElementById(divId);
	if(div)
	{
		//alert(divId + " ")
	}
	else
	{
		//alert("Not found div " + divId)
	}
	div.innerHTML = innerHTML;
	var x = div.getElementsByTagName("script");
	
	for ( var i = 0; i < x.length; i++) {
		//alert('eval ' + x[i].text);
		eval(x[i].text);
		//alert('done');
	}
}

function executeRequest_callback(data) {
	var response = data; // data.UiResponse;
	var html;
	var targetName;
//alert("callback")
	if (response.exception != null) {
		// TODO this for DEV
		html = "<div style='color:red;'>";
		html += "<p>" + response.exception.text + "</p>";
		if (response.exception.details != null) {
			html += response.exception.details.replace("\n", "<br/>");
		}
		html += "</div>";
		document.getElementById("contentPane").innerHTML = html;
	} else {
		
		if(response.newArray)
		{
			popping(response.newArray)
		}
		//alert(response.hoverPaneHtml)
		//alert(response.tempMessage)
		if("errorsFound" == response.tempMessage)
		{
			//alert("errors found!")
			response.pop = false;
			response.popAction = false;
		}
		//alert('resp.popup=' + response.popup)
		//alert('dialopen=' + dialogOpen)
		// alert(response.panes.length);

		if(response.pop || response.popAction)
		{
			//alert("response pop")
			popFromStack(response.popAction, response.popParameters);
			if (response.notificationPaneHtml != null) {
				//alert("not=" + response.notificationPaneHtml)
				setAndExecute("notificationPane", response.notificationPaneHtml);
				setNotificationViewPort();
			}
		}
		else if(response.popup || dialogOpen)//dialogOpen)
		{
			//alert("response dia")
			//alert('dia')
			//var dialogContent = getObjectFromID('dialogPane');
			if (response.contentPaneHtml != null) {
				// alert("cp " + response.contentPaneHtml);
				setAndExecute("dialogPane", response.contentPaneHtml);
				var m = document.getElementById('dialogPane');
				//if(m.childNodes && m.childNodes.length > 0)
				//{
					//var child = m.childNodes[0];
					
					//sizeDialog(null, child.offsetWidth, child.offsetHeight);
					window.setTimeout(function(){sizeDialogDelayed();}, 200) //
				//}
				//openDialog();
				// document.getElementById("contentPane").innerHTML =
				// response.contentPaneHtml;
			}
			if (response.notificationPaneHtml != null) {
				setAndExecute("notificationPane", response.notificationPaneHtml);
				setNotificationViewPort();
			}
		}
		else
		{
			//alert("response")

			if (response.topPaneHtml != null) {
				//alert('tp ' + response.topPaneHtml);
				setAndExecute("topPane", response.topPaneHtml);
				// document.getElementById("topPane").innerHTML =
				// response.topPaneHtml;
			}
			//alert(2);
			if (response.sidebarPaneHtml != null) {
				//alert('sbpane ' + response.sidebarPaneHtml)
				setAndExecute("sidebarPane", response.sidebarPaneHtml);
				setContentViewPort();
				// document.getElementById("sidebarPane").innerHTML =
				// response.sidebarPaneHtml;
			}
			//alert(3);
			if (response.actionPaneHtml != null) {
				//alert('ap ' + response.actionPaneHtml);
				setAndExecute("actionPane", response.actionPaneHtml);
				// document.getElementById("actionPane").innerHTML =
				// response.actionPaneHtml;
			}
			
			if (response.notificationPaneHtml != null) {
				//alert('np ' + response.notificationPaneHtml);
				setAndExecute("notificationPane", response.notificationPaneHtml);
				setNotificationViewPort();
			}
		
			
			//alert(4);
			if (response.contentPaneHtml != null) {
				//alert('cp ' + response.contentPaneHtml);
				// alert("cp " + response.contentPaneHtml);
				setAndExecute("contentPane", response.contentPaneHtml);
				// document.getElementById("contentPane").innerHTML =
				// response.contentPaneHtml;
			}
			
			//alert(5);
			if (response.auxPaneHtml != null) {
				 //alert("ap " + response.auxPaneHtml);
				setAndExecute("auxPane", response.auxPaneHtml);
				// document.getElementById("auxPane").innerHTML =
				// response.auxPaneHtml;
			}
			//alert(6);
			if (response.hoverPaneHtml != null) {
				 //alert("hp " + response.hoverPaneHtml);
				setAndExecute("hoverPane", response.hoverPaneHtml);
			}
			if (response.targetPaneHtml != null) {
				if (document.getElementById(response.targetPaneName)) {
					//alert("tp0 " + response.targetPaneName)
					if(response.targetPaneName == "auxRightPane" && auxRightPaneOpen == false)
					{
						//alert("skip")
					}
					else
					{
						setAndExecute(response.targetPaneName, response.targetPaneHtml);
					}
				}
			}
			if (response.targetPaneHtml1 != null) {
				if (document.getElementById(response.targetPaneName1)) {
					//alert("tp1 " + response.targetPaneName1)
					setAndExecute(response.targetPaneName1,
							response.targetPaneHtml1);
				}
			}
			if (response.targetPaneHtml2 != null) {
				if (document.getElementById(response.targetPaneName2)) {
					//alert("tp2 " + response.targetPaneName2)
					setAndExecute(response.targetPaneName2,
							response.targetPaneHtml2);
				}
			}
			var tmp = document.getElementById('tempMessage');
			if (tmp) {
				if (response.tempMessage == null) {
					response.tempMessage = "Done.";
					response.tempMessage = "";
				}
				//tmp.innerHTML = response.tempMessage;
				// alert(tmp.innerHTML);
				// opacity('topPane', 100, 0, 5000);
				//opacity('tempMessage', 100, 0, 1000);
			}
		}
	}
	
	if (document.getElementById("Assets_pane_Assets"))
		setScrollPos("Assets_pane_Assets");
	
	// call this to unpause any List Popout Dialog blocking
	LPD_UnPause('');
}

function WSClient() {
}

WSClient.prototype.getXmlHttp = function() {
	try {
		if (window.XMLHttpRequest) {
			var req = new XMLHttpRequest();
			// some versions of Moz do not support the readyState property and
			// the onreadystate event so we patch it!
			if (req.readyState == null) {
				req.readyState = 1;
				req.addEventListener("load", function() {
					req.readyState = 4;
					if (typeof req.onreadystatechange == "function")
						req.onreadystatechange();
				}, false);
			}
			return req;
		}
		if (window.ActiveXObject)
			return new ActiveXObject(this.getXmlHttpProgID());
	} catch (ex) {
	}
	throw new Error("Your browser does not support XmlHttp objects");
}

WSClient.prototype.getXmlHttpProgID = function() {
	if (this.getXmlHttpProgID.progid)
		return this.getXmlHttpProgID.progid;
	var progids = [ "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0",
			"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
	var o;
	for ( var i = 0; i < progids.length; i++) {
		try {
			o = new ActiveXObject(progids[i]);
			return this.getXmlHttpProgID.progid = progids[i];
		} catch (ex) {
		}
		;
	}
	throw new Error("Could not find an installed XML parser");
}

function collect(xmlDoc, paneName) {
    //alert(paneName, xmlDoc)
	if (xmlDoc == null) {
		return "";
	}
	// alert(paneName);
	var s = null;
	var pane = xmlDoc.getElementsByTagName(paneName);
	if (pane && pane[0]) {
		s = "";
		// alert("bzt");
		if (pane[0].childNodes && pane[0].childNodes.length > 0) {
			// alert("bzt");
			for ( var i = 0; i < pane[0].childNodes.length; i++) {
				var v = pane[0].childNodes[i];
				if (v.nodeValue) {
					s = s + v.nodeValue;
				}
			}
		} else {
			if (pane.nodeValue) {
				s = pane.nodeValue;
			}
		}
	}

	//alert(	paneName + " " + s)
	
	return s;
}

WSClient.prototype.send = function(target, action, parameters, popup, pop, newArray) {
	var s = "";
	s += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
	s += "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:bo=\"http://cmms.ma.com/\">";
	s += "<soapenv:Header/>";
	s += "<soapenv:Body>";
	s += "<bo:handleUiRequest>";
	s += "<target>";
	if (target != null)
		s += target.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g,
				"&gt;");
	s += "</target>";
	s += "<action>";

	if (action != null)
		s += action.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g,
				"&gt;");
	s += "</action>";
	s += "<parameters>";

	if (parameters != null)
		s += parameters.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(
				/>/g, "&gt;");
	s += "</parameters>";

	s += "</bo:handleUiRequest>";
	s += "</soapenv:Body>";

	s += "</soapenv:Envelope>";

	var xmlHttp = this.getXmlHttp();
	// alert(document.URL);
	// var wsUrl = "https://localhost:8443/ws";
	var wsUrl = document.URL;
	// alert(wsUrl);
	var six = wsUrl.lastIndexOf("/");
	// alert(six);
	if (six > 0 && six < wsUrl.length - 1) {
		// alert("less");
		wsUrl = wsUrl.substring(0, six + 1);
	}
	wsUrl = wsUrl + "ws";
	// alert(wsUrl);

	var loadingBar = document.getElementById("loadingBar");
	if (loadingBar) {
		loadingBar.style.display = 'inline';
	}

	xmlHttp.open("POST", wsUrl, true); // always async
	// var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns)
	// + method;
	xmlHttp.setRequestHeader("SOAPAction", "\"handleUiRequest\"");
	xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4) {
			var loadingBar2 = document.getElementById("loadingBar");
			if (loadingBar2) {
				loadingBar2.style.display = 'none';
			}

			var r = new UiResponse();
			//alert(xmlHttp.responseText)
			r.popup = popup;
			r.pop = pop;
			r.newArray = newArray;
			var h;
			h = collect(xmlHttp.responseXML, 'topPaneHtml');
			r.topPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'sidebarPaneHtml');
			r.sidebarPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'actionPaneHtml');
			r.actionPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'contentPaneHtml');
			r.contentPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'notificationPaneHtml');
			r.notificationPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'auxPaneHtml');
			r.auxPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'hoverPaneHtml');
			r.hoverPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'targetPaneName');
			r.targetPaneName = h;
			h = collect(xmlHttp.responseXML, 'targetPaneHtml');
			r.targetPaneHtml = h;
			h = collect(xmlHttp.responseXML, 'targetPaneName1');
			r.targetPaneName1 = h;
			h = collect(xmlHttp.responseXML, 'targetPaneHtml1');
			r.targetPaneHtml1 = h;
			h = collect(xmlHttp.responseXML, 'targetPaneName2');
			r.targetPaneName2 = h;
			h = collect(xmlHttp.responseXML, 'targetPaneHtml2');
			r.targetPaneHtml2 = h;
			h = collect(xmlHttp.responseXML, 'popAction');
			r.popAction = h;
			h = collect(xmlHttp.responseXML, 'popParameters');
			r.popParameters = h;
			h = collect(xmlHttp.responseXML, 'tempMessage');
			r.tempMessage = h;
			
			var m = new MaException();
			h = collect(xmlHttp.responseXML, 'text');
			m.text = h;
			h = collect(xmlHttp.responseXML, 'details');
			m.details = h;
			if (m.text || m.details) {
				r.exception = m;
			}
			executeRequest_callback(r);
		}
	}

	xmlHttp.send(s);
}

function getInputs() {
	//	Handle Rich Text
	var __rtes = document.getElementsByName("__richTextElementIds");
	
	if(__rtes.length > 0)
	{
		for (i = 0; i < __rtes.length; i++)
		{
			__rteinputE = __rtes[i];
			__rteinputV = __rteinputE.value;
			__rterteditor = eval(__rteinputV);
			if(__rterteditor)
			{
				__rterteditor.saveHTML();
//				var ffj = rteditor.get('element').value;
				//var f = document.getElementById('Message_pane_Message_column_strContents')
				//if(f)
				//{
				//	alert(f.value)
				//	//f.value = ffj
				//}
				
			}
		}
		
	}
	
	var fields = ",";
	var vvv;
	var id;
	var vars = new Array();
	var nodeList;
	var node;
	var i;
	var b;
	
	nodeList = document.getElementsByTagName("INPUT");
	//alert('er3.1.1 - start slowdown');
	//alert("INPUT length " + nodeList.length);
	for (i = 0; i < nodeList.length; i++)
	{
		node = nodeList.item(i);
	
		if (node.type == 'checkbox' && node.checked == false)
		{
			// skip
		}
		else if (node.type == 'radio')
		{
			if (node.checked)
			{
				id = node.name; // !!! name, not ID
				vvv = node.value;
				if (vvv == null){vvv = "";}
				b = id.concat("=", encodeURIComponent(vvv));
				vars.push(b);
			}
			else
			{
				// alert('unchecked ' + node.name + " " + node.value);
			}
		}
		else
		{
			id = node.id;
			vvv = node.value;
			if (vvv == null){vvv = "";}
			
			b = id.concat("=", encodeURIComponent(vvv));
			vars.push(b);
		}
	}
	
	//alert('er3.1.2 - end slowdown');
	nodeList = document.getElementsByTagName("SELECT");
	//alert('select length=' + nodeList.length);
	for (i = 0; i < nodeList.length; i++)
	{
		node = nodeList.item(i);
	
		if (node.options.length > 0)
		{
			id = node.id;
			var option = node.options[node.selectedIndex];
			vvv = option.value;
			if (vvv == null){vvv = "";}
			b = id.concat("=", encodeURIComponent(vvv));
			vars.push(b);
		}
	}

	nodeList = document.getElementsByTagName("TEXTAREA");
	//alert('textarea length=' + nodeList.length);
	for (i = 0; i < nodeList.length; i++)
	{
		node = nodeList.item(i);

		id = node.id;
		vvv = node.value;
		if (vvv == null){vvv = "";}
		b = id.concat("=", encodeURIComponent(vvv));
		vars.push(b);
	}

	vars.push(",");

	fields = vars.join(",");
	//alert(fields)

	return fields;
}

function evaluateParameters(parameters, popup)
{
	//alert("Evaluating " + parameters + " popup=" + popup)
	// K. Evaluate parameters for runtime expressions
	if (parameters) {
		//if(parameters.indexOf(",menuItem=")>=0)
		{
			//alert("YAAA")
			//setAndExecute("actionPane", "&nbsp;");
			//setAndExecute("contentPane", "&nbsp;");
		}
		while(true)
		{
			// TODO only the first one will be evaluated
			var i = parameters.indexOf("$html:(");
			if(i < 0)
			{
				break;
			}
			else
			{
				//alert("ya");
				var s = parameters.substring(i + 7);
				var j = s.indexOf(")$");
				if (j > 0) {
					var fieldName = s.substring(0, j);
					//alert('Evaluating runtime value of ' + fieldName);
					var field = document.getElementById(fieldName);
					//alert(field);
					if (field) {
						//alert('Field holder found');
						var value = field.value;
						//alert('Runtime value of ' + fieldName + ' is ' + value);
						if (value && value.length > 0) {
							//alert('replacing ' + parameters.substring(i, i+7+j+2) + ' with ' + value);
							parameters = parameters.substring(0, i) + value + s.substring(j + 2);
							//alert(parameters);
						} else {
							parameters = parameters.substring(0, i) + "" + s.substring(j + 2);
							alert("ws-lib missing var1 " + fieldName);
							//return;
						}
						 //alert(parameters);
					} else {
						// Just drop the missing var requests
						parameters = parameters.substring(0, i) + "" + s.substring(j + 2);
						alert("ws-lib missing var2 " + fieldName);
						//alert(parameters)
						//return;
					}
				}
			}
		}
	}
	else
	{
		parameters = "";
	}

	//alert("Stack size=" + stack.length)
	
	var fields = "";
	if(parameters.indexOf(",menuItem=")>=0)
	{
		//	Clear stack
		stack = new Array();
		//	Don't evaluate inputs
	}
	else
	{
		fields = getInputs();
	}
	//alert('er3.2');
	parameters = parameters + "," + fields;
	//alert('er3.3');
	if(popup)
	{
		parameters += ",pop=" + popup
	}

	return parameters;
}

function showLoadingBar()
{
	var loadingBar = document.getElementById("loadingBar");
	if (loadingBar) {
		loadingBar.style.display = 'inline';
	}

	if(isDirty)
	{
//		var answer = confirm("Do you want to discard the unsaved changes?");
//		if(!answer)
//		{
//			return;
//		}
	}
}

function UiRequest() {
	this.target = null;
	this.action = null;
	this.parameters = null;
	this.popup = null;
	this.pop = null;
	this.fields = null;
	this.fieldNames = new Array();
	this.fieldValues = new Array();
}

function executeRequest(target, action, parameters, popup, pop)
{
	//alert("er")
	showLoadingBar();
	if (document.getElementById("Assets_pane_Assets"))
		saveScrollPos("Assets_pane_Assets");

	//alert("dopar")
	parameters = evaluateParameters(parameters, popup);
	//alert("endpar")
	new WSClient().send(target, action, parameters, popup, pop)	
}

function executeRequestWithPush(target, action, parameters, target2, action2, parameters2) 
{
	showLoadingBar();

	var isDialogue = (arguments[6] == null) ? false : arguments[6]

  	parameters = evaluateParameters(parameters, isDialogue);
	
	pushToStack(target2, action2, parameters2, parameters);
	new WSClient().send(target, action, parameters, isDialogue, null);
}

function executeRequestWithPop(target, action, parameters) 
{
	showLoadingBar();
	
	parameters = evaluateParameters(parameters, false);

	new WSClient().send(target, action, parameters, false, true);
}

function executeRequestWithPop2(target, action, parameters) 
{
	popFromStack(null, null);
	
	showLoadingBar();
	
	parameters = evaluateParameters(parameters, false);

	new WSClient().send(target, action, parameters, false, false);
}

var isDirty = false;

function setDirty(imgObjectName, imgFileName, dirty) {
	var o = document.getElementById(imgObjectName);
	if (o != null) {
		if (o.src) {
			if (o.src.indexOf(imgFileName) < 0) {
				o.src = imgFileName;
			}
		}
	}
	isDirty = dirty;
}
