﻿/*
    Host page must define:
        var g_page_data_path
            path to which requests are submitted
        var g_total_count
            total number of available records
        var g_record_count
            number of displayed records
        var g_start record
            index of first displayed record
*/
var g_control_prefixes = [];
function SetupFixedRichListControls(sPrefix){
	if(!sPrefix) sPrefix = "oFixedRichList";
	g_control_prefixes.push(sPrefix);
	if(g_start_record > 0){
		var oBtn = document.getElementById(sPrefix + "BtnMovePrev");
		if(oBtn) oBtn.disabled = false;
		oBtn = document.getElementById(sPrefix + "BtnMoveFirst");
		if(oBtn) oBtn.disabled = false;
	}

	if((g_start_record + g_record_count) < g_total_count){
		var oBtn = document.getElementById(sPrefix + "BtnMoveNext");
		if(oBtn) oBtn.disabled = false;
		oBtn = document.getElementById(sPrefix + "BtnMoveLast");
		if(oBtn) oBtn.disabled = false;
	}
	
	if(g_total_count > 0) Hemi.xml.setInnerXHTML(document.getElementById(sPrefix + "ControlLabel"),(g_start_record + 1) + "-" + (g_start_record + g_record_count) + " of " + g_total_count);
	else Hemi.xml.setInnerXHTML(document.getElementById(sPrefix + "ControlLabel"),"0 of 0");
	
	// Setup Buttons
	//
	var o = document.getElementById(sPrefix + "Controls");
	if(!o) return;
	var aC = o.childNodes,a;
	for(var i = 0; i < aC.length; i++){
		if(aC[i].nodeType == 1){
			a = aC[i].getAttribute("button-action");
			if(!aC[i].href && (!a || a.length == 0)) continue;
			aC[i].onmouseover = HighlightFixedRichListControl;
			aC[i].onmouseout = HighlightFixedRichListControl;
			if(a != "avoid" && !aC[i].onclick) aC[i].onclick = ExecFixedRichListControl;
		}
	}
}

function HighlightFixedRichListControl(e){
	var o = Hemi.event.getEventSource(e),a,ac = " ";
	e = Hemi.event.getEvent(e);
	a = o.getAttribute("button-action");
	if(a) ac += a.toLowerCase() + "_button";
	else if(o.nodeName.match(/^a$/i)) ac += "link_button";
	if(e.type == "mouseover")
		o.className = "designer_button designer_button_highlight" + ac;
	else
		o.className = "designer_button" + ac;
}
function ShowHideFixedRichListButtons(b){
		if(typeof g_control_prefixes == "object"){
			for(var i = 0; i < g_control_prefixes.length; i++){
				ShowHideButton(g_control_prefixes[i] + "BtnNew",(b ? 1 : 0),"");
				ShowHideButton(g_control_prefixes[i] + "BtnMgr",(b ? 1 : 0),"");
			}
		}
}
function ExecFixedRichListControl(e){
	var o = Hemi.event.getEventSource(e);
	var s = o.getAttribute("button-action");
	var form_mode = 0;
	if(typeof g_form_mode != "undefined" && g_form_mode) form_mode = 1;
	switch(s){
		case "New":
			if(typeof OpenNew == "function"){
				OpenNew();
			}
			else{
				alert("OpenNew is not defined.  This feature may be incomplete.");
			}
			break;
		case "Manager":
			if(typeof OpenManager == "function"){
				OpenManager();
			}
			else{
				alert("OpenManager is not defined.  This feature may be incomplete.");
			}
			break;
		case "MoveLast":
		    if(form_mode){
		        document.forms[0].elements["start-record"].value = (g_total_count - g_record_count);
		        ConfirmSubmit();
		    }
		    else{
                ConfirmNavigate(g_page_data_path + "?start-record=" + (g_total_count - g_record_count));
            }
			break;
		
		case "MoveFirst":
			if(form_mode){
		        document.forms[0].elements["start-record"].value = 0;
		        ConfirmSubmit();
		    }
		    else{
			    ConfirmNavigate(g_page_data_path);
			}
			break;
			
		case "MovePrev":
			var iRec = g_start_record - g_record_count;
			if(iRec < 0) iRec = 0;
			if(form_mode){
		        document.forms[0].elements["start-record"].value = iRec;
		        ConfirmSubmit();
		    }
		    else{
			    ConfirmNavigate(g_page_data_path + "?start-record=" + iRec);
			}
			break;
		case "MoveNext":
			var iRec = g_start_record + g_record_count;
			if(g_total_count > 0 && iRec >= g_total_count) iRec = g_total_count - g_record_count;
			if(form_mode){
		        document.forms[0].elements["start-record"].value = iRec;
		        ConfirmSubmit();
		    }
		    else{
			    ConfirmNavigate(g_page_data_path + "?start-record=" + iRec);
			}
			break;
	}
}

