$(document).ready(function() {

// --------- GENERAL

// --------- add popup to external links (rel="external")
	// open external links in new window
	$('a:not([@href*="gynuity.org"])').click(function () {
		window.open($(this).attr('href'));
		return false;
	});

// --------- programs dropdown
	$('#select div a').click(function () {
		if ($('#select ol').attr("class") == 'down') {
			$('#select ol').slideUp(600, 'easeInOutQuad');
		} else {		
			$('#select ol').slideDown(350, 'easeInOutQuad');
		}
		$('#select ol').toggleClass('down');
		$('#select div').toggleClass('down');
		return false;
	});

	// close dropdown when mousing out of it
	$("#select").hover(
		function () {}, 
		function () {
			if ($('#select ol').attr("class") == 'down') {
				$('#select ol').slideUp(600, 'easeInOutQuad').toggleClass('down');
				$('#select div').toggleClass('down');
			}
		}
	);

	
	
// --------- RESOURES
	// toggle advanced search
	$('#advanced_search').hide();
	$('#show_advanced_search a').click(function() {
		$('#advanced_search').toggle();
		if($(this).text() == 'Switch to Simple Search') {
			$(this).text('Advanced search');
		} else {
			$(this).text('Switch to Simple Search');
		}
		return false;
	});

// --------- RESOURE INFO PAGE VIEW TEXT ONLY PAGE	
	// warning if language not selcted
	$('.view_txt a').click(function() {
		if ($('select[@name=txt_lan] option:selected').attr('value') == 'none') {
			$('select[@name=txt_lan]').addClass('error');
			return false;
		} else {
			$('select[@name=txt_lan]').removeClass('error');
			window.open($(this).attr('href'));
			return false;
		}
	});
	
	// set text page link to selected option
	$('select[@name=txt_lan]').change(function () {
		$('select[@name=txt_lan] option:selected').each(function () {
			$('select[@name=txt_lan]').removeClass('error');
			$('.view_txt a').attr('href', $(this).attr('value'));
		});
	});

// --------- RESOURES PAGINATION	
	// set some variables
	var per_page = 20;
	var items = $('#pages').children().length;
	var pages = Math.ceil(items/per_page);

	// initial pagination
	$('#pages').children().hide();
	$('#pages').children().slice(0,per_page).show();
	
	// place pagination on page
	if (items > per_page) {
		paginator = '<p id="urhere">Page <span>1</span> of ' + pages + ' pages</p>';
		paginator += '<ol id="paginator">';
		for (var page = 0; page < pages; page++) { 
			paginator += '<li><a href="#' + (page+1) + '">' + (page+1) + '</a></li>';
		}
		paginator += '</ol>';
		paginator += '<p id="see_all">(<a href="#off">pagination off</a>)</p>';
		paginator += '<p id="paginate">(<a href="#on">pagination on</a>)</p>'; // initially hidden via CSS
		$('#pages').after(paginator);
		$('#paginator li:first a').addClass('current');
	}
	
	// set event handler functionality
	// history() replaces click() and comes from jquery.history_remote plugin for pagination history
	// It also picks up the right page automatically when accessed directly via URL
	// so no need to code URL sniffing for that
	$('#paginator a').history(function() {
		// get first/last item to show on page from pagination link
		current_page = ($(this).attr('href').split('#')[1]);
		start = (current_page-1)*per_page;
		stop = start+per_page;
		// show/hide items
		$('#pages').children().hide();
		$('#pages').children().slice(start,stop).show();
		// add class .current to pagination link
		$('#paginator a').removeClass('current');
		$('#urhere span').text(parseInt(current_page));
		$(this).addClass('current');
		return false;
	});
	
	// turn pagination off
	$('#see_all a').click(function() {
		$('#pages').children().show();
		$('#urhere').hide();
		$('#paginator').hide();
		$('#see_all').hide();
		$('#paginate').show();
		return false;
	});
	
	// turn pagination on
	$('#paginate a').click(function() {
		$('#pages').children().hide();
		$('#pages').children().slice(start,stop).show();
		$('#urhere').show();
		$('#paginator').show();
		$('#see_all').show();
		$('#paginate').hide();
		return false;
	});
	

		
// --------- RESOURE INFO PAGE DOWNLOAD	
	// warning if language not selcted
	$('.dl a').click(function() {
		if ($('select[@name=lan] option:selected').attr('value') == 'none') {
			$('select[@name=lan]').addClass('error');
			return false;
		} else {
			$('select[@name=lan]').removeClass('error');
		}
	});
	
	// set download link to selected option
	$('select[@name=lan]').change(function () {
		$('select[@name=lan] option:selected').each(function () {
			$('select[@name=lan]').removeClass('error');
			$('.dl a').attr('href', $(this).attr('value'));
		});
	});
	
	// --------- CONTACT
	// add minimum word count method
	jQuery.validator.addMethod("minWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params; 
}, "Please enter at least {0} words."); 
	// validate signup form on keyup and submit
	$("#contact_form").validate({
		rules: {
			sender_email: { required: true, email: true },
			message: { required: true, minWords: 5 }
		},
		messages: {
			sender_email: "Valid email required",
			message: {
				required: "Don't forget to enter your message!",
				minWords: "5 words minimum"
			}
		}
	});

	
});