/*
 * --------------------------------------------------------------------------------------------------------------------
 * Guestbook entries list functions
 * --------------------------------------------------------------------------------------------------------------------
 */
/**
 * Template for the guestbookentry
 * @type {String}
 */
var sEntryTpl;
/**
 * Current page count
 * @type {Integer}
 */
var iCurrentPage = 1;
/**
 * Number of total result pages
 * @type {Integer}
 */
var iNbrPages = 1;
// misc generals
/**
 * Module name
 * @type {String}
 */
var sModuleName = 'guestbook';

function InitEntriesList (){
	var _oEntriesContainer = $('guestbookEntries');
	sEntryTpl = _oEntriesContainer.innerHTML;
	_oEntriesContainer.innerHTML = '';
};

function InitListScript(pRootUrl){

	sRootUrl = pRootUrl;
	InitEntriesList();
	UpdateListing();
};

function UpdateListing(){
	if(CreateXMLHttpRequest()) {
    	RequestGuestbookentryList();
    }
};

function RequestGuestbookentryList() {
	
	// build Url
	var _sUrl = sRootUrl;
	// build param string to send by Post
	_sUrl += '?module=' + sModuleName + '&page=ajax&action=list';
	_sUrl += '&CurrentPage=' + iCurrentPage;
	
	$('PreviousBottom').set('class', 'inactif');
	$('PreviousTop').set('class', 'inactif');
	$('NextBottom').set('class', 'inactif');
	$('NextTop').set('class', 'inactif');
	
	// Execute the request
	oHttpRequest.onreadystatechange = BuildListing;
	oHttpRequest.open('get', _sUrl, true);
	oHttpRequest.send(null);	
};

function BuildListing() {
	
	if (oHttpRequest.readyState == 4) {
		if (oHttpRequest.status == 200) {
			
			var _oEntriesContainer = $('guestbookEntries');
			_oEntriesContainer.innerHTML = '';
			
			// Put response into xmlobject
			var _xmlDoc = oHttpRequest.responseXML;
			
			// Get the number of results
			_iTotalResultCount = _xmlDoc.documentElement.getElementsByTagName('noLimit_count').item(0).firstChild.nodeValue;
			
			// Get the guestbookentry in an array, loop through it and create a row for each guestbookentry			
			var _arrXmlData = _xmlDoc.documentElement.getElementsByTagName('guestbook_entry');
			
			if (_arrXmlData.length > 0) {
				// we got results
				
				// check if the user wants to display all results on one page
				var _iEntriesPerPage = 10;
				if(_iEntriesPerPage > 0){
					// calculate the number of pages we have
					var _iRest = _iTotalResultCount % _iEntriesPerPage;
					iNbrPages = Math.floor(_iTotalResultCount/_iEntriesPerPage);
					if (_iRest > 0) {iNbrPages++;}
				} else {
					// no results
					iCurrentPage = 1;
					iNbrPages = 1;
				}
			} else {
				// no results
				iCurrentPage = 1;
				iNbrPages = 1;
				_iTotalResultCount = 0;
			}
			$('GuestbookentryCurrentPageTop').innerHTML = iCurrentPage;
			$('GuestbookentryPageCountTop').innerHTML = iNbrPages;
			$('GuestbookentryResultsCountTop').innerHTML = _iTotalResultCount;
			
			$('GuestbookentryCurrentPageBottom').innerHTML = iCurrentPage;
			$('GuestbookentryPageCountBottom').innerHTML = iNbrPages;
			$('GuestbookentryResultsCountBottom').innerHTML = _iTotalResultCount;
			
			// Show/Hide next and previous results entries buttons
			if (iCurrentPage > 1){
				$('PreviousBottom').set('class', 'actif');
				$('PreviousTop').set('class', 'actif');
			} else {
				$('PreviousBottom').set('class', 'inactif');
				$('PreviousTop').set('class', 'inactif');
			}
			
			if (iCurrentPage < iNbrPages) {
				$('NextBottom').set('class', 'actif');
				$('NextTop').set('class', 'actif');
			} else {
				$('NextBottom').set('class', 'inactif');
				$('NextTop').set('class', 'inactif');
			}
	
			var _iNbr = _iTotalResultCount - ((iCurrentPage-1) * _iEntriesPerPage) + 1;
			
			for (var i = 0; i < _arrXmlData.length; i++) {
				
				var _iElementId = _arrXmlData[i].getElementsByTagName('id').item(0).firstChild.nodeValue;
				// Build new row
				var _sNewEntry = sEntryTpl;
				
				/* get the guestbookentry data from the xml tags */
				var _sGuestname = _arrXmlData[i].getElementsByTagName('guest_name').item(0).firstChild.nodeValue;
				var _sGuestemail = _arrXmlData[i].getElementsByTagName('guest_email').item(0).firstChild.nodeValue;
				try{
					var _sGuesthomepage = _arrXmlData[i].getElementsByTagName('guest_homepage').item(0).firstChild.nodeValue;
				} catch(e) {
					var _sGuesthomepage = '&nbsp;';
				}	
				var _sMessage = _arrXmlData[i].getElementsByTagName('message').item(0).firstChild.nodeValue;
				var _sCreationDate = _arrXmlData[i].getElementsByTagName('creation_date').item(0).firstChild.nodeValue;
				var _sCreationTime = _arrXmlData[i].getElementsByTagName('creation_time').item(0).firstChild.nodeValue;
			
				_sNewEntry = _sNewEntry.replace(/__Guestname/gi, _sGuestname);
				_sNewEntry = _sNewEntry.replace(/__Guestemail/gi, _sGuestemail);
				_sNewEntry = _sNewEntry.replace(/__Homepage/gi, _sGuesthomepage);
				if(_sGuesthomepage == ''){
					_sHRefHomepage = '#';
				} else {
					_sHRefHomepage = 'http://' + _sGuesthomepage;
				}
				_sNewEntry = _sNewEntry.replace(/__HRefHomepage/gi, _sHRefHomepage);
				_sNewEntry = _sNewEntry.replace(/__Message/gi, _sMessage.replace(/\n/gi, '<br />'));
				_iNbr -= 1;
				_sNewEntry = _sNewEntry.replace(/__Title/gi, "N°" + _iNbr + " :: " + _sCreationDate + " " + _sCreationTime);
				_oEntriesContainer.innerHTML += _sNewEntry;
			}// End foreach guestbookentry
		} else {
			alert('Bei dem Request ist ein Problem aufgetreten.');
		} 
	}
};

function GotToResultEntriesPage (pPageNumber) {
	
	var _iPage = pPageNumber;
	
	if((_iPage != '') && (_iPage != iCurrentPage) && (_iPage <= iNbrPages)){
		iCurrentPage = _iPage;
		$('PreviousBottom').set('class', 'inactif');
		$('PreviousTop').set('class', 'inactif');
		$('NextBottom').set('class', 'inactif');
		$('NextTop').set('class', 'inactif');
		UpdateListing();	
	}
};

function GotToLastPage(){
	GotToResultEntriesPage(iNbrPages);
}
function GotToFirstPage(){
	GotToResultEntriesPage(1);
}

function PreviousResultEntries() {
	iCurrentPage--;
	UpdateListing();	
};

function NextResultEntries() {
	iCurrentPage++;
	UpdateListing();	
};

