var defaultSearchText = "Geef een zoekopdracht. (bijv. Griekenland hotel vliegreis)";
var extendedMenus;
var extendedMenuSizes;
var descriptions;

var _startTime;
var _endTime;

function showAccomodationWithScroll(event) {
	showAccomodation(event, this, true);
}

function showAccomodationWithoutScroll(event) {
	showAccomodation(event, this, false);
}

function showAccomodation(event, element, doScroll) {
	event.stop();
	var url = new URI(element.get('href'));
	var scrollTo = url.get('fragment');
	url.set('file', 'update-main.php');
	new Request.HTML({
		url: url.toString(),
		method: 'get',
		link: 'chain',	
		onRequest:
			function() {
				$('body').setStyle('cursor', 'wait');
			},		
		onComplete: 
			function(responseTree, responseElements, responseHTML, responseJavaScript) {
				responseElements.each(
					function(element) {
   						if (element.get('id') == 'content-main') {
							element.replaces($('content-main'));
						}
    					}
				);
				updatePage();
				$('body').setStyle('cursor', 'default');
				var winScroller = new Fx.Scroll(window, { duration: 0, wait: false });
				if ($chk(scrollTo)) {
					//alert(scrollTo);
					winScroller.toElement(scrollTo);
				} else if (doScroll) {
					/*	scroll to the top	*/
					//winScroller.toTop();
					scroll(0,0);
				}
			}

	}).send();
}

function menuItemClickedOld(event) {
	event.stop();
	var url = new URI(this.get('href'));
	url.set('file', 'update.php');
	var emData = extendedMenus.toString().replace(",", "-");
	url.setData({em: emData}, true);
	this.getElement('input').setStyle('cursor', 'progress');
	this.setStyle('cursor', 'progress');
	new Request.HTML({
		url: url.toString(),
		method: 'get',
		link: 'chain',
		onRequest:
			function() {
				$(document.body).setStyle('cursor', 'progress');
			},			
		onComplete: 
			function(responseTree, responseElements, responseHTML, responseJavaScript) {
				responseElements.each(
					function(element) {
   						if (element.get('id') == 'menu') {
							//$('menu').empty()
							element.replaces($('menu'));
							//element.getElements('a').each(function (link) {
							//	link.addEvent('click', menuItemClicked)
							//});
						} else if (element.get('id') == 'content-main') {
							element.replaces($('content-main'));
						}
    					}
				);
				$(document.body).setStyle('cursor', 'default');
				updatePage();
			}

	}).send();

}

function menuItemClicked(event) {
	this.getElement('input').setStyle('cursor', 'progress');
	this.setStyle('cursor', 'progress');
}

function pageswap(event) {
	event.stop();
	var url = new URI(this.get('href'));
	url.set('file', 'update-main.php');
	var emData = extendedMenus.toString().replace(",", "-");
	url.setData({em: emData}, true);
	new Request.HTML({
		url: url.toString(),
		method: 'get',
		link: 'chain',
		onRequest:
			function() {
				$(document.body).setStyle('cursor', 'progress');
			},			
		onComplete: 
			function(responseTree, responseElements, responseHTML, responseJavaScript) {
				responseElements.each(
					function(element) {
   						if (element.get('id') == 'content-main') {
							element.replaces($('content-main'));
						}
    					}
				);
				updatePage();
				var winScroller = new Fx.Scroll(window, { duration: 0, wait: false });
				/*	scroll to the top	*/
				//winScroller.toTop();
				scroll(0,0);
				$(document.body).setStyle('cursor', 'default');
			}

	}).send();

}


function toggleMenu(event) {
	event.stop();
	//Remove 'textmenu' and extract the id!
	var id = this.get('id').substring(8);
	var menuId = "menu" + id;
	var menu = $(menuId);
	//menu.setStyle('visibility', 'visible');
	//menu.setStyle('height', '100%');
	//menu.slide('toggle');
	if (extendedMenus.contains(id)) {
		size = extendedMenuSizes.get(id);
		extendedMenus.erase(id);
		this.set('html', 'Meer...');
		menu.setStyle('visibility', 'hidden');
		//menu.setStyle('height', '0px');
		menu.setStyle('margin-top', -size);
	} else {
		size = extendedMenuSizes.get(id);
		extendedMenus.include(id);
		this.set('html', 'Minder...');
		menu.setStyle('visibility', 'visible');
		//menu.setStyle('height', size + 'px');
		menu.setStyle('margin-top', '0px');
	}
}

function toggleItemDescription(event) {
	event.stop();
	id = this.get('id').substring(3);
	aid = "aid" + id;
	itemDescr = $(aid).get('html');
	$(aid).set('html', descriptions[id][1]);
	descriptions[id][0] = !descriptions[id][0];
	descriptions[id][1] = itemDescr;
	if (descriptions[id][0]) {
		this.set('html', "Meer...");
	} else {
		this.set('html', "Minder...");
	}
}

function toggleTable(event) {
	event.stop();
	id = this.get('id').substring(3);
	divId = "adc" + id;
	slideDiv = $(divId);
	tmpImg = this.getElement('img');
	if (tmpImg.get('src') == './images/arrow-white-down.gif') {
		tmpImg.set('src', './images/arrow-white-right.gif')
		slideDiv.setStyle('height', '0px');
		slideDiv.setStyle('visibility', 'hidden');
	} else {
		tmpImg.set('src', './images/arrow-white-down.gif')
		slideDiv.setStyle('height', '100%');
		slideDiv.setStyle('visibility', 'visible');
	}
}

function externalLinks() {
	$('content-main').getElements('a.outlink').each(function (element) {
		if (element.get('rel') == "external") {
			element.set('target', '_blank');
		}
	});

	$('content-main').getElements('a.infoandbooking').each(function (element) {
		if (element.get('rel') == "external") {
			element.set('target', '_blank');
		}
	});
	
}

function updatePage() {
	descriptions = new Array();

	//Add events to every menu item.
	$('menu').getElements('a.clean').each(function (link) {
		link.addEvent('click', menuItemClicked);
	});

	/* Active menu items */
	$('menu').getElements('a.menuactive').each(function (link) {
		link.addEvent('click', menuItemClicked);
	});
	
	/* Inactive menu items */
	$('menu').getElements('a.menuinactive').each(function (link) {
		link.addEvent('click', menuItemClicked);
	});

	/* Hidden menu parts */
	$('menu').getElements('div.hiddenmenu').each(function (element) {
		size = element.getSize().y;
		id = element.get('id').substring(4);
		extendedMenuSizes.set(id, size);
		//element.setStyle('height', '0px');
		element.setStyle('margin-top', -size);
		element.setStyle('visibility', 'hidden');
	});

	/* Menu more links */
	$('menu').getElements('a.morelink').each(function (element) {
		element.setStyle('visibility', 'visible');
		element.addEvent('click', toggleMenu);
		if (extendedMenus.contains(element.get('id').substring(8))) {
			element.set('html', "Minder...");
		}
	});

	/* Menu less links */
	$('menu').getElements('a.lesslink').each(function (element) {
		element.setStyle('visibility', 'visible');
		element.addEvent('click', toggleMenu);
	});

	/* Content morelink */
	$('content-main').getElements('a.morelink').each(function (element) {
		reqLength = 230;
		id = element.get('id').substring(3);
		aid = "aid" + id;
		itemDescr = $(aid).get('html');
		if (itemDescr.length > reqLength) {
			pos = itemDescr.indexOf(' ', reqLength-10);
			if (pos == -1 || pos > reqLength) {
				pos = itemDescr.lastIndexOf(' ', reqLength-10);
			}
			smallDescription = itemDescr.substr(0, pos);
			smallDescription += "....";
			$(aid).set('html', smallDescription);
			element.setStyle('visibility', 'visible');
			descriptions[id] = new Array();
			descriptions[id][0] = true;
			descriptions[id][1] = itemDescr;
			element.addEvent('click', toggleItemDescription);
		}
	});

	/* Content pagelink (Navigation) */
	/*
	$('content-main').getElements('a.pagelink').each(function (element) {
		element.addEvent('click', pageswap);
		//element.getElement('img').set('src', './images/arrow-white-right.gif');
	});
	*/
	
	/* Content links start */
	/*
	$('content-main').getElements('a.accDescrHeaderText').each(function (element) {
		element.addEvent('click', toggleTable);
		//element.getElement('img').set('src', './images/arrow-white-right.gif');
	});

	$('content-main').getElements('a.itemname').each(function (element) {
		element.addEvent('click', showAccomodationWithScroll);
		//element.getElement('img').set('src', './images/arrow-white-right.gif');
	});

	$('content-main').getElements('a.itemdescr').each(function (element) {
		element.addEvent('click', showAccomodationWithScroll);
		//element.getElement('img').set('src', './images/arrow-white-right.gif');
	});

	$('content-main').getElements('a.itemimage').each(function (element) {
		element.addEvent('click', showAccomodationWithScroll);
		//element.getElement('img').set('src', './images/arrow-white-right.gif');
	});

	$('content-main').getElements('a.tablink').each(function (element) {
		element.addEvent('click', showAccomodationWithoutScroll);
		//element.getElement('img').set('src', './images/arrow-white-right.gif');
	});

	$('content-main').getElements('a.returnlink').each(function (element) {
		element.addEvent('click', showAccomodationWithScroll);
		//element.getElement('img').set('src', './images/arrow-white-right.gif');
	});
	*/
	/* Content links end */
	
	/* Home page FiFader code */
	var fi = $('fi');
	if (fi) {
		var fifader = new FiFader();
		fifader.rotate();
	}
	/* Fix external links for valid XHTML */
	externalLinks();

	/* Update slideshow pictures */	
	updatePictures();

	/*
	var mainSearch = $('mainsearch');
	if (mainSearch) {
		new OverText(mainSearch);
	}
	*/
}

//Is it okej to do this here?
window.addEvent('domready', function() {
	extendedMenus = new Array();
	extendedMenuSizes = new Hash();
	updatePage();
});

