window.addEvent('domready', function() {
	initOptions();
	initLoginForm();
	initMenu();
	initSearchBox();
	initExternalLinks();
	initTables();
	initTabs();
	initSlider();
	initNewsBlocks();
	initTripoptionBlocks();
	initFaqBlocks();
	initStaffBlocks();
	initVoyageSearch();
});

function initQuote() {
	return;
}

function initVoyageSearch(){
	var oTrip = new NetManagerModuleTrip();
	oTrip.initSearchForm();
	oTrip.initViewItineraries();
	oTrip.initPageTable();
}

function CurrencySwitchToEuro() {
	$each($('itineraryTableContent').getElements('td span.dollar'), function (el) { el.setStyle('display', 'none');});
	$each($('itineraryTableContent').getElements('td span.euro'), function (el) { el.setStyle('display', 'block');});
	
	$each($$('.euroSwitcher'), function (el) { el.addClass('disabled');});
	$each($$('.dollarSwitcher'), function (el) { el.removeClass('disabled');});
}
	
function CurrencySwitchToDollar() {
	$each($('itineraryTableContent').getElements('td span.dollar'), function (el) { el.setStyle('display', 'block');});
	$each($('itineraryTableContent').getElements('td span.euro'), function (el) { el.setStyle('display', 'none');});
	
	$each($$('.dollarSwitcher'), function (el) { el.addClass('disabled');});
	$each($$('.euroSwitcher'), function (el) { el.removeClass('disabled');});
}
	
function initSlider() {
	/*if ($defined($('slideshowContainer'))) {
		var oSlider = {
				wait: 3000, 
				effect: 'fade',
				duration: 1000, 
				loop: true, 
				thumbnails: true,
				backgroundSlider: false,
				onClick: false
		};
		show = new SlideShow('slideshowContainer','slideshowThumbnail', oSlider);
		if (show) {
			show.play();	
		}
		window.addEvent('unload', function(){show.stop();});
		
	}*/
}

function initStaffBlocks() {
	$$('.blockStaffExpedition .item').each(function(staffmember) {
		staffmember.getElement('.readmore a').addEvent('click', function() {
			staffmember.toggleClass('itemMaximized');
			if(staffmember.hasClass('itemMaximized')) {
				this.setText('Minimize');
			} else {
				this.setText('Maximize');
			}
		});
	});
}

function initTripoptionBlocks() {
	$$('#tabTripOptions .blockTripOption').each(function(tripOption) {
		tripOption.getElement('.readmore a').addEvent('click', function() {
			tripOption.toggleClass('itemMaximized');
			if(tripOption.hasClass('itemMaximized')) {
				this.setText('Minimize');
			} else {
				this.setText('Maximize');
			}
		});
	});
}

function initNewsBlocks() {
	$$('.blockNewsIndex .item').each(function(newsitem) {
		newsitem.getElement('.readmore a').addEvent('click', function() {
		  var translate = new NetManagerPlugini18n({translations: oI18N});
			newsitem.toggleClass('itemMaximized');
			if(newsitem.hasClass('itemMaximized')) {
				this.setText(translate._('minimize').substr(0, 1).toUpperCase() + translate._('minimize').substr(1));
			} else {
				this.setText(translate._('maximize').substr(0, 1).toUpperCase() + translate._('maximize').substr(1));
			}
		});
	});
}

function initFaqBlocks() {
	$$('.blockFaq').each(function(faqBlock) {
		faqBlock.getElements('.item').each(function(faqItem) {
			faqItem.getElement('h5 a').addEvents({
				'click': function() { faqItem.toggleClass('active'); }
			});
		});
	});
}

function initOptions() {
	$('fontsize').getElement('a').addEvent('click', function() {
		if($E('body').getStyle('font-size') == '72.5%') {
			$E('body').setStyle('font-size', '62.5%');
		} else {
			$E('body').setStyle('font-size', '72.5%');
		}
	});
	$('print').getElement('a').addEvent('click', function() {
		window.print();
	});
}

function initMenu() {
	$('menu').getElements('li').each(function(el) {
		el.addEvents({
			'mouseenter': function() {
				this.addClass('hover');
			},
			'mouseleave': function() {
				this.removeClass('hover');
			}
		});
	});
	$('menu').getElements('ul ul').each(function(el) {
		el.getParent().addClass('hasSubmenu');
		el.getParent().addEvents({
			'mouseenter': function() {
				el.setStyle('left', el.getParent().getSize().size.x - 20);
			}
		});
	});
	$('menu').getChildren().each(function(menuItem) {
		if($defined(menuItem.getElement('ul'))) {
			var zIndex = 100;
			menuItem.getElement('ul').setStyle('z-index', 50);
			menuItem.getElement('ul').getChildren().each(function(submenuItem) {
				zIndex = zIndex - 1;
				submenuItem.setStyle('z-index', zIndex);
				if($defined(submenuItem.getElement('ul'))) {
					var zIndexSub = 200;
					submenuItem.getElement('ul').setStyle('z-index', 150);
					submenuItem.getElement('ul').getChildren().each(function(subsubmenuItem) {
						zIndexSub = zIndexSub - 1;
						subsubmenuItem.setStyle('z-index', zIndexSub);
						if($defined(subsubmenuItem.getElement('ul'))) {
							var zIndexSubSub = 300;
							subsubmenuItem.getElement('ul').setStyle('z-index', 250);
							subsubmenuItem.getElement('ul').getChildren().each(function(subsubsubmenuItem) {
								zIndexSubSub = zIndexSubSub - 1;
								subsubsubmenuItem.setStyle('z-index', zIndexSubSub);
							});
						}
					});
				}
			});
		}
	});
}

function initLoginForm() {
	if ($defined($('login'))) {
		$('login').getElements('input.textinput').each(function(input) {
			var defaultValue = input.value;
			input.addEvents({
				'focus': function() {
					if (this.value == defaultValue) {
						this.value = '';
					}
				},
				'blur': function() {
					if (this.value == '') {
						this.value = defaultValue;
					}
				}
			});
		});	
	}
}

function initSearchBox() {
	if ($type('search') == 'element') {
		$('search').getElement('input[name=sCode]').addEvents({
			'focus': function() {
				if (this.value == 'Optional') {
					this.value = '';
				}
			},
			'blur': function() {
				if (this.value == '') {
					this.value = 'Optional';
				}
			}
		});
	}
}

function initExternalLinks() {
	$$('a').each(function(el) {
		if(el.getProperty('rel') == 'external') {
			el.removeProperty('rel');
			el.setProperty('target', '_blank');
		}
	});
}

function initTables() {
	$$('.blockContent table').each(function(el) {
		el.setProperties({
		    cellspacing: 1,
		    cellpadding: 0
		});
		var tBody = el.getElement('tbody');
		var i = 1;
		tBody.getElements('tr').each(function(el) {
			if(i % 2 == 0) {
				el.addClass('even');
				el.removeClass('odd');
			} else {
				el.addClass('odd');
				el.removeClass('even');
			}
			i++;
		});
	});
}

function initTabs() {
	if($('tabs')) {
		$('tabs').getElements('a').each(function(el) {
			el.addEvent('click', function() {
				$('tabs').getElements('a').each(function(el) {
					el.getParent().removeClass('active');
				});
				el.getParent().addClass('active');
				$('tabPages').getElements('.tabPage').each(function(el) {
					el.removeClass('active');
				});
				$E('#' + el.getProperty('rel')).addClass('active');
			});
		});
	}
}


function doLogin(sResponse){
	console.log(sResponse);
}


function checkValue(elm, val, err) {
	if (elm.value == val || elm.value == err) {
		elm.value = '';
	}
	$(elm).removeClass('iError');
}

function reloadCaptcha() {
	
	var newCapImg = new Element('img');
	var url = '/captcha/generate/cache/' + $random(0,99999999);
	var loadedImage = new Asset.image(url, {
		onload: function() {
			$('cap_img').remove();
			this.injectBefore($('capdd').getFirst());
			this.setProperty('id','cap_img');
			this.setProperty('align','left');
			
			var fxFadeIn = this.effects({duration: 800, wait: true});
	 
			fxFadeIn.start({
			}).chain(function() {
				this.start.delay(0, this, {
					'opacity': 1
				});
			});
		}
	}).setOpacity(0);
}

function processContactForm() {
	// Send Form
	var oForm = $('contactForm');
	var inputs = oForm.getElements('input');
	$each(inputs, function(el) {
		if (el.type !== 'checkbox' && el.type !== 'radio' && el.name !== 'sSubject') {
			if (el.value == el.defaultValue) {
				el.value = '';
			}
		}
	});
	var textareas = oForm.getElements('textarea');
	$each(textareas, function(el) {
		if (el.value == el.defaultValue) {
			el.value = '';
		}
	});
	oForm.send({ onComplete: validateContactForm });
}

function validateContactForm(sReponse) {
	var Form = $('contactForm');
	formSent = false;
	// Evaluate server response
	var oResponse = Json.evaluate(sReponse);
	
	// Function to execute if server response is valid
	if(oResponse.valid) {
		
		// Remove error classes
		Form.getElements('input').each(function(el) {
			el.removeClass('iError');
		});
	
		// Remove previous error messages
		Form.getElements('.errormsg').each(function(el) {
			el.remove();
		});
		
		// Add Thanks
		var fxOut = $('contactForm').effects({duration: 5300, wait: true});
		fxOut.start({
		}).chain(function() {
			this.start.delay(10, this, {
				'opacity': 0
			});
		});
		//$('contactForm').getElement('p').setOpacity(0);
		
		var oMsg  = new Element('h4').setText('Thank you for contacting us.').setOpacity(0).injectBefore($('contactForm'));
		var fxIn = $(oMsg).effects({duration: 900, wait: true});
		fxIn.start({
		}).chain(function() {
			this.start.delay(300, this, {
				'opacity': 1
			});
		}).chain(function(){$$('.overlay, .photoPopup').each(function(el){el.remove();});});
 		
	
	} else {
		
		// Remove error classes
		Form.getElements('input').each(function(el) {
			el.removeClass('iError');
		});
		Form.getElements('textarea').each(function(el) {
			el.removeClass('iError');
		});
		Form.getElements('p.iError').each(function(el) {
			el.remove();
		});
	
		// Remove previous error messages
		Form.getElements('.errormsg').each(function(el) {
			el.remove();
		});
		
		// For each error do
		$each(oResponse.errors, function(errorMessage, fieldName) {
			var formElement = $(document.body).getElement('[name^=' + fieldName + ']');
			
			$(formElement).addClass('iError');
			
			if ($(formElement).type == 'text' || $(formElement) == 'textarea') {
				$(formElement).value = '';	
				if ($type(errorMessage) == 'object') {
					$each(errorMessage, function(msg, key){
						// Place the error message in the dataholder
						if (fieldName == 'security') {
							$(formElement).value = key;
						} else {
							$(formElement).value = msg;
						}
					});
				} else {
					// Place the error message in the dataholder 
					$(formElement).value = errorMessage;
				}
			} else {
				
				if ($type(errorMessage) == 'object' || $type(errorMessage) == 'array') {
					$each(errorMessage, function(msg, key){
						// Place the error message in the dataholder
						var err = new Element('p').addClass('iError').setText(msg).inject($(formElement).getParent());
					});
				} else {
					// Place the error message in the dataholder 
					var err = new Element('p').addClass('iError').setText(errorMessage).inject($(formElement).getParent());
				}
			}
		});
		scrollToForm('contactForm');
	}
}

function scrollToForm ( el ) {
	scrollToElement($(el));
}

function scrollToElement (elm) {
	var Scroller = new Fx.Scroll(window, {duration:500, wait:false}).toElement(elm);
}
	