$(document).ready(function() {
	
	// Scrollable showcase items front page
	$(".showcase-holder").scrollable({
	vertical: true, 
	easing: 'swing', 
	speed: 1000, 
	circular: true,
	onBeforeSeek : showcasebefore
	
	}).autoscroll(5000);
	
	function showcasebefore( evt, idx)
	{
		$(".visual-btn li").eq(idx -1).animate({ 'padding-left': '28px','margin-left': '47px' }, 200);
		$(".visual-btn li").eq(idx).animate({ 'padding-left': '75px','margin-left': '0' }, 200);
	}
	
	// Scrollable news items front page
	$(".new-holder").scrollable({vertical: true, easing: 'swing', speed: 1000, circular: false});
	
	// Scrollable client logos front page
	$(".box-clients .slider").scrollable({
	
		next: '.nextclient', 
		prev: '.prevclient', 
		easing: 'swing', 
		speed: 1000, 
		circular: true
		
	}).autoscroll(8000);

	//Search Form
	initLabelField("#search-form", "#search","Search");
	
	// Project Search Form
	initLabelField("#searchprojects", '[name="search"]',"Search the references....");
	
	// Give main content a minimum height
	var conheight = $(".inner #content").height();
	if (conheight < 600)
	{
		$(".inner #content").height(600);
	} 
	
	if ($('#language-links li').length > 1)
	{
		$('#language-links').show();
	}
	
	// Create styled select
	$('#searchprojects select').each( function() {
		
		$(this).wrap('<div class="sel" />');
		$(this).before('<span class="select"></span>');	
		$(this).prev().html($(this).val());
		$(this).css('opacity', '0');
		
		$(this).change( function() {
		
			$(this).prev().html($(this).val());
			
			// Get Ajax results whenever we change form values
			$('#searchprojects').submit();
		});
		
		$(this).css('display', 'block');
	});
	
	// Get Ajax results whenever we change form values
	$('#searchprojects input').change( function() {
		
			if ($(this).val().length > 2)
				$('#searchprojects').submit();
	});

	// Bind Ajax search to form submit
	$('#searchprojects').submit( function(eventObject) { 
	
		doAjaxProjectsSearch(); 
		
		return false; 
	} );	
	
	// Trap pagination clicks for project search
	$('#searchprojectsresults #ditto_pages a').click( function() {
		
		doAjaxProjectsSearch($(this).attr('href'));
		
		return false;
	});
	
	// Home page region map as overlay.
	$("a[rel]").overlay({

		mask: {
            color: 'grey',
            loadSpeed: 200,
            opacity: 0.90
        },
        top:'center',
		effect: 'apple'
	});
});

function doAjaxProjectsSearch(url) {

	var ajaxurl = ''
	
	if ($('table.509').length > 0)
	{
		 var ajaxurl = 'http://www.astecglobal.com/projectsearch/';
	}
	else
	{
		ajaxurl = 'http://www.astecglobal.com/projectcasesearch/';
	}
	
	$('#searchprojects [name="search"]').addClass('loading');	  
	$('#searchprojectsresults').fadeOut('slow');
	
	if (url && url != '')
	{
		var data = $.getUrlVars(url);
		$.ajax({
		  url: ajaxurl,
		  success: searchResultsSuccess,
		  error: searchResultsError,
		  complete: searchResultsComplete,
		  data: data
		});
	}
	else
	{
		var region = $('#searchprojects [name="region"]').val();
		region = (region != 'Any region')?region:'';
		var sector = $('#searchprojects [name="sector"]').val();
		sector = (sector != 'Any sector')?sector:'';
		var search = $('#searchprojects [name="search"]').val();
		
		$.ajax({
		  url: ajaxurl,
		  success: searchResultsSuccess,
		  error: searchResultsError,
		  complete: searchResultsComplete,
		  data: ({ region: region, sector: sector, search : search })
		});
	}
	
  return false;
};

function resetSearch() {
		
	$('select[name="sector"]').val('Any sector');
	$('select[name="sector"]').siblings('span.select').html('Any sector');
	$('select[name="region"]').val('Any region');
	$('select[name="region"]').siblings('span.select').html('Any region');
	
	return false;
}

function searchResultsSuccess(data) {

	$('#searchprojectsresults').replaceWith(data);
	$('#searchprojectsresults').fadeIn('slow');	
	
	// Trap reset clicks for project search
	$('#searchprojectsresults a.reset').click( resetSearch );
}

function searchResultsError(jqXHR, textStatus, errorThrown) {
  
	alert('ERROR: An error occured when performing your search. Please try again.');
}

function searchResultsComplete(jqXHR, textStatus) {
  
	$('#searchprojects [name="search"]').delay('slow').removeClass('loading');
	
	// Rebind pagination clicks for project search
	$('#searchprojectsresults #ditto_pages a').click( function() {
	
		doAjaxProjectsSearch($(this).attr('href'));
		
		return false;
	});
	
	// Re-label search text field if blank
	if ($.trim($('#searchprojects [name="search"]').val()) == '')
	{
		$('#searchprojects [name="search"]').val("Search the references....");
	}
}

/*
 * Set up form field to contain a label.
 *
 * form - identifier for the form
 * field - identifier for the field
 * label - label for the field
 */
function initLabelField(form, field, label)
{
	var val;
	var target = form+" "+field;

	if ($(target).is("textarea"))

		val = $(target).html();
	else
		val = $(target).val();
	
	if ($.trim(val) == '')
	{
		if ($(target).is("textarea"))

			$(target).html(label);
		else
			$(target).val(label);
	}
	
	$(target).focus( function () { 
	
		if ($.trim(this.value) == label) 
		{ 
			if ($(this).is("textarea"))

				$(this).html('');
			else
				$(this).val('');
		}
	});
	
	$(target).blur( function () { 
	
		if ($.trim(this.value) == '') 
		{ 
			if ($(this).is("textarea"))

				$(this).html(label);
			else
				$(this).val(label);
		}
	});	
	
	$(form).submit( function () { 
	
		if ($(target).val() == label) 
		{ 
			if ($(target).is("textarea"))

				$(target).html('');
			else
				$(target).val('');
		}
	});	
}

$.extend({
  getUrlVars: function(url){
	url=(url=='')?window.location.href:url;
    var vars = new Object();
	var hash;
    var hashes = url.slice(url.indexOf('?') + 1).split('&');
	//alert(dump(hashes));
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      //vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

/**
 * Function : dump()
 * Arguments: The data - array,hash(associative array),object
 *    The level - OPTIONAL
 * Returns  : The textual representation of the array.
 * This function was inspired by the print_r function of PHP.
 * This will accept some data as the argument and return a
 * text that will be a more readable version of the
 * array/hash/object that is given.
 * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php
 */
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}
