/* ################################
 * INIT-Function starts at onload()
 * ################################*/
function initFunction() {
	$(function() {
		initDatePicker();
		$(window).bind('hashchange', function(e) {
//			alert("init");
		  if (document.location.hash != "#sitestart") {
			qSearchTerm = $.deparam.querystring().searchTerm; //...?searchTerm
			qPage = $.deparam.querystring().page;             //...#searchTerm
			fSearchTerm = $.deparam.fragment().searchTerm;    //...?page=
			fPage = $.deparam.fragment().page;				  //...#page=

			if (qSearchTerm && fSearchTerm && qSearchTerm != fSearchTerm
			    || !qSearchTerm && fSearchTerm) {
//				alert("LoadSearchTerm");
				getNewsPageBySearchTerm(fSearchTerm, fPage);
			} else if (!qSearchTerm && !fSearchTerm) {
//				alert("LoadNews");
				getNewsPage(fPage);
			}
			if (qSearchTerm || fSearchTerm) {
				setNewsSearchInputField(fSearchTerm ? fSearchTerm : qSearchTerm);
			}
			if (!isNewsSearchInputFieldEmpty()) {
				showDisplayAllNews();
			}
			// jumpTop();
		  }
		});

	  if (document.location.hash != "#sitestart") {
		$(window).trigger('hashchange');
	  }
	});
}

function initDatePicker() {
	// Datepicker
	$('#datepicker').datepicker({
		inline: true,
		dateFormat: 'dd.mm.yy',
		changeMonth: true,
		changeYear: true,
		altField: '#datepicker_hidden',
		altFormat: 'ddmmyy'
	});
}

function getNewsPage(pageDate) {
	startLoadNewsAnimation();
	var params = new Array();
	params['dispatcherAction'] = 'getNewsPageByPageDateJSON';
	params['newsForm.page'] = pageDate;

	var deferred = sendPostRequest( {
		url : 'News.html',
		timeout : 30000,
		handleAs : 'json',
		content : params,
		load : handleNewsPagerResult,
		error : defaultHandleErrorMessage
	});
	return false;
}

function getNewsPageBySearchTerm(searchTerm, page){
	startLoadNewsAnimation();
    var params = new Array();
    params['dispatcherAction'] = 'getNewsPageBySearchTermJSON';
	params['newsForm.searchTerm'] = searchTerm;
	params['newsForm.page'] = page;

    var deferred = sendPostRequest({
       url: 'News.html',
       timeout: 30000,
       handleAs: 'json',
       content: params,
       load: handleNewsPagerResult,
       error: defaultHandleErrorMessage
    });
    return false;
}

function handleNewsPagerResult(response, ioArgs) {
	clientServerLog('Callback handleNewsPagerResult called', 'debug', null);
	try {
		var newsOutput = dojo.byId("newsOutput");
		newsOutput.innerHTML = response.newsPager.currentPage;

		var navigationElementsHtml;
		if (response.newsPager.type == "DatePager") {
			navigationElementsHtml = "\
                <div id='newsbox_datenavigation_text'>\
					<img src='templates/images/newsbox_navigation_date_text.gif' width='223' height='28' border='0' alt='Bitte Datum w&auml;hlen oder bl&auml;ttern' />\
				</div>\
				<div id='newsbox_datenavigation_previous'>\
					<a href='##previousLink'><img src='templates/images/newsbox_navigation_date_previous.gif' width='34' height='35' border='0' alt='zur&uuml;ck' /></a>\
				</div>\
				<div id='newsbox_datenavigation_date'>\
					<img src='templates/images/newsbox_navigation_date_bg.gif' width='155' height='35' border='0' alt='Datum' />\
				</div>\
				<input type='text' value='##currentDate' onchange=\"##onDateChange\" readonly='readonly' id='datepicker' />\
				<input type='hidden' value='##currentDateLink' onchange='' id='datepicker_hidden' />\
				<div id='newsbox_datenavigation_next'>\
					<a href='##nextLink'><img src='templates/images/newsbox_navigation_date_next.gif' width='34' height='35' border='0' alt='weiter' /></a>\
				</div>";
			navigationElementsHtml = navigationElementsHtml.replace("##previousLink", response.newsPager.urlPath + "#page=" + response.newsPager.previousPageLink)
				.replace("##nextLink", response.newsPager.urlPath + "#page=" + response.newsPager.nextPageLink)
				.replace("##currentDateLink", response.newsPager.currentPageLink)
				.replace("##currentDate", response.newsPager.currentDate)
				.replace("##onDateChange", "javascript: document.location.href='" + response.newsPager.urlPath + "#page=' + $('#datepicker_hidden').attr('value');");

		} else if (response.newsPager.type == "SimplePager") {
//			alert("Enter SimplePager " + response.searchTerm);
			var searchQuery = (response.searchTerm) ? ("&searchTerm=" + response.searchTerm) : "";
			var pagesText = "";
			if (response.newsPager.maxPages == 1) { pagesText = "Ergebnisseite gefunden"; }
			else { pagesText = "Ergebnisseiten gefunden"; }
			navigationElementsHtml = ""+
				"<div id='newsbox_pagenavigation_text'>##maxPages " + pagesText + "</div>"+
				"<div id='newsbox_pagenavigation_previous'>"+
				"<a href='##previousLink'><img src='templates/images/newsbox_navigation_date_previous.gif' width='34' height='35' border='0' alt='zur&uuml;ck' /></a>"+
				"</div>"+
				"<div id='newsbox_pagenavigation_page'><div id='newsbox_pagenavigation_page_link' align='center'>Seite ##currentPageNumber</div></div>"+
				"<div id='newsbox_pagenavigation_next'>"+
				"<a href='##nextLink'><img src='templates/images/newsbox_navigation_date_next.gif' width='34' height='35' border='0' alt='weiter' /></a>"+
				"</div>";

			navigationElementsHtml = navigationElementsHtml.replace("##previousLink", response.newsPager.urlPath + "#page=" + response.newsPager.previousPageLink + searchQuery)
				.replace("##nextLink", response.newsPager.urlPath + "#page=" + response.newsPager.nextPageLink + searchQuery)
				.replace("##currentLink", response.newsPager.urlPath + "#page=" + response.newsPager.currentPageLink + searchQuery)
			    .replace("##currentPageNumber", response.newsPager.currentPageNumber)
			    .replace("##maxPages", response.newsPager.maxPages);
		}

		dojo.byId("newsbox_datenavigation").innerHTML = navigationElementsHtml;

		initDatePicker();
		stopLoadNewsAnimation();
	} catch (error) {
		clientServerLog('Exception in handleNewsResult: ' + error.message,
				'error', null);
		stopLoadNewsAnimation();
	}
}

/**
 * Convert 01102009 to 01.10.2009
 * @param dateLink the link date
 * @return the real date for the datepicker
 */
function getDatePickerDate(dateLink) {
	return dateLink.substring(0,1) + "." + dateLink.substring(2,3)
		+ "." + dateLink.substring(4,7);
}

/**
 * Start load animation.
 */
function startLoadNewsAnimation() {
	var ladeNews = dojo.byId("ladeNews");
	ladeNews.innerHTML = "<img src='templates/images/ladeStatus.gif' alt='lade News' width='24' height='24' />";
}

/**
 * Stop load animation.
 * @return
 */
function stopLoadNewsAnimation() {
	var ladeNews = dojo.byId("ladeNews");
	ladeNews.innerHTML = "";
}

