
var hclArray = [];
var	hclOffset = 0;
var srchDEF = 'search vendor or model';
var hclTimer = null;
function initHCL()
{	
	requestHCL(); 
}


var lastSearchStatus = 0;
function hcl_addSrch(status)
{
	lastSearchStatus = status;
	doHCLSearch(1);
}

function hcl_clear()
{
	_getById("hclSearch").value = '';
	lastSearchStatus = 0;
	hclOffset = 0;
	setAddNewItemBehaviourFor('hclSearch',srchDEF);
	doHCLSearch(1);
}

var lastSearch = null;
function doHCLSearch(force)
{
	var srch = _getById("hclSearch");
	
	var href = ((srch.value == '') || (srch.value == srchDEF)) ? "off="+hclOffset : "off="+hclOffset+"&search="+srch.value;
	if (lastSearchStatus += 0) href += '&stat='+lastSearchStatus;
	if ((href != lastSearch) || (force))
	{
		infoLock = false;
		editorPosition = null;
		
		var container = _getById("cHCL");
		container.innerHTML = "<img class='left ' src='img/load_icon.gif'> Please wait. HCL ("+hclOffset+") is being loaded ...";
		_XHR(contextPath+"/servlet/eu.ysoft.portal.HCLServlet",href,buildHCLList);
		_XHR(contextPath+"/servlet/eu.ysoft.portal.HCLServlet",href+"&action=count", getHclSumResp);	
		
	}
	lastSearch = href;
}

// goto previous hcl page
function hclPrev()
{
	hclOffset -= 10;
	if (hclOffset <0) hclOffset = 0;
	doHCLSearch();
}

// goto next hcl page
function hclNext()
{
	hclOffset += 10;
	doHCLSearch();
}

// main function, creates HCL list table
function buildHCLList(xml)
{
	var canEdit = ((typeof(usrType) == 'string') && (usrType == 'VIP')) ? true : false;
	var isSalesPortal = _getById("spcInfrastructure") != null;

	var container = _getById("cHCL");
	container.innerHTML = "";
	
	var list = (xml == null) ? null : xml.getElementsByTagName('dev');
	if ((list == null) || (list.length == 0))
	{
		if (hclOffset > 0)
			hclPrev();
		else
			container.appendChild(_createEl("div", { className:"record" },"No record has been found matching your criteria!")); 
		return;
	}

	for (i =0; i<list.length; i++)
	{
		var deviceElem = list[i];
		var deviceChildElem = deviceElem.getElementsByTagName("vendor");
		var vendor = deviceChildElem[0].childNodes[0].nodeValue;
		
		deviceChildElem = deviceElem.getElementsByTagName("model");
		var model = deviceChildElem[0].childNodes[0].nodeValue;
		
		deviceChildElem = deviceElem.getElementsByTagName("status");
		var status = deviceChildElem[0].childNodes[0].nodeValue;
		
		deviceChildElem = deviceElem.getElementsByTagName("when");
		var st_when = deviceChildElem[0].childNodes[0].nodeValue; 
		
		deviceChildElem = deviceElem.getElementsByTagName("by");
		var st_by = deviceChildElem[0].childNodes[0].nodeValue;
		
		deviceChildElem = deviceElem.getElementsByTagName("features");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var features = deviceChildElem[0].childNodes[0].nodeValue; // any combination features XM=MFD, XC=copier, XP=printer, A3, A4, COL,BW
		} else {
			var features = null;
		}
		
		deviceChildElem = deviceElem.getElementsByTagName("caps");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var caps = deviceChildElem[0].childNodes[0].nodeValue; // compbination ON=online acc, OFF=offline accc, JBA=job based acc, BL=copy blocking, SPI=embedded terminal
		} else {
			var caps = null;
		}
		
		deviceChildElem = deviceElem.getElementsByTagName("cable");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var cable = deviceChildElem[0].childNodes[0].nodeValue; // serial number(s) for blocking cable
		} else {
			var cable = null;
		}
		
		deviceChildElem = deviceElem.getElementsByTagName("cable2");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var cable2 = deviceChildElem[0].childNodes[0].nodeValue; // serial number(s) for alternative blocking cable
		} else {
			var cable2 = null;
		}
		
		deviceChildElem = deviceElem.getElementsByTagName("spi");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var spi = deviceChildElem[0].childNodes[0].nodeValue; // name of the embedded technology
		} else {
			var spi = null;
		}
		
		deviceChildElem = deviceElem.getElementsByTagName("acc");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var acc = deviceChildElem[0].childNodes[0].nodeValue; // name of accounting technology
		} else {
			var acc = null;
		}
		
		deviceChildElem = deviceElem.getElementsByTagName("drv");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var drv = deviceChildElem[0].childNodes[0].nodeValue; // accounting driver
		} else {
			var drv = null;
		}
		
		deviceChildElem = deviceElem.getElementsByTagName("note");
		if(deviceChildElem != null && deviceChildElem[0] != null){
			var note = deviceChildElem[0].childNodes[0].nodeValue; // accounting driver
		} else {
			var note = null;
		}
		
		// var note = (deviceElem.childNodes[0].nodeValue != null) ? deviceElem.childNodes[0].nodeValue : "none";
		
		var _id = "note"+i;
		var _idM = _id+"m";

		hclArray[i] = [];
		hclArray[i].id = list[i].getAttribute("id");
		hclArray[i].vendor = vendor;
		hclArray[i].model = model;
		hclArray[i].status = status;
		hclArray[i].features = features;
		hclArray[i].caps = caps;
		hclArray[i].cable = cable;
		hclArray[i].cable2 = cable2; 
		hclArray[i].spi = spi;
		hclArray[i].acc = acc;
		hclArray[i].drv = drv;
		hclArray[i].note = note;
		
		var divX = _createEl("div", { className:"record",id:_idM }); 
		divX.style.cursor = "pointer";
				
		var ico = "img/st5.png";
		var icoT = "certified device";
		switch (status)
		{
			case 'new': ico = "img/st0.png"; icoT =  "new request as of " + st_when; break;	
			case 'tbd': ico = "img/st1.png"; icoT =  "scheduled testing as of " + st_when; break;
			case 'test': ico = "img/st2.png"; icoT = "device test as of " + st_when; break; 
			case 'devel': ico = "img/st3.png"; icoT = "device supported by SafeQ, but not verified"; break; 
			case 'verif': ico = "img/st4.png"; icoT = "device supported and waiting for release"; break; 
			case 'c08': ico = "img/st5.png"; icoT = "device certified"; break; // fully certified
			case 'c09': ico = "img/st5.png"; "device certified by new standard YSF-HCL-2009"; break; // fully certified
		}

		if (features == null)
		{
			ico = "img/st0.png"; icoT =  "new request as of " + st_when  ;
		}

		var divQ = _createEl("div", { className:"item capi" },_createEl("img", { src:"img/qma.gif" }));
		
		divX.appendChild(_createEl("div", { className:"item cap" },_createEl("img", { src:ico, title:icoT })));		
		divX.appendChild(_createEl("div", { className:"item vendor" }, vendor));
		
		var modelS = model;
		if (modelS.length > 15)
			modelS = "..."  + modelS.substring(modelS.length-15,modelS.length);
		
		divX.appendChild(_createEl("div", { className:"item device" }, modelS));
		
		if (features != null)
		{
			if (isSalesPortal)
			{
				if (caps != null)
				{
					divX.appendChild(_createEl("div", { className:"item device" }, 
						((caps.indexOf("BL") != -1) ? "HW Terminal" : _createEl("span", {className:"del"},"HW Terminal"))));
					divX.appendChild(_createEl("div", { className:"item device" }, 
						((caps.indexOf("SPI") != -1) ? "Embedded Terminal" : _createEl("span", {className:"del"},"Embedded Terminal"))));
					divX.appendChild(_createEl("div", { className:"item vendor" }, 
						((caps.indexOf("JBA") != -1) ? "Job Accounting" : _createEl("span", {className:"del"},"Job Accounting"))));
				}
			}
			else
			{
				divX.appendChild(_createEl("div", { className:"item cap" }, 
					((features.indexOf("XM") != -1) ? "mfp" : (features.indexOf("XP") != -1) ? "prn" : "cop")));
				divX.appendChild(_createEl("div", { className:"item cap" }, 
					((features.indexOf("A4") != -1) ? "a4" : "A3")));
				divX.appendChild(_createEl("div", { className:"item cap" }, 
					((features.indexOf("BW") != -1) ? "B/W" : _createEl("span", {className:"col"},"COL"))));

				if (caps != null)
				{
					divX.appendChild(_createEl("div", { className:"item feat" }, 
						((caps.indexOf("ON") != -1) ? "OnLine" : _createEl("span", {className:"del"},"OnLine"))));
					divX.appendChild(_createEl("div", { className:"item feat" }, 
						((caps.indexOf("OF") != -1) ? "OffLine" : _createEl("span", {className:"del"},"OffLine"))));
					divX.appendChild(_createEl("div", { className:"item cap" }, 
						((caps.indexOf("BL") != -1) ? "Blk" : _createEl("span", {className:"del"},"Blk"))));
					divX.appendChild(_createEl("div", { className:"item cap" }, 
						((caps.indexOf("JBA") != -1) ? "J.A." : _createEl("span", {className:"del"},"J.A."))));
					divX.appendChild(_createEl("div", { className:"item cap" }, 
						((caps.indexOf("SPI") != -1) ? "SPI" : _createEl("span", {className:"del"},"SPI"))));
				}
			}
		}
		else
		{
			divX.appendChild(_createEl("div", { className:"item big" },"record not complete"));		
		}

		if (!isSalesPortal)
			eval ("divX.onclick =  function () { hclShowInfo('"+_id+"'); }");
		else
			eval ("divX.onclick =  function () { selectHCL('"+vendor+' '+model+"','"+cable+"','"+spi+"','"+acc+"'); }");
		

		if (!isSalesPortal)
			divX.appendChild(divQ);		

		var divN = _createEl("div", { className:"recordNfo", id:_id }); 
		//eval ("divN.onmouseover =  function () { hclProlongInfo('"+_id+"'); }");
		//eval ("divN.onmouseout =  function () { hclHideInfo('"+_id+"'); }");
		
		var ul = _createEl("ul", {});
		if ((features == null) || (caps == null) || canEdit)
		{
			var editHref = _createEl("a",{ href:"#"}, " - update redord");
			eval("editHref.onclick = function () {  buildEditorBox("+i+",_getById('editHcl" + i + "'))} ");
			var liX = _createEl("li",{});
			if ((features == null) || (caps == null))
				liX.appendChild (_createEl("span",{className:"del"},"this record is INCOMPLETE"));
			else
				liX.appendChild (_createEl("b",{},vendor + " " + model));
			if (canEdit) liX.appendChild (editHref);
			ul.appendChild( liX );
		}
				
		if (drv != null)
		{
			var liX = _createEl("li", {});
			
				liX.appendChild (_createEl("span",{},"online accounting driver: "));
				liX.appendChild (_createEl("a",{ href: contextPath+"/servlet/eu.ysoft.portal.DriverDLServlet?drv=" + drv },drv));
			ul.appendChild( liX );
		}

		if (cable != null)
		{
			var liX = _createEl("li", {});
				liX.appendChild (_createEl("span",{},"blocking cable : "));
				var hrf = _createEl("a",{ href:'#'},cable);
				eval("hrf.onclick = function () { showCablePage('"+cable+"'); } ");
				liX.appendChild (hrf);
				liX.appendChild (_createEl("span",{},", required for copy control by HW terminal"));
			ul.appendChild( liX );
		}
		if (cable2 != null)
		{
			var liX = _createEl("li", {});
				liX.appendChild (_createEl("span",{},"alternative blocking cable : "));
				var hrf = _createEl("a",{ href:'#'},cable2);
				eval("hrf.onclick = function () { showCablePage('"+cable2+"'); } ");
				liX.appendChild (hrf);
				liX.appendChild (_createEl("span",{},", required for copy control"));
			ul.appendChild( liX );
		}

		if (spi != null)
		{
			var liX = _createEl("li", {});
				liX.appendChild (_createEl("span",{},"supports embedded technology: "));
				liX.appendChild (_createEl("b",{},spi));
			ul.appendChild( liX );
		}

		if (acc != null)
		{
			var liX = _createEl("li", {});
				liX.appendChild (_createEl("span",{},"supports accounting via: "));
				liX.appendChild (_createEl("b",{},acc));
			ul.appendChild( liX );
		}

		if (note != null)
		{
			var liX = _createEl("li", {});
				liX.appendChild (_createEl("i",{},note));
			ul.appendChild( liX );
		}

		
		if (!isSalesPortal)
		{
			divN.appendChild(ul);		
			divN.appendChild( _createEl("div",{id: "editHcl" + i}) );
		}
		
		container.appendChild(divX);
		container.appendChild(divN);

	}
	
	resizeHeight();
}

var lastObj = null;
var infoLock = false;
function hclShowInfo(obj)
{
	if (infoLock ) return;
	if (lastObj != null)
	{
		var isEQ = lastObj == obj;
		hclHideInfo(lastObj);
		if (isEQ) return;
	}
	
	lastObj = obj;
	_getById(obj).style.display="block";  
	_getById(obj+"m").style.border="1px solid #C7C7C7";  
	resizeHeight();
}

function hclProlongInfo(obj)
{
	if (infoLock ) return;
	lastObj = obj;
}

function hclHideInfo(obj)
{
	if (infoLock ) return;
	lastObj = null;
	setTimeout( function () { realHideInfo(obj); }, 50 ); 
}

function realHideInfo(obj)
{
	if ((lastObj == null) || (lastObj != obj))
	{
		_getById(obj).style.display="none";  				
		_getById(obj+"m").style.border="0px";  
	}
}

var editorPosition = null;
function buildEditorBox(objRef, where)
{
	if (editorPosition != null)
		return;

	infoLock = true;
	editorPosition = where;
	buildEditor(objRef,where);
	resizeHeight();
}


function saveHCL()
{
	submitHCLUpdate();
}

function deleteHCL()
{
	if (confirm('Are you 100% sure you want to delete this record?\nThe action is irreversible!'))
	{
		infoLock = false;
		editorPosition = null;
		var srch = _getById("hclSearch");
		var href = ((srch.value == '') || (srch.value == srchDEF)) ? "off="+hclOffset : "off="+hclOffset+"&search="+srch.value;
		href += "&action=del&d_hclId="+_getById('d_hclId').value;
		_XHR(contextPath+"/servlet/eu.ysoft.portal.HCLServlet",href ,buildHCLList);	
	}
}

function cancelHCL()
{
	if (editorPosition != null)
		editorPosition.innerHTML = "";
	infoLock = false;
	editorPosition = null;
	hclHideInfo(lastObj);
}

// request new device certification
function requestHCL()
{

	var container = _getById("cHCL");
	container.innerHTML = "";

	var divX = _createEl("div", { className:"record2" }); 
	divX.appendChild(_createEl("hr", {}));

	// device vendor (select from the list)
	// name of the device
	// type of the device
	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("h3", {}, "Please enter information about the device you request to certificate:"));
	
	var selObj = _createEl("select", { name:"d_hclVendor", id:"d_hclVendor"});
	for (i=0; i<hclVendors.length; i++)
	{
		var cbl = hclVendors[i].split("|");
		selObj.options[i] = new Option( cbl[1] ,cbl[0]);
	}
	divX.appendChild(selObj);
	
	obj = _createEl("input", { name:"d_hclModel", id:"d_hclModel", type:"text", value:"model", size:"50" });
	setAddNewItemBehaviourFor(obj,"model");
	divX.appendChild(obj);
	
	var selObj = _createEl("select", { name:"d_hclSize", id:"d_hclSize"});
	selObj.options[0] = new Option('-?-','');
	selObj.options[1] = new Option('A3','A3');
	selObj.options[2] = new Option('A4','A4');
	selObj.options[3] = new Option('Plotter','PLOTTER');

	divX.appendChild(selObj);

	selObj = _createEl("select", { name:"d_hclCol", id:"d_hclCol"});
	selObj.options[0] = new Option('-?-','');
	selObj.options[1] = new Option('B/W','BW');
	selObj.options[2] = new Option('Color','COL');
	divX.appendChild(selObj);

	selObj = _createEl("select", { name:"d_hclType", id:"d_hclType"});
	selObj.options[0] = new Option('-?-','');
	selObj.options[1] = new Option('MFP','XM');
	selObj.options[2] = new Option('printer','XP');
	selObj.options[3] = new Option('copier','XC');
	divX.appendChild(selObj);
	
	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("h3", {}, "Provide additional information, required for device certification:"));

	// OEM - original device name
	// similar / successor to exiting device
	obj = _createEl("input", { name:"d_hclOEM", id:"d_hclOEM", type:"text", value:"is the device OEM of any other? what is the original  model?", size:"70" });
	setAddNewItemBehaviourFor(obj,"is the device OEM of any other? what is the model");
	divX.appendChild(obj);
	obj = _createEl("input", { name:"d_hclSuc", id:"d_hclSuc", type:"text", value:"is the device replacement to another? what is the old model?", size:"70" });
	setAddNewItemBehaviourFor(obj,"is the device replacement to another? what is the model?");
	divX.appendChild(obj);

	
	// what are the available print emulations - PS,PCL, PS+PCL, other
	// supported technology - SNMP, Additional Accounting technology
	// support for Embedded Platform - name the platform
	// support for 3rd party foreight interface
	selObj = _createEl("select", { name:"d_hclEmulation", id:"d_hclEmulation"});
	selObj.options[0] = new Option('device does not support PS or PCL','noPCL');
	selObj.options[1] = new Option('device supports PS & PCL','PS,PCL');
	selObj.options[2] = new Option('device supports PS','PS');
	selObj.options[3] = new Option('device supports PCL','PCL');
	divX.appendChild(selObj);
	divX.appendChild(_createEl("br", {}));
	
	divX.appendChild(_createEl("input", { name:"d_hclSNMP", id:"d_hclSNMP", type:"checkbox", value:"SNMP" }));
	divX.appendChild(_createEl("span",{},"device supports SNMP"));
	divX.appendChild(_createEl("br", {}));

	divX.appendChild(_createEl("input", { name:"d_hclJBA", id:"d_hclJBA", type:"checkbox", value:"JBA" }));
	divX.appendChild(_createEl("span",{},"device supports alternative (job based) accounting technology"));
	divX.appendChild(_createEl("br", {}));
	
	divX.appendChild(_createEl("input", { name:"d_hclFDI", id:"d_hclFDI", type:"checkbox", value:"FDI" }));
	divX.appendChild(_createEl("span",{},"device supports 3rd party vendor interface (key-counter, FDI, FIH, ...)"));
	divX.appendChild(_createEl("br", {}));
	
	divX.appendChild(_createEl("input", { name:"d_hclSPI", id:"d_hclSPI", type:"checkbox", value:"SPI" }));
	divX.appendChild(_createEl("span",{},"device supports embbedded software platform"));
	divX.appendChild(_createEl("br", {}));

		
	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("h3", {}, "Provide contact information and device availability:"));
	divX.appendChild(_createEl("b", {}, "Specify contact who can provide access to the device or help with testing"));
	divX.appendChild(_createEl("br", {}));

	// contact who can provide access to the device for testing purposes
	//(name, email, phone)
	obj = _createEl("input", { name:"d_hclContactName", id:"d_hclContactName", type:"text", value:"contact name", size:"50" });
	setAddNewItemBehaviourFor(obj,"contact name");
	divX.appendChild(obj);

	obj = _createEl("input", { name:"d_hclContactPhone", id:"d_hclContactPhone", type:"text", value:"contact phone", size:"50" });
	setAddNewItemBehaviourFor(obj,"contact phone");
	divX.appendChild(obj);

	obj = _createEl("input", { name:"d_hclContactEmail", id:"d_hclContactEmail", type:"text", value:"contact email", size:"50" });
	setAddNewItemBehaviourFor(obj,"contact email");
	divX.appendChild(obj);

	obj = _createEl("input", { name:"d_hclLocation", id:"d_hclLocation", type:"text", value:"location where is the device available", size:"100" });
	setAddNewItemBehaviourFor(obj,"location where is the device available");
	divX.appendChild(obj);

	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("input", { id:"d_hclOffice", type:"checkbox", value:"office" }));
	divX.appendChild(_createEl("span",{},"can be the device delivered to YSoft office?"));
	divX.appendChild(_createEl("br", {}));

	divX.appendChild(_createEl("b", {}, "Specify contact who can provide specification for FDI,SNMP,accounting,embedded .."));
	divX.appendChild(_createEl("br", {}));

	// contact who can provide access to the device for testing purposes
	//(name, email, phone)
	obj = _createEl("input", { name:"d_hclContact2Name", id:"d_hclContact2Name", type:"text", value:"contact name", size:"50" });
	setAddNewItemBehaviourFor(obj,"contact name");
	divX.appendChild(obj);

	obj = _createEl("input", { name:"d_hclContact2Phone", id:"d_hclContact2Phone", type:"text", value:"contact phone", size:"50" });
	setAddNewItemBehaviourFor(obj,"contact phone");
	divX.appendChild(obj);

	obj = _createEl("input", { name:"d_hclContact2Email", id:"d_hclContact2Email", type:"text", value:"contact email", size:"50" });
	setAddNewItemBehaviourFor(obj,"contact email");
	divX.appendChild(obj);

	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("br", {}));


	obj = _createEl("input", { name:"d_hclPurpose", id:"d_hclPurpose", type:"text", value:"purpose or reason for the certification request", size:"100" });
	setAddNewItemBehaviourFor(obj,"purpose or reason for the certification request");
	divX.appendChild(obj);
	
	// WHEN and WHERE is the device accessible - location, country
	// is it possible to deliver device to YSoft location
	// purpose of the testing

	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("br", {}));

	var upd1 = _createEl("a", { href:"#", className:"btn2" }, "submit request");
	upd1.onclick = submitHCLRequest;
	var upd2 = _createEl("a", { href:"#", className:"btn2" }, "cancel");
	upd2.onclick = function () { lastSearch = null; doHCLSearch(); };

	divX.appendChild(upd1);
	divX.appendChild(upd2);


	var frmEditor = _createEl("form", {method:"post", id:"newHCL"});
	frmEditor.appendChild(_createEl("input", { name:"action", type:"hidden", value:"new" }));
	frmEditor.appendChild(divX);

	container.appendChild(frmEditor);
	
	resizeHeight();
}

function submitHCLRequest()
{
	
	var frm = _getById('newHCL');
	
	var d_hclVendorEl = _getById('d_hclVendor');
	var d_hclModelEl = _getById('d_hclModel');
	var d_hclSizeEl = _getById('d_hclSize');
	var d_hclColEl = _getById('d_hclCol');
	var d_hclTypeEl = _getById('d_hclType');
	var d_hclContactNameEl = _getById('d_hclContactName');
	
	var d_hclContact2NameEl = _getById('d_hclContact2Name');
	
	if (d_hclVendorEl.value == 'vendor') { alert('Please specify device vendor!'); frm.d_hclVendor.focus(); return; }
	if (d_hclModelEl.value == 'model') { alert('Please specify device model name!'); frm.d_hclModel.focus(); return; }
	if (_getOpt("d_hclSize").value == '') { alert('Please specify device type!'); frm.d_hclSize.focus(); return; }
	if (_getOpt('d_hclCol').value == '') { alert('Please specify device type!'); frm.d_hclCol.focus(); return; }
	if (_getOpt('d_hclType').value == '') { alert('Please specify device type!'); frm.d_hclType.focus(); return; }

	if ((d_hclContactNameEl.value == '') && (d_hclContact2NameEl.value == ''))  
		{ alert('Please provide technical contact information!');  return; }

	
	var query = _getFormQuery(frm);
	//alert(query);

	var container = _getById("cHCL");
	container.innerHTML = "<img class='left ' src='img/load_icon.gif'> Please wait. HCL ("+hclOffset+") is being loaded ...";
	var srch = _getById("hclSearch");
	srch.value = d_hclModelEl.value;

	_XHR(contextPath+"/servlet/eu.ysoft.portal.HCLServlet",query,buildHCLList);
}


function buildEditor(objRef,where)
{
	var divX = _createEl("div", {className:"record2"});
	var obj = _createEl("input", { id:"d_hclId", type:"hidden",  value:hclArray[objRef].id });		
	divX.appendChild(obj);


	selObj = _createEl("select", { id:"d_status", className:"statusSet"});
	selObj.options[0] = new Option('new request','0');
	selObj.options[1] = new Option('scheduled testing','1');
	selObj.options[2] = new Option('device tested, waiting for accounting driver','2');
	selObj.options[3] = new Option('driver developed, waiting for verification','3');
	selObj.options[4] = new Option('device verified, waiting for release','4');
	selObj.options[5] = new Option('device certified by old (2008) certification','50');
	selObj.options[6] = new Option('device certified by HCL2009','51');
	divX.appendChild(selObj);
	divX.appendChild(_createEl("br", {}));

	switch (hclArray[objRef].status)
	{
		case 'new': _setOpt(selObj,'0'); break;	
		case 'tbd': _setOpt(selObj,'1'); break;
		case 'test': _setOpt(selObj,'2'); break; 
		case 'devel': _setOpt(selObj,'3'); break; 
		case 'verif': _setOpt(selObj,'4'); break; 
		case 'c08': _setOpt(selObj,'50'); break; // fully certified
		case 'c09': _setOpt(selObj,'51'); break; // fully certified
	}
	
	divX.appendChild(_createEl("input", { id:"d_hclModel", type:"text", value:hclArray[objRef].model, size:"50" }));		
	
	var selObj = _createEl("select", { id:"d_hclSize"});
	selObj.options[0] = new Option('-?-','');
	selObj.options[1] = new Option('A3','A3');
	selObj.options[2] = new Option('A4','A4');
	divX.appendChild(selObj);
	if ((hclArray[objRef].features != null) && (hclArray[objRef].features.indexOf("A4") != -1))
		_setOpt(selObj,'A4');
	else if ((hclArray[objRef].features != null) && (hclArray[objRef].features.indexOf("A3") != -1))
		_setOpt(selObj,'A3');

	selObj = _createEl("select", { id:"d_hclCol"});
	selObj.options[0] = new Option('-?-','');
	selObj.options[1] = new Option('B/W','BW');
	selObj.options[2] = new Option('Color','COL');
	divX.appendChild(selObj);
	if ((hclArray[objRef].features != null) && (hclArray[objRef].features.indexOf("BW") != -1))
		_setOpt(selObj,'BW');
	else if ((hclArray[objRef].features != null) && (hclArray[objRef].features.indexOf("COL") != -1))
		_setOpt(selObj,'COL');

	selObj = _createEl("select", { id:"d_hclType"});
	selObj.options[0] = new Option('-?-','');
	selObj.options[1] = new Option('MFP','XM');
	selObj.options[2] = new Option('printer','XP');
	selObj.options[3] = new Option('copier','XC');
	divX.appendChild(selObj);
	if ((hclArray[objRef].features != null) && (hclArray[objRef].features.indexOf("XM") != -1))
		_setOpt(selObj,'XM');
	else if ((hclArray[objRef].features != null) && (hclArray[objRef].features.indexOf("XP") != -1))
		_setOpt(selObj,'XP');
	else if ((hclArray[objRef].features != null) && (hclArray[objRef].features.indexOf("XC") != -1))
		_setOpt(selObj,'XC');

	selObj = _createEl("select", { id:"d_hclCable"});
	for (i=0; i<hclCables.length; i++)
	{
		var cbl = hclCables[i].split("|");
		selObj.options[i] = new Option( ((i == 0) ? cbl[1] : cbl[0] + " - " + cbl[1]) ,cbl[0]);
		_setOpt(selObj,hclArray[objRef].cable);
	}
	divX.appendChild(selObj);
	divX.appendChild(_createEl("br", {}));

	selObj = _createEl("select", { id:"d_hclCable2"});
	for (i=0; i<hclCables.length; i++)
	{
		var cbl = hclCables[i].split("|");
		if (i==0) cbl[1] = 'alternative ' + cbl[1];
		selObj.options[i] = new Option( ((i == 0) ? cbl[1] : cbl[0] + " - " + cbl[1]) ,cbl[0]);
		_setOpt(selObj,hclArray[objRef].cable2);
	}
	divX.appendChild(selObj);
	divX.appendChild(_createEl("br", {}));

	selObj = _createEl("select", { id:"d_hclSPI"});
	for (i=0; i<hclTechnologiesSPI.length; i++)
		selObj.options[i] = new Option(hclTechnologiesSPI[i],hclTechnologiesSPI[i]);
		_setOpt(selObj,hclArray[objRef].spi);
	divX.appendChild(selObj);

	selObj = _createEl("select", { id:"d_hclAcc"});
	for (i=0; i<hclTechnologiesACC.length; i++)
		selObj.options[i] = new Option(hclTechnologiesACC[i],hclTechnologiesACC[i]);
		_setOpt(selObj,hclArray[objRef].acc);
	divX.appendChild(selObj);
	
	obj = _createEl("input", { id:"d_hclDrv", type:"text", size:"50", value:"online accounting driver" });		
	setAddNewItemBehaviourFor(obj,"online accounting driver");
	divX.appendChild(obj);
	editorSetValue(obj,hclArray[objRef].drv);

	obj = _createEl("input", { id:"d_hclOff", type:"checkbox", value:"OFF" });		
	if ((hclArray[objRef].caps != null) && (hclArray[objRef].caps.indexOf("OF") != -1))
		obj.checked = true;
	divX.appendChild(obj);		
	divX.appendChild(_createEl("span",{},"offline accounting"));
	
	
	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("br", {}));

	obj = _createEl("textarea", { id:"d_hclNote", cols:"50", rows:"4", value:hclArray[objRef].note });		
	setAddNewItemBehaviourFor(obj,"note");
	divX.appendChild(obj);
	editorSetValue(obj,hclArray[objRef].note);

	divX.appendChild(_createEl("br", {}));
	divX.appendChild(_createEl("br", {}));

	var upd1 = _createEl("a", { href:"#", className:"btn2" }, "apply update");
	upd1.onclick = saveHCL;
	var upd2 = _createEl("a", { href:"#", className:"btn2" }, "delete record");
	upd2.onclick = deleteHCL;
	var upd3 = _createEl("a", { href:"#", className:"btn2" }, "cancel");
	upd3.onclick = cancelHCL;
	
	divX.appendChild(upd1);
	divX.appendChild(upd2);
	divX.appendChild(upd3);
	
	var frmEditor = _createEl("form", {method:"post", id:"hclEditor"});
	frmEditor.appendChild(divX);

	where.appendChild(frmEditor);
}

function submitHCLUpdate()
{
	var srch = _getById("hclSearch");

	var d_hclId = _getById('d_hclId');
	var d_hclModel = _getById('d_hclModel');
	var d_hclSize =  _getOpt('d_hclSize');
	var d_hclCol =  _getOpt('d_hclCol');
	var d_hclType =  _getOpt('d_hclType');
	
	var d_hclCable = _getById('d_hclCable');
	var d_hclCable2 = _getById('d_hclCable2');
	var d_hclSPI = _getById('d_hclSPI');
	var d_hclAcc = _getById('d_hclAcc');
	var d_hclDrv = _getById('d_hclDrv');
	var d_hclNote = _getById('d_hclNote');
	var d_hclOff = _getById('d_hclOff');

	if (d_hclModel.value == '') { alert('Please specify device model name!'); d_hclModel.focus(); return; }
	if (d_hclSize.value == '') { alert('Please specify device type!'); _getById('d_hclSize').focus(); return; }
	if (d_hclCol.value == '') { alert('Please specify device type!'); _getById('d_hclCol').focus(); return; }
	if (d_hclType.value == '') { alert('Please specify device type!'); _getById('d_hclType').focus(); return; }

	
	var href = "action=save&" +
		(((srch.value == '') || (srch.value == srchDEF)) ? "off="+hclOffset+"&" : "off="+hclOffset+"&search="+srch.value+"&")+
		'd_hclId='+d_hclId.value+"&"+
		'd_hclModel='+escape(d_hclModel.value)+"&"+
		'd_hclSize='+d_hclSize.value+"&"+
		'd_hclCol='+d_hclCol.value+"&"+
		'd_hclType='+d_hclType.value+"&"+
		'd_status='+_getOpt('d_status').value+"&";
		
	if (d_hclCable.value != "blocking cable s.no") href += 'd_hclCable='+encodeURIComponent(d_hclCable.value)+"&";
	if (d_hclCable2.value != "blocking cable s.no") href += 'd_hclCable2='+encodeURIComponent(d_hclCable2.value)+"&";
	if (d_hclSPI.value != "embedded technology") href += 'd_hclSPI='+encodeURIComponent(d_hclSPI.value)+"&";
	if (d_hclAcc.value != "alternative accounting method") href += 'd_hclAcc='+encodeURIComponent(d_hclAcc.value)+"&";
	if (d_hclDrv.value != "online accounting driver") href += 'd_hclDrv='+encodeURIComponent(d_hclDrv.value)+"&";
	if (d_hclNote.value != "note") href += 'd_hclNote='+encodeURIComponent(d_hclNote.value)+"&";
	if (d_hclOff.checked) href += 'd_hclOff=1';
	
	infoLock = false;
	editorPosition = null;
	
	var container = _getById("cHCL");
	container.innerHTML = "<img class='left ' src='img/load_icon.gif'> Please wait. HCL ("+hclOffset+") is being loaded ...";
	_XHR(contextPath+"/servlet/eu.ysoft.portal.HCLServlet",href ,buildHCLList);	
}

function editorSetValue(obj,ref)
{
	if (ref == null) return;
	obj.value = ref;
	obj.style.color = '#000';
}


function showCablePage(_cable)
{
	loadingShow();
	
	try 
	{	
		var cable = _cable;
		if (cable.indexOf("(") != -1)
			cable = cable.substring(0,cable.indexOf("("));
	
		var vp = _getById('wikiPage');
		if (vp != null) vp.style.display='block'; 
		infoLock = true;

		document.getElementById("idWiki").src = "cable.jsp?cbl="+cable; 
		document.getElementById("dWiki").style.display='';
		document.getElementById("dYSF").style.display='none';
	}
	catch (E) { alert(E + "/" + E.message); }
}


function buildHclAdvSearch()
{
	var fld = _getEl("hclSearchA");
	var divS = _getEl("hclSearchC");
	
	var selObj = _createEl("select", { multiple:"multiple",size:"6"});
	selObj.options[0] = new Option('mfp','XM');
	selObj.options[1] = new Option('printer','XP');
	selObj.options[2] = new Option('copier','XC');
	selObj.options[3] = new Option('production printer','PP');
	selObj.options[4] = new Option('A3','A3');
	selObj.options[5] = new Option('a4','a4');
	selObj.options[6] = new Option('color device','col');
	selObj.options[7] = new Option('monochrome device','BW');
	selObj.options[8] = new Option('with embedded technology','SPI');
	selObj.options[9] = new Option('with alternate accounting','JBA');
	selObj.options[10] = new Option('with panel blocking','Blk');
	selObj.options[11] = new Option('with online accounting','OnLine');
	divS.appendChild(selObj);
	var a = _createEl("a",{href:"#",onclick: function() {alert("Advanced search is not supported yet");}, className:"btn2 right" }," search ");
	a.style.margin = "30px";
	divS.appendChild(a);

	//var pos = _getPos(_getEl("hclSearchA"));
	//ul.style.left = pos.x + "px";
	//ul.style.top = ( pos.y + fld.offsetHeight ) + "px";
	selObj.style.width = _getEl("hclSearch").offsetWidth+"px";
	//ul.style.width = _getEl("hclSearchA").offsetWidth+"px";
	
	//document.getElementsByTagName("body")[0].appendChild(ul);
	
	fld.onclick = function() { _getEl("hclSearchC").style.display = (_getEl("hclSearchC").style.display == "block") ? "none" : "block"; };
	//fld.onblur = function() { _getEl("hclAdvSearch").style.display = "none"; }
	
}

	function getHclSum()
	{
		_JSON2(contextPath+"/servlet/eu.ysoft.portal.HCLServlet","action=count", getHclSumResp);	
	}

	function getHclSumResp(xml)
	{
		var obj = _getById('hclSum');
		var obj2 = _getById('hclSum2');
		var list = xml.getElementsByTagName('devsum');
		var str = "";
		var totalCnt = 0;
		var certCnt = 0;

		if (obj != null)
		{
		
			for (i =0; i<list.length; i++)
			{
				var name = list[i].getAttribute("status"); 
				var cnt = parseInt(list[i].getAttribute("count"));
				if ((name == 'c08') || (name == 'c09')) certCnt += cnt;
				
				totalCnt += cnt;
	//			str += "<li><b>"+name+"</b>: " + cnt + "</li>";
			}
			if (totalCnt > 0)
				obj.innerHTML = ""+totalCnt+" devices, "+ certCnt +" certified";
		}
		else if(obj2 != null)
		{
			for (i =0; i<list.length; i++)
			{
				var status = list[i].getAttribute("status"); 
				var cnt = parseInt(list[i].getAttribute("count"));
				
				switch (status)
				{
					case 'new': str += ", new requests: <a href='#' onClick='hcl_addSrch(99)'>" + cnt + "</a>"; break;	
					case 'tbd':str +=  ", devices scheduled for testing:  <a href='#' onClick='hcl_addSrch(1)'>" + cnt + "</a>"; break;
					case 'test': str += ", devices tested:  <a href='#' onClick='hcl_addSrch(2)'>" + cnt + "</a>"; break; 
					case 'devel': str += ", devices supported by SafeQ, but not verified:  <a href='#' onClick='hcl_addSrch(3)'>" + cnt + "</a>"; break; 
					case 'verif': str += ", devices supported and waiting for release:  <a href='#' onClick='hcl_addSrch(4)'>" + cnt + "</a>"; break; 
					case 'c08': str += ", <b>certified: <a href='#' onClick='hcl_addSrch(50)'>" + cnt + "</a></b>"; break; // fully certified
					case 'c09': str += ", <b>certified prior y2009: <a href='#' onClick='hcl_addSrch(51)'> " + cnt + "</a></b>"; break; // fully certified
					default: str += ", <b>old: <a href='#' onClick='hcl_addSrch(99)'> " + cnt + "</a></b>"; break;
				}
				totalCnt += cnt;
			}

			if (obj2 != null)
				obj2.innerHTML = "<a href='#' onClick='hcl_clear()'>all</a>, <b><a href='#' onClick='hcl_addSrch(0)'>"+totalCnt+"</a></b> devices<i style='color:#B0B0B0'>"+ str + "</i>";
		}
	}


