// ============================================== //

		// TIMER FUNCTIONS //

// ============================================== //

jQuery.fn.extend({everyTime:function(interval,label,fn,times,belay){return this.each(function(){jQuery.timer.add(this,interval,label,fn,times,belay)})},oneTime:function(interval,label,fn){return this.each(function(){jQuery.timer.add(this,interval,label,fn,1)})},stopTime:function(label,fn){return this.each(function(){jQuery.timer.remove(this,label,fn)})}});jQuery.extend({timer:{guid:1,global:{},regex:/^([0-9]+)\s*(.*s)?$/,powers:{'ms':1,'cs':10,'ds':100,'s':1000,'das':10000,'hs':100000,'ks':1000000},timeParse:function(value){if(value==undefined||value==null)return null;var result=this.regex.exec(jQuery.trim(value.toString()));if(result[2]){var num=parseInt(result[1],10);var mult=this.powers[result[2]]||1;return num*mult}else{return value}},add:function(element,interval,label,fn,times,belay){var counter=0;if(jQuery.isFunction(label)){if(!times)times=fn;fn=label;label=interval}interval=jQuery.timer.timeParse(interval);if(typeof interval!='number'||isNaN(interval)||interval<=0)return;if(times&&times.constructor!=Number){belay=!!times;times=0}times=times||0;belay=belay||false;if(!element.$timers)element.$timers={};if(!element.$timers[label])element.$timers[label]={};fn.$timerID=fn.$timerID||this.guid++;var handler=function(){if(belay&&this.inProgress)return;this.inProgress=true;if((++counter>times&&times!==0)||fn.call(element,counter)===false)jQuery.timer.remove(element,label,fn);this.inProgress=false};handler.$timerID=fn.$timerID;if(!element.$timers[label][fn.$timerID])element.$timers[label][fn.$timerID]=window.setInterval(handler,interval);if(!this.global[label])this.global[label]=[];this.global[label].push(element)},remove:function(element,label,fn){var timers=element.$timers,ret;if(timers){if(!label){for(label in timers)this.remove(element,label,fn)}else if(timers[label]){if(fn){if(fn.$timerID){window.clearInterval(timers[label][fn.$timerID]);delete timers[label][fn.$timerID]}}else{for(var fn in timers[label]){window.clearInterval(timers[label][fn]);delete timers[label][fn]}}for(ret in timers[label])break;if(!ret){ret=null;delete timers[label]}}for(ret in timers)break;if(!ret)element.$timers=null}}}});if(jQuery.browser.msie)jQuery(window).one("unload",function(){var global=jQuery.timer.global;for(var label in global){var els=global[label],i=els.length;while(--i)jQuery.timer.remove(els[i],label)}});

// ============================================== //

		// IMAGE ROTATE FUNCTIONS //

// ============================================== //

var target = null;
//
var imageLoadTotal = 0;
var imgArray = [];
var arrayItem = 0;
var arrayLength = 0;
var liArrayLength = 0;
var arrayLoadItem = 0;
//
var delaySpeed = 4000;
var animSpeed = 500;
var zDepth = 50;
var prevItem = null;
//
function initCarousel(){
	
	if($('ul#image_rotate_small').find('li').length>0){
		target = $('ul#image_rotate_small');
		target.css('width', 230).css('height', 230);
	}
	if($('ul#image_rotate_large').find('li').length>0){
		target = $('ul#image_rotate_large');
		target.css('width', 910).css('height', 230);
	}
	if(target.find('li').length>1){
		initCarouselItem();
	}
};
//
function initCarouselItem(){
	target.find('li').each(function(i) {
		$(this).animate({ opacity: 0 }, 0.001);
		$(this).css({ 'position' : 'absolute', 'top' : 0, 'left' : 0 });
		$(this).find('img').each(function(i) {
			imgArray.push($(this).attr('src'));
			$(this).attr({'src': ''});
		});
		if (i==0){
			imageLoadTotal = $(this).length;
		}
	});
	liArrayLength = target.find('li').length-1;
	arrayLength = imgArray.length;
	//
	loadImage();
};
//
loadImage = function(){// load each main image in sequence and add events to thumbnails
	var nextImage = imgArray[arrayLoadItem];
	var img = new Image();
	//
	$(img).load(function () {
		target.find('img').eq(arrayLoadItem).attr({'src': imgArray[arrayLoadItem]});
		//
		if(arrayLoadItem==imageLoadTotal){
			target.find('li').eq(0).animate({ opacity: 1 }, 500);
		};
		if(arrayLoadItem<(arrayLength-1)){
			arrayLoadItem++;
			loadImage();
		}else{
			advanceImage()	
		}
	}).attr('src', nextImage);
};
//
advanceImage = function(){
	// hide previous image
	if(prevItem!=null){
		prevItem.animate({ opacity: 0 }, 0.001);
	}
	prevItem = target.find('li').eq(arrayItem);
	//
	if(arrayItem<liArrayLength){
		arrayItem++
	}else{
		arrayItem = 0
	}
	startImgTimer();
};
//
startImgTimer = function(){
	target.oneTime(delaySpeed, function() {
		revealImage();	
	});
};
//
revealImage = function(){
	zDepth++;
	target.find('li').eq(arrayItem).css({ 'z-index' : zDepth}).animate({ opacity: 1 }, animSpeed, advanceImage);
}
// ============================================== //

		// SUB MENU FUNCTIONS //

// ============================================== //


function initSubMenu(){
	$('div#content_middle').find('div.sub_sub_block').each(function(i){
		if(i!=0){
			$(this).hide();	
		}else{
			$(this).addClass('sub_sub_selected');
			$('div#sub_sub_menu').find('a').eq(0).addClass('active');
		};
	});
	
	$('div#sub_sub_menu a').bind("click", function(){
		$('div.sub_sub_selected').hide().removeClass('sub_sub_selected');
		var target = $(this).attr('href');
		$(target).show().addClass('sub_sub_selected');
		$('div#sub_sub_menu').find('a.active').removeClass('active');
		$(this).addClass('active');
		return false;
	});
};

// ============================================== //

		// INITIALISE //

// ============================================== //

$(document).ready(function(){
	initCarousel();
	if($('div#sub_sub_menu').length){
		initSubMenu();
	};
	//
	if($('#phyl_form').length){
		initSubmitEnter();	
	};
	//
	$("form input").keypress(function (e) {  
		if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {  
			if($('input.memlogin').length){
				$('input.memlogin').click();
			}else{
				$('input.submit').click();
			}
			//submit
			return false;  
		}
	});
});
//
$(window).load(function () {
});