
$(document).ready(function() {
	$('.error-message').each(function(){
		if ($(this).css('display') != 'none') { $(this).parents('div:first').find('input, textarea').addClass('error-field'); }
	});
	var url = document.location;
	if (/newest$/.test(url)) $('#sorting > option:contains("Newest")').attr('selected', true);
	if (/oldest$/.test(url)) $('#sorting > option:contains("Oldest")').attr('selected', true);
	if (/most-rated$/.test(url)) $('#sorting > option:contains("Most Rated")').attr('selected', true);
	if (/least-rated$/.test(url)) $('#sorting > option:contains("Least Rated")').attr('selected', true);
	if (/most-helpful$/.test(url)) $('#sorting > option:contains("Most Helpful")').attr('selected', true);
	if (/least-helpful$/.test(url)) $('#sorting > option:contains("Least Helpful")').attr('selected', true);
	$('#sorting').change(function(){
		var sort_order = $('#sorting').val();
		sort_order = '/' + sort_order.toLowerCase().split(' ').join('-');
		if (sort_order == '/newest') sort_order = ''; 
		window.location = ('/conception-framework/reviews' + sort_order);
	});
	var countries = ['Australia','Canada','New Zealand','United Kingdom','United States'];
	var states = {'Australia':['Australian Capital Territory', 'New South Wales', 'Northern Territory', 'Queensland', 'South Australia', 'Tasmania', 'Victoria', 'Western Australia'],
	              'Canada':['Alberta', 'British Columbia', 'Manitoba', 'New Brunswick', 'Newfoundland &amp; Labrador', 'Northwest Territories', 'Nova Scotia', 'Nunavut', 'Ontario', 'Prince Edward Island', 'Quebec', 'Saskatchewan', 'Yukon'],
	              'New Zealand':['Auckland ', 'Bay of Plenty', 'Canterbury', 'East Cape', 'Hawke\'s Bay', 'Manawatu-Wanganui', 'Marlborough ', 'Nelson', 'Northland', 'Otago ', 'Southland', 'Taranaki', 'Tasman', 'Waikato', 'Wellington', 'West Coast'],
	              'United Kingdom':['England', 'Northern Ireland', 'Scotland', 'Wales'],
	              'United States':['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming']};
	var show_countries = function(init) {
		$('#country').html('');
		$.each(countries, function(i,v){
			$('#country').append('<option value="' + v + '"' + ((init == v) ? ' selected="selected "' : '') + '>' + v + '</option>');
		});
		if ($('#dump-country').text() != '') {
			$('#country option:selected').attr('selected', false);
			$('#country option:contains("' + $('#dump-country').text()  + '")').attr('selected', true);
		}
	};
	var show_states = function(state, init) {
		$('#state').html('');
		$.each(states[state], function(i,v){
			$('#state').append('<option value="' + v + '"' + ((init == v) ? ' selected="selected" ' : '') + '>' + v + '</option>')
		});
		if ($('#dump-state').text() != '') {
			$('#state option:selected').attr('selected', false);
			$('#state option:contains("' + $('#dump-state').text()  + '")').attr('selected', true);
		}
	};
	$('#country').change(function(){ show_states($(this).val()); });
	var country = ($('#dump-country').text() != '') ? $('#dump-country').text() : 'United States';
	var state = ($('#dump-state').text() != '') ? $('#dump-state').text() : 'Alabama';
	show_countries(country);
	show_states(country, state);
	$('#textfield-review-title').bind('keyup', function(){ $('#review-title-limit').text(60 - $('#textfield-review-title').val().length); });
	if ($('#review-title-limit').attr('id')) $('#review-title-limit').text(60 - $('#textfield-review-title').val().length);
	$('.vote-button').each(function(){
		$(this).click(function(e){
			e.preventDefault();
			var el = $(this);
			var rid = $(this).attr('id').substr(8);
			var type = $(this).attr('id').substr(4, 4);
			
			// communicate with server
			ajax('/conception-framework/reviews', {'vote':rid + ((type=='vup-') ? '+' : '-')}, function(r){
				//var val = parseInt($('#' + type + rid).text()) + 1;
				if (r.status == '1' || r.status == '2') { var val = r.ctr; $('#' + type + rid).text(val); }
				if (r.status != '2') el.parents('div:first').fadeOut('fast');
			});
		});
	});
	$('.pub-link').each(function(){
		$(this).click(function(e){
			e.preventDefault();
			var el = $(this);
			var rid = $(this).attr('id').substr(4);
			
			// communicate with server
			ajax('/conception-framework/reviews', {'pub':el.text().toLowerCase() + '-' + rid}, function(r){
				if (r.status == '1') { el.text('Unpublish'); }
				else if (r.status == '2') { el.text('Publish'); }
			});
		});
	});
	$('#recommend-yes').click(function(){ $('#recommend-yes').attr('checked', true); $('#recommend-no').attr('checked', false); });
	$('#recommend-no').click(function(){ $('#recommend-yes').attr('checked', false); $('#recommend-no').attr('checked', true); });
	$('#frm-review').submit(function(e){
		var error = false;
		var pre = '<div class="error-message">';
		var post = '</div>';
		$('.error-message').css({'display':'none'});
		$('.error-field').removeClass('error-field');
		if ($('#textfield-review-title').val() == '') 
		{ $('#textfield-review-title').addClass('error-field'); $('#textfield-review-title').parent().append(pre+'Please enter your Review Title'+post); error = true; }
		if (!$('#recommend-yes').attr('checked') && !$('#recommend-no').attr('checked'))
		{ $('#recommend-yes').parent().parent().append(pre+'Please select your Recommendation'+post); error = true; }
		if ($('#content-text').val() == '')
		{ $('#content-text').addClass('error-field'); $('#content-text').parent().append(pre+'Please enter your Review'+post); error = true; }
		if ($('#first-name').val() == '')
		{ $('#first-name').addClass('error-field'); $('#first-name').parent().append(pre+'Please enter your First Name'+post); error = true; }
		if ($('#e-mail-address').attr('id') == 'e-mail-address')
		{
			if ($('#e-mail-address').val() == '' || $('#e-mail-address-confirm').val() == '' || !/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!\#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test($('#e-mail-address').val()))
			{ $('#e-mail-address').addClass('error-field'); $('#e-mail-address-confirm').addClass('error-field'); $('#e-mail-address').parent().append(pre+'Please enter a valid E-Mail Address'+post); error = true; }
			if ($('#e-mail-address').val() != $('#e-mail-address-confirm').val())
			{ $('#e-mail-address').addClass('error-field'); $('#e-mail-address-confirm').addClass('error-field'); $('#e-mail-address').parent().append(pre+'Please ensure your E-Mail Addresses match'+post); error = true; }
		}
		if (error == false) return true;
		$('#rvw-messages').html('<div class="form-message-error"><p>Oops! One or more errors have been detected!<br />Please see below to correct any errors; thank you!</p>');
		return false;
	});

	var ajax = function(url, post_data, callback) {
		$.ajaxSetup({
			'global': false,
			'type': "POST",
			'error': function(XMLHttpRequest,textStatus, errorThrown) {
						  alert('Sorry, we\'re experiencing difficulties in communicating with server. Please try again.');
					 }
		});
		$.post(url, post_data, function(response){
			if (typeof(callback) == 'function') callback(response);
		}, 'json');
		
	};						
	
});

