$(function() {
	stretchArmstrong();
	window.onresize = stretchArmstrong;
	
	$('#slideshow').cycle({
		fx: 'fade',
		pause: 1,
		speed: 1000,
		timeout: 3000
	});
	
	$('#recommended').cycle({
		fx: 'fade',
		pause: 1,
		speed: 1000,
		timeout: 10000
	});
	
	$('#ajax-regions-list li a').each(function(i,element) {
		$(element).removeAttr('href');
		$(element).click(handleRegionClick);
	});
	
	$('#SearchForm').submit(performSearch);
});

function performSearch() {
	var form = $(this);
	var searchTerm = form.find('#search').val();
	
	if (searchTerm.length == 0 || form.find('#search').attr('alt') == searchTerm) {
		return false;
	}
	
	var newAction = form.attr('action') + '/' + encodeURIComponent(searchTerm);
	form.attr('action', newAction);
	return true;
}

/*--------
Add default prompt for input fields (defined by jQuery selector),  make it dissapear on click and reappear on blur .
Disabled, when non-default data present.
Default prompt defined in 'alt' attribute of the input field.
--------*/
function input(jQuerySelector) {
	var searchField = $(jQuerySelector);
	var searchPrompt = searchField.attr('alt');
	if (searchField.val() == '')
		searchField.val(searchPrompt);	
	searchField.click(function() {
		if (searchField.val() == searchPrompt)
			searchField.val('');
	});				
	searchField.blur(function() {
		if (searchField.val() == '')
			searchField.val(searchPrompt);
	});
}

//Vertical site stretching
function stretchArmstrong() {
 var stretchMe = $("#main");
 var offset = $(window).height() - $("#header").height() - $("#footer").height() - 40;
 if (offset > 0) stretchMe.css("min-height", offset);
}

//Ajax contact form
String.prototype.capitalize = function() {
 return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
};

jQuery.fn.ajaxifyForm = function(param) {
	if (param == 'replace') {
		this.attr('rel','replace');
	}
	
	this.submit(function() {
		var error = false;
		var form = jQuery(this);
		
		form.find(':input').each(function(index,element) {
			var elementObj = jQuery(element);
			if (elementObj.attr('name').length == 0 || elementObj.attr('id').length == 0) return;
			
			var selector = '';
			if (elementObj.attr('type') == 'text') {
				selector = 'div.input.text';
			} else if (elementObj.attr('type') == 'textarea') {
				selector = 'div.input.textarea';
			}
			
			if (elementObj.val().length == 0 || elementObj.val() == elementObj.attr('alt')) {
				elementObj.closest(selector).addClass('error');
				error = true;
			} else {
				elementObj.closest(selector).removeClass('error');
			}
		});
		
		if (error == true) {
			return;
		}
		
		form.find('.button').hide();
		form.find('.loader').show();
		
		jQuery.ajax({
			type: 'POST',
			url: form.attr('action'),
			data: form.serializeArray(),
			success: handleContactForm_callback,
			dataType: 'json',
			context: form
		});
	});
	
	return this.each(function(){});
};


function handleContactForm_callback(data,txt) {
	var form = $(this.context);
	if (data.errors == null) {
		if (form.attr('rel') == 'replace') {
			form.closest('div').replaceWith(form.siblings('.form-replacement').html());
		} else {
			form.closest('div').html(form.siblings('.form-replacement').html());
		}
		
		return;
	}
		
	form.find('.loader').hide();
	form.find('.button').show();
	
	jQuery.each(data.errors,function(index,value) {
		var inputObj = form.find(":input[name='data[" + index + "]']");
		
		var selector = '';
		if (inputObj.attr('type') == 'text') {
			selector = 'div.input.text';
		} else if (inputObj.attr('type') == 'textarea') {
			selector = 'div.input.textarea';
		}
		
		inputObj.closest(selector).addClass('error');
	});
};

var currentId = null;

function handleRegionClick() {
	var id = $(this).attr('id');
	var dashPosition = id.indexOf('-');
	if (dashPosition == -1) return;
	
	var realId = id.substr(dashPosition + 1);
	if (realId.length == 0) return;
	
	if (currentId == realId) return;
	
	coreRegionSupport(realId);
}

function coreRegionSupport(id) {
	$('#ajax-region-description').empty();
	$('#region-description-loader').show();
	
	jQuery.ajax({
		type: 'GET',
		url: getRoot('regions/ajaxGetRegionInfo/' + id),
		success: function (data, txt) {
			currentId = id;
			$('#ajax-region-description').html(data);
			$('#region-description-loader').hide();
		},
		dataType: 'html'
	});
}