// TODO la delete si edit se baga ceva in plus in fata randului la grid
// the file that returns the requested data in XML format
var feedGridUrl = "/cgi-bin/dvv/dream.cgi?rntpc="+Math.random()+"&";
//var xslPath="/cgi-bin/dvv/xsl/";
var divs; //sir de divuri cu care lucrez
var curdiv=0;
var editableId = false;
var sttime=3000;
var one_day=1000*60*60*24; //o zi in milisecunde
var zile=new Array("Duminica", "Luni", "Marti", "Miercuri", "Joi", "Vineri", "Sambata");
var luni=new Array("Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie");
var RPP=20;

function oDiv(divname,_view,initLink,_xcnf,_filter){
	this.name=divname;
	this.view=_view;
	this.link=initLink;
	if (_xcnf) this.xcnf=_xcnf;
	else this.xcnf=divname;
	this.xmlHttp = createXmlHttpRequestObject();
	this.prev="<nedef>"; //ce a fost initial in div
	this.savestr="";
	this.func=null;
	if(_filter) this.filter=_filter;
	else this.filter=null;
	this.orig_filter=this.filter;
	//if(_afterLoad) this.afterLoad=_afterLoad;
	//else this.afterLoad=null;
	// the XSLT document
	//this.stylesheetDoc;
	//this.xsltFileUrl=styleDoc;
	// the ID of the product being edited
	// the grid of the status div
	//this.statusDivId = "statusDiv";
	// stores temporary row data
	//this.tempRow;
}

oDiv.prototype.func=null;
//oDiv.prototype.afterLoad=null;
// eveything starts here
function init(idivs)
{
	divs=idivs;
	// test if user has browser that supports native XSLT functionality
	if(window.XMLHttpRequest && window.XSLTProcessor && window.DOMParser)
	{
		// load the grid
		for(i=0;i<divs.length;i++){
			//loadStylesheet(i);
			loadData(i);
		}
		return;
	}
	// test if user has Internet Explorer with proper XSLT support
	if (window.ActiveXObject && createMsxml2DOMDocumentObject())
	{
		// load the grid
		for(i=0;i<divs.length;i++){
			//loadStylesheet(i);
			loadData(i);
		}
		// exit the function
		return;
	}
	// if browser functionality testing failed, alert the user
	alert("Your browser doesn't support the necessary functionality.");
}

// makes asynchronous request to load a new page of the grid
function loadData(curd){
	loadDataC(curd,feedGridUrl);
}
function loadDataC(curd,fgu)
{
	// disable edit mode when loading new page
	//editableId = false;
	// continue only if the XMLHttpRequest object isn't busy
	//alert(curd+' '+fgu);
	var newpage=0;
	if(fgu.indexOf("&media=")>0){
		newpage=1;
	}
	if (divs[curd].xmlHttp && (divs[curd].xmlHttp.readyState == 4 || divs[curd].xmlHttp.readyState == 0))
	{
		divu=document.getElementById(divs[curd].name);
		if(divu){
			if(divu.tagName=="TABLE" || divu.tagName=="TBODY" || divu.tagName=="THEAD"){
				var etr=document.createElement("tr");
				divu.appendChild(etr);
				divu=etr;
			}
			if(newpage==0){
				if(divu.tagName=="TR"){
					var etd=document.createElement("td");
					divu.appendChild(etd);
					etd.innerHTML="<img class=\"wait\" src=\"/img/wait.gif\" alt=\"asteptati...\"/>";
				}
				else
					divu.innerHTML="<img class=\"wait\" src=\"/img/wait.gif\" alt=\"asteptati...\"/>";
			}
		}
		var query = fgu;
		if(divs[curd].filter) query+=divs[curd].filter;
		//alert(divs[curd].filter);
		query+="&nodov=" + divs[curd].xcnf + "&" + divs[curd].link + "&fid=" + curd;
		//
		//var query = fgu + "nodov=" + divs[curd].xcnf + "&" + divs[curd].link + "&fid=" + curd;
		//if(divs[curd].filter) query+='&'+divs[curd].filter;
		//
		//alert('--'+query+'--');
		if(newpage){
			document.location=query;
			return;
		}
		divs[curd].xmlHttp.open("GET", query, true);
		curdiv=curd;
		divs[curd].xmlHttp.onreadystatechange = function() {handleGridPageLoad(divs[curd],0);};
		divs[curd].xmlHttp.send(null);
	}
}

function handleInsert(cdiv,resp){
	var odiv=divs[cdiv];
	//alert(resp);
	var divu=document.getElementById(odiv.name);
	if(!divu){
		alert("Can't get output object a(82)");
		return;
	}
	if (resp.indexOf("javascript:updateline")>=0){//tre afisat formu
		if(divu.tagName=="TR") addFragment(divu,resp);
		else divu.innerHTML=resp;
		return;
	}
	if (resp.indexOf("Eroare") >= 0){ //datele nu s-au salvat
		var cols=2;
		var tbl=divu.parentNode;
		if(tbl && tbl.tagName=="TBODY"){
			cols=tbl.rows[0].cells.length;
			addFragment(divu,"<td colspan=\""+cols+"\"><span class=\"err\">"+resp+"</span> <a onclick=\"restore_ln('"+odiv.name+ "')\"><img src=\"/img/undo_24.png\" alt=\"anuleaza\"/></a></td>");
		}
	}
	else{//s-au salvat
		var tbl=divu.parentNode;
		if(tbl){//la insert bag rand nou cu datele si las randu original cu adauga+mesaj in status
			//la update schimb randu si bag mesaj in status
			//alert(tbl);
			var newRow=tbl.rows.length;
			if(newRow>0) newRow=1;//baga-l imediat dupa header
			var row = tbl.insertRow(newRow);
			var cid=getId(resp);
			//alert(cid+'--'+resp);
			if(MyIsNaN(cid)){
				alert("Datele s-au salvat insa pagina nu mai este sincronizata cu serverul. Reincarcati pagina.");
				return;
			}
			row.setAttribute('id', 'row'+odiv.name+cid);
			var r=("<td><input type='checkbox' value='"+cid+"' class='fuckingIE'/><a onclick=\"deleteline('"+odiv.name+"','"+cid+"','"+odiv.view+"','"+odiv.xcnf+"')\"><img src=\"/img/cancel_24.png\" alt=\"anuleaza\" /></a><a onclick=\"editline('row"+odiv.name+cid+"','"+odiv.view+"','"+cid+"','"+odiv.xcnf+"')\"><img src=\"/img/edit_24.png\" alt=\"modifica\" /></a></td>")+odiv.savestr;
			addFragment(row,r);
			if(divu.tagName=="TR") addFragment(divu,odiv.prev);
			else divu.innerHTML=odiv.prev;
			setStatus(odiv.name+'Status',resp,0,'hide');
			var bid='nrr'+(divs[cdiv].name.replace(/^row/,'')).replace(/[0-9]+$/,'');
			var b=document.getElementById(bid);
			if(b) b.innerHTML=parseInt(b.innerHTML)+1;
		}
		divs[cdiv].prev="<nedef>";
		editableId=false;
	}
}

function handleDelete(cdiv){
	var cols=2;
	var odiv=divs[cdiv];
	var divu=document.getElementById(odiv.name);
	if(!divu){
		alert("Can't get output object a(147)");
		return;
	}
	var tbl=divu.parentNode;
	if(tbl && tbl.tagName=="TBODY") cols=tbl.rows[0].cells.length;
	if (response.indexOf("Eroare") >= 0){ //datele nu s-au salvat
		addFragment(divu,"<td colspan=\""+cols+"\"><span class=\"err\">"+response+"</span> <a onclick=\"restore_ln('"+odiv.name+"')\"><img src=\"/img/undo_24.png\" alt=\"anuleaza\"/></a></td>");
	}
	else{
		if(odiv.name=='contract') afterCt();
		setStatus(odiv.name,"<td colspan=\""+cols+"\">"+response+"</td>",0,'delete');
		var bid='nrr'+(divs[cdiv].name.replace(/^row/,'')).replace(/[0-9]+$/,'');
		var b=document.getElementById(bid);
		if(b) b.innerHTML=parseInt(b.innerHTML)-1;
	}
}

function handleEdit(cdiv,resp){
	var odiv=divs[cdiv];
	//alert(odiv.name);
	var divu=document.getElementById(odiv.name);
	if(!divu){
		alert("Can't get output object a(164)");
		return;
	}
	if (resp.indexOf("javascript:updateline")>=0){//tre afisat formu
		//divu.innerHTML=resp;
		//alert(resp);
		if(divu.tagName=="TR") addFragment(divu,resp);
		else divu.innerHTML=resp;
		return;
	}
	if (resp.indexOf("Eroare") >= 0){ //datele nu s-au salvat
		var cols=2;
		var tbl=divu.parentNode;
		if(tbl && tbl.tagName=="TBODY"){
			cols=tbl.rows[0].cells.length;
			addFragment(divu,"<td colspan=\""+cols+"\"><span class=\"err\">"+resp+"</span> <a onclick=\"restore_ln('"+odiv.name+ "')\"><img src=\"/img/undo_24.png\" alt=\"anuleaza\"/></a></td>");
		}
	}
	else{//s-au salvat
		var tbl=divu.parentNode;
		var cols=2;
		if(tbl) cols=tbl.rows[0].cells.length;
		//divu.innerHTML="<td colspan=\""+cols+"\">"+resp+"</td>";
		setStatus(odiv.name,"<td colspan=\""+cols+"\">"+resp+"</td>",0,'savestr');
		editableId=false;
		divs[cdiv].prev="<nedef>";
	}
}

function editline(_div,_view,id,xc){
	//alert(_div+' '+_view+' '+xc);
	var prevu;
	var divu=document.getElementById(_div);
	if(!divu){
		alert('form inexistent \"'+_div+'\" a(177)');
		return;
	}
	prevu=innerHTMLasXML(divu);//.innerHTML;
	//alert(prevu);
	var cdiv=getOdivByName(_div);
	if(cdiv==-1){
		divs.push((new oDiv(_div,_view,"aa=6&id="+id,xc)));
		cdiv=-1;
	}
	cdiv=getOdivByName(_div);
	if(cdiv==-1){
		alert('odiv inexistent '+_div+' a(188)');
		return;
	}
	if(editableId){ alert("Inregistrare deja in editare."); return; }
	loadData(cdiv);
	divs[cdiv].func=handleEdit;
	if(divs[cdiv].prev=='<nedef>') divs[cdiv].prev=prevu;
	editableId=true;
}
// handle receiving the server response
function handleGridPageLoad(odiv,save)
{
	//alert(odiv.name);
	var divu=document.getElementById(odiv.name);
	if(!divu){
		alert("Can't get output object "+odiv.name+" a(251)");
		return;
	}
	if(odiv.xmlHttp.readyState == 1) {
		window.status = 'waiting for response...';
	}
	// when readystate is 4, we read the server response
	if (odiv.xmlHttp.readyState == 4)
	{
		// continue only if http status is "ok"
		if (odiv.xmlHttp.status == 200)
		{
			// read the response
			response = odiv.xmlHttp.responseText;
			//responseXML=odiv.xmlHttp.responseXML;
			//alert(response);
			// server error?
			if (response.indexOf("errno") >= 0
				//	|| response.indexOf("error") >= 0
					|| response.length == 0)
			{
				// display error message
				alert(response.length == 0 ? "server error a(273)." : response+" a(273).");
				divu.innerHTML="<img src=\"/img/error_24.png\" alt=\"eroare\"/> <span class=\"err\">Eroare server</span>";
				// exit function
				return;
			}

			if(odiv.func){
				//alert(odiv.func);
				var cdiv=getOdivByName(odiv.name);
				if(cdiv==-1){
					if(divu.tagName=="TR" || divu.tagName=="TBODY" || divu.tagName=="THEAD") addFragment(divu,response);
					else divu.innerHTML=response;
				}
				else odiv.func(cdiv,response);
			}
			else{
				if(divu.tagName=="TR" || divu.tagName=="TBODY" || divu.tagName=="THEAD") addFragment(divu,response);
				else{
					divu.innerHTML=response;
					//if(odiv.name="displist") alert(divu.tagName+' '+response);
				}
			}
			if(odiv.name.indexOf("rowcontract")>=0){
					loadData(getOdivByName('contract'));
				//recalcPret();
				//var cdiv=getOdivByName('tarif');
				//loadData(cdiv);
			}
			if(odiv.name=='contract'){
				afterCt();
			}
			if(odiv.name=='tarif'){
				if(response.indexOf(" succes.")>=0) window.location="/cgi-bin/dvv/propunere.cgi";
				else recalcPret();
			}
			//if(odiv.afterLoad) odiv.afterLoad();
			//alert(response);
		}
		else
		{
			divu.innerHTML = "error reading server response.";
		}
		window.status = 'done';
	}
}
// creates an xmlHttprequest instance
function createXmlHttpRequestObject()
{
	// will store the reference to the XMLHttpRequest object
	var xmlHttp;
	// this should work for all browsers except IE6 and older
	try
	{
		// try to create XMLHttpRequest object
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		// assume IE6 or older
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
				"MSXML2.XMLHTTP.5.0",
				"MSXML2.XMLHTTP.4.0",
				"MSXML2.XMLHTTP.3.0",
				"MSXML2.XMLHTTP",
				"Microsoft.XMLHTTP");
		// try every prog id until one works
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
				// try to create XMLHttpRequest object
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {}
		}
	}
	// return the created object or display an error message
	if (!xmlHttp)
		alert("Error creating the XMLHttpRequest object.");
	else
		return xmlHttp;
}

function getOdivByName(divname){
	for(i=0;i<divs.length;i++){
		if(divs[i].name==divname) return i;
	}
	return -1;
}

function logout(aa,divname)
{
	var cdiv=getOdivByName(divname);
	if(cdiv==-1){
		alert('oDiv inexistent \"'+divname+'\" a(293)');
		return;
	}
	if (divs[cdiv].xmlHttp && (divs[cdiv].xmlHttp.readyState == 4 || divs[cdiv].xmlHttp.readyState == 0))
	{
		var query = feedGridUrl + "nodov="+divs[cdiv].xcnf+"&aa="+aa;
		//alert(query);
		divs[cdiv].xmlHttp.open("GET", query, true);
		divs[cdiv].xmlHttp.onreadystatechange = function() {handleGridPageLoad(divs[cdiv],0);};
		divs[cdiv].xmlHttp.send(null);
	}
}

function updatef(divname,frm)
{
	update(divname,frm,0,0);//fara save si fara retid
}
// update one row in the grid if the connection is clear
function update(divname,frm,save,retid){
  // continue only if the xmlHttprequest object isn't busy
	//alert(divname+' '+frm);
	var cdiv=getOdivByName(divname);
	formu=document.getElementById(frm);
	if(!formu){
		alert('form inexistent '+frm+' a(361)');
		return;
	}
	if(cdiv==-1){
		alert('odiv inexistent '+divname+' a(365)');
		return;
	}
	if (divs[cdiv].xmlHttp && (divs[cdiv].xmlHttp.readyState == 4 || divs[cdiv].xmlHttp.readyState == 0))
	{
		var query = feedGridUrl + "nodov="+divs[cdiv].xcnf;
		if(retid) query+="&retid=1"; //asta l-am scos ca am bagat link mai jos
		//query+="&"+divs[cdiv].link;
		divs[cdiv].savestr="";
		var crow=new myObj();//rand de salvat
		if(formu.tagName=="FORM"){
			f=formu.elements;
			crow.str="";
		}
		else{
			f=getForm(formu,crow);
		}
		for(i=0;i<f.length;i++){
			//alert(formu.elements[i].type+' '+formu.elements[i].name);
			if (f[i].type == 'radio') {
				if (f[i].checked == true) {
					query += "&"+escape(f[i].name)+"="+escape(f[i].value);
				}
			}
			else if(f[i].type == 'checkbox') {
				if (f[i].checked == true) {
					query += "&"+escape(f[i].name)+"="+escape(f[i].value);
				}
			}
			else if(f[i].tagName=="SELECT"){
				var s=document.getElementById(f[i].id);
				query+='&'+escape(s.name)+'='+escape(s.value);
			}
			else query+="&"+escape(f[i].name)+"="+escape(f[i].value);
			if(save && f[i].type!="hidden"){
					//f[i].name!="aa"
					//&& f[i].name!="id"){
				if(f[i].type=="password")
					divs[cdiv].savestr+=('<td>******</td>');
				else if(f[i].tagName=="SELECT"){
					var s=document.getElementById(f[i].id);
					divs[cdiv].savestr+=('<td>'+s.options[s.selectedIndex].text+'</td>');
				}
				else
					divs[cdiv].savestr+=('<td>'+f[i].value+'</td>');
			}
		}
		if(crow.str!="") divs[cdiv].savestr=crow.str;
		//alert(query);
		divs[cdiv].xmlHttp.open("get", query, true);
		divs[cdiv].xmlHttp.onreadystatechange = function() { handleGridPageLoad(divs[cdiv],save); };
		divs[cdiv].xmlHttp.send(null);
	}
}

function createMsxml2DOMDocumentObject()
{
	var msxml2DOM;
	var msxml2DOMDocumentVersions = new Array("Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0");
	for (var i=0; i< msxml2DOMDocumentVersions.length && !msxml2DOM; i++)
	{
		try
		{
			msxml2DOM = new ActiveXObject(msxml2DOMDocumentVersions[i]);	
		}
		catch (e) {}
	}

	if(!msxml2DOM)
		alert("Please upgrade your MSXML version from \n" + "http://msdn.microsoft.com/XML/XMLDownloads/default.aspx");
	else
		return msxml2DOM;
}

function loadStylesheet(curd)
{
	if(divs[curd].xsltFileUrl==undefined) return;
	divs[curd].xmlHttp.open("GET", xslPath+divs[curd].xsltFileUrl, false);	
	divs[curd].xmlHttp.send(null);

	if(this.DOMParser)
	{
		var dp = new DOMParser();
		divs[curd].stylesheetDoc = dp.parseFromString(divs[curd].xmlHttp.responseText, "text/xml");
	}
	else if(window.ActiveXObject)
	{
		divs[curd].stylesheetDoc = createMsxml2DOMDocumentObject();
		divs[curd].stylesheetDoc.async = false;
		divs[curd].stylesheetDoc.load(divs[curd].xmlHttp.responseXML);
	}
}

function updateline(_div,frm){
	update(_div,frm,1,1);
}

function insForm(_div,_view,_aa){
	insFormC(_div,_view,_aa,_div);
}
function insFormC(_div,_view,_aa,_xc){
	//if(editableId){ alert("Inregistrare deja in editare."); return; }
	editableId=true;
	var prevu;
	var divu=document.getElementById(_div);
	if(!divu){
		alert('form inexistent '+_div+' a(404)');
		return;
	}
	prevu=innerHTMLasXML(divu);//.innerHTML;
	//alert(prevu+'+++'+divu.innerHTML);
	var cdiv=getOdivByName(_div);
	if(cdiv==-1){
		divs.push((new oDiv(_div,_view,_aa,_xc)));
		cdiv=-1;
	}
	cdiv=getOdivByName(_div);
	if(cdiv==-1){
		alert('odiv inexistent '+_div+' a(416)');
		return;
	}
	loadData(cdiv);
	divs[cdiv].func=handleInsert;
	if(divs[cdiv].prev=='<nedef>') divs[cdiv].prev=prevu;
}

function restore_ln(_div){
	var divu=document.getElementById(_div);
	if(!divu){
		alert('form inexistent '+_div+' a(427)');
		return;
	}
	var cdiv=getOdivByName(_div);
	if(cdiv==-1){
		alert('odiv inexistent '+_div+' a(432)');
		return;
	}
	//alert(divs[cdiv].prev);
	if(divu.tagName=="TR") addFragment(divu,divs[cdiv].prev);
	else divu.innerHTML=divs[cdiv].prev;
	editableId=false;
}

function setStatus(div,_msg,errc,act){
	var sts=document.getElementById(div);
	if(!sts){
		sts=document.getElementById('defaultstatus');
		div='defaultstatus';
	}
	var temp=new Array();
	temp=_msg.split('+');
	var msg=temp[0];
	var origbg;
	//alert(div+' '+act);
	if(sts){
		if(sts.tagName=="TR") addFragment(sts,msg);
		else sts.innerHTML=msg;
		//sts.innerHTML=msg;
		origbg=sts.style.backgroundColor;
		if(errc) sts.style.backgroundColor="#f6f";
		else     sts.style.backgroundColor="#6f9";
		sts.style.visibility='visible';
		if(act=="hide")
			setTimeout("var sts=document.getElementById('"+div+"');sts.style.visibility='hidden';sts.style.backgroundColor='"+origbg+"';",sttime);
		else if(act=="delete")
			setTimeout("var sts=document.getElementById('"+div+"');if(!sts) return; var t=sts.parentNode;if(t && t.tagName!='TABLE') t=t.parentNode; if(t) t.deleteRow(sts.rowIndex);sts.style.backgroundColor='"+origbg+"';",sttime);
		else if(act=="savestr"){
			//alert(div);//rowcabinet52
			var cdiv=getOdivByName(div);
			if(cdiv==-1){
				alert('odiv inexistent '+div+' a(460)');
				return;
			}
			var i=div.length-1;
			while((isNaN(div.charAt(i)) && div.charAt(i)!="'") && i>=0) i--;
			cid=div.substr(i);
			if(MyIsNaN(cid)){
				alert("Pagina nu mai este sincronizata cu serverul. Reincarcati pagina.");
				return;
			}
			//alert(divs[cdiv].savestr);
			var r="<td><input type='checkbox' value='"+cid+"' class='fuckingIE'/><a onclick=\"deleteline('"+divs[cdiv].name+"','"+cid+"','"+divs[cdiv].view+"','"+divs[cdiv].xcnf+"')\"><img src=\"/img/cancel_24.png\" alt=\"anuleaza\" /></a><a onclick=\"editline('"+divs[cdiv].name+"','"+divs[cdiv].view+"','"+cid+"','"+divs[cdiv].xcnf+"')\"><img src=\"/img/edit_24.png\" alt=\"modifica\" /></a></td>"+divs[cdiv].savestr;
			var htmlf="var sts=document.getElementById('"+div+"');if(sts.tagName==\"TR\") addFragment(sts,\""+r+"\"); else sts.innerHTML=\""+r+"\";sts.style.backgroundColor='"+origbg+"';";
			//alert(htmlf);
			setTimeout(function(){
					//r=r.toLowerCase();
					var sts=document.getElementById(div);
					if(sts.tagName=="TR") addFragment(sts,r);
					else sts.innerHTML=r;
					sts.style.backgroundColor=origbg;
					},sttime);
		}
		else if(act="reload"){
			var cdiv=getOdivByName(div);
			if(cdiv==-1){
				alert('odiv inexistent '+div+' a(476)');
				return;
			}
			divs[cdiv].link="aa=12";//divs[cdiv].link.replace(/aa=[0-9]+/,"aa=12");
			setTimeout("var sts=document.getElementById('"+div+"');sts.style.backgroundColor='"+origbg+"';reloadD('"+div+"');",sttime);
		}
	}
	else alert(response);
}

function deleteline(_div,id,_view,xc){
	var divname="";
	if(_div.indexOf("row")==0) divname=_div;
	else divname='row'+_div+id.replace(/,/g,"_");
	//alert(_div+'--'+divname);
	var rasp=confirm("Confirmati stergerea?");
	var divu=document.getElementById(divname);
	if(!divu){
		alert('form inexistent '+divname+' a(485)');
		return;
	}
	prevu=divu.innerHTML;
	var cdiv=getOdivByName(divname);
	if(cdiv==-1){
		divs.push((new oDiv(divname,_view,"aa=9",xc)));
		cdiv=-1;
	}
	//alert(divname);
	cdiv=getOdivByName(divname);
	if(cdiv==-1){
		alert('odiv inexistent '+divname+' a(497)');
		return;
	}
	//loadData(cdiv);
	divs[cdiv].func=handleDelete;
	if(divs[cdiv].prev=='<nedef>') divs[cdiv].prev=prevu;
	if(rasp && divs[cdiv].xmlHttp && (divs[cdiv].xmlHttp.readyState == 4 || divs[cdiv].xmlHttp.readyState == 0)){
		var query = feedGridUrl + "nodov="+divs[cdiv].xcnf+"&aa=9&id="+id;
		//alert(query);
		divs[cdiv].xmlHttp.open("get", query, true);
		divs[cdiv].xmlHttp.onreadystatechange = function() {handleGridPageLoad(divs[cdiv],0);};
		divs[cdiv].xmlHttp.send(null);
	}
}

function filterGH(){
	//alert(val);
	var fServ=document.getElementById('id_serv3');
	var fData=document.getElementById('data4');
	var target=document.getElementById('good_hours');
	var txt=document.getElementById("ora5");
	if(!fServ || !fData || !target || !txt){
		alert("Form invalid a(555)");
		return;
	}
	if(fServ.value=='-' || fData.value=='') return;
	var cdiv=getOdivByName(target);
	if(cdiv==-1){
		divs.push((new oDiv(target.id,'',"aa=12")));
		cdiv=-1;
	}
	cdiv=getOdivByName(target.id);
	if(cdiv==-1){
		alert("Can't get output object a(566)");
		return;
	}
	txt.value='';
	divs[cdiv].filter='f_id_serv='+escape(fServ.value)+'&f_data='+escape(fData.value);
	target.style.visibility='visible';
	loadData(cdiv);
}
function saveGH(gh){
	var divu=document.getElementById("good_hours");
	var txt=document.getElementById("ora5");
	if(!divu || !txt){
		alert("Can't get output object a(577)");
		return;
	}
	txt.value=gh;
	divu.style.visibility='hidden';
}
function filterCp(obj,target){
	var cdiv=getOdivByName(target);
	if(cdiv==-1){
		divs.push((new oDiv(target,'Coada',"aa=12")));
		cdiv=-1;
	}
	cdiv=getOdivByName(target);
	if(cdiv==-1){
		alert("Can't get output object a(525)");
		return;
	}
	var hf=document.getElementById("id_pac2");
	if(hf) hf.value="";
	divu=document.getElementById(target);
	if(divu) divu.style.visibility='visible';
	divs[cdiv].filter="f_l_Nume="+escape(obj.value);
	loadData(cdiv);
}

function saveSg(id,name){
	var hf=document.getElementById("id_pac2");
	var divu=document.getElementById("pacsuggest");
	var txt=document.getElementById("numePac");
	if(!hf || !divu || !txt){
		alert("Can't get output object a(567)");
		return;
	}
	hf.value=id;
	txt.value=name;
	divu.style.visibility='hidden';
}
function filterWk(nDate,diff){
	var cz=nDate.getDay();
	if(cz==0) cz=7;
	var start=new Date(nDate.getTime()-(cz-xcWeekStart)*one_day);
	for(i=0; i<7; i++){
		filterCd(start,'ziua'+i,i+diff*7);
		var th=document.getElementById('tziua'+i);
		if(th) th.innerHTML=xcWeekdayNames[i]+' '+ cDate.getDate();
	}
	start.setTime(cDate.getTime()-6*one_day);
	var cw=document.getElementById('curr_week');
	if(cw) cw.value=zile[start.getDay()] +', '+start.getDate()+' '+luni[start.getMonth()]+' '+start.getFullYear();
}

function filterCd(val,target,diff){
	//alert(val + ' ' + diff);
	var cdiv=getOdivByName(target);
	if(cdiv==-1){
		divs.push((new oDiv(target,'Coada',"aa=12")));
		cdiv=-1;
	}
	cdiv=getOdivByName(target);
	if(cdiv==-1){
		alert("Can't get output object a(576)");
		return;
	}
	if(val=='')	return;
	var newVal=val.getTime()+diff*one_day;
	var newD=new Date(newVal);
	divs[cdiv].filter='f_data='+newD.getFullYear()+'-'+(newD.getMonth()+1)+'-'+newD.getDate();
	cDate=newD;
	var spn=document.getElementById('curr_date');
	if(spn) spn.value=zile[newD.getDay()] +', '+newD.getDate()+' '+luni[newD.getMonth()]+' '+newD.getFullYear();
	loadData(cdiv);
}

function filterDic(val,target){
	//alert(val);
	var cdiv=getOdivByName(target);
	if(cdiv==-1){
		alert("Can't get output object a(525)");
		return;
	}
	if(val=='')	divs[cdiv].filter=null;
	else		divs[cdiv].filter='f_id_cab='+escape(val);
	loadData(cdiv);
}

function reloadD(div){
	var cdiv=getOdivByName(div);
	if(cdiv==-1){
		alert("Can't get output object a(675)");
		return;
	}
	loadData(cdiv);
}
function MyIsNaN(str){
	str=str.replace(/<\/.*/,"");
	//alert(str);
	var ar=str.split(",");
	for(i=0;i<ar.length;i++) if(isNaN(ar[i])) return true;
	return false;
}

function getId(str){
	var ret=-1;
	str=str.replace(/<\/.*/,"");
	str=str.replace(/\n$/,"");
	str=str.replace(/\)$/,"");
	var pos=str.indexOf(" d(");
	//alert(str);
	if(pos>=0){
		return str.substring(pos+3);
	}
	else return NaN;
}

function unused_idParams(str){
	str=str.replace(/<\/.*/,"");
	str=str.replace(/\n$/,"");
	var ar=str.split(",");
	var ret="";
	for(i=0;i<ar.length;i++) ret+="&id="+ar[i];
	return ret;
}
function modInfo(divname){
	var cdiv=getOdivByName(divname);
	if(cdiv==-1){
		alert("Can't get output object a(564)");
		return;
	}
	var divu=document.getElementById(divs[cdiv].name);
	if(!divu){
		alert("Can't get output object a(577)");
		return;
	}
	divs[cdiv].func=handleModInfo;
	if(divs[cdiv].prev=='<nedef>') divs[cdiv].prev=divu.innerHTML;
	//alert(divs[cdiv].prev);
	divs[cdiv].link="aa=6&id=$UID$";
	loadData(cdiv);
}

function handleModInfo(cdiv,resp){
	var odiv=divs[cdiv];
	//alert(resp);
	var divu=document.getElementById(odiv.name);
	if(!divu){
		alert("Can't get output object a(577)");
		return;
	}
	if (resp.indexOf("<form")==0 || resp.indexOf("<table")==0){//tre afisat formu
		divu.innerHTML=resp;
		return;
	}
	if (resp.indexOf("<span")==0){//e un mesaj
		if (resp.indexOf("Eroare") >= 0){ //datele nu s-au salvat
			divu.innerHTML="<span class=\"err\">"+resp+"</span> <a onclick=\"restore_ln('"+
				odiv.name+ "')\"><img src=\"/img/undo_24.png\" alt=\"anuleaza\"/></a>";
		}
		else{//s-au salvat
			setStatus(odiv.name,resp,0,'reload');
		}
	}
}

function addFragment(divu,resp){
	var firstNodeElem="";
	if(!divu){
		alert("Target object not found! a(821)");
		return;
	}
	xmlDoc=loadXMLString("<cicapu>"+resp+"</cicapu>");
	//alert(divu.tagName+'--'+resp+'--'+xmlDoc+'--');
//if(document.getElementById("t_ag").value==0) alert(resp);
	fragment = document.createDocumentFragment();
	nodes=xmlDoc.firstChild.childNodes;
	for(i=0;i<nodes.length;i++){
		if(!firstNodeElem && nodes[i].nodeType==1)
			firstNodeElem=nodes[i].tagName.toLowerCase();
		var newn=myClone(nodes[i]);
		if(newn) fragment.appendChild(newn);//add to the fragment
	}
	//var str= (new XMLSerializer()).serializeToString(fragment);
	//alert(str);
	while(divu.hasChildNodes()) divu.removeChild(divu.firstChild);
	if((divu.tagName=="TBODY" || divu.tagName=="THEAD")
			&& firstNodeElem!="tr"){
		etr=document.createElement("tr");
		divu.appendChild(etr);
		divu=etr;
	}
	if(divu.tagName.toLowerCase()=="tr" && firstNodeElem!="td"){
		etd=document.createElement("td");
		divu.appendChild(etd);
		divu=etd;
	}
	//var str= (new XMLSerializer()).serializeToString(fragment);
	//alert(str);
	divu.appendChild(fragment);
}
function loadXMLString(txt) 
{
	if (window.DOMParser)
	{
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(txt,"text/xml");
	}
	else // Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(txt); 
	}
	return xmlDoc;
}
function replace_html(el, html) {
	if( el ) {
		var oldEl = (typeof el == "string" ? document.getElementById(el) : el);
		var newEl = document.createElement(oldEl.nodeName);

		// Preserve any properties we care about (id and class in this example)
		newEl.id = oldEl.id;
		newEl.className = oldEl.className;

		//set the new HTML and insert back into the DOM
		newEl.innerHTML = html;
		if(oldEl.parentNode)
			oldEl.parentNode.replaceChild(newEl, oldEl);
		else
			oldEl.innerHTML = html;

		//return a reference to the new element in case we need it
		return newEl;
	}
};

function GridFilter(row,e,divu,page){
	//alert('fuck IE!!!!');
	if(!e || e.keyCode==13){
		editableId=false;
		var r=document.getElementById(row);
		var d=document.getElementById(divu);
	//alert(r+' '+row);
		if(!d){//!r || 
			alert("Can't read filter ("+divu+")! a(903)");
			return;
		}
		var cdiv=getOdivByName(divu);
		if(cdiv==-1){
			alert("Can't get output object "+divu+"! a(898)");
			return;
		}
		var flag=0;
		var str="";
		for(i=1;r && i<r.cells.length;i++){
			for(j=0;j<r.cells[i].childNodes.length;j++){
				cc=r.cells[i].childNodes[j];
				if(cc.tagName=='INPUT' || cc.tagName=='SELECT'){
					if(flag) str+="&";
					flag=1;
					str+=escape(cc.name)+"="+escape(cc.value);
				}
			}
		}
		if(page) str+="&limit="+page;
		divs[cdiv].filter=str;
		loadData(cdiv);
	}
}

function getForm(oldr,row){
	var f=new Array();
	var r=oldr.cloneNode(true);
	for(i=0;i<r.cells.length;i++){
		for(j=0;j<r.cells[i].childNodes.length;j++){
			cc=r.cells[i].childNodes[j];
			if(cc.className=="errmsg"){
				r.cells[i].removeChild(cc);
				continue;
			}
			if(cc.tagName=='INPUT' || cc.tagName=='SELECT' || cc.tagName=='TEXTAREA'){
				f.push(cc);
				if(i){
					if(cc.tagName=='SELECT'){
						var s=document.getElementById(cc.id);
						val=s.options[s.selectedIndex].text;
					}
					else if (cc.type == 'radio' || cc.type == 'checkbox') {
						if (cc.checked == true) {
							val=cc.value;
						}
						else val="";
					}
					else if(cc.type == 'hidden') val="";
					else val=cc.value;
					var spn=document.createElement("span");
					var txt=document.createTextNode(val);
					spn.appendChild(txt);
					r.cells[i].replaceChild(spn,cc);
				}
			}
		}
	}
	r.removeChild(r.firstChild);
	//var rstr= (new XMLSerializer()).serializeToString(r);
	row.str=innerHTMLasXML(r);//.innerHTML;
	//alert(r.innerHTML);
	return f;
}

function clearf(randu,divu){
	var cdiv=getOdivByName(divu);
	r=document.getElementById(randu);
	if(cdiv==-1 || !divu){
		alert("Can't reset filter! a(811)");
		return;
	}
	for(i=0;i<r.cells.length;i++){
		for(j=0;j<r.cells[i].childNodes.length;j++){
			cc=r.cells[i].childNodes[j];
			if(cc.tagName=='INPUT')
				cc.value="";
			else if(cc.tagName=='SELECT')
				cc.selectedIndex=0;
			/*else if(cc.tagName=="CHECKBOX")
				cc.checked="";*/
		}
	}
	divs[cdiv].filter=divs[cdiv].orig_filter;
	editableId=false;
	loadData(cdiv);
}

function setNavBar(nrr,dv,page){
	//alert(nrr+' '+dv+' '+page);
	var txt=document.getElementById('nrr'+dv);
	if(txt) txt.innerHTML=nrr; //total nr recs cu bold
	var p=document.getElementById('p_'+dv);
	var d="";
	if(p){
		if(page<2) d="_g";
		p.src='/img/go-previous'+d+'.png'; //previous page
	}
	var n=document.getElementById('n_'+dv);
	if(n){
		if(page>=nrr/RPP) d="_g";
		else d="";
		n.src='/img/go-next'+d+'.png'; //next page
	}
	var i=document.getElementById('t_'+dv);
	if(i) i.value=page; //casuta text
}
function showPage(rp,dv){
	var p=parseInt(rp);
	if(isNaN(p)) return;
	var txt=document.getElementById('nrr'+dv);
	var cpt=document.getElementById('t_'+dv);
	if(!txt || !cpt){ alert("Can't do pagination! a(853)"); return; }
	var cp=parseInt(cpt.value);
	var nrr=parseInt(txt.innerHTML); //total nr recs cu bold
	if(isNaN(nrr)) return;
	var newp=0;
	switch(p){
		case 0://next
			if(cp<nrr/RPP) newp=cp+1;
			else return;
			break;
		case -1://prev
			if(cp>1) newp=cp-1;
			else return;
			break;
		default://some page
			if(cp>0 && cp<=Math.ceil(nrr/RPP)) newp=cp;
			else{
				alert("Alegeti un numar de pagina intre 1 si "+Math.ceil(nrr/RPP));
				return;
			}
			break;
	}
	GridFilter("row"+dv+"Frow",null,dv+'grid',newp);
//	setNavBar(nrr,dv,newp);
}

function editGr(rid){
	if(editableId){ alert("Inregistrare deja in editare."); return; }
	var target='cnt'+rid;
	//alert(target);
	var cdiv=getOdivByName(target);
	if(cdiv==-1){
		divs.push((new oDiv(target,'Grup',"aa=12",'grupmod')));
		cdiv=-1;
	}
	cdiv=getOdivByName(target);
	if(cdiv==-1){
		alert("Can't get output object a(576)");
		return;
	}
	divs[cdiv].xcnf='grupmod';
	divs[cdiv].filter="xparam="+rid+"&f_id_agenda="+rid;
	divs[cdiv].func=null;
	loadData(cdiv);
	divs[cdiv].func=handleCnt;
	divs[cdiv].filter="f_Agenda.id="+rid;
	editableId=true;
}

function handleCnt(cdiv,resp){
	var divu=document.getElementById(divs[cdiv].name);
	if(!divu){
		alert("Can't get output object a(905)");
		return;
	}
	//alert(resp);
	//divu.innerHTML=;
	addFragment(divu,resp);
	if(resp.indexOf("<table")==0){
		divu.innerHTML+="<a onclick=\"divs["+cdiv+"].xcnf='grupcat';editableId=false;loadData("+cdiv+");\"><img src=\"/img/undo_24.png\" alt=\"anuleaza\" /> inapoi</a>";
	}
}

function copyNode(fromNode, toNode) {
	// Re-create the children, one at a time
	for (var n=0; n<fromNode.childNodes.length; n++) {
		var fromChild = fromNode.childNodes[n];
		var toChild = toNode.appendChild(fromChild);
		copyNode(toChild, fromChild);
	}
}

function myClone(node){
	if(!node) return null;
	var newn;
	switch(node.nodeType){
		case 1://	ELEMENT_NODE
			newn=document.createElement(node.nodeName);
			break;
		case 3://	TEXT_NODE
			newn=document.createTextNode(node.nodeValue);
			break;
		case 4://	CDATA_SECTION_NODE
			newn=document.createCDATASection(node.nodeValue);
			break;
		case 2://	ATTRIBUTE_NODE
		case 5://	ENTITY_REFERENCE_NODE
		case 6://	ENTITY_NODE
		case 7://	PROCESSING_INSTRUCTION_NODE
		case 8://	COMMENT_NODE
		case 9://	DOCUMENT_NODE
		case 10://	DOCUMENT_TYPE_NODE
		case 11://	DOCUMENT_FRAGMENT_NODE
		case 12://	NOTATION_NODE
			alert("untreated "+node.nodeType);
			break;
	}
	var atts=node.attributes;
	for(var i=0;atts && i<atts.length;i++){
		newn.setAttribute(atts[i].nodeName,atts[i].nodeValue);
	}
	var c=node.firstChild;
	while(c){
		var newc=myClone(c);
		if(newc){
			newn.appendChild(newc);
		}
		c=c.nextSibling;
	}
	return newn;
}
function myObj(){
	this.str="";
}
function innerHTMLasXML(node){
	var str="";
	for(var i=0;i<node.childNodes.length;i++){
		s=xml2Str(node.childNodes[i]);
		if(s) str+=s;
	}
	return str;
}
function xml2Str(xmlNode)
{
	try {
		// Gecko-based browsers, Safari, Opera.
		return (new XMLSerializer()).serializeToString(xmlNode);
	}
	catch (e) {
		try {
			// Internet Explorer.
			return xmlNode.xml;
		}
		catch (e)
		{//Strange Browser ??
			alert('Xmlserializer not supported');
		}
	}
	return null;
}

function getCheckedIds(divu,fn){
	var tb=document.getElementById(divu);
	if(!tb) return "";
	var query="";
	for(var i=0;i<tb.rows.length;i++){
		var ccs=tb.rows[i].cells[0].getElementsByTagName("input");
		if(ccs && ccs[0] && ccs[0].type=="checkbox" && ccs[0].checked){
			query+="&f_"+fn+"="+escape(ccs[0].value);
		}
	}
	return query;
}

function toggleCheck(divu,chkval){
	var tb=document.getElementById(divu);
	if(!tb) return;
	for(var i=0;i<tb.rows.length;i++){
		var ccs=tb.rows[i].cells[0].getElementsByTagName("input");
		if(ccs && ccs.length && ccs[0].type=="checkbox"){
			ccs[0].checked=chkval;
		}
	}
}
function massdel(divu,ovi){
	if(!confirm("Confirmati stergerea?")) return;
	var query="";
	var sts=document.getElementById('defaultstatus');
	if(sts) sts.style.visibility='visible';
	query=getCheckedIds(divu,'id');
	if(query.length==0){
		alert("Selectati cel putin o inregistrare.");
		return false;
	}
	var cdiv=getOdivByName('defaultstatus');
	if(cdiv==-1){
		divs.push((new oDiv('defaultstatus',ovi,query)));
		cdiv=-1;
	}
	else divs[cdiv].link=query;
	cdiv=getOdivByName('defaultstatus');
	if(cdiv==-1){
		alert('odiv inexistent defaultstatus s(1185)');
		return;
	}
	var fgu="/cgi-bin/dvv/del.cgi?rntpc="+Math.random()+"&ovi="+ovi+"&";
	loadDataC(cdiv,fgu);
	setTimeout("reloadD('"+divu+"')",1000);
	setTimeout("document.getElementById('defaultstatus').style.visibility='hidden';",3000);
}

function filterBar(val1,val2,target){
	var cdiv=getOdivByName(target);
	if(cdiv==-1){
		divs.push((new oDiv(target,'calendar',"aa=12")));
		cdiv=-1;
	}
	cdiv=getOdivByName(target);
	if(cdiv==-1){
		alert("Can't get output object a(1180)");
		return;
	}
	if(val1=='' && val2=='')	return;
	if(val1=='') val1=val2;
	if(val2=='') val2=val1;
return;
	var newVal=val.getTime()+diff*one_day;
	var newD=new Date(newVal);
	divs[cdiv].filter='f_data='+newD.getFullYear()+'-'+(newD.getMonth()+1)+'-'+newD.getDate();
	cDate=newD;
	var spn=document.getElementById('curr_date');
	if(spn) spn.value=zile[newD.getDay()] +', '+newD.getDate()+' '+luni[newD.getMonth()]+' '+newD.getFullYear();
	loadData(cdiv);
}


