HJ.MyPeople = Class.create();

HJ.MyPeople.prototype = {

	initialize: function()
    {
        this.url = basePageURL + "MyPeople.html";
        this.targetContainerId = "content";
        this.IsNewPerson = false;
        this.tl = null;

        this.myPeopleTitleContainer = document.getElementById("myPeopleTitleContainer");
		this.myPeopleTitleContainer.onclick = this.loadMyPeopleTemplate.bind(this);
    },
	
	cleanup: function() {
	  this.myPeopleTitleContainer.onclick = null;
    },
	
	viewSelected: function(invoker) {	
      if (this.tl == null) {
         this.loadMyPeopleTemplate();
      } else {
         this.tl.reAttachElement();
		 app.setCurrentView(this);
      }
      return false;
	},
	
	setDataList: function(dlist, groupList) {		
	    this.groupList = groupList;
	    this.dataTable = new Af.DataTable((dlist));
	},

	myPeopleListChanged: function() {
	},

	paneStateChanged: function(pane) {			
		this.loadMyPeopleTemplate();		
	},	
		
   loadMyPeopleTemplate: function () {	   
	
	//  HIDE CALENDAR'S HEADER
	  if(calenderTop == null){
		calenderTop = document.getElementById("calenderTop");
	  }
	  calenderTop.style.display = "none";

     if (this.tl == null) {
		 this.tl = new Af.TemplateLoader(this.url, this.targetContainerId, "myPeople");
	     this.tl.listener = this;
	     this.tl.loadTemplate();
	   } else {
		 this.tl.reAttachElement();
		 var dataList = this.dataTable.getDataList();
		 this.myPeopleDetailsTable.setDataList(dataList);
		 app.setCurrentView(this);
		// this.setTableWidth();
	   }
	   return false;
   },

    templateLoaded: function()
    {
        this.myPeopleDetailsTable = new Af.HtmlTable("myPeopleDetailsTable", "null, fName, lName, phonePrimary, email");

        this.myPeopleDetailsTable.listener = this;
		 var dataList = this.dataTable.getDataList();
		 this.myPeopleDetailsTable.setDataList(dataList);
				 
        this.deletePerson = document.getElementById("deletePerson");
        this.deletePerson.onclick = this.doDeletePerson.bind(this);
				
        this.addPerson = document.getElementById("addPerson");
        this.addPerson.onclick = this.doAddPerson.bind(this);

        this.editPerson = document.getElementById("editPerson");
        this.editPerson.onclick = this.doEditPerson.bind(this);

        this.importLink = document.getElementById("importLink");
        this.importLink.onclick = this.loadImportTemplate.bind(this);

        this.printPersonList = document.getElementById("printPersonList");
        this.printPersonList.onclick = this.doPrintPersonList.bind(this);

        // debugging: add link in MyPeople.html and uncomment these lines
        // var link = document.getElementById("refreshPeople");
        // link.onclick = this.refreshPeople.bind(this);

		this.selectAll = document.getElementById("selectAll");
		this.selectAll.onclick = this.selectAllPeople.bind(this);

        app.setCurrentView(this);
       // this.setTableWidth();
		return false;
    },

    doDeletePerson: function() {
	  	var checkboxes = document.getElementsByClassName("selectPerson");
		var _selection = false;
		if(checkboxes != null && checkboxes.length > 0 )
		{
			for(var i = 0 ; i < checkboxes.length ; i++)
			{
				var cb = checkboxes[i];
				if ( cb.checked )
				{
					_selection = true;
					break;
				}
			}
		}
		if ( _selection )
		{
			showConfirmDialog("<br/>Are you sure you want to delete these people(s)?", "", 400, 100, this.doDeletePersonOk.bind(this), this.doDeletePersonCancel.bind(this));
		}
		else
		{
     		showMessageDialog("<br/>Select person(s) you want to delete and click on 'Delete Person'", "", 400, 100);
		}
		return false;
   },
	
	doDeletePersonOk: function() {
		hideDialogWin();
		var checkboxes = document.getElementsByClassName("selectPerson");
		if(checkboxes != null && checkboxes.length > 0 )
		{
			this.totalDelete  = 0;
			var _deletedPerson = [];
			var reqdoc = "<message>";
   			showModalMessageDialog("Deleting... please wait", 240, 40);
			for(var i = 0 ; i < checkboxes.length ; i++)
			{
				var cb = checkboxes[i];
				if ( cb.checked )
				{
					this.totalDelete++;
      					var selectedPerson =	this.dataTable.getDataList()[i];
					_deletedPerson.push(selectedPerson);
					reqdoc += "<person><uuid>" + selectedPerson.UUID + "</uuid></person>";
				}
			}

			reqdoc += "</message>";
			var req = new Af.DataRequest(svcURL,this.deletePeopleCompleted.bind(this), this.deletePeopleFailed.bind(this), null, this.requestTimedout.bind(this));		   
			req.addService("WorkspaceService", "deleteMultiplePerson");
			//req.addParameter("UUID", person.UUID);
			req.xmlDoc = reqdoc;
			ajaxEngine.processRequest(req);
		
		}
	
		return false;
	},

	deletePeopleCompleted: function() {
		
   		//showModalMessageDialog("Record Deleted", 240, 40);
		this.refreshPeople();
		hideModalMessageDialog();
	},

	deletePeopleFailed: function() {

		hideModalMessageDialog();
     		showMessageDialog("Failed deleting record ", "", 400, 150);
		this.refreshPeople();
		
	},

	doDeletePersonCancel: function() {
		hideDialogWin();
	},
	   
    doAddPerson: function() {
	  this.IsNewPerson = true;
      if (this.dialog != null) {
    	  delete this.dialog;
      }
	  this.dialog = new HJ.MyPeopleDetail("Person Details", this, null);			
	  this.dialog.width = "520px";
      var obj = new Object();
      this.dialog.showHTMLTemplate(basePageURL + "MyPeopleDetail.html", "MainArea", "peopleDetail");
			this.dialog.centerDialog(520, 250);
      this.dialog.setObj(obj, true);
      return false;
   },
   
   doPrintPersonList: function() {
   		showModalMessageDialog("Preparing ... please wait", 240, 40);
		var req = new Af.DataRequest(svcURL,this.printCompleted.bind(this), this.printFailed.bind(this), null, this.requestTimedout.bind(this));		   
		req.addService("WorkspaceService", "getPrintHtmlFromXML");
		req.addParameter("templateName", "mypeople");
		req.addParameter("xlstFile","mypeoplelist.xsl");
		ajaxEngine.processRequest(req);
		return false;
   },
/*		
   printCompleted: function(response)	{
		var p = new Af.PrintUtil();
        p.showPrintView(response);
        return false;
  },
  */
  printCompleted: function(response)	{
	hideModalMessageDialog();
     var p = new Af.PrintUtil();
     p.listener = this;
     p.showPrintView(response);
     return false;
  },
   
   printingDone:function() {	
   		this.viewSelected();
   		return false;
   },
   
   
   printFailed: function() {
     showMessageDialog("<br/>Printing is currently unavailable.Please try again. ", "Printing Unavailable", 400, 150);
   },
   
   requestTimedout: function() {
       showMessageDialog("<br/>Printing is currently unavailable.Please try again. ", "Printing Unavailable", 400, 150);
   },

   doEditPerson: function() {
      var row = this.myPeopleDetailsTable.selectedRowNumber;
      if (row < 0 || row >= this.dataTable.getDataList().length) {
		  showMessageDialog("Please select the record you would like to edit, then click Edit person.", "Select Record", 350, 100);
          return false;
      }
      if (this.dialog != null) {
    	  delete this.dialog;
      }
	  this.dialog =  new HJ.MyPeopleDetail("Person Details", this, null);
	  this.dialog.width = "520px";
	  
      this.dialog.showHTMLTemplate(basePageURL + "MyPeopleDetail.html", "MainArea", "peopleDetail");
	  this.dialog.centerDialog(520, 250);
      var selectedPerson =	this.dataTable.getDataList()[row];
      this.dialog.setObj(selectedPerson);
	  this.dialog.personHandlerIs = "myPeople";
      return false;	   
   },
   
   refresh: function() {
	  app.workspace["myPeople"] = this.dataTable.getDataList();	 
      if (this.myPeopleDetailsTable != null) {
		 this.myPeopleDetailsTable.setDataList(app.workspace["myPeople"]);
      }
	//  this.setTableWidth();	
	  this.loadMyPeopleTemplate();
   },
   
   sortList: function(l) {
      l.sort(sortByLastName);
      return l;
   },
	
   setTableWidth: function() {	  
	   return;
	    if(this.myPeopleDetailsTable == null) {
			return;
		}
		var r = this.myPeopleDetailsTable.templateRow;
		var childNodes = r.getElementsByTagName("TD");		
		childNodes[0].style.width = "150px";
		childNodes[1].style.width = "150px";
		childNodes[2].style.width = "150px";
		childNodes[3].style.width = "200px";
		childNodes[4].style.width = "200px";
		return;
   },

    loadImportTemplate:function()
    {
		document.importObj = new HJ.Import();
		document.importObj.loadImportTemplate(false);
		return false;
    },

	cellSelected: function(row, col) {
		this.myPeopleDetailsTable.normalBackcolor = "#eef7f6";
		this.myPeopleDetailsTable.selectRow(row, "#e0eeef");
		if(col == 1) {
		  this.doEditPerson();
		}
		return false; 	
    }, 

    refreshPeople: function() {
        app.db.refreshMyPeople();
        return false;
    },
	
	selectAllPeople: function() {
		//check/uncheck the reset of checkboxes
		var checkboxes = document.getElementsByClassName('selectPerson');
		if(checkboxes != null && checkboxes.length > 0 )
		{
			for(var i = 0 ; i < checkboxes.length ; i++)
			{
				var cb = checkboxes[i];
				cb.checked = this.selectAll.checked;
			}
		}
		return true;
	}
}

function myPeopleComparator(o1, o2) {
   var s1 = getFullName(o1);
   var s2 = getFullName(o2);
   
   if (s1 == null || s1 == '' || s1 == ' ' || s1 == '  ') {
	   s1 = o1.email;
   }
   if (s1 == null) {
	   s1 = '';
   }
   if (s2 == null || s2 == '' || s2 == ' ' || s2 == '  ') {
	   s2 = o2.email;
   }
   if (s2 == null) {
	   s2 = '';
   }

   s1 = s1.toLowerCase();
   s2 = s2.toLowerCase();
   
   var c1 = s1[0];
   var c2 = s2[0];
   var i = 0;
   
   while (c1 != null && c2 != null) {
	   c1 = s1[i];
	   c2 = s2[i];
	   if (c1 > c2) {
		   return 1;
	   } else if (c1 < c2) {
		   return -1;
	   }
	   i++;
   }
	   
   return -1;
}

