/***
 * jTruncate - Text Truncation for jQuery
 * http://blog.jeremymartin.name/2008/02/jtruncate-text-truncation-for-jquery.html
 */
(function($){$.fn.jTruncate=function(h){var i={length:300,minTrail:20,moreText:"more",lessText:"less",ellipsisText:"...",moreAni:"",lessAni:""};var h=$.extend(i,h);return this.each(function(){obj=$(this);var a=obj.html();if(a.length>h.length+h.minTrail){var b=a.indexOf(' ',h.length);if(b!=-1){var b=a.indexOf(' ',h.length);var c=a.substring(0,b);var d=a.substring(b,a.length-1);obj.html(c+'<span class="truncate_ellipsis">'+h.ellipsisText+'</span>'+'<span class="truncate_more">'+d+'</span>');obj.find('.truncate_more').css("display","none");obj.append('<div class="clearboth">'+'<a href="#" class="truncate_more_link">'+h.moreText+'</a>'+'</div>');var e=$('.truncate_more_link',obj);var f=$('.truncate_more',obj);var g=$('.truncate_ellipsis',obj);e.click(function(){if(e.text()==h.moreText){f.show(h.moreAni);e.text(h.lessText);g.css("display","none")}else{f.hide(h.lessAni);e.text(h.moreText);g.css("display","inline")}return false})}}})}})(jQuery);

/***
 * Three little icons in header
 */
var images = [];
images[0] = '/static/project/ploegsma/img/star.png';
//images[1] = '/static/project/ploegsma/img/loupe.png';
//images[2] = '/static/project/ploegsma/img/enveloppe.png';

var url = [];
url[0] = 'ploegsma.nl';

var Ploegsma = {
	init: function() { 
		var bannerDiv = document.getElementsByClassName('banner')[0];
		
		// retreive additional search link
		var hrefDiv = bannerDiv.getElementsByTagName('a');
		for (var i = 0; i < hrefDiv.length; i++) {
			if(hrefDiv[i].title.toLowerCase()=='zoeken') var y = i;
		}
		// get HREF from additional search link
		//url[1] = hrefDiv[y].href;
		
		// hide additional search link
		//hrefDiv[y].style.display='none'
		
		// add 3 additional images to the header
		var additionalDiv = Library.createNewHTML('div', 'additional', '', '', bannerDiv)
		for (var i = 0; i < images.length; i++) {
			var linkDiv = Library.createNewHTML('a', '','', '#', additionalDiv)
			Library.createNewHTML('img', '','', images[i], linkDiv)
			// add bookmark
			if (i==0) linkDiv.onclick = function(){ 

				if (document.all){
					window.external.AddFavorite(self.location,document.title);
				}
				else if (window.sidebar){
					window.sidebar.addPanel(document.title,self.location,'');
				}

			}
			// add search link
			// if (i==1) linkDiv.onclick = function(){ window.location = url[1]; } //removed search
			// open form div
			// if (i==2) linkDiv.onclick = function(){ Library.removeClass(document.getElementsByClassName('form popup hide')[0],'hide') } //functionality is parked
		}
	
		// close button form div
		//document.getElementById('form-close-button').onclick = function(){ Library.addClass(document.getElementsByClassName('form popup')[0],'hide') }

	}
}

// library functions
var Library = {
	createNewHTML: function(tag, className, id, innerHTML, parent){
		var createDiv = document.createElement(tag);
		if(className) createDiv.className = className;
		if(innerHTML){  
			if (tag=="img"){
				createDiv.src = innerHTML;
			}else if (tag=="input"){
				createDiv.type = innerHTML;
			}else if (tag=="a"){
				createDiv.href = innerHTML;
			}else{
				createDiv.innerHTML = innerHTML
			}
		}
		if(id) createDiv.id = id;
		parent.appendChild(createDiv);	
		return createDiv;
	},
	addClass: function(o, c) {
		this.removeClass(o, c);
		return o && (o.className += (o.className.length > 0 ? ' ' : '') + c);
	},
	removeClass: function(o, c) {
		return o && (o.className = o.className.replace(new RegExp('^' + c + '\\b\\s*|\\s*\\b' + c + '\\b', 'g'), ''));
	}
}
document.getElementsByClassName = function (needle){
    var s = document.getElementsByTagName('*'), i = s.length, r = [], e, c;
    needle = ' ' + needle + ' ';
    while (i--){
        e = s.item(i);
        if (e.className){
            c = ' ' + e.className + ' ';
            if (c.indexOf(needle) != -1) r.push(e);
        }
    }
    return r;
}

$(document).ready(function() {
	 Ploegsma.init();
	 $("body.website .books-overview.category p.teaser").jTruncate({  
		length: 75,  
		minTrail: 10,  
		moreText: "",  
		lessText: "",  
		ellipsisText: "..."
	});
});

//wpgCarousel plugin definition
$.fn.wpgCarousel = function(options) {
	var defaults = {
		wrap: 'both',
		scroll: 1,
		auto: 0,
		//visible: 3,
		initCallback: function() {},
		itemVisibleInCallback: {
		}
	};

	var opts = $.extend(defaults, options);
	
	// Our plugin implementation code goes here.
	return this.each(function() {
		var $this = $(this);
		$this.addClass('related-books-carousel');
		/*init carousel*/
		$('.related-books-carousel').find('ul').jcarousel(opts);
	});
};


$.fn.wpgCarouselBanner = function(options) {
	var defaults = {
        vertical: false,
		wrap: 'circular',
		scroll: 1,
		auto: 4,
		animation: 'easeInOutBounce',
		initCallback: fnCreateTabs,
		itemVisibleInCallback: {
			onBeforeAnimation: syncTabs
		}
	};
	// Extend our default options with those provided.
	var opts = $.extend(defaults, options);
	
	
	/*create tabs*/
	function fnCreateTabs(carousel) {
		var wpgCarouselTabbed = $('.wpg-carousel-header-tabbed');
		if (wpgCarouselTabbed && wpgCarouselTabbed.length > 0) {
			var length = $(wpgCarouselTabbed).find('ul').length;
			var tabs = '';
			//create anchor as tabs
			for(var i = 1; i <= length; i++){
				tabs += '<a href="#">' + i + '</a>';
			}
			if (tabs != '') {
				
				$('.jcarousel-control a').bind('click', function() {
					carousel.scroll($.jcarousel.intval($(this).text()));
					return false;
				});
				//prevent autoscroll on hover
				if (carousel.options.auto) {
					$(wpgCarouselTabbed).find('.jcarousel-container')
						.bind('mouseenter', function() { carousel.stopAuto(); })
						.bind('mouseleave', function() { carousel.startAuto(); });
				}
			}
		}
	}
	
	/*synchronize tabs*/
	function syncTabs(carousel, li, idx, action) {
		$(li).parents('.jcarousel-container').find('.jcarousel-control a')
			.removeClass('current') //a a a ...
			.parent() //.jcarousel-control
				.children('a:eq('+(idx-1)+')') 
					.addClass('current');
			//alert($(li).attr('class').split(' ')[0]);
		carousel.stopAuto();
		carousel.startAuto();
	}
	
	// Our plugin implementation code goes here.
	return this.each(function() {
		var $this = $(this);
		$this.addClass('wpg-carousel-banner');
		/*init carousel*/
		$('.wpg-carousel-banner').find('ul').jcarousel(opts);
	});
};

// add extra function to document.ready
$(document).ready(function() {
	$('.author-books-published-carousel').wpgCarousel();
	$('.media-overview-carousel').wpgCarouselBanner();
});
