$(document).ready(function() {

	$('body').ajaxError(function() {
		hide_loading();
	});
	
	$('.slide_link').live('click', function() {
		if(loading_page) return false;
		show_loading();
		var request_page = $(this).attr('href').replace(/http:\/\/[^\/]+/ig, '').replace(BASE_URI, '');
		var page_info = [request_page, get_page(request_page)];
		new_page = page_info;
		$.get(BASE_URI + request_page, {}, switch_page);
		return false;
	});
	
	$('#site_navigation li a').each(function() {
		var request_page = $(this).attr('href').replace(/http:\/\/[^\/]+/ig, '').replace(BASE_URI, '');
		var page_info = [request_page, $(this)];
		page_list.push(page_info);
		$(this).click(function() {
			if(loading_page) return false;
			if(lightbox != null) lightbox_hide();
			show_loading();
			var request_page = $(this).attr('href').replace(/http:\/\/[^\/]+/ig, '').replace(BASE_URI, '');
			var page_info = [request_page, $(this)];
			new_page = page_info;
			$.get(BASE_URI + request_page, {}, switch_page);
			return false;
		});
		if($(this).parent().hasClass('current')) current_page = page_info;
	});
	
	$('#qq_postcode').focus(function() {
		if($(this).val() == 'Enter Postcode') $(this).val('');
	});
	$('#qq_postcode').blur(function() {
		if($(this).val() == '') $(this).val('Enter Postcode');
	});
	
	if(window.location.pathname == BASE_URI) {
		$('#site_navigation li.first').addClass('current');
		current_page = ['home', $('#site_navigation li.first')];
	}
	
	$('#call_me_back_button').click(function() {
		var url = $(this).attr('href');
		var type = "get";
		var params = {};
		lightbox_window(url, type, params);
		return false;
	});
	
	$('.footer_button, .external').click(function() {
		window.open($(this).attr('href'), '_blank');
		return false;
	});

	onPageChange();
	
});

function quick_quote_submit() {
	var url = $('#quick_quote_form').attr('action');
	var type = 'post';
	
	if($('#qq_skip_type').val() == '-') {
		alert('Please select "Skip Type"'); return;
	}
	if($('#qq_postcode').val() == 'Enter Postcode' || $('#qq_postcode').val() == '') {
		alert('Please provide a "Postcode"'); return;
	}
	if($('#qq_skip_location').val() == '-') {
		alert('Please select "Skip Location"'); return;
	}
	var hire_date = new Date($('#qq_date_y').val(), $('#qq_date_m').val(), $('#qq_date_d').val());
	var now = new Date();
	var b_now = new Date((now.getFullYear()<1900?now.getFullYear()+1900:now.getFullYear()), now.getMonth()+1, now.getDate());
	if(b_now.getTime() > hire_date.getTime()) {
		alert('Please select the skip hire date in the future'); return;
	}
	if($('#qq_length').val() == '-') {
		alert('Please select "Approximate Length of Hire"'); return;
	}
	
	var qq_waste_type = [];
	var wt_inputs = $('#quick_quote_form input.qq_waste_type_check:checked');
	for(var i=0; i<wt_inputs.length; i++) {
		if($(wt_inputs[i]).val() != 'Other') {
			qq_waste_type.push($(wt_inputs[i]).val());
		} else {
			qq_waste_type.push($(wt_inputs[i]).next('input').val());
		}
	}
	var params = {
		skip_type: $('#qq_skip_type').val(),
		postcode: $('#qq_postcode').val(),
		skip_location: $('#qq_skip_location').val(),
		waste_type: qq_waste_type.join(','),
		hire_date: $('#qq_date_d').val() + '-' + $('#qq_date_m').val() + '-' + $('#qq_date_y').val(),
		hire_length: $('#qq_length').val()
	};
	lightbox_window(url, type, params);
}

function onPageChange() {

	$('#sub-nav').html('<ul></ul>');
	$('#sub-pages .page-chunk').each(function() {
		var slug = $(this).attr('class').split(' ').pop();
		var name = slug.split('-');
		for(var i=0; i<name.length; i++) {
			name[i] = ucfirst(name[i]);
		}
		name = name.join(' ');
		sub_page_list.push([name, slug, $(this)]);
		var li = $('<li><a href="#'+slug+'" class="sub-nav-link">'+ name +'</a></li>');
		$('a', li).click(function() {
			$('#sub-pages .page-chunk').hide();
			slug = $(this).attr('href').substr($(this).attr('href').indexOf('#')).replace('#', '');
			$('#sub-pages .page-chunk.'+slug).show();
			$('#sub-pages .page-chunk.'+slug).jScrollPane();
			return false;
		});
		$('#sub-nav ul').append(li);
	});
	$('#sub-pages .page-chunk').hide();
	if(sub_page_list.length > 0) $('#sub-pages .page-chunk.'+sub_page_list[0][1]).show();
	$('#sub-pages .page-chunk').jScrollPane();

	if($('.left_arrow a').attr('href') == "#" || $('.right_arrow a').attr('href') == window.location.href + "#") {
		var prev = $('#site_navigation li.current').prev();
		if(prev && prev.length > 0) {
			$('.left_arrow a').attr('href', $('a', prev).attr('href'));
			$('.left_arrow a').html(ucfirst($('a', prev).html().toLowerCase()));
		} else {
			$('.left_arrow').remove();
		}
	}

	if($('.right_arrow a').attr('href') == "#" || $('.right_arrow a').attr('href') == window.location.href + "#") {
		var next = $('#site_navigation li.current').next();
		if(next && next.length > 0) {
			$('.right_arrow a').attr('href', $('a', next).attr('href'));
			$('.right_arrow a').html(ucfirst($('a', next).html().toLowerCase()));
		} else {
			$('.right_arrow').remove();
		}
	}

}

var current_page = ['404', null];
var new_page = null;
var loading_page = false;
var loading_screen = null;
var page_list = [];

var sub_page_list = [];

function show_loading() {
	loading_page = true;
	//if(loading_screen == null) loading_screen = $('<div id="loading">Loading...</div>');
	//$('#pages_wrapper').append(loading_screen);
}

function hide_loading() {
	//loading_screen.remove();
	setTimeout(function() { loading_page = false; }, 500);
}

function get_page(slug) {
	for(var i=0; i<page_list.length; i++) {
		if(page_list[i][0] == slug) return page_list[i][1];
	}
	return null;
}

function switch_direction(slug) {
	var current_found = false;
	var slug_found = false;
	for(var i=0; i<page_list.length; i++) {
		if(page_list[i][0] == current_page[0]) current_found = true;
		if(page_list[i][0] == slug) slug_found = true;
		if(!current_found && slug_found) return -1;
		if(current_found && !slug_found) return 1;
		if(current_found && slug_found) return 0;
	}
	return 0;
}

function switch_page(data) {
	var page = '';
	
	if(data.indexOf('<!-- Page Start -->') < 0 && data.indexOf('<!-- Page End -->') < 0) return false;

	var page = data.split('<!-- Page Start -->').pop();
	page = page.split('<!-- Page End -->').shift();

	dir = switch_direction(new_page[0]);

	$('#site_navigation li').removeClass('current');
	new_page[1].parent().addClass('current');
	
	var page_id = uniqid();

	if(dir > 0) {
		$('#pages_inner').append('<div class="page" id="page_'+page_id+'">'+page+'</div>');
		$('#pages_inner').animate({ left: '-670px' }, 500, function() {
			$('#pages_inner .page').each(function() {
				if($(this).attr('id') != 'page_' + page_id) {
					$(this).remove();
				}
			});
			$('#pages_inner').css({ left: '0px' });
			onPageChange();
		});
	} else if(dir < 0) {
		$('#pages_inner').prepend('<div class="page" id="page_'+page_id+'">'+page+'</div>');
		$('#pages_inner').css({ left: '-670px' });
		$('#pages_inner').animate({ left: '0px' }, 500, function() {
			$('#pages_inner .page').each(function() {
				if($(this).attr('id') != 'page_' + page_id) {
					$(this).remove();
				}
			});
			$('#pages_inner').css({ left: '0px' });
			onPageChange();
		});
	}

	current_page = new_page;
	hide_loading();
}

var lightbox_prototype = $('<div class="lb_window"><a href="#" class="lb_close"></a><div class="lb_content"></div></div>');
var lightbox = null;

function lightbox_window(url, type, params) {
	if(lightbox == null) {
		lightbox = lightbox_prototype;
	} else {
		$('.lb_content', lightbox).html('');
		lightbox.remove();
	}
	$('.lb_close', lightbox).click(lightbox_hide)
	$('#content').append(lightbox);
	if(type == 'post') {
		$.post(url, params, lightbox_load_content);
	} else {
		$.get(url, params, lightbox_load_content);
	}
}

function lightbox_load_content(data) {
	var page = '';

	var page = data.split('<!-- Page Start -->').pop();
	page = page.split('<!-- Page End -->').shift();
	$('.lb_content', lightbox).html(page);
}

function lightbox_hide() {
	lightbox.remove();
	lightbox = null;
	return false;
}

function qqfc_submit() {
	var url = $('.qq_form_contact form').attr('action');
	var type = "post";
	var params = {
		post_data: $('#qqfc_post_data').val(),
		title: $('#qqfc_title').val(),
		name: $('#qqfc_name').val(),
		company_name: $('#qqfc_company_name').val(),
		account_number: $('#qqfc_account_number').val(),
		email: $('#qqfc_email').val(),
		address1: $('#qqfc_address1').val(),
		address2: $('#qqfc_address2').val(),
		address3: $('#qqfc_address3').val(),
		postcode: $('#qqfc_postcode').val(),
		phone: $('#qqfc_phone').val(),
		notice: $('input[name="qqfc_notice"]:checked').val()
	};
	
	if(params.name == '') {
		alert('Please specify your name'); return false;
	}
	
	if(!params.email.match(/^[a-z0-9\.\-\_\~]+@[a-z0-9\.\-\_]+\.[a-z]{2,4}$/ig)) {
		alert('Please specify your correct email address'); return false;
	}
	
	if(params.address1 == '') {
		alert('Please specify your address'); return false;
	}
	
	if(params.postcode == '') {
		alert('Please specify your postcode'); return false;
	}
	
	if(params.phone == '') {
		alert('Please specify your phone number'); return false;
	}
	
	lightbox_window(url, type, params);
	return false;
}

function cmb_submit() {
	var url = $('#cmb_form').attr('action');
	var type = "post";
	var params = {
		title: $('#cmb_title').val(),
		name: $('#cmb_name').val(),
		phone: $('#cmb_phone').val(),
		postcode: $('#cmb_postcode').val(),
		query: $('#cmb_query').val()
	};
	
	if(params.name == '') {
		alert('Please specify your name'); return false;
	}
	
	if(params.postcode == '') {
		alert('Please specify your postcode'); return false;
	}
	
	if(params.phone == '') {
		alert('Please specify your phone number'); return false;
	}
	
	if(params.query == '') {
		alert('Please specify your query / comment / subject'); return false;
	}
	
	lightbox_window(url, type, params);
	return false;
}

function uniqid() {
	var newDate = new Date;
	return newDate.getTime();
}

function trim (str, charlist) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6
    var whitespace, l = 0,
        i = 0;
    str += '';

    if (!charlist) {
        // default list
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');
    }

    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }

    l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }

    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

function ucfirst (str) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: ucfirst('kevin van zonneveld');
    // *     returns 1: 'Kevin van zonneveld'
    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}
