(function($){$.toJSON=function(o)
{if(typeof(JSON)=='object'&&JSON.stringify)
return JSON.stringify(o);var type=typeof(o);if(o===null)
return"null";if(type=="undefined")
return undefined;if(type=="number"||type=="boolean")
return o+"";if(type=="string")
return $.quoteString(o);if(type=='object')
{if(typeof o.toJSON=="function")
return $.toJSON(o.toJSON());if(o.constructor===Date)
{var month=o.getUTCMonth()+1;if(month<10)month='0'+month;var day=o.getUTCDate();if(day<10)day='0'+day;var year=o.getUTCFullYear();var hours=o.getUTCHours();if(hours<10)hours='0'+hours;var minutes=o.getUTCMinutes();if(minutes<10)minutes='0'+minutes;var seconds=o.getUTCSeconds();if(seconds<10)seconds='0'+seconds;var milli=o.getUTCMilliseconds();if(milli<100)milli='0'+milli;if(milli<10)milli='0'+milli;return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array)
{var ret=[];for(var i=0;i<o.length;i++)
ret.push($.toJSON(o[i])||"null");return"["+ret.join(",")+"]";}
var pairs=[];for(var k in o){var name;var type=typeof k;if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;if(typeof o[k]=="function")
continue;var val=$.toJSON(o[k]);pairs.push(name+":"+val);}
return"{"+pairs.join(", ")+"}";}};$.evalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);return eval("("+src+")");};$.secureEvalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};$.quoteString=function(string)
{if(string.match(_escapeable))
{return'"'+string.replace(_escapeable,function(a)
{var c=_meta[a];if(typeof c==='string')return c;c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};var _escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var _meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};})(jQuery);

$(document).ready(function() {
	// canvasText plugin
	jQuery.fn.canvasText = function(_options){
		var _options = jQuery.extend({
			textFont: "20pt Verdana, sans-serif",
			textColor: '#000',
			textAngle:90,
			cWidth: 100,
			cHeight: 100,
			tOffsetX: 0,
			tOffsetY: 0
		},_options);

		return this.each(function(){

			if(canvasFail) return;
			// gallery options
			var _this = jQuery(this);
			var _thisText = _this.text();
			var _thisFont = _options.textFont;
			var _thisColor = _options.textColor;
			var _angle = (_options.textAngle*Math.PI)/180;
			var _cWidth = _options.cWidth;
			var _cHeight = _options.cHeight;
			var _tOffsetX = _options.tOffsetX;
			var _tOffsetY = _options.tOffsetY;

			// create canvas
			var _canvas = document.createElement('CANVAS');
			var ctx;
			if (window.G_vmlCanvasManager && window.attachEvent && !window.opera) {
				_canvas = window.G_vmlCanvasManager.initElement(_canvas);
			}
			ctx = _canvas.getContext('2d');

			if(!(typeof ctx.fillText === 'function')) {
				canvasFail=true;
				return;
			}
			_this.empty().append(_canvas);

			// init canvas
			_canvas.width = _cWidth;
			_canvas.height = _cHeight;

			// draw on canvas
			ctx.fillStyle = _thisColor;
			ctx.font = _thisFont;
			ctx.rotate(_angle);
			ctx.fillText(_thisText, _tOffsetX, _tOffsetY);
		});
	};
});

// page init
$(window).bind("load", function() {
	initOpenClose();
	if($.browser.msie){
		initImageRotations();
	}

	$.eCommerce.init();
});

(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);
})();

$.eCommerce = {

	_gaq: null,
	page: null,
	subPage: '',
	shortTags: null,
	locationpath: null,
	
	defaultOptions: {
		pageTag:		'OV',
		supplierTag:            'OV',
		posTag:			'OV',
		supplier:		'',
		pos:			'',
		el:                 '',
		url:			'',
		commission:		'0.11'
	},

	init: function(){
		this._gaq = _gaq || [];
		this._gaq.push(['_setAccount', 'UA-10823190-18']);
		this._gaq.push(['_trackPageview']);
		this.setPage();
	},

	setPage: function(){
		var pageParts = location.pathname;
		this.locationpath = location.pathname;
		if(pageParts == '/'){
			this.page = 'homepagina';
		} else {
			pageParts = pageParts.split('/');
			this.page = pageParts[1]

			if(pageParts.length > 2){
				this.subPage = pageParts[2];
			}
		}
               
	},

	openPage: function(options){
		this.options = $.extend({},this.defaultOptions,options);
		if(this.options.supplier == ''){
			var index = options.el.selectedIndex;
	        var ddVal = $(options.el.options[index]).val();
			if(ddVal == 'alle-aanbieders'){
				window.open('/alle-aanbieders/');
				return;
			}
			var ddJson = eval('(' + ddVal + ')');
			this.options = $.extend({},this.options,ddJson);
		}		
		
		if(this.shortTags == null){
			this.loadShortTags();
		} else {
			this.openPageContinue();
		}
	},

	openPageContinue: function(){
		var pageTag;
		if(this.subPage != ''){
			pageTag = this.page + '-' + this.subPage;
		} else {
			pageTag = this.page;
		}

		this.buildOrderId(pageTag);
		this.doTrans();
	},

	loadShortTags: function(){
		$.getJSON('/shortTags.php', function(data) {
			$.eCommerce.shortTags = data;
			$.eCommerce.openPageContinue();
		});
	},

	buildOrderId: function(pageTag){
		var orderId = this.options.posCode;
		orderId += this.options.supplierCode;
		if(this.shortTags[pageTag] == undefined){
			orderId += 'OV';
		} else {
			orderId += this.shortTags[pageTag];
		}

		this.orderId = orderId;
	},

	doTrans: function(){
		_gaq.push(['_addTrans',
			this.orderId,           // order ID - required
			'',						// affiliation or store name
			this.options.commission,// total - required
			'',						// tax
			'',						// shipping
			'',						// city
			this.locationpath,		// state or province
			''						// country
		]);
                var newPos = this.options.pos.replace("'","\'");
		_gaq.push(['_addItem',
			this.orderId,           // order ID - required
			this.options.supplier,	// SKU/code - required
			newPos,       // product name
			this.page,				// category or variation
			this.options.commission,// unit price - required
			'1'						// quantity - required
		]);
		_gaq.push(['_trackTrans']); //submits transaction to the Analytics servers

		this.openUrl();
	},

	openUrl: function(){
		var url;
		if(this.options.url != ''){
			if(this.options.url == 'value'){
				url = this.options.el.value;
			} else {
				url = this.options.url;
			}
		} else if (this.options.el.href != undefined || this.options.el.href != ''){
			url = this.options.el.href;
		}
	}
}

$("form[rel=external]").each(function(i){
	this.target="_blank";
});

function initInfoText(){
	var content = $('.infotext');
	if(content.length == 0){
		var paging = $('.paging').height(15);
		return;
	} else {
		// The height must be dynamic and is determined by the height of the infotext
		var infoHeight = $('.infotext').height();
		infoHeight += 70;
		var paging = $('.paging').height(infoHeight);
	}
	content[0].style.top = ($('.paging').offset().top+60)+'px';
}
function initImageRotations() {
	// image rotation
	var _angle = -4;
	$('.img-border').each(function(){
		var _img = $(this).find('img');
		_img.rotate(_angle);
	});

if(!$.browser.msie){
	$('.last-minutes-holder .row .img-border .text-row strong').canvasText({
		textFont: "bold 11px Arial, sans-serif",
		textColor: '#fff',
		textAngle:-4,
		cWidth: 120,
		cHeight: 20,
		tOffsetX: 5,
		tOffsetY: 20
	});
	$('.last-minutes-holder .row .img-border .text-row span').canvasText({
		textFont: "11px Arial, sans-serif",
		textColor: '#ddd',
		textAngle:-4,
		cWidth: 30,
		cHeight: 20,
		tOffsetX: 0,
		tOffsetY: 12
	});
	$('.last-minutes-holder .row .img-border .price-holder strong').canvasText({
		textFont: (($.browser.msie ? '' : 'bold ')+"bold 17px Arial, sans-serif"),
		textColor: '#404040',
		textAngle:-4,
		cWidth: 50,
		cHeight: 60,
		tOffsetX: 4,
		tOffsetY: 18
	});
	$('.last-minutes-holder .row .img-border .price-holder span').canvasText({
		textFont: "bold 12px Arial, sans-serif",
		textColor: '#404040',
		textAngle:-4,
		cWidth: 8,
		cHeight: 60,
		tOffsetX: 2,
		tOffsetY: 18
	});
	$('.top-box .content ul a .price-holder strong').canvasText({
		textFont: (($.browser.msie ? '' : 'bold ')+"bold 11px Arial, sans-serif"),
		textColor: '#404040',
		textAngle:-8,
		cWidth: 30,
		cHeight: 60,
		tOffsetX: -1,
		tOffsetY: 14
	});
	$('.top-box .content ul a .price-holder span').canvasText({
		textFont: (($.browser.msie ? '' : 'bold ')+"10px Arial, sans-serif"),
		textColor: '#404040',
		textAngle:-5,
		cWidth: 8,
		cHeight: 60,
		tOffsetX: 1,
		tOffsetY: 14
	});
	$('.last-minutes-holder .row .flightimg-border .price-holder strong').canvasText({
		textFont: (($.browser.msie ? '' : 'bold ')+"bold 11px Arial, sans-serif"),
		textColor: '#404040',
		textAngle:-4,
		cWidth: 30,
		cHeight: 60,
		tOffsetX: 0,
		tOffsetY: 14
	});
	$('.last-minutes-holder .row .flightimg-border .price-holder span').canvasText({
		textFont: "bold 10px Arial, sans-serif",
		textColor: '#404040',
		textAngle:-4,
		cWidth: 8,
		cHeight: 60,
		tOffsetX: 1,
		tOffsetY: 14
	});
}
}

// open-close blocks function
function initOpenClose() {
	var _slideSpeed = 600;
	var _activeClass = 'expanded';
	$('.open-close').each(function(){
		var _holder = $(this);
		var _opener = _holder.find('.opener');
		var _openerLink = _holder.find('.openerLink');
		var _slider = _holder.find('.slide');
		_opener.click(function(){
			if(_holder.hasClass(_activeClass)) {
				_slider.slideUp(_slideSpeed,function(){
					_holder.removeClass(_activeClass);
					initInfoText();
				});
			} else {
				_holder.addClass(_activeClass);
				_slider.slideDown(_slideSpeed,function(){
					initInfoText();
				});
			}
			return false;
		});
		_openerLink.click(function(){
			if(_holder.hasClass(_activeClass)) {
				_slider.slideUp(_slideSpeed,function(){
					_holder.removeClass(_activeClass);
					initInfoText();
				});
			} else {
				_holder.addClass(_activeClass);
				_slider.slideDown(_slideSpeed,function(){
					initInfoText();
				});
			}
			return false;
		});
		if(_holder.hasClass(_activeClass)) _slider.show();
		else _slider.hide();
	});
	// Open first element
	$(document).ready(function() {
		$('.opener:first').click();
	});
}

canvasFail = false;



$(document).ready(function() {
	/* jquery image rotation plugin */
	jQuery.fn.rotate = function(angle,whence) {
		var p = this.get(0);

		// we store the angle inside the image tag for persistence
		if (!whence) {
			p.angle = ((p.angle==undefined?0:p.angle) + angle) % 360;
		} else {
			p.angle = angle;
		}

		if (p.angle >= 0) {
			var rotation = Math.PI * p.angle / 180;
		} else {
			var rotation = Math.PI * (360+p.angle) / 180;
		}
		var costheta = Math.cos(rotation);
		var sintheta = Math.sin(rotation);

		if (document.all && !window.opera) {
			var canvas = document.createElement('img');

			canvas.src = p.src;
			canvas.height = p.height;
			canvas.width = p.width;

			//canvas.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",SizingMethod='auto expand')";

		} else {
			if(false){
				var canvas = document.createElement('canvas');
				if (!p.oImage) {
					canvas.oImage = new Image();
					canvas.oImage.src = p.src;
				} else {
					canvas.oImage = p.oImage;
				}

				canvas.style.width =  canvas.width = Math.abs(costheta*canvas.oImage.width) + Math.abs(sintheta*canvas.oImage.height);
				canvas.style.height = canvas.height = Math.abs(costheta*canvas.oImage.height) + Math.abs(sintheta*canvas.oImage.width);

				var context = canvas.getContext('2d');
				context.save();
				if (rotation <= Math.PI/2) {
					context.translate(sintheta*canvas.oImage.height,0);
				} else if (rotation <= Math.PI) {
					context.translate(canvas.width,-costheta*canvas.oImage.height);
				} else if (rotation <= 1.5*Math.PI) {
					context.translate(-costheta*canvas.oImage.width,canvas.height);
				} else {
					context.translate(0,-sintheta*canvas.oImage.width);
				}
				context.rotate(rotation);
				context.drawImage(canvas.oImage, 0, 2, canvas.oImage.width, canvas.oImage.height);
				context.restore();
			}
		}
		if(!canvas) var canvas = {};
		canvas.id = p.id;
		canvas.angle = p.angle;
		//p.parentNode.replaceChild(canvas, p);
	};
});

$(document).ready(function() {
	jQuery.fn.rotateRight = function(angle) {
		this.rotate(angle==undefined?90:angle);
	};
});

$(document).ready(function() {
	jQuery.fn.rotateLeft = function(angle) {
		this.rotate(angle==undefined?-90:-angle);
	};
});

/* vakantieshop.js */
/**
 * Behavior of the searchfield
*/
$(document).ready(function($) {
	$('#s').bind('click',function(e){
		$(e.target).val('');
	});
	$('#s').bind('blur',function(e){
		if($(e.target).val()==''){
			$(e.target).val('Zoeken...');
		}
	});
	$('#searchsubmit').bind('click',function(e){
		if($('#s').val == ''){
			$('#s').animate( {color: '#EC1C24'}, 1000 );
		}
	});
});

$(document).ready(function($)  {
	$('img').each(function() {
		if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
			// image was broken, replace with your new image
	//		this.src = "/images/affiliates/default.gif";
		}
	});
});

$(document).ready(function() {
	function imgErr(obj, name){
		var sURL = '';
		switch(name){
			case 'top-aanbiedingen':
			sURL = '/wp-content/themes/vakantieshop/images/defaultphotosmall.jpg';
			break;
			case 'supplier':
			sURL = '/images/affiliates/default.gif';
			break;
			case 'productfeed':
			sURL = ' /wp-content/themes/vakantieshop/images/defaultphoto.jpg';
			break;
			case 'vliegtickets':
			sURL = ' /wp-content/themes/vakantieshop/images/defaultvliegen.jpg';
			break;
		}
		obj.src = sURL;
	}
});

var clickOnLink = false;

function clickAccommodation(el, url, pagetracker, open){
    
	var getclicky = 321;

	if(el.tagName == 'A'){
		clickOnLink = true;
	}

	if(el.tagName == 'DIV'){
		if(clickOnLink){
			clickOnLink = false;
		} else {
			pageTracker._trackPageview(pagetracker);
			clicky.goal(321);
			if(open == true){
				window.open(url);
			}
		}
	}
}
