/*
	Quetools Renderer Tools Script
	For Quetools Renderer
	Copyright 2010 Decomplexity
*/

/*
	Initialize Vars
*/

var menu = "";
var settings = {};

var searchOpenArray;

/*
	DOM Ready
*/
$(document).ready(function() {
 
 	domLoaded();
 
});


/*
	Window Load
*/
window.onload = function(){
	
	/*
		Set up Search Tool
	*/
	if($('dSearchTool')){
	
		if(searchOpenArray == "") searchOpenArray = [];
	
		//var myAccordion = new MultipleOpenAccordion({togglers: $('#dSearchTool h3'), elements: $('#dSearchTool .dSearchAccordion'), openAll: false, firstElementsOpen: searchOpenArray});
	
	}
	
	/*
		Enable Lightbox
	*/
	$(".gallery a").fancybox({
		'transitionIn'	:	'elastic',
		'transitionOut'	:	'fade',
		'speedIn'		:	600, 
		'speedOut'		:	200, 
		'overlayShow'	:	true,
		'titlePosition' :	'inside'
	});
	
	/*
		Init Analytics
	*/
	if(settings.enableAnalytics) initAnalytics(settings.analyticsId);
	
	/*
		Set up Link Animation
	*/
	if(settings.enableLinkAnimation){ 
		// Set up Content links
		initLinkAnimation({
			parent: $('#dContent')
		});
		
		// Set up Aux links
		initLinkAnimation({
			parent: $('#dAux')
		});
	}
	
	
	/*
		Set up search box
	*/
	if($("#dSerachBox")){
	
		$('.dSearchSection h3').click(function() {
			$(this).next().slideToggle('slow');
			return false;
		}).next().hide();
		
		$('.dSearchSection a').click(function(event) {
		  event.preventDefault();
		});
	
	} 
	
	contentLoaded();
	
}


/*
	Styling Functions
*/



/*
	Utility Functions
*/

function initAnalytics(analyticsId){
	
	var _gaq = _gaq || [];
	  _gaq.push(['_setAccount', analyticsId]);
	  _gaq.push(['_trackPageview']);

	  (function() {
	    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
	  })();
	
}

function selectDefault(value, selectbox){
	
	if($(selectbox)){
		
		var options = $(selectbox).options;
	
		for (var i = 0; i < $(selectbox).length; i++) 
		{
		
		    if ($(selectbox).options[i].value == value) 
			{
			
	         $(selectbox).options[i].selected = true;

	      	}

	   	}
	
	}
	
}

function validateForm(form){
	
	var valid = true;
	
	// Check inputs
	$(form).getElements("input").each(function(e){
		
		e.removeClass("err");
		e.getParent().removeClass("errContainer");
		
		// Check if required
		if(e.hasClass("req") && e.value == "" || e.type == "checkbox" && e.hasClass("req") && e.checked == false){
			
			e.addClass("err");
			e.getParent().addClass("errContainer");
			valid = false;
			
		}
		
		// Validate email
		if(e.hasClass("email")){
			
			var dots = e.value.split(".");
			var spaces = e.value.split(" ");
			var ats = e.value.split("@");

			if(dots.length < 2 || spaces.length > 1 || ats.length != 2 || e.value == ""){

				e.addClass("err");
				e.getParent().addClass("errContainer");
				valid = false;

			}
			
		}
		
	});
	
	// Check textareas
	$(form).getElements("textarea").each(function(e){
		
		e.removeClass("err");
		e.getParent().removeClass("errContainer");
		
		// Check if required
		if(e.hasClass("req") && e.value == ""){
			
			
			e.addClass("err");
			e.getParent().addClass("errContainer");
			valid = false;
			
		}
		
	});
	
	// Check selects
	$(form).getElements("select").each(function(e){
		
		e.removeClass("err");
		e.getParent().removeClass("errContainer");
		
		// Check if required
		if(e.hasClass("req") && e.value == ""){
			
			e.addClass("err");
			e.getParent().addClass("errContainer");
			valid = false;
			
		}
		
	});
	
	return valid;
	
}

function searchSite(termsContainer){

	var terms = "";
	terms += $(termsContainer).val();

	console.log("Terms", termsContainer, terms);

	var searchString = "&searchTerms="+terms.replace(" ", "+");
	var count = 0;

	$(".searchValue").each(function(i, e){
	
		console.log($(e), $(e).val());
	
		//if(count != 0) searchString += "&";
		searchString += "&"+$(e).attr('name')+"="+$(e).val().replace(" ", "+");
		
		count++;
	
	});
	
	
	var currentLocation = window.location.href.split("/");
	//console.log(currentLocation[1]+"/search/"+searchString);
	window.location.href = currentLocation[1]+"/search/"+searchString;

}

function searchToggle(target, value, button){

	target = "#"+target;
	
	console.log(target, $(target), $(target).value);

	// Add/Remove value from passthrough field
	if($(target).val() != null){
		if($(target).val().indexOf(value) != -1){
			$(target).attr('value', $(target).val().replace(","+value, ""));
			$(target).attr('value', $(target).val().replace(value, ""));
			if($(target).val()[0] == ","){
				$(target).attr('value', $(target).val().substr(1));
			}
		}
		else{
			$(target).attr('value',  $(target).val()+","+value);
		}
	}
	else{
		$(target).attr('value', value);
	}
	
	// Set toggle status
	if($(button).hasClass('toggled')){
		$(button).removeClass('toggled');
	}
	else{
		$(button).addClass('toggled');
	}

}

// Check if a value is even or odd
function isEven(value) {

	return (value%2 == 0);
	
}

/* 
	General DOM Cleanup Function
*/
function cleanup(){

	count = 0;

	// Remove Empty p's
	$('p').each(function(i, p){
		contents = p.innerHTML.replace(/^\s+|\s+$/g,"");
		if(contents == "" || contents == "&nbsp;"){ 
			p.destroy();
			count++;
		}
	});
	
}

function hideOverlay(){

	$("#dOverlay").fadeOut('fast', function(){ console.log("Page Loaded") });

}

/*
	Auto Spacing Main Menu
	
	Parameters:
		el -		a jQuery object specifying the ul element containing the that are li elements to be resized	
		border -	true or false whether or not the li items have a border
*/
var elastoNav = function(el, border){

	// Get with of supplied element
	var w = el.width();
	
	// Array to store the Main Navigation links
	//var menuItems = $(el+" .lMainLevel > a");
	var menuItems = el.children(".lMainLevel").children("a");

   	var curWidth = 0;
   	var totalElements = menuItems.length;
   	
   	var newWidth = 0;
   	
   	/* Submenu function - Disabled for the moment as it appears unneccessary 
   		NEEDS UPDATING */
   	/*
   	var subLinks = $$('#mainMenu li ul li a');
   	var subOrigPad = subLinks[0].css('padding');
   	*/
   	
   	// Add up the combined with of all the menu items and remove container object padding
   	menuItems.each(function(index){	
		$(this).parent().css("padding", "0");
		$(this).parent().css("margin", "0");
		if (!border) $(this).parent().css("border", "none");
		$(this).css("display", "block");
		
		// Add current menu item width to total width
		curWidth = curWidth + $(this).outerWidth(true);
		
		// Add any parent (li) border to total width
		curWidth = curWidth + $(this).parent().outerWidth() - $(this).parent().width();
	});
	
	// Remove padding from ul object
	el.css("padding", "0");
 	
 	// If elements aren't wider than the current width of navigation
	if ((w-curWidth)>0){
	
		// Work out padding to be applied
     	var pad = Math.floor(((w-curWidth)/totalElements)/2);

     	//Apply padding to the new links
     	menuItems.each(function(index){
     	
     		var leftPad = parseInt($(this).css('padding-left'))+pad;
     		var rightPad = parseInt($(this).css('padding-right'))+pad;
     		
     		//var leftPad = ($(this).outerWidth() - $(this).width())/2 + pad;
     		//var rightPad = ($(this).outerWidth() - $(this).width())/2 + pad;
     	
     		$(this).css('padding-left', leftPad+"px").css('padding-right', rightPad+"px");
     	
     		/* Submenu function - Disabled for the moment as it appears unneccessary 
     			NEEDS UPDATING */
     
     		/*
     		var linkList;
     		if(linkList = link.children('ul')) {
     			linkList.css('margin-left', linkList.css('margin-left').toInt() + pad + "px");
     		}
     		*/
     		
     		newWidth = newWidth + $(this).outerWidth(true) + $(this).parent().outerWidth() - $(this).parent().width();
   
     	});
     	
     	/* Submenu function - Disabled for the moment as it appears unneccessary 
     		NEEDS UPDATING */
     	/* 
     	Apply original padding to sublinks
     	subLinks.css('padding', subOrigPad);
     	*/
 		
 		// Calculate new combined with of the list items
 		//var newWidth = curWidth + (totalElements*(pad*2));
 		
 		// Add padding to last element to close remainder gap
 		// If new combined width of elements is still less than desired width
 		if(newWidth != w){
 		
 			// Calculate width remaining
     		var remainder = w - newWidth;	
     		
     		// Calculate left and right menu padding
     		var leftPad = parseInt($(menuItems[0]).css('padding-left'))+Math.floor(remainder/2);
     		var rightPad = parseInt(menuItems.last().css('padding-right'))+Math.floor(remainder/2);
     	
     		// Apply half the remainder to each side of the menu
     		// Adjustable Even/Odd check for the remainder.  Default applies same padding regardless.
     		if(isEven(remainder)){
     			$(menuItems[0]).css('padding-left', leftPad+'px');
     			menuItems.last().css('padding-right', rightPad+'px');
     		}
     		else{
     			$(menuItems[0]).css('padding-left', leftPad+'px');
     			menuItems.last().css('padding-right', rightPad+'px');
     		}
		}
	}
}

/*
	Calendar Functions
*/

function loadCalendar(date, category, caller){
	var theUrl = "";
	if(date){
		if(category){
			theUrl = "/calendar/"+date+"/"+category;
		}
		else{
			theUrl = "/calendar/"+date;
		}
	}
	else{
		theUrl = "/calendar";
	}
 	if (theUrl != ""){
		$.ajax({url: theUrl, success: function(data){ $(caller).parent().parent().parent().parent().parent().html(data); }});
  	}
}

function selectDay(year, month, day, category){
	var theUrl = "";
	if(day){
		theUrl = "/day/"+day+"_"+month+"_"+year;
		if(category){
			theUrl = "/day/"+day+"_"+month+"_"+year+"/"+category;
		}
	}
	else{
		theUrl = "/day";
	}
 	if (theUrl != ""){
      	location.href = theUrl ;
  	}
}

// Set Class for Selected Calendar Day
function highlightSelectedDay(){

	if ($('#iDayNo').length){
	
		$('.dCalendarToday').addClass('dCalendarTodayLight');
	
		$('.dCalendarTable td a').each(function(index){
		
			if ($(this).text() == $('#iDayNo').val()) $(this).parent().addClass('dCalendarSelectedDay');
		
		});
	}
}
