// variables throughout all scripts
var jsFunctionsRegistry = new Array;

// variables local to this page only
var pageRegionStates;

$(document).ready(function(){

	applyRegionActions();
	renderEmails();
	
	if ( $("ul.sf-menu").length > 0 ) $("ul.sf-menu").superfish();
	
});


// ======================================================== common onload function

function applyRegionActions() {

	resolveRegionVisibility();
	
	pageRegionStates = '';
	
	pageRegionStates = $('.areaHidden .areaToggle, .areaVisible .areaToggle').click( function() {
				
		var parentID = $(this).parent().attr('id');
		updateCookie(parentID);
	
		var thisParent = $(this).parent();
		var currentState = thisParent.attr('class');
		
		if (currentState == 'areaHidden') {
			thisParent.attr('class', 'areaVisible');
			$(this).siblings('.areaAffected').slideDown('slow');
		} else {
			thisParent.attr('class', 'areaHidden');
			$(this).siblings('.areaAffected').slideUp('slow');
		}
		
	}); 
	
	// initialise the showHide regions
	$(".areaToggleData").bind("click", function(event){ 
			event.preventDefault(); 
			
			var $this = $(this);
			
			dataToLoad = $this.attr('href');
			
			var $targetDiv = $this.next('.areaAffected');
			var $thisParent = $this.parent('.areaHidden, .areaVisible'); // .showhide locate IMMEDIATE parent
			
			if ($thisParent.is('.areaHidden')) {
				$targetDiv.load(dataToLoad, function () {
					$targetDiv.slideDown( 200, function() {
						$thisParent.addClass('areaVisible')
						$thisParent.removeClass('areaHidden')
					});
				});
			} else {
				$targetDiv.slideUp( 200, function() {
						$thisParent.addClass('areaHidden')
						$thisParent.removeClass('areaVisible')
						$targetDiv.html('');
				});
				
			}
			  				
	} );
	
	
}


function resolveRegionVisibility() {
	
	$('.areaAffected').each( function() {
		// remember final height of everything so that reveals are smooth
 		// if ($('.areaAffected').find('.fckArea, .fckSimple, .fckNarrow').length == 0) $(this).attr('style', 'height: ' + this.offsetHeight + 'px');
		$(this).siblings('.areaToggle').attr('href', 'javascript:;');
	}); 
	$('.areaHidden .areaAffected').hide(); 
}


// ======================================================== old  disguise emails scripts

function econvert(str)
{
  str = str.replace(/_DOT_/gi, '.');
  str = str.replace(/_AT_/gi, '@');
  return str;
}

function renderEmails()
{
  var spans = document.getElementsByTagName("span");
  for (i=0; i< spans.length; i++) 
    if (spans[i].className=="email") 
      spans[i].innerHTML = econvert(spans[i].innerHTML);
}

// ======================================================== Cookie Update For Showing Hiding Areas

function updateCookie(changingStatus) {

			//load cookie
			if ($.cookie('openPanes') != null) {
				var cookieContents = $.cookie('openPanes');
			} else {
				var cookieContents = '';
			}
			
			var extant = 0;
			var newList = '';
						
			if (cookieContents!='') {
				var openPaneArray = cookieContents.split(' ');
				for (var i=0; i < openPaneArray.length; i++ ) { 
					if (changingStatus != openPaneArray[i]) {
						if (openPaneArray[i]!='') {
							newList += openPaneArray[i] + ' ';
						}
					} else {
						extant++;
					}
				}
			}
			
			if (extant==0) {
				newList += changingStatus;
			}
			
			$.cookie('openPanes', newList, { path: '/' } );	

} 




// ======================================================== Converts boxes to currency

function toCurrency(value) {
	if (is_numeric(value)) {
		newValue = new Number(value);
	} else {
		newValue = 0;
	}
	return newValue.toFixed(2);
}

function is_numeric( mixed_var ) {
    return !isNaN(mixed_var * 1);
}

function is_colour( hexcolor ) {
	var strPattern = /^#([0-9a-f]{1,2}){3}$/i;
	return strPattern.test(hexcolor);
}

function in_array (needle, haystack, argStrict) {

    var key = '', strict = !!argStrict;

    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }

    return false;
}