// JScript source code

var ProtoAJAX = null;

function PageRoleList(direction) {
    PF.PageDirection = direction;
   ProtoAJAX = new Ajax.Request('/re/Service/Security/RoleListing.php',{method:'post',parameters:PF.GetRequestParameters(),onComplete:displayRoleList, onLoading:PF.GetPagingLoading(true)});	
}

function PagePrivilegeList(direction) {
    PF.PageDirection = direction;
   ProtoAJAX = new Ajax.Request('/re/Service/Security/PrivilegeListing.php',{method:'post',parameters:PF.GetRequestParameters(),onComplete:displayPrivilegeList, onLoading:PF.GetPagingLoading(true)});	
}

function PageRolePrivilegeList(direction) {
    PF.PageDirection = direction;
   ProtoAJAX = new Ajax.Request('/re/Service/Security/RolePrivilegeListing.php',{method:'post',parameters:PF.GetRequestParameters(),onComplete:displayRolePrivilegeList, onLoading:PF.GetPagingLoading(true)});	
}

function PageUserList(direction) {
    PF.PageDirection = direction;
	ProtoAJAX = new Ajax.Request('/re/Service/Security/UserListing.php',{method:'post',parameters:PF.GetRequestParameters(),onComplete:displayUserList, onLoading:PF.GetPagingLoading(true)});	
}

function PageUserClear() {
	var txtLastName = document.getElementById("txtLastName");
	var txtLoginName = document.getElementById("txtLoginName");
	
	if (txtLastName) {txtLastName.value = "";}
	if (txtLoginName) {txtLoginName.value = "";}
}

//DATA GRID class

var DataGrid = function(){};

DataGrid.prototype = {
	headGridArray: null, //HEADER should be initialazed as an array like: [["key","Display Name"] , ["Id", "ID"], ["Companyname","Company Name"]] 
	dataGridArray: null,
	itemTemplates: null, // create cuctom view for cells by array ["{v}","<span class='NameItem'>{v}</span>","<a class='editLink'>{v}</a>"]  will replace "{i}" with curent value from dataGridArray
	pageSortedBy: null, // 
	pageSortedByField: null, // 
	pageSortedByType: null, // 
	showPaging: true,
	parentElementId: "",
	numberFrom: 1,
	arrowImagesSrc: "/re/media/img/navigation/",

	Bind: function () {	
		var oRow;
		var oCell;
		var oddRow = true;
		var parentElement = document.getElementById(this.parentElementId);
		
		parentElement.innerHTML ='<table cellpadding="0" cellspacing="0" border="0" width=100% >';
		var dataTable = parentElement.firstChild;
		this.GetHeader(dataTable);
		for (i=0;i<this.dataGridArray.length;i++){
			oRow = dataTable.insertRow(-1);
			oddRow = ! oddRow;
			oRow.bgColor = oddRow?  "#D3E6F5" : "#FFFFFF"; //oCell.className = "clsGrid";	
			oCell = oRow.insertCell(-1); oCell.innerHTML = i + this.numberFrom; //init list number
			
			for (c=0;c<this.dataGridArray[i].length;c++){
				oCell = oRow.insertCell(-1);				
				oCell.innerHTML = this.FillCell(this.dataGridArray[i][c], c);			
			}
		}
	},
	//private
	GetHeader: function(dataTable) { 
		//this method should to be improved
		
		var oRow;
		var oCell;
		var sortedTo = "Asc"; // could be Asc/Desc  
		
		oRow = dataTable.insertRow(-1);
		oRow.className = "pagingRowHeader";
		if (this.pageSortedBy.split("Asc").length >= 2) {
			sortTo = "Desc";
			sortedAs = "Asc";
			this.pageSortedBy = this.pageSortedBy.split("Asc")[0] + sortTo;
		} else if (this.pageSortedBy.split("Desc").length >= 2) {
			sortTo = "Asc";
			sortedAs = "Desc";
			this.pageSortedBy = this.pageSortedBy.split("Desc")[0] + sortTo;
		} else {
			this.pageSortedBy = this.pageSortedBy + "Asc";
			sortTo = "Asc";
			sortedAs = "Desc"; 
		}
		var cellStr = "";
		
		for (i=0;i<this.headGridArray.length;i++){
		    cellStr = "<button class=\"pagingHeader\""
			if (this.headGridArray[i][0]) { //without sorting
				cellStr += "onclick=\"PF.PageOrderBy = '" + this.headGridArray[i][0] + sortTo + "';  PF.PageOrderByField = '" + this.headGridArray[i][0] + "'; PF.PageOrderByType = '" + sortTo + "'; Page" + this.parentElementId +"('c');\" tabIndex=1";
			}			
			cellStr += ">" + this.headGridArray[i][1];
			if (this.pageSortedBy.split(this.headGridArray[i][0]).length == 2) {
				cellStr += "  <img src=\"" + this.arrowImagesSrc + sortedAs + ".gif\" title=\"" + sortedAs + "\">";
			} 			
			cellStr += "</button>";
			oCell = oRow.insertCell(-1);	 	    
			oCell.innerHTML = cellStr;
		}
	},
	//private methods
	FillCell: function (value, cellNumber){
		if (this.itemTemplates != null && this.itemTemplates[cellNumber]) {
			value = this.itemTemplates[cellNumber].replace("{v}", value);			
		}
		return value;		
	}
}

function displayRoleList() {
	//alert(ProtoAJAX.transport.responseText); //debug
	eval(ProtoAJAX.transport.responseText);
	var RoleListingGrid = new DataGrid (); 
	RoleListingGrid.parentElementId = "RoleList";
	RoleListingGrid.arrowImagesSrc = "../../media/img/navigation/";
	RoleListingGrid.headGridArray = [["","#"], ["Role_ID","ID"],["Name","Role"],["","&nbsp;"]];
	RoleListingGrid.dataGridArray = DL;
	RoleListingGrid.numberFrom = PF.FirstCurrentRecord; 
	RoleListingGrid.itemTemplates = ["{v}","{v}","<a href='Role.php?Role_ID={v}'>Edit</a>"];  
	RoleListingGrid.headTemplates = [10,[20,"l"],200,60];
	RoleListingGrid.pageSortedBy = PF.PageOrderBy;
	RoleListingGrid.Bind();
	PF.GetPagingInfo();
	PF.GetPagingLoading(false);
}

function displayPrivilegeList() {
	//alert(ProtoAJAX.transport.responseText); //debug	
	eval(ProtoAJAX.transport.responseText);
	var PrivilegeListingGrid = new DataGrid (); 
	PrivilegeListingGrid.parentElementId = "PrivilegeList";
	PrivilegeListingGrid.arrowImagesSrc = "../../media/img/navigation/";
	PrivilegeListingGrid.headGridArray = [["","#"], ["Privilege_ID","ID"],["Name","Name"],["","&nbsp;"]];
	PrivilegeListingGrid.dataGridArray = DL;
	PrivilegeListingGrid.numberFrom = PF.FirstCurrentRecord; 
	PrivilegeListingGrid.itemTemplates = ["{v}","{v}","{v}"]; 
	PrivilegeListingGrid.headTemplates = [10,[20,"l"],200,60]; 
	
	PrivilegeListingGrid.pageSortedByField = PF.PageOrderByField;
	PrivilegeListingGrid.pageSortedByType = PF.PageOrderByType;
	
	PrivilegeListingGrid.pageSortedBy = PF.PageOrderBy;
	PrivilegeListingGrid.Bind();
	PF.GetPagingInfo();
	PF.GetPagingLoading(false);
}

function displayRolePrivilegeList() {
	//alert(ProtoAJAX.transport.responseText); //debug	
	eval(ProtoAJAX.transport.responseText);
	var RolePrivilegeListingGrid = new DataGrid (); 
	RolePrivilegeListingGrid.parentElementId = "RolePrivilegeList";
	RolePrivilegeListingGrid.arrowImagesSrc = "../../media/img/navigation/";
	RolePrivilegeListingGrid.headGridArray = [["","#"], ["P.Privilege_ID","ID"],["P.Name","Name"],["","&nbsp;", false]];
	RolePrivilegeListingGrid.dataGridArray = DL;
	RolePrivilegeListingGrid.numberFrom = PF.FirstCurrentRecord; 
	RolePrivilegeListingGrid.itemTemplates = ["{v}","{v}","{v}"];
	RolePrivilegeListingGrid.headTemplates = [10,[20,"l"],200,60];  
	
	RolePrivilegeListingGrid.pageSortedByField = PF.PageOrderByField;
	RolePrivilegeListingGrid.pageSortedByType = PF.PageOrderByType;
	
	RolePrivilegeListingGrid.pageSortedBy = PF.PageOrderBy;
	RolePrivilegeListingGrid.Bind();
	PF.GetPagingInfo();
	PF.GetPagingLoading(false);
}

function displayUserList() {
	//alert(ProtoAJAX.transport.responseText); //debug
	eval(ProtoAJAX.transport.responseText);
	var UserListingGrid = new DataGrid (); 
	UserListingGrid.parentElementId = "UserList";
	UserListingGrid.arrowImagesSrc = "../../media/img/navigation/";
	UserListingGrid.headGridArray = [["","#"], ["U.User_ID","ID"],["U.LoginName","Login"],["U.LastName","Last Name"],["","&nbsp;", false]];
	UserListingGrid.dataGridArray = DL;
	UserListingGrid.numberFrom = PF.FirstCurrentRecord; 
	UserListingGrid.itemTemplates = ["{v}","{v}","{v}","<a href='User.php?User_ID={v}'>Edit</a>"];
	UserListingGrid.headTemplates = [10,[20,"l"],200,200,100];  
	UserListingGrid.pageSortedBy = PF.PageOrderBy;
	UserListingGrid.Bind();
	PF.GetPagingInfo();
	PF.GetPagingLoading(false);
}

//PAGE FILTER
PF = {
	PageNumber: 0,
	PageDirection: "c", 
	RecordsCount: 0,
	FirstCurrentRecord: 0,
	LastCurrentRecord: 0,
	PageOrderBy: "",
	PageOrderByField: "",
	PageOrderByType: "",
	SearchParameters: new Array(), // [[parametername1,parameter1],[parametername2,parameter2], ... ]
	FormParameters: function() {
		var form = document.getElementById("SubmitForm");
		var strForm = "";
		if(form) {
			strForm = Form.serialize(form);
		}
		return strForm;
	},
	GetPagingInfo: function () {
		var pageInfoElm = document.getElementById("pageInfo"); pageInfoElm.innerHTML = PF.FirstCurrentRecord + " - " + PF.LastCurrentRecord + " of " + PF.RecordsCount; 
		PF.PagingButtonsValidation();
	},
	//private function	
	PagingButtonsValidation : function () {
		if (PF.FirstCurrentRecord <= 1) { 
			BtnOff("btnFirstPage"); BtnOff("btnPreviousPage"); 
		} else {
			BtnOn("btnFirstPage"); BtnOn("btnPreviousPage");
		}
		if (PF.LastCurrentRecord >= PF.RecordsCount) { 
			BtnOff("btnNextPage"); BtnOff("btnLastPage"); 
		} else {
			BtnOn("btnNextPage"); BtnOn("btnLastPage");
		}
	},
	
	GetRequestParameters: function () {
		var serachParRequest = "";
		for (var i=0;i<this.SearchParameters.length;i++) {
			serachParRequest += "&"+this.SearchParameters[i][0]+"="+this.SearchParameters[i][1]; 
		}
		var formParameters = this.FormParameters();
		return (formParameters != "" ? formParameters + "&" : "") +  "&PageDirection="+this.PageDirection+"&PageNumber="+ this.PageNumber+"&PageOrderBy="+this.PageOrderBy + "&OrderByField="+this.PageOrderByField +  "&OrderByType=" + 
	this.PageOrderByType + serachParRequest;
	},

	GetPagingLoading: function (isLoading) {
		var pageLoadingElm = document.getElementById("pageLoading");
		pageLoadingElm.style.visibility = (isLoading)?"visible":"hidden";
		if (isLoading) { 
			BtnOff("btnNextPage"); BtnOff("btnLastPage"); 
			BtnOff("btnFirstPage"); BtnOff("btnPreviousPage"); 		
		}
	}
}	

// BUTTONS
function BtnOff(btnId) { 
 	var btnEl = document.getElementById(btnId);
	if (!btnEl.disabled) {
		btnEl.className = btnEl.className + "disabled";
		var imgSrcs = btnEl.firstChild.src.split('.gif');
		var imgSrc = imgSrcs[0] + "disabled.gif";	
		btnEl.firstChild.src = imgSrc;
		btnEl.disabled = true;
	}
}

function BtnOn(btnId) {
 var btnEl = document.getElementById(btnId);
 btnEl.disabled = false;
 btnEl.className = btnEl.className.replace("disabled","");
 btnEl.firstChild.src = btnEl.firstChild.src.replace("disabled","");
}