jQuery.noConflict();

if (typeof K2 == 'undefined') var K2 = {};

K2.debug = false;

// 
//K2.prototype.ajaxComplete = [];

K2.ajaxGet = function(data, complete_fn) {
	jQuery.ajax({
		url:		K2.AjaxURL,
		data:		data,
		dataType:	'html',

		error: function(request) {
			jQuery('#notices')
				.show()
				.append('<p class="alert">Error ' + request.status + ': ' + request.statusText + '</p>');
		},

		success: function() {
			jQuery('#notices').hide().html();
		},

		complete: function(request) {

			// Disable obtrusive document.write
			document.write = function(str) {};

			if ( complete_fn ) {
				complete_fn( request.responseText );
			}

			/*
			if ( K2.callbacks && K2.callbacks.length > 0 ) { 
				for ( var i = 0; i < K2.callbacks.length; i++ ) {
					K2.callbacks[i]();
				}
			 }
			*/
		}
	});
}

function OnLoadUtils() {
	jQuery('#comment-personaldetails').hide();
	jQuery('#showinfo').show();
	jQuery('#hideinfo').hide();
};

function ShowUtils() {
	jQuery('#comment-personaldetails').slideDown();
	jQuery('#showinfo').hide();
	jQuery('#hideinfo').show();
};

function HideUtils() {
	jQuery('#comment-personaldetails').slideUp();
	jQuery('#showinfo').show();
	jQuery('#hideinfo').hide();
};


/* Fix the position of an element when it is about to be scrolled off-screen */
function smartPosition(obj) {
	if ( jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 ) return;
	
	jQuery(window).scroll(function() {
		// Detect if content is being scroll offscreen.
		if ( (document.documentElement.scrollTop || document.body.scrollTop) >= jQuery(obj).offset().top) {
			jQuery('body').addClass('smartposition');
		} else {
			jQuery('body').removeClass('smartposition');
		}
	});
};


// Set the number of columns based on window size
function dynamicColumns() {
	var window_width = jQuery(window).width();

	if ( window_width >= (K2.layoutWidths[2] + 20) ) {
		jQuery('body').removeClass('columns-one columns-two').addClass('columns-three');
	} else if ( window_width >= (K2.layoutWidths[1] + 20) ) {
		jQuery('body').removeClass('columns-one columns-three').addClass('columns-two');
	} else {
		jQuery('body').removeClass('columns-two columns-three').addClass('columns-one');
	}
};

function initOverLabels () {
	if (!document.getElementById) return;

	var labels, id, field;

	// Set focus and blur handlers to hide and show 
	// labels with 'overlabel' class names.
	labels = document.getElementsByTagName('label');
	for (var i = 0; i < labels.length; i++) {

		if (labels[i].className == 'overlabel') {

			// Skip labels that do not have a named association
			// with another field.
			id = labels[i].htmlFor || labels[i].getAttribute('for');
			if (!id || !(field = document.getElementById(id))) {
				continue;
			} 

			// Change the applied class to hover the label 
			// over the form field.
			labels[i].className = 'overlabel-apply';

			// Hide any fields having an initial value.
			if (field.value !== '') {
				hideLabel(field.getAttribute('id'), true);
			}

			// Set handlers to show and hide labels.
			field.onfocus = function () {
				hideLabel(this.getAttribute('id'), true);
			};
			field.onblur = function () {
				if (this.value === '') {
					hideLabel(this.getAttribute('id'), false);
				}
			};

			// Handle clicks to label elements (for Safari).
			labels[i].onclick = function () {
				var id, field;
				id = this.getAttribute('for');
				if (id && (field = document.getElementById(id))) {
					field.focus();
				}
			};

		}
	}
};

function hideLabel(field_id, hide) {
	var field_for;
	var labels = document.getElementsByTagName('label');
	for (var i = 0; i < labels.length; i++) {
		field_for = labels[i].htmlFor || labels[i].getAttribute('for');
		
		if (field_for == field_id) {
			labels[i].style.textIndent = (hide) ? '-1000px' : '0px';

			return true;
		}
	}
};

/*
jQuery('.attachment-image').ready(function(){
	resizeImage('.image-link img', '#page', 20);
});

jQuery(window).resize(function(){
	resizeImage('.image-link img', '#page', 20);
});


function resizeImage(image, container, padding) {
	var imageObj = jQuery(image);
	var containerObj = jQuery(container);

	var imgWidth = imageObj.width();
	var imgHeight = imageObj.height();
	var contentWidth = containerObj.width() - padding;

	var ratio = contentWidth / imgWidth;

	imageObj.width(contentWidth).height(imgHeight * ratio);
	console.log('resized to a ratio of ' + ratio);
}
*/

function initARIA() {
	jQuery('#header').attr('role', 'banner');
	jQuery('#header .menu').attr('role', 'navigation');
	jQuery('#primary').attr('role', 'main');
	jQuery('#rollingcontent').attr('aria-live', 'polite').attr('aria-atomic', 'true');
	jQuery('.secondary').attr('role', 'complementary');
	jQuery('#footer').attr('role', 'contentinfo');
};

function LiveSearch(searchprompt) {
	var self = this;

	jQuery('#search-form-wrap').addClass('livesearch');

	this.searchPrompt	= searchprompt;
	this.searchform		= jQuery('#searchform');
	this.searchField	= jQuery('#s');
	this.reset			= jQuery('#searchreset');
	this.loading		= jQuery('#searchload');
	this.searchLabel	= jQuery('#search-label');

	// Hide the submit button
	jQuery('#searchsubmit').addClass('hidden');

	// Inlinize label
	this.searchLabel.empty().text(searchprompt).addClass('overlabel-apply');
	
	// Bind events to the search input
	this.searchField
		.focus(function(){
			self.searchLabel.addClass('fade');
		})
		.blur(function(){
			if (self.searchField.val() == '') {
				self.searchLabel.show().removeClass('fade');

				if (self.prevSearch != '') {
					self.resetSearch(self);
				}
			}
		})
		.keydown(function(event) {
			if (self.searchField.val() == '') {
				self.searchLabel.show();

				if (self.prevSearch != '') {
					self.resetSearch(self);
				}
			}

			var code = event.keyCode;

			if (code == 27) { // Escape
				self.resetSearch(self);

			} else if (code != 13 && code != 9) { // Not Enter or TAB
				self.searchLabel.addClass('hide')

				if (self.timer) {
					clearTimeout(self.timer);
				}
				self.timer = setTimeout(function(){ self.doSearch(self); }, 500);
			}
		})
		.keyup(function(event) {
			var code = event.keyCode;

			if (code != 13) { // Not Enter
				if (self.searchField.val() == '') {
					self.resetSearch(self);
					clearTimeout(self.timer);
				} else {
					self.reset.fadeTo('fast', 0);
					self.loading.fadeTo('fast', 1);
				}
			}
		});

	if (this.searchField.val() != '') { // If searchfield isn't empty when page is loaded.
		this.doSearch(self);
		this.searchLabel.addClass('hide');
	}

	self.loading.fadeTo('fast', 0);
	self.reset.fadeTo('fast', 0);
};


LiveSearch.prototype.doSearch = function(self) {
	if (self.searchField.val() == self.prevSearch) return;

	if (!self.active) {
		self.active = true;

		if (typeof K2.RollingArchives != 'undefined' && K2.RollingArchives.saveState) {
			K2.RollingArchives.saveState();
		}
	}

	self.prevSearch = self.searchField.val();

	K2.ajaxGet(self.searchform.serialize() + '&k2dynamic=init',
		function(data) {
			jQuery('#current-content').hide();
			jQuery('#dynamic-content').html(data).show();

			self.loading.fadeTo('fast', 0);

			self.reset.click(function(){
				self.resetSearch(self);
			}).fadeTo('fast', 1.0).css('cursor', 'pointer');
		}
	);
};

LiveSearch.prototype.resetSearch = function(self) {
	self.active = false;
	self.prevSearch = '';

	self.searchField.val('');
	self.searchLabel.removeClass('hide');
	self.loading.fadeTo('fast', 0);

	self.reset.unbind('click').fadeTo('fast', 0).css('cursor', 'default');

	if ( jQuery('#current-content').length ) {
		jQuery('#dynamic-content').hide().html('');
		jQuery('#current-content').show();
	}

	if (typeof K2.RollingArchives != 'undefined' && K2.RollingArchives.restoreState) {
		K2.RollingArchives.restoreState();
	}
};

function confirmDefaults() {
	if (confirm(defaults_prompt) == true) {
		return true;
	} else {
		return false;
	}
}

jQuery(document).ready(function(){
/*
	jQuery('#k2-styles').sortable({
		items: 'tbody tr'
	});
*/
});

function RollingArchives(pagetext) {
	this.pageText = pagetext;
	this.active = false;
};

RollingArchives.prototype.setState = function(pagenumber, pagecount, query, pagedates) {
	var self = this;

	this.pageNumber = pagenumber;
	this.pageCount = pagecount;
	this.query = query;
	this.pageDates = pagedates;

	jQuery('body').addClass('showrollingarchives');

	if ( this.validatePage(pagenumber) ) {
		jQuery('#rollingarchives').show();

		jQuery('#rollload').hide();
		jQuery('#rollhover').hide();

		// Setup the page slider
		this.pageSlider = new K2Slider('#pagehandle', '#pagetrackwrap', {
			minimum: 1,
			maximum: self.pageCount,
			value: self.pageCount - self.pageNumber + 1,
			onSlide: function(value) {
				jQuery('#rollhover').show();
				self.updatePageText( self.pageCount - value + 1);
			},
			onChange: function(value) {
				self.updatePageText( self.pageCount - value + 1);
				self.gotoPage( self.pageCount - value + 1 );
			}
		});

		// Add click events
		jQuery('#rollnext').click(function() {
			self.pageSlider.setValueBy(1);
			return false;
		});

		jQuery('#rollprevious').click(function() {
			self.pageSlider.setValueBy(-1);
			return false;
		});

		jQuery('#rollhome').click(function() {
			self.pageSlider.setValue(self.pageCount);
			self.validatePage(1);
			return false;
		});

		this.updatePageText( this.pageNumber );

		this.trimmer = new TextTrimmer(100);
		this.active = true;
	} else {
		jQuery('body').addClass('hiderollingarchives');
	}
};


RollingArchives.prototype.saveState = function() {
	this.prevQuery = this.query;
};


RollingArchives.prototype.restoreState = function() {
	if (this.prevQuery != null) {
		var query = jQuery.extend(this.prevQuery, { k2dynamic: 'init' });

		K2.ajaxGet(query,
			function(data) {
				jQuery('#dynamic-content').html(data);
			}
		);
	}
};


RollingArchives.prototype.updatePageText = function(page) {
	jQuery('#rollpages').html(
		(this.pageText.replace('%1$d', page)).replace('%2$d', this.pageCount)
	);
	jQuery('#rolldates').html(this.pageDates[page - 1]);
};


RollingArchives.prototype.validatePage = function(newpage) {
	if (this.pageCount > 1) {
		if (newpage >= this.pageCount) {
			jQuery('#dynamic-content').removeClass('onepageonly firstpage nthpage').addClass('lastpage');
			return this.pageCount;

		} else if (newpage <= 1) {
			jQuery('#dynamic-content').removeClass('onepageonly nthpage lastpage').addClass('firstpage');
			return 1;

		} else {
			jQuery('#dynamic-content').removeClass('onepageonly firstpage lastpage').addClass('nthpage');
			return newpage;
		}
	}

	jQuery('#dynamic-content').removeClass('firstpage nthpage lastpage').addClass('onepageonly');

	return 0;
};


RollingArchives.prototype.gotoPage = function(newpage) {
	var self = this;
	var page = this.validatePage(newpage);

	if ( (page != this.pageNumber) && (page > 0) ) {
		this.pageNumber = page;

		jQuery('#rollload').fadeIn('fast');
		jQuery.extend(this.query, { paged: this.pageNumber, k2dynamic: 1 });

		K2.ajaxGet(this.query,
			function(data) {

				/* if (K2.Animations) {
					if (self.pageNumber == 1) {
						jQuery('html,body').animate({
							scrollTop: jQuery('body').offset().top - 1
						}, 500);
					} else {
						jQuery('html,body').animate({
							scrollTop: jQuery('#dynamic-content').offset().top - 1
						}, 500);
					}
				} */
				
				jQuery('#rollhover').fadeOut('slow');
				jQuery('#rollload').fadeOut('fast');
				jQuery('#rollingcontent').html(data);
				
				self.trimmer.trimAgain();
			}
		);
	}

	if (page == 1)
		this.trimmer.slider.setValue(100);
};

// script.aculo.us slider.js v1.7.0, Fri Jan 19 19:16:36 CET 2007

// Copyright (c) 2005, 2006 Marty Haught, Thomas Fuchs 
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

function K2Slider(handle, track, options) {
	var self = this;

	this.handle  = jQuery(handle);
    this.track   = jQuery(track);
    this.options = options || {};

    this.value     = this.options.value || 0;

    this.maximum   = this.options.maximum || 1;
    this.minimum   = this.options.minimum || 0;

    this.trackLength  = this.track.width();
    this.handleLength = this.handle.width();
	this.handle.css('position', 'absolute');

    this.active   = false;
    this.dragging = false;

    this.setValue(this.value);
   
    this.handle.mousedown(function(event) {
		self.active = true;

        var pointer	= self.pointerX(event);
		var offset	= self.track.offset();

		self.setValue(
			self.translateToValue(
				pointer-offset.left-(self.handleLength/2)
          	)
		);

		var offset = self.handle.offset();
		self.offsetX = (pointer - offset.left);
	});

	this.track.mousedown(function(event) {
		var offset	= self.track.offset();
        var pointer	= self.pointerX(event);

		self.setValue(
			self.translateToValue(
				pointer-offset.left-(self.handleLength/2)
          	)
		);
	});

	jQuery(document).mouseup(function(event){
		if (self.active && self.dragging) {
			self.active = false;
			self.dragging = false;

			self.updateFinished(self);
		}
		self.active = false;
		self.dragging = false;
	});

	jQuery(document).mousemove(function(event){
		if (self.active) {
			if (!self.dragging) self.dragging = true;

			self.draw(event);

			// fix AppleWebKit rendering
			if (navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
		}
	});

	this.initialized = true;
};

K2Slider.prototype.getNearestValue = function(value) {
	if (value > this.maximum) return this.maximum;
	if (value < this.minimum) return this.minimum;
	return value;
};

K2Slider.prototype.setValue = function(value) {
	this.value = this.getNearestValue(value);

	this.handle.css('left', this.translateToPx(this.value));
   
	if (!this.dragging || !this.event) this.updateFinished(this);
};

K2Slider.prototype.setValueBy = function(delta) {
	this.setValue(this.value + delta);
};

K2Slider.prototype.translateToPx = function(value) {
	return Math.round(
		((this.trackLength-this.handleLength)/(this.maximum-this.minimum)) * 
		(value - this.minimum)) + "px";
};

K2Slider.prototype.translateToValue = function(offset) {
	return Math.round(
		((offset/(this.trackLength-this.handleLength) * 
		(this.maximum-this.minimum)) + this.minimum));
};

K2Slider.prototype.draw = function(event) {
	var pointer = this.pointerX(event);
	var offset	= this.track.offset();
	pointer		-= this.offsetX + offset.left;

    this.event = event;
	this.setValue( this.translateToValue(pointer) );

	if (this.initialized && this.options.onSlide)
		this.options.onSlide(this.value);
};

K2Slider.prototype.updateFinished = function(self) {
	if (self.initialized && self.options.onChange) 
		self.options.onChange(self.value);

	self.event = null;
};

K2Slider.prototype.pointerX = function(event) {
	return event.pageX || (event.clientX +
		(document.documentElement.scrollLeft || document.body.scrollLeft));
};

K2Slider.prototype.isLeftClick = function(event) {
	return (((event.which) && (event.which == 1)) ||
		((event.button) && (event.button == 1)));
};


/*	Thank you Drew McLellan for starting us off
	with http://24ways.org/2006/tasty-text-trimmer	*/

function TextTrimmer(value) {
	var self = this;

	this.minValue = 0;
	this.maxValue = 100;
	this.chunks = false;
	this.prevValue = 0;

	if (value >= this.maxValue) {
		this.curValue = this.maxValue;
	} else if (value < this.minValue) {
		this.curValue = this.minValue;
	} else {
		this.curValue = value;
	}

	this.slider = new K2Slider('#trimmerhandle', '#trimmertrack', {
		minimum: 0,
		maximum: 10,
		value: 10,
		onSlide: function(x) {
			self.doTrim(x * 10);
		},
		onChange: function(x) {
			self.doTrim(x * 10);
		}
	});

	jQuery('#trimmermore').click(function() {
		self.slider.setValueBy(1);
		return false;
	});

	jQuery('#trimmerless').click(function() {
		self.slider.setValueBy(-1);
		return false;
	});

	jQuery('#trimmertrim').click(function() {
		self.slider.setValue(self.minValue);
		return false;
	});

	jQuery('#trimmeruntrim').click(function() {
		self.slider.setValue(self.maxValue);
		return false;
	});
};

TextTrimmer.prototype.trimAgain = function() {
	this.loadChunks();
	this.doTrim(this.curValue);
};

TextTrimmer.prototype.loadChunks = function() {
	var everything = jQuery('#dynamic-content .entry-content');

	this.chunks = [];

	for (i=0; i<everything.length; i++) {
		this.chunks.push({
			ref: everything[i],
			html: jQuery(everything[i]).html(),
			text: jQuery.trim(jQuery(everything[i]).text())
		});
	}
};

TextTrimmer.prototype.doTrim = function(interval) {
	/* Spit out the trimmed text */
	if (!this.chunks)
		this.loadChunks();

	/* var interval = parseInt(interval); */
	this.curValue = interval;

	for (i=0; i<this.chunks.length; i++) {
		if (interval == this.maxValue) {
			jQuery(this.chunks[i].ref).html(this.chunks[i].html);
		} else if (interval == this.minValue) {
			jQuery(this.chunks[i].ref).html('');
		} else {
			var a = this.chunks[i].text.split(' ');
			a = a.slice(0, Math.round(interval * a.length / 100));
			jQuery(this.chunks[i].ref).html('<p>' + a.join(' ') + '&nbsp;[...]</p>');
		}
	}

	/* Add 'trimmed' class to <BODY> while active */
	if (this.curValue != this.maxValue) {
		jQuery('#dynamic-content').addClass("trimmed");
	} else {
		jQuery('#dynamic-content').removeClass("trimmed");
	}
};