// JavaScript for Multiple Page Update
// (C) 2006 e.World Technology Ltd.
// v2.0.0 - 2006/08/05
// v2.0.1 - 2006/09/22

var TABLE_CLASSNAME = "main"; // Note: changed the class name as needed (2.0.1)

var MultiPageElements = new Array();

function MultiPageAddElement(elemid, pageIndex) {
	var item = new Array(2);
	item[0] = elemid;
	item[1] = pageIndex;
	MultiPageElements.push(item);
}

function InitMultiPage() {
	if (!(document.getElementById || document.all))
		return;
	MaxPageIndex = 0;
	for (var i=0; i<MultiPageElements.length; i++) {
		if (MultiPageElements[i][1] > MaxPageIndex)
			MaxPageIndex = MultiPageElements[i][1]; 
	}	
	MinPageIndex = MaxPageIndex;
	for (var i=0; i<MultiPageElements.length; i++) {
		if (MultiPageElements[i][1] < MinPageIndex)
			MinPageIndex = MultiPageElements[i][1]; 
	}
	NextPage();
	
	// if ASP.NET 
	if (typeof Page_ClientValidate == "function") {
    original_Page_ClientValidate = Page_ClientValidate; 
		Page_ClientValidate = function() { 
			var isValid;
			isValid = original_Page_ClientValidate();          
			if (!isValid) 
				FocusInvalidElement();
			return isValid; 
		} 
	}	
}

function PageHasElements(pageIndex) {
	for (var i=0; i<MultiPageElements.length; i++) {
		if (MultiPageElements[i][1] == pageIndex)
			return true;
	}
	return false;
}

function NextPage() {
	if(checkPage(PageIndex))
	{
		if (!(document.getElementById || document.all))
			return;
		EnableButtons(false);
		var hasElements = false;
		while (!hasElements && PageIndex < MaxPageIndex) {
			hasElements = PageHasElements(++PageIndex);
			if (hasElements)
				ShowPage();
		}
		UpdateButtons();
		EnableButtons(true);
	}
}

function PrevPage() {
	if (!(document.getElementById || document.all))
		return;
	EnableButtons(false);
	var hasElements = false;
	while (!hasElements && PageIndex > MinPageIndex) {
		hasElements = PageHasElements(--PageIndex);
		if (hasElements)
			ShowPage();
	}
	UpdateButtons();
	EnableButtons(true);
}

function ShowPage() {
	var fn;
	if (!fn && typeof CreateEditor == 'function')
		fn = CreateEditor;
	if (!fn && typeof createEditor == 'function')
		fn = createEditor; // for backward compatibility
	for (var i=0; i<MultiPageElements.length; i++) {
		var row = GetRowByElementId(MultiPageElements[i][0]);		
		if (row) {
			row.style.display = (MultiPageElements[i][1] == PageIndex) ? '' : 'none';
			if (row.style.display == '' && fn)
				fn(MultiPageElements[i][0]);
		}	
	}
}

function UpdateButtons() {	
	if (MaxPageIndex == MinPageIndex)
		return;
	var elem = GetElement('MultiPagePager');
	if (!elem)
		return;
					
	var pager = "<table class='MultiPagePager'><tr>";
	if(PageIndex!=2 || GetRowByElementId("x_more_quest")==null)
	{
		if (PageIndex <= MinPageIndex) {
			//pager = pager + "<td>" + MultiPagePrev + "</td>";
		} else {
			pager = pager + "<td><a href='javascript:PrevPage();'>" + MultiPagePrev + "</a></td>";
		}
		/*for (var i=MinPageIndex; i<=MaxPageIndex; i++) {
			if (i == PageIndex) {
				pager = pager + "<td>" + i + "</td>";
			} else {
				pager = pager + "<td><a href='javascript:GotoPageByIndex(" + i + ");'>" + i + "</a></td>";
			}
		}*/  
		if (PageIndex >= MaxPageIndex) {
			//pager = pager + "<td>" + MultiPageNext + "</td>";
		} else {
			pager = pager + "<td><a href='javascript:NextPage();'>" + MultiPageNext + "</a></td>";
		}	
	}
	pager = pager + "</tr>";/*<tr><td colspan=" + (MaxPageIndex - MinPageIndex + 3) +">";
	pager = pager + MultiPagePage + " " + (PageIndex) + " " + MultiPageOf + " " + (MaxPageIndex);
	pager = pager + "</td></tr>"*/;
	pager = pager + "</table>";
	elem.innerHTML = pager;
}

function EnableButtons(bool) {
	var btn = GetElement('btnAction'); 
	if (btn)
		btn.style.disabled = !bool;   
}

function GetElement(elemid) { // 2.0.1
	var elem;
	if (document.getElementById) {
		elem = document.getElementById(elemid);
		if (elem) {
			return elem;		
		} else {
			elem = document.getElementsByName(elemid);
			if (elem && elem.length > 0)
				return elem[0];
		}
	}
	return null;
}

function GetPageIndexByElementId(elemid) {
	var pageIndex = -1;
	for (var i=0; i<MultiPageElements.length; i++) {
		if (MultiPageElements[i][0] == elemid)
			return MultiPageElements[i][1];
	}
	return pageIndex;
}

function GotoPageByIndex(pageIndex) {
	if (pageIndex < MinPageIndex || pageIndex > MaxPageIndex)
		return; 
	PageIndex = pageIndex - 1;
	NextPage();
}

function GotoPageByElement(elem) {
	var pageIndex;
	if (!elem || elem.id == "")
		return;	
	pageIndex = GetPageIndexByElementId(elem.id);
	GotoPageByIndex(pageIndex);
}

function GetRowByElementId(elemid) { // 2.0.1
	var elem, tb;	
	elem = GetElement(elemid);	
	if (!elem)
		return null;
	var isRow = false;		
	while (!isRow) {
		elem = GetParentElement(elem);
		if (!elem) break;		
		if (elem.tagName == "TR") {
			tb = GetParentElement(elem);
			if (tb) tb = GetParentElement(tb);			
			isRow = (tb) && (tb.tagName == "TABLE") && (tb.className == TABLE_CLASSNAME);
		}	
	}
	return (isRow) ? elem : null;	
}

function GetParentElement(elem) { // 2.0.1
	if (!elem)
		return null;
	if (document.all) {		
		return elem.parentElement;
	}	else if (document.getElementById) {		
		return elem.parentNode;
	}	
}

function IsElementVisible(elemid) {
	if (!(document.getElementById || document.all))
		return true;
	var elem = GetElement(elemid);
	return (elem && elem.style.display == '');
}

// for ASP.NET
function FocusInvalidElement() {	
 	for (var i=0; i<Page_Validators.length; i++) {
		if (!Page_Validators[i].isvalid) {
			var elem = GetElement(Page_Validators[i].controltovalidate);
			GotoPageByElement(elem);
			SetFocus(elem);
			break;
		}
	}
}
