importScript('/sys/js/utils.js');
importScript('/sys/plugin/ajax/js/AjaxRpc.js');

var ReportConf = {
  key:"undefined",

  init: function(key) 
  {
	this.key = key;

	importScriptWait(function() {
		AjaxRpc.execute("com.janmedia.apt.intranet.ajax.AjaxFacade.getReportConf",[key],ReportConf.initCallBack);
	});
  },

  initCallBack: function(result)
  {
  	var elements = document.images;
  	var i;
  	for (i=0; i<elements.length; i++)
  	{
  		var img = elements[i];
  		if (!img.className=="check") continue;
  		img.onclick = ReportConf.click;
  		
  		var id = null;
  		if (img.id.indexOf("c_")==0)
  		{
  			id = img.id.substr(2);
  			ids = result.cols;
  		}
  		else if (img.id.indexOf("r_")==0)
  		{
  			id = img.id.substr(2);
  			ids = result.rows;
  		}

  		if (id!=null) 
  		{
  			img.status = !(ids.indexOf(id)!=-1);
	  		img.src="/images/ajax/check" + (img.status?"1":"0")+".gif";
  		}
  	}
  }, 

  click: function(c)
  {
	// log("Click: " + this.id);	  	
	this.src="/images/ajax/check.gif";
	AjaxRpc.execute("com.janmedia.apt.intranet.ajax.AjaxFacade.click",[this.id,"" + this.status,ReportConf.key],ReportConf.clickCallBack,null,this); 
  },

  clickCallBack: function(result,context)
  {
	// log(result);
  	context.status = result;
	context.src="/images/ajax/check" + (result?"1":"0")+".gif";
  },

  selectAllCols: function()
  {
	AjaxRpc.execute("com.janmedia.apt.intranet.ajax.AjaxFacade.selectAllCols",[ReportConf.key],ReportConf.initCallBack,null,this); 
  },

  selectAllRows: function()
  {
	AjaxRpc.execute("com.janmedia.apt.intranet.ajax.AjaxFacade.selectAllRows",[ReportConf.key],ReportConf.initCallBack,null,this); 
  }
}

/* pku 28-01-2008 T#5131 */
function resetFilter(id)
{
	var e = $(id);
	if(!e) return false;

	var i;

	var ee = e.getElementsByTagName("select");
	if(ee)
	{
		for(i=0; i<ee.length; ++i)
			ee[i].selectedIndex=0;
	}

	$("form_management_id").onchange();
	$("form_state_id").onchange();

	ee = e.getElementsByTagName("input");
	if(ee)
	{
		for(i=0; i<ee.length; ++i)
			if(ee[i].type=="text")
				ee[i].value="";
	}

	return false;
}


var propertiesData = null;
var loadingPropertiesData = false;

function DynamicProperties(management, apartment)
{
	var anyValue = apartment.options[0].innerHTML;

	if(propertiesData == null && !loadingPropertiesData)
	{
		ajaxRequest("/templates/intranet/properties.xml","GET",null,function(req){ propertiesData = req.responseXML; });
		loadingPropertiesData = true;
	}

	management.onchange = function()
	{
		var id = getSelectValue(this);
		filterApartments(id, "");
	}

	apartment.onchange = function()
	{
		var id = getSelectValue(this);
		if(id=="") return;

		var managementId = -1;
		var list = propertiesData.getElementsByTagName("apartment");
		for(var i=0; i<list.length; ++i)
		{
			if(list[i].getAttribute("id")==id)
			{
				managementId = list[i].getAttribute("management_id");
				break;
			}
		}

		list = management.options;
		for(var i=0; i<list.length; ++i)
		{
			if(list[i].value==managementId)
			{
				management.selectedIndex = i;
				filterApartments(managementId, id);
				return;
			}
		}		
	}

	function filterApartments(managementId, apartmentId)
	{
		var options = apartment.options;
		apartment.innerHTML = "";

		var option = $c("option");
		option.innerHTML = anyValue;
		option.value = "";
		apartment.appendChild(option);

		var index = 0;
		var index2 = 0;
		var list = propertiesData.getElementsByTagName("apartment");
		for(var i=0; i<list.length; ++i)
		{
			if(managementId=="" || list[i].getAttribute("management_id")==managementId)
			{
				option = $c("option");
				apartment.appendChild(option);

				option.value = list[i].getAttribute("id");
				option.innerHTML = list[i].getAttribute("name");
				index++;
				if(apartmentId==option.value)
					index2 = index;
			}
		}
		apartment.selectedIndex = index2;
	}

	function getSelectValue(select)
	{
		if(typeof select == "string")
			return select;
		return select.options[select.selectedIndex].value;
	}
}
