/**
 * @package hoteliersmobile.js
 * @author Jeroen Weustink
 * @version 2.0
 * @copyright Hoteliers BV 2011
 */


if(navigator.userAgent.indexOf('MSIE') == -1) {
	
	/* Get jQuery */
	if (typeof jQuery == 'undefined') {
		google.load('jquery','1.6.2');
	} else {
		if (jQuery.fn.jquery < '1.4.0') {
			google.load('jquery','1.6.2');
		}
	}

	/* Hoteliers class */
	var hoteliers = 
	{
		
		/* General mobile function */
		mobile : function(options)
		{
			
			var defaults = {
				type : 'redirect',
				action : false,
				debug : false,
				label : {
					position : 'left',
					delay : 3000
				},
				browsers : {
					android : true,
					avantgo : true,
					blackberry : true,
					iemobile : true,
					iphone : true,
					ipod : true,
					ipad : true,
					opera_mobi : true,
					opera_mini : true,
					palm_os : true,
					psp : true,
					symbian : true
				}
			};
			
			options.label		= jQuery.extend(defaults.label, options.label);
			options.browsers	= jQuery.extend(defaults.browsers, options.browsers);
			var options			= jQuery.extend(defaults, options);
			
			var browsers	= '';
			jQuery.each(options.browsers, function(key, value) {
				if (value == true) {
					browsers += key.replace('_',' ')+'|';
				}
			});
			
			if (browsers == '') { return; }

			var regex			= new RegExp(browsers.substr(0,browsers.length-1),'i');
			var device 			= navigator.userAgent.match(regex);
			var referral 		= new String(escape(window.location));
			var windowlocation	= options.url + '?ref=' + referral;		
			if (windowlocation.indexOf('disable-hoteliersmobile') > 0) {
				this.cookie.set('hoteliersmobile','disabled');
			}
			
			if (device != null) {
				
				if (this.cookie.get('hoteliersmobile') != 'disabled') {
					
					switch (options.type) {
						
						case 'redirect':
							this.action_redirect({ 
								url : windowlocation 
							});
						break;
						
						case 'label':
							this.action_label({ 
								url : windowlocation,
								label : options.label
							});
						break;
					
						case 'custom':
							options.action();
						break;
		
					}
					
				} else if (this.cookie.get('hoteliersmobile') == 'disabled') {
					
					switch (options.type) {
					
						case 'redirect':
						case 'label':
							this.action_label({ 
								url : windowlocation,
								label : options.label
							});
						break;
					
						case 'custom':
							options.action();
						break;
						
					}

				}
			}
			
		},
		
		action_label :	function(options)
		{
			if (options.url.indexOf('/nl/') != -1) {
				var buttonText	= 'Mobiele versie';
			} else if (options.url.indexOf('/de/') != -1) {
				var buttonText	= 'Mobile version';
			} else if (options.url.indexOf('/fr/') != -1) {
				var buttonText	= 'La version mobile';
			} else if (options.url.indexOf('/es/') != -1) {
				var buttonText	= 'Versión para móviles';
			} else if (options.url.indexOf('/it/') != -1) {
				var buttonText	= 'Versione Mobile';
			} else {
				var buttonText	= 'Mobile version';
			}

			jQuery(document).ready(function(){
				
				jQuery('body').prepend('<div id="hoteliersmobile" onclick="window.location=\''+options.url+'\'">'+buttonText+' &raquo;</div>');
				
				var windowheight	= jQuery(window).height();
				var windowwidth		= jQuery(window).width();
				
				jQuery('#hoteliersmobile').css('position','absolute');
				jQuery('#hoteliersmobile').css('zIndex','2000000000');
				jQuery('#hoteliersmobile').css('margin',0);
				jQuery('#hoteliersmobile').css('background','#CCC');
				jQuery('#hoteliersmobile').css('color',jQuery('body').css('color'));
				jQuery('#hoteliersmobile').css('textAlign','center');
				jQuery('#hoteliersmobile').css('padding',30);
				jQuery('#hoteliersmobile').css('width',(windowwidth/2));
				jQuery('#hoteliersmobile').css('fontSize',(windowwidth/16));
				
				var objectheight	= jQuery('#hoteliersmobile').height();
				var objectwidth		= jQuery('#hoteliersmobile').width();
				var offsettop		= (windowheight/2)-(objectheight/2)-60;
				var offsetleft		= (windowwidth/2)-(objectwidth/2)-60;
				var overflow		= jQuery('body').css('overflowX');
				
				jQuery('body').css('overflowX','hidden');
				
				switch (options.label.position) {
				
					case 'top':
						jQuery('#hoteliersmobile').css('top',0);
						jQuery('#hoteliersmobile').css('left', offsetleft);
						jQuery('#hoteliersmobile').css('margin','0 auto');
						jQuery('#hoteliersmobile').css('border-left','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').css('border-right','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').css('border-bottom','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').delay(options.label.delay).animate({
							top : '-' + (objectheight+60)
						}, 1000, function(){
							jQuery('#hoteliersmobile').hide();
							jQuery('body').css('overflowX',overflow);
						});
					break;
				
					case 'right':
						jQuery('#hoteliersmobile').css('right',0);
						jQuery('#hoteliersmobile').css('top', offsettop);
						jQuery('#hoteliersmobile').css('border-left','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').css('border-top','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').css('border-bottom','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').delay(options.label.delay).animate({
							right : '-' + (windowwidth/2+60)
						}, 1000, function(){
							jQuery('#hoteliersmobile').hide();
							jQuery('body').css('overflowX',overflow);
						});
					break;
					
					case 'left':
						jQuery('#hoteliersmobile').css('left',0);
						jQuery('#hoteliersmobile').css('top', offsettop);
						jQuery('#hoteliersmobile').css('border-right','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').css('border-top','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').css('border-bottom','5px solid '+jQuery('body').css('color'));
						jQuery('#hoteliersmobile').delay(options.label.delay).animate({
							left : '-' + (windowwidth/2+60)
						}, 1000, function(){
							jQuery('#hoteliersmobile').hide();
							jQuery('body').css('overflowX',overflow);
						});
					break;
				}
			});
		},
		
		action_redirect : function(options)
		{
			window.location	= options.url;
		},
		
		cookie : 
		{
			set : function(name, value)
			{

				var expire	= '';
				var now 	= new Date();
				var then 	= now.getTime() + (1 * 24 * 60 * 60 * 1000);
				
				now.setTime(then);
				
				expire 			= '; expires=' + now.toGMTString();
				document.cookie = name + "=" + escape(String(value)) + '; path=/' + expire;
			},
			
			get : function(name)
			{
				var cookiecontent = new String();
				
				if(document.cookie.length > 0) {
					
					var cookiename	= name + '=';
					var cookiebegin	= document.cookie.indexOf(cookiename);
					var cookieend	= 0;
					
					if(cookiebegin > -1) {
						cookiebegin += cookiename.length;
						cookieend    = document.cookie.indexOf(";",cookiebegin);
						
						if(cookieend < cookiebegin) { 
							cookieend = document.cookie.length; 
						}
						
						cookiecontent = document.cookie.substring(cookiebegin,cookieend);
					}
				}
				return unescape(cookiecontent);
			}
		}
	}
} else {
	var hoteliers = {};
	hoteliers.mobile = function(){};
}





	
