var onloads = new Array();
//onloads.push(initializeDdbHistory);
onloads.push(ddbFixBrowsers);
window.onload=bodyOnLoad;

function bodyOnLoad() {
	for ( var i = 0 ; i < onloads.length ; i++ ) onloads[i]();
} 

function swapSearch(objShow, objHide){
		$(objHide).hide();
		$(objShow).show();
}

function ddbShowHelp(objClicked){
	var objHelpDiv = $("ddbPopup");
	if (objHelpDiv.visible()) ddbHideHelp();
	
	var strHelpText = objClicked.alt;
	var arrHelpText = strHelpText.split("§");
	var objHelpDivContent = $("ddbPopupContent");
	objHelpDivContent.innerHTML = "<p class=\"ddbHeader\">" + arrHelpText[0] + "</p><p>" + arrHelpText[1] + "</p>";
	
	var objPosition = Position.cumulativeOffset(objClicked);
	objHelpDiv.style.top = (objPosition[1] - 10) + "px";
	objHelpDiv.style.left = (objPosition[0] - 10) + "px";
	
	objHelpDiv.show();
	
	if (navigator.userAgent.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1){
			var objIframe = document.createElement('iframe');
			objIframe.id = "ddbIframe";
			objIframe.style.height = ($(objHelpDiv).getHeight() - 20) + "px";
			objIframe.style.top = (objPosition[1] - 3) + "px";
			objIframe.style.left = (objPosition[0] - 4) + "px";
			document.body.appendChild(objIframe);
	}
}

function ddbHideHelp(){
		$("ddbPopup").hide();
		document.body.removeChild($("ddbIframe"));
}

function ddbFixBrowsers() {
 if (navigator.userAgent.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1){
  var arrContainers = $('ddbSearchContent').getElementsByClassName("ddbContent");
  var intWidth = arrContainers[0].getWidth();
  arrContainers.each(function(item) {
    item.style.width = (intWidth - 22) + "px";
  });
  var arrContainers = $('ddbRelatedContent').getElementsByClassName("ddbContent");
  var intWidth = arrContainers[0].getWidth();
  arrContainers.each(function(item) {
    item.style.width = (intWidth - 22) + "px";
  });
 }
 
 if (navigator.userAgent.indexOf("Safari")!=-1){
  $("ddbSearch").addClassName("safari");
 }
}
 
function handleHistoryChange(newLocation, historyData) {
   updateContent(newLocation, historyData);
}

var uniqId = null;

function initializeDdbHistory() {
   dhtmlHistory.initialize();
   dhtmlHistory.addListener(handleHistoryChange);
   
 //  var currentLocation =  dhtmlHistory.getCurrentLocation();
  // if (currentLocation != '') {
   //	dhtmlHistory.fireHistoryEvent(currentLocation);
//   	    updateContent(currentLocation, historyStorage.get(currentLocation));
  // }
}

function ddbPerformRequest(dhtmlHistoryName, divid, action, params) {
//	var uniq = new Date();  
//	uniqId = uniq.getTime();

//	dhtmlHistory.add(dhtmlHistoryName + uniqId, params);
	new Ajax.Updater(divid, action + "?" + params, {method:'post', onComplete:ddbFixBrowsers}); 
//	uniqId = null;
}

function ddbPerformRequestSubmit(dhtmlHistoryName, divid, action, params) {
	//var uniq = new Date();  
	//uniqId = uniq.getTime();

	//dhtmlHistory.add(dhtmlHistoryName + uniqId, params);
	new Ajax.Updater(divid, action, {method:'post', parameters:params, onComplete:ddbFixBrowsers}); 
	//uniqId = null;
}

function updateContent(newLocation, params) {
    //alert("newLocation=" + newLocation + ", params=" + params);
	if (uniqId==null) {
		if (newLocation.indexOf(dhtmlHistorySearch)==0) {
			ddbHistorySearch(params);
		} else if (newLocation.indexOf(dhtmlHistoryAdvSearch)==0) {
			ddbHistoryAdvancedSearch(params);
		} else if (newLocation.indexOf(dhtmlHistoryArticleNavigate )==0) {
			ddbHistoryArticleNavigate(params);
		} else if (newLocation.indexOf(dhtmlHistoryArticleClouds)==0) {
			ddbHistoryArticleClouds(params);
		} else if (newLocation.indexOf(dhtmlHistoryArticleCrumbtails)==0) {
			ddbHistoryArticleCrumbtails(params);
		} else if (newLocation.indexOf(dhtmlHistoryRelatedNavigate)==0) {
			ddbHistoryRelatedNavigate(params);
		} else if (newLocation.indexOf(dhtmlHistoryRelatedClouds)==0) {
			ddbHistoryRelatedClouds(params);
		} else if (newLocation.indexOf(dhtmlHistoryRelatedCrumbtails)==0) {
			ddbHistoryRelatedCrumbtails(params);
		} else {
			// do nothing...
		}			
	}
}

function ddbHistoryArticleNavigate(params) {
	new Ajax.Updater('ddbSearchContent', '/ddb/navigate.do?' + params, {method:'post'}); 
}

var dhtmlHistoryArticleNavigate = "/ddb/navigate:";
function ddbArticleNavigate(params){
	ddbPerformRequest(dhtmlHistoryArticleNavigate, 'ddbSearchContent', '/ddb/navigate.do', params);
}

function ddbHistoryArticleClouds(params){
	new Ajax.Updater('ddbSearchContent', '/ddb/clouds.do?' + params, {method:'post'}); 
}

var dhtmlHistoryArticleClouds = "/ddb/clouds:";
function ddbArticleClouds(params){
	ddbPerformRequest(dhtmlHistoryArticleClouds, 'ddbSearchContent', '/ddb/clouds.do', params);
}

function ddbHistoryArticleCrumbtails(params){
	new Ajax.Updater('ddbSearchContent', '/ddb/crumbtails.do?' + params, {method:'post'}); 
}

var dhtmlHistoryArticleCrumbtails = "/ddb/crumbtails:";
function ddbArticleCrumbtails(params){
	ddbPerformRequest(dhtmlHistoryArticleCrumbtails, 'ddbSearchContent', '/ddb/crumbtails.do', params);
}

function ddbHistoryRelatedNavigate(params) {
		new Ajax.Updater('ddbRelatedContent', '/ddb/related/navigate.do?' + params, {method:'post'}); 
}

var dhtmlHistoryRelatedNavigate = "/ddb/related/navigate:";
function ddbRelatedNavigate(params){
	ddbPerformRequest(dhtmlHistoryRelatedNavigate, 'ddbRelatedContent', '/ddb/related/navigate.do', params);
}

function ddbHistoryRelatedClouds(params){
		new Ajax.Updater('ddbRelatedContent', '/ddb/related/clouds.do?' + params, {method:'post'}); 
}

var dhtmlHistoryRelatedClouds = "/ddb/related/clouds:";
function ddbRelatedClouds(params){
	ddbPerformRequest(dhtmlHistoryRelatedClouds, 'ddbRelatedContent', '/ddb/related/clouds.do', params);
}

function ddbHistoryRelatedCrumbtails(params){
		new Ajax.Updater('ddbRelatedContent', '/ddb/related/crumbtails.do?' + params, {method:'post'}); 
}

var dhtmlHistoryRelatedCrumbtails = "/ddb/related/crumbtails:";
function ddbRelatedCrumbtails(params){
	ddbPerformRequest(dhtmlHistoryRelatedCrumbtails, 'ddbRelatedContent', '/ddb/related/crumbtails.do', params);
}

function ddbHistorySearch(params){
	new Ajax.Updater('ddbContent', '/ddb/search.do', {method:'post', parameters:params}); 
} 

var dhtmlHistorySearch = "/ddb/search/";
function ddbSearch(){
	ddbPerformRequestSubmit(dhtmlHistorySearch, 'ddbContent', '/ddb/search.do', Form.serialize($('ddbSearchForm')));
}

function ddbHistoryAdvancedSearch(params){
	new Ajax.Updater('ddbContent', '/ddb/search.do', {method:'post', parameters:params}); 
}

var dhtmlHistoryAdvSearch = "/ddb/advancedsearch/";
function ddbAdvancedSearch(){
	ddbPerformRequestSubmit(dhtmlHistoryAdvSearch, 'ddbContent', '/ddb/search.do', Form.serialize($('ddbAdvancedSearchForm')));
}
