/**
 * @author Nivaria Innova Team
 */
function QueryResults() {
 this.id = null;
 this.simplefields = new Array();
 this.formSelector = new String("");
 this.prefix = "";
}
QueryResults.prototype = {
 initialize : function(objectId) {
  this.id = objectId;
  ncm.initSimpleFields(QueryResults,this);
  this.formSelector = new String("#");
  this.formSelector += QueryResults.getProperty("form_id");
  this.formSelector += this.id;
  this.prefix = new String("DS");
  this.prefix += this.simplefields["DATASOURCE"];
  this.prefix += ".";
  this.initQueryButtons();
 },
 initQueryButtons: function() {
  var qbSelector = this.getQueryButtonSelector();
  var Me = this;
  $jq(qbSelector).click(function() {
   Me.queryButtonClick(this);    
  }); 
 },
 
 queryButtonClick: function(button) {
  var formSelector = this.getResultFormSelector();
  var params = "";
  var Me = this;
  $jq(this.getCheckedSelector()).each(function(i) {
   if (i == 0) {
    params = "?DS" + Me.simplefields["DATASOURCE"] + ".ID=" + $jq(this).val();
   } else {
    params += ","+$jq(this).val();
   }
  });
  var actionUrl = $jq.trim($jq(button).attr("action"));
  $jq(formSelector).attr("action", actionUrl + params);
  $jq(formSelector).attr("method", "post");
  $jq(formSelector).submit();
 },
  
 gotoPage: function (num) {
  if(num<0) return;
  var Me = this;
  $jq(this.formSelector).each(function(i){
    this.elements[Me.prefix+"page"].value=num;
   this.submit(); 
  });
 },
 
 gotoPageAdv: function(num) {
  if(num<0) return;
  var Me = this;
  $jq(this.formSelector).each(function(i){
   this.elements[Me.prefix+"page"].value="0";
   this.elements[Me.prefix+"pageadv"].value=""+num;
   this.submit(); 
  });
 },
   
 refresh: function(val) {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      this.elements[Me.prefix+"page"].value="0";
   this.elements[Me.prefix+"itpp"].value=""+val;
   this.submit(); 
     }); 
 },
   
 goback: function () {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      this.elements[Me.prefix+"step"].value="1";
   this.submit(); 
     }); 
 },
   
 orderByField: function(val) {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      if(this.elements[Me.prefix+"orderBy"].value==val && this.elements[Me.prefix+"orderDir"]) {
	       this.elements[Me.prefix+"orderDir"].value = ""+(-1*(Number(this.elements[Me.prefix+"orderDir"].value)));
	   }
	   this.elements[Me.prefix+"orderBy"].value=val;
	   this.submit(); 
     });
 },
   
 setOrderField: function(val, dir) {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      this.elements[Me.prefix+"orderBy"].value=val;
	   this.elements[Me.prefix+"orderDir"].value=dir; 
     });
 },
   
 gonext: function(itemId) {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      this.elements[Me.prefix+"step"].value="3";
	   this.elements[Me.prefix+"pid"].value=""+itemId;
	   this.submit(); 
     });
 },
   
 resetPage: function() {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      this.elements[Me.prefix+"page"].value = "0"; 
     });
 },
   
 submit: function() {
     $jq(this.formSelector).each(function(i){
      this.submit(); 
     });
 },
   
 refreshOption: function(val) {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      this.elements[Me.prefix+"option"].value = val; 
     });
 },
   
 execOption: function (istable,contextPath) {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      var opt = this.elements[Me.prefix+"option"].value;
	   if(opt=="0" || opt=="1")
	       ncm.openWindow(QueryResults.getProperty("jsp_print")+"?table="+istable+"&printall="+opt);
	   if(opt=="2")
    ncm.openWindow(contextPath+'/Export?type=0&fileName=query_export'); 
     });
 },
   
 selectSubCategory: function(catId) {
       this.setSubCategory(catId);
  this.gotoPage(0);
 },
   
 setSubCategory: function (catId) {
     var Me = this;
     $jq(this.formSelector).each(function(i){
      this.elements[Me.prefix+"CATID"].value=""+catId; 
     }); 
 },
   
 showSublevel: function(inest) {
  var linkA = document.getElementById('leftlink'+id);
  var linkToshow = document.getElementById('level_'+(nest+1)+"_"+id);
  if (linkA!=null) {
   if (linkA.title==QueryResults.getProperty("lang_open")) {
    linkA.title=QueryResults.getProperty("lang_close");
    linkA.innerHTML= '[-]';
   } else {
    linkA.title=QueryResults.getProperty("lang_open");
    linkA.innerHTML= '[+]';
   }
  }
  if (linkToshow!=null) {
   if (linkToshow.className=='invisible') {
	 linkToshow.className='visible';
   } else {
	 linkToshow.className='invisible';
   }
  }
	 if(nest>0) {
	     var parent = linkToshow.parentNode.parentNode;
	     var parentId = parent.getAttribute("id");
	     if(parentId!=null && parentId!="") {
		   var arr = parentId.split("_");
		   if(arr!=null && arr.length>2) {
			 openParSubLevel(arr[2],nest-1);
		   }
	     }
	 }
 },
   
 openParSubLevel: function (id,nest) {
	 var linkA = document.getElementById('leftlink'+id);
	 var linkToshow = document.getElementById('level_'+(nest+1)+"_"+id);
	 if (linkA!=null) {
	     linkA.title=QueryResults.getProperty("lang_close");
	     linkA.innerHTML= '[-]';
	 }
	 if (linkToshow!=null) {
	     linkToshow.className='visible';
	 }
	 if(nest>0) {
	     var parent = linkToshow.parentNode.parentNode;
	     var parentId = parent.getAttribute("id");
	     if(parentId!=null && parentId!="") {
		   var arr = parentId.split("_");
		   if(arr!=null && arr.length>2) {
			 openParSubLevel(arr[2],nest-1);
		   }
	     }
	 }
 },
 
 checkAll: function(check) {
  $jq("input[name='check-"+this.id+"']").each(function(i) {
   $jq(this).attr("checked", check);  
  });
 },
 
 getResultFormSelector: function() {
  var selector = "#query_form_";
  selector += this.id;
  return selector;
 },
 
 getCheckedSelector: function() {
  var selector = this.getResultFormSelector();
  selector += " [name='check-" + this.id + "']:checked";
  return selector; 
 },
 
 getQueryButtonSelector: function() {
  var selector = " [name='qbutton-" + this.id + "']";
  return selector;
 }
};
QueryResults.instances = new Array();
QueryResults.properties = new Array();
QueryResults.datatype = null;
QueryResults.jsp_utils = null;
QueryResults.language = null;
QueryResults.pageUrl = null;
QueryResults.channel = null;
QueryResults.inPreview = false;
QueryResults.issueId = null;
QueryResults.register = function(objectId) {
 var resObject = new QueryResults();
 resObject.initialize(objectId);
 QueryResults.instances[""+objectId] = resObject;
}
QueryResults.getRegistered = function(objectId) {
 return QueryResults.instances[""+objectId];
}
QueryResults.get = function(objectId){
 return QueryResults.getRegistered(objectId);
} 
QueryResults.initProperties = function(options) {
 ncm.initProperties(QueryResults,options);
}
QueryResults.getProperty = function(propName) {
 var res = QueryResults.properties[propName];
 if(res==null) res="";
 if(typeof(res)=="undefined") res="";
 return res;
}
