﻿/* 

	Facebook likebox4wordpress 
	Version:    1.0
	Created By: Social Media Elite Club
	Website:    http://socialmediaeliteclub.de/
	
	Copyright © 2011 Social Media Elite Club
	

 */
var callback_url;
(function($) {


	
	$.fn.setUrlCallback = function (urlCallBack){
		callback_url = urlCallBack;
		
	};	
	$.fn.facebookTrafficPop = function(options) {

		/*
		 * Setup the options for the tooltip that can be accessed from outside
		 * the plugin
		 */
		var defaults = {
			title : "Your Popup Title",
			message : "Your popup / call to action message!",
			showfaces : true,
			timeout : 25,
			closeable : true,
			wait : 0,
			lang : "de"
		};

		// Extend options and apply defaults if they are not set
		var options = $.extend(defaults, options);

		/*
		 * NEW In Version 1.4 - Localization Setup the localzation strings, add
		 * your own if needed
		 */
		var tstrings = {

			// This is your wait text i.e. '{or wait} xx seconds'
			orwait : {
				en : "Or wait",
				fr : "Ou attendre",
				de : "Order warten",
				it : "O attendere",
				es : "O esperar"
			},

			// seconds string
			seconds : {
				en : "Seconds",
				fr : "Secondes",
				de : "Sekunden",
				it : "Secondi",
				es : "Segundos"
			},

			closeable : {
				en : "Close",
				fr : "Fermer",
				de : "Später zum Fan werden",
				it : "Chiudi",
				es : "Cerrar"
			}

		}

		/*
		 * Create a function that builds the popup html markup. Then, prepend
		 * the popup to the body
		 */
		getPopHTML = function() {

			var tPop = '<div id="fblikebg"></div><div id="facebook-likebox4wordpress"><div id="popup_head"><div id="closeable"></div>'
					+'<div style="clear:both"></div>'
					+'<a id="fb_dont_show_again" onclick="fb_dont_show_again()" href="#">Ich bin schon Fan x</a><h1>'
					+ defaults.title
					+ '</h1></div><div id="popupMessage">'
					+ '<center><img id="fbigmicon" src="'
					+ defaults.icon
					+ '"></img><br/><span id="fbtext">'
					+ defaults.message
					+ '</span></center>'
					+ '<div style="clear:both"></div>'
					+ '</div><div id="buttonArea"><div id="actionHolder"><fb:like id="fbLikeButton" href="'
					+ defaults.url
					+ '" show_faces="'
					+ defaults.showfaces
					+ '" width="440"></fb:like></div>'
					//+ '<a id="fb-really-fr-link" onclick="fb_already_fan()"  href="#">is already fan x</a>'
						+ '<div id="fb-powerby-logo" ><span id="poweredby-text">powered by</span><a target="_blank" href="http://www.socialmediaeliteclub.de"><img src="http://socialmediaeliteclub.de/wp-content/themes/londoncreative/images/social-media-marketing-small-logo.jpg"></img></a></div>'
					+ '<div style="clear:both"></div></div></div></div>'

			// Return the pop up markup
			return tPop;

		}

		// Create a variable to hold the markup ( Needed For I.E 8 6 + 7 )
		var markup = getPopHTML();

		// Prepend the popup into the body of the page
		$('#fbtpdiv').html(markup);

		// Get cookie to see if they already clicked like
		var cook = readCookie('facebook-likebox4wordpress');

		// Get wait cookie
		var waitCook = readCookie('facebook-likebox4wordpresswait');

		// get Session
		var calledFunc = readCookie('facebook-likebox4wordpresscalled');
		
		// get dont show again session
		var is_show_able = false;
		is_show_able = readCookie('fb_dont_show_again');		
		// get already fan
		var is_already_fan = false;
		is_already_fan = readCookie('fb_already_fan');

		// Only show the pop up if the user has not clicked like already
		if ( is_already_fan != 'true'&& is_show_able != 'true') {

			// Set Function has called in first Time
			//createCookie('facebook-likebox4wordpresscalled', 'true', 30);

			// Get window width and height to center the pop up
			var windowWidth = document.documentElement.clientWidth;
			var windowHeight = document.documentElement.clientHeight;
			var popupHeight = $("#facebook-likebox4wordpress").height();
			var popupWidth = $("#facebook-likebox4wordpress").width();

			// Simple division will let us make sure the box is centered on all
			// screen resolutions
			$("#facebook-likebox4wordpress").css( {
				"position" : "absolute",
				"top" : windowHeight / 2 - popupHeight / 2,
				"left" : windowWidth / 2 - popupWidth / 2
			});
			$("#fblikebg").css( {
				"height" : windowHeight
			});

			// Check if the closeable is set to true
			if (defaults.closeable == true) {

				// If so, display a close button for the pop up
				$("#closeable")
						.html(
								'<a id="#fbflush" class="fbflush" onClick="fbLikeDump();" href="#">' + tstrings.closeable[defaults.lang] + ' x</a>');

			}

			// Set the background shadow active - higher opactity = darker
			// background shadow
			$("#fblikebg").css( {
				"opacity" : "0.2"
			});

			// Fade in the background shadow
			$("#fblikebg").fadeIn("slow");

			// Fade in the popup box
			$("#facebook-likebox4wordpress").fadeIn("slow");


			// Check if the script should wait between popups
			if (defaults.wait != 0) {

				// If so, set the wait cookie so it does not constantly pop up
				//createWait('facebook-likebox4wordpresswait', 'true', defaults.wait);

			}

			// Final parse check to ensure Like button appears on all browsers
			// of all speeds
			FB.XFBML.parse();

		} // End if

	}; // End Main Function

})(jQuery); // End Plugin

// Function already fan
function fb_already_fan(){
	var $ = jQuery;
	// Create the cookie to remember the user clicked like, 30 is the number
        // of days it will expire in.
	createCookie('fb_already_fan', 'true', 360);
	// Fade out the background shadow
	$("#fblikebg").fadeOut("slow");

	// Fade out the pop up itself
	$("#facebook-likebox4wordpress").fadeOut("slow");
}

// Function don't show again
function fb_dont_show_again(){
	var $ = jQuery;
	// Create the cookie to remember the user clicked like, 30 is the number
        // of days it will expire in.
	createCookie('fb_dont_show_again', 'true', 360);$
	// Fade out the background shadow
	$("#fblikebg").fadeOut("slow");

	// Fade out the pop up itself
	$("#facebook-likebox4wordpress").fadeOut("slow");
}

// This is our listener to check wether or not the user clicks the like button.
FB.Event.subscribe('edge.create', function(href) {

	    // If they did, close the pop up
		fbLikeDump(true);

});

// function to remove the pop up from the screen
function fbLikeDump(action) {
	var $ = jQuery;
	// Check if the user completed the like or if the timer ran out
	if (action == true) {

		// Create the cookie to remember the user clicked like, 30 is the number
		// of days it will expire in.
		createCookie('facebook-likebox4wordpress', 'true', 30);
		var data = {
			action: 'my_action',
			whatever: 1234
		};

		// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
		jQuery.post(callback_url, data, function(response) {
			$("#fb-traffic").html(response);
		});

	} // End if

	// Fade out the background shadow
	$("#fblikebg").fadeOut("slow");

	// Fade out the pop up itself
	$("#facebook-likebox4wordpress").fadeOut("slow");

}

// Begin counter code - for documentation visit:
// http://keith-wood.name/countdownRef.html
(function($) {
	function Countdown() {
		this.regional = [];
		this.regional[''] = {
			labels : [ 'Years', 'Months', 'Weeks', 'Days', 'Hours', 'Minutes',
					'Seconds' ],
			labels1 : [ 'Year', 'Month', 'Week', 'Day', 'Hour', 'Minute',
					'Second' ],
			compactLabels : [ 'y', 'm', 'w', 'd' ],
			whichLabels : null,
			timeSeparator : ':',
			isRTL : false
		};
		this._defaults = {
			until : null,
			since : null,
			timezone : null,
			serverSync : null,
			format : 'dHMS',
			layout : '',
			compact : false,
			significant : 0,
			description : '',
			expiryUrl : '',
			expiryText : '',
			alwaysExpire : false,
			onExpiry : null,
			onTick : null,
			tickInterval : 1
		};
		$.extend(this._defaults, this.regional['']);
		this._serverSyncs = []
	}
	var w = 'countdown';
	var Y = 0;
	var O = 1;
	var W = 2;
	var D = 3;
	var H = 4;
	var M = 5;
	var S = 6;
	$
			.extend(
					Countdown.prototype,
					{
						markerClassName : 'hasCountdown',
						_timer : setInterval(function() {
							$.countdown._updateTargets()
						}, 980),
						_timerTargets : [],
						setDefaults : function(a) {
							this._resetExtraLabels(this._defaults, a);
							extendRemove(this._defaults, a || {})
						},
						UTCDate : function(a, b, c, e, f, g, h, i) {
							if (typeof b == 'object' && b.constructor == Date) {
								i = b.getMilliseconds();
								h = b.getSeconds();
								g = b.getMinutes();
								f = b.getHours();
								e = b.getDate();
								c = b.getMonth();
								b = b.getFullYear()
							}
							var d = new Date();
							d.setUTCFullYear(b);
							d.setUTCDate(1);
							d.setUTCMonth(c || 0);
							d.setUTCDate(e || 1);
							d.setUTCHours(f || 0);
							d.setUTCMinutes((g || 0)
									- (Math.abs(a) < 30 ? a * 60 : a));
							d.setUTCSeconds(h || 0);
							d.setUTCMilliseconds(i || 0);
							return d
						},
						periodsToSeconds : function(a) {
							return a[0] * 31557600 + a[1] * 2629800 + a[2]
									* 604800 + a[3] * 86400 + a[4] * 3600
									+ a[5] * 60 + a[6]
						},
						_settingsCountdown : function(a, b) {
							if (!b) {
								return $.countdown._defaults
							}
							var c = $.data(a, w);
							return (b == 'all' ? c.options : c.options[b])
						},
						_attachCountdown : function(a, b) {
							var c = $(a);
							if (c.hasClass(this.markerClassName)) {
								return
							}
							c.addClass(this.markerClassName);
							var d = {
								options : $.extend( {}, b),
								_periods : [ 0, 0, 0, 0, 0, 0, 0 ]
							};
							$.data(a, w, d);
							this._changeCountdown(a)
						},
						_addTarget : function(a) {
							if (!this._hasTarget(a)) {
								this._timerTargets.push(a)
							}
						},
						_hasTarget : function(a) {
							return ($.inArray(a, this._timerTargets) > -1)
						},
						_removeTarget : function(b) {
							this._timerTargets = $.map(this._timerTargets,
									function(a) {
										return (a == b ? null : a)
									})
						},
						_updateTargets : function() {
							for ( var i = this._timerTargets.length - 1; i >= 0; i--) {
								this._updateCountdown(this._timerTargets[i])
							}
						},
						_updateCountdown : function(a, b) {
							var c = $(a);
							b = b || $.data(a, w);
							if (!b) {
								return
							}
							c.html(this._generateHTML(b));
							c[(this._get(b, 'isRTL') ? 'add' : 'remove') + 'Class']
									('countdown_rtl');
							var d = this._get(b, 'onTick');
							if (d) {
								var e = b._hold != 'lap' ? b._periods : this
										._calculatePeriods(b, b._show, this
												._get(b, 'significant'),
												new Date());
								var f = this._get(b, 'tickInterval');
								if (f == 1 || this.periodsToSeconds(e) % f == 0) {
									d.apply(a, [ e ])
								}
							}
							var g = b._hold != 'pause'
									&& (b._since ? b._now.getTime() < b._since
											.getTime()
											: b._now.getTime() >= b._until
													.getTime());
							if (g && !b._expiring) {
								b._expiring = true;
								if (this._hasTarget(a)
										|| this._get(b, 'alwaysExpire')) {
									this._removeTarget(a);
									var h = this._get(b, 'onExpiry');
									if (h) {
										h.apply(a, [])
									}
									var i = this._get(b, 'expiryText');
									if (i) {
										var j = this._get(b, 'layout');
										b.options.layout = i;
										this._updateCountdown(a, b);
										b.options.layout = j
									}
									var k = this._get(b, 'expiryUrl');
									if (k) {
										window.location = k
									}
								}
								b._expiring = false
							} else if (b._hold == 'pause') {
								this._removeTarget(a)
							}
							$.data(a, w, b)
						},
						_changeCountdown : function(a, b, c) {
							b = b || {};
							if (typeof b == 'string') {
								var d = b;
								b = {};
								b[d] = c
							}
							var e = $.data(a, w);
							if (e) {
								this._resetExtraLabels(e.options, b);
								extendRemove(e.options, b);
								this._adjustSettings(a, e);
								$.data(a, w, e);
								var f = new Date();
								if ((e._since && e._since < f)
										|| (e._until && e._until > f)) {
									this._addTarget(a)
								}
								this._updateCountdown(a, e)
							}
						},
						_resetExtraLabels : function(a, b) {
							var c = false;
							for ( var n in b) {
								if (n != 'whichLabels' && n.match(/[Ll]abels/)) {
									c = true;
									break
								}
							}
							if (c) {
								for ( var n in a) {
									if (n.match(/[Ll]abels[0-9]/)) {
										a[n] = null
									}
								}
							}
						},
						_adjustSettings : function(a, b) {
							var c;
							var d = this._get(b, 'serverSync');
							var e = 0;
							var f = null;
							for ( var i = 0; i < this._serverSyncs.length; i++) {
								if (this._serverSyncs[i][0] == d) {
									f = this._serverSyncs[i][1];
									break
								}
							}
							if (f != null) {
								e = (d ? f : 0);
								c = new Date()
							} else {
								var g = (d ? d.apply(a, []) : null);
								c = new Date();
								e = (g ? c.getTime() - g.getTime() : 0);
								this._serverSyncs.push( [ d, e ])
							}
							var h = this._get(b, 'timezone');
							h = (h == null ? -c.getTimezoneOffset() : h);
							b._since = this._get(b, 'since');
							if (b._since != null) {
								b._since = this.UTCDate(h, this._determineTime(
										b._since, null));
								if (b._since && e) {
									b._since.setMilliseconds(b._since
											.getMilliseconds()
											+ e)
								}
							}
							b._until = this.UTCDate(h, this._determineTime(this
									._get(b, 'until'), c));
							if (e) {
								b._until.setMilliseconds(b._until
										.getMilliseconds()
										+ e)
							}
							b._show = this._determineShow(b)
						},
						_destroyCountdown : function(a) {
							var b = $(a);
							if (!b.hasClass(this.markerClassName)) {
								return
							}
							this._removeTarget(a);
							b.removeClass(this.markerClassName).empty();
							$.removeData(a, w)
						},
						_pauseCountdown : function(a) {
							this._hold(a, 'pause')
						},
						_lapCountdown : function(a) {
							this._hold(a, 'lap')
						},
						_resumeCountdown : function(a) {
							this._hold(a, null)
						},
						_hold : function(a, b) {
							var c = $.data(a, w);
							if (c) {
								if (c._hold == 'pause' && !b) {
									c._periods = c._savePeriods;
									var d = (c._since ? '-' : '+');
									c[c._since ? '_since' : '_until'] = this
											._determineTime(d + c._periods[0]
													+ 'y' + d + c._periods[1]
													+ 'o' + d + c._periods[2]
													+ 'w' + d + c._periods[3]
													+ 'd' + d + c._periods[4]
													+ 'h' + d + c._periods[5]
													+ 'm' + d + c._periods[6]
													+ 's');
									this._addTarget(a)
								}
								c._hold = b;
								c._savePeriods = (b == 'pause' ? c._periods
										: null);
								$.data(a, w, c);
								this._updateCountdown(a, c)
							}
						},
						_getTimesCountdown : function(a) {
							var b = $.data(a, w);
							return (!b ? null : (!b._hold ? b._periods : this
									._calculatePeriods(b, b._show, this._get(b,
											'significant'), new Date())))
						},
						_get : function(a, b) {
							return (a.options[b] != null ? a.options[b]
									: $.countdown._defaults[b])
						},
						_determineTime : function(k, l) {
							var m = function(a) {
								var b = new Date();
								b.setTime(b.getTime() + a * 1000);
								return b
							};
							var n = function(a) {
								a = a.toLowerCase();
								var b = new Date();
								var c = b.getFullYear();
								var d = b.getMonth();
								var e = b.getDate();
								var f = b.getHours();
								var g = b.getMinutes();
								var h = b.getSeconds();
								var i = /([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;
								var j = i.exec(a);
								while (j) {
									switch (j[2] || 's') {
									case 's':
										h += parseInt(j[1], 10);
										break;
									case 'm':
										g += parseInt(j[1], 10);
										break;
									case 'h':
										f += parseInt(j[1], 10);
										break;
									case 'd':
										e += parseInt(j[1], 10);
										break;
									case 'w':
										e += parseInt(j[1], 10) * 7;
										break;
									case 'o':
										d += parseInt(j[1], 10);
										e = Math.min(e, $.countdown
												._getDaysInMonth(c, d));
										break;
									case 'y':
										c += parseInt(j[1], 10);
										e = Math.min(e, $.countdown
												._getDaysInMonth(c, d));
										break
									}
									j = i.exec(a)
								}
								return new Date(c, d, e, f, g, h, 0)
							};
							var o = (k == null ? l
									: (typeof k == 'string' ? n(k)
											: (typeof k == 'number' ? m(k) : k)));
							if (o)
								o.setMilliseconds(0);
							return o
						},
						_getDaysInMonth : function(a, b) {
							return 32 - new Date(a, b, 32).getDate()
						},
						_normalLabels : function(a) {
							return a
						},
						_generateHTML : function(c) {
							var d = this._get(c, 'significant');
							c._periods = (c._hold ? c._periods : this
									._calculatePeriods(c, c._show, d,
											new Date()));
							var e = false;
							var f = 0;
							var g = d;
							var h = $.extend( {}, c._show);
							for ( var i = Y; i <= S; i++) {
								e |= (c._show[i] == '?' && c._periods[i] > 0);
								h[i] = (c._show[i] == '?' && !e ? null
										: c._show[i]);
								f += (h[i] ? 1 : 0);
								g -= (c._periods[i] > 0 ? 1 : 0)
							}
							var j = [ false, false, false, false, false, false,
									false ];
							for ( var i = S; i >= Y; i--) {
								if (c._show[i]) {
									if (c._periods[i]) {
										j[i] = true
									} else {
										j[i] = g > 0;
										g--
									}
								}
							}
							var k = this._get(c, 'compact');
							var l = this._get(c, 'layout');
							var m = (k ? this._get(c, 'compactLabels') : this
									._get(c, 'labels'));
							var n = this._get(c, 'whichLabels')
									|| this._normalLabels;
							var o = this._get(c, 'timeSeparator');
							var p = this._get(c, 'description') || '';
							var q = function(a) {
								var b = $.countdown._get(c,
										'compactLabels' + n(c._periods[a]));
								return (h[a] ? c._periods[a]
										+ (b ? b[a] : m[a]) + ' ' : '')
							};
							var r = function(a) {
								var b = $.countdown._get(c,
										'labels' + n(c._periods[a]));
								return ((!d && h[a]) || (d && j[a]) ? '<span class="countdown_section"><span class="countdown_amount">'
										+ c._periods[a]
										+ '</span><br/>'
										+ (b ? b[a] : m[a]) + '</span>'
										: '')
							};
							return (l ? this._buildLayout(c, h, l, k, d, j)
									: ((k ? '<span class="countdown_row countdown_amount'
											+ (c._hold ? ' countdown_holding'
													: '')
											+ '">'
											+ q(Y)
											+ q(O)
											+ q(W)
											+ q(D)
											+ (h[H] ? this._minDigits(
													c._periods[H], 2) : '')
											+ (h[M] ? (h[H] ? o : '')
													+ this._minDigits(
															c._periods[M], 2)
													: '')
											+ (h[S] ? (h[H] || h[M] ? o : '')
													+ this._minDigits(
															c._periods[S], 2)
													: '')
											: '<span class="countdown_row countdown_show'
													+ (d || f)
													+ (c._hold ? ' countdown_holding'
															: '')
													+ '">'
													+ r(Y)
													+ r(O)
													+ r(W)
													+ r(D)
													+ r(H)
													+ r(M) + r(S)) + '</span>' + (p ? '<span class="countdown_row countdown_descr">' + p + '</span>'
											: '')))
						},
						_buildLayout : function(c, d, e, f, g, h) {
							var j = this._get(c, (f ? 'compactLabels'
									: 'labels'));
							var k = this._get(c, 'whichLabels')
									|| this._normalLabels;
							var l = function(a) {
								return ($.countdown._get(c,
										(f ? 'compactLabels' : 'labels')
												+ k(c._periods[a])) || j)[a]
							};
							var m = function(a, b) {
								return Math.floor(a / b) % 10
							};
							var o = {
								desc : this._get(c, 'description'),
								sep : this._get(c, 'timeSeparator'),
								yl : l(Y),
								yn : c._periods[Y],
								ynn : this._minDigits(c._periods[Y], 2),
								ynnn : this._minDigits(c._periods[Y], 3),
								y1 : m(c._periods[Y], 1),
								y10 : m(c._periods[Y], 10),
								y100 : m(c._periods[Y], 100),
								y1000 : m(c._periods[Y], 1000),
								ol : l(O),
								on : c._periods[O],
								onn : this._minDigits(c._periods[O], 2),
								onnn : this._minDigits(c._periods[O], 3),
								o1 : m(c._periods[O], 1),
								o10 : m(c._periods[O], 10),
								o100 : m(c._periods[O], 100),
								o1000 : m(c._periods[O], 1000),
								wl : l(W),
								wn : c._periods[W],
								wnn : this._minDigits(c._periods[W], 2),
								wnnn : this._minDigits(c._periods[W], 3),
								w1 : m(c._periods[W], 1),
								w10 : m(c._periods[W], 10),
								w100 : m(c._periods[W], 100),
								w1000 : m(c._periods[W], 1000),
								dl : l(D),
								dn : c._periods[D],
								dnn : this._minDigits(c._periods[D], 2),
								dnnn : this._minDigits(c._periods[D], 3),
								d1 : m(c._periods[D], 1),
								d10 : m(c._periods[D], 10),
								d100 : m(c._periods[D], 100),
								d1000 : m(c._periods[D], 1000),
								hl : l(H),
								hn : c._periods[H],
								hnn : this._minDigits(c._periods[H], 2),
								hnnn : this._minDigits(c._periods[H], 3),
								h1 : m(c._periods[H], 1),
								h10 : m(c._periods[H], 10),
								h100 : m(c._periods[H], 100),
								h1000 : m(c._periods[H], 1000),
								ml : l(M),
								mn : c._periods[M],
								mnn : this._minDigits(c._periods[M], 2),
								mnnn : this._minDigits(c._periods[M], 3),
								m1 : m(c._periods[M], 1),
								m10 : m(c._periods[M], 10),
								m100 : m(c._periods[M], 100),
								m1000 : m(c._periods[M], 1000),
								sl : l(S),
								sn : c._periods[S],
								snn : this._minDigits(c._periods[S], 2),
								snnn : this._minDigits(c._periods[S], 3),
								s1 : m(c._periods[S], 1),
								s10 : m(c._periods[S], 10),
								s100 : m(c._periods[S], 100),
								s1000 : m(c._periods[S], 1000)
							};
							var p = e;
							for ( var i = Y; i <= S; i++) {
								var q = 'yowdhms'.charAt(i);
								var r = new RegExp('\\{' + q + '<\\}(.*)\\{'
										+ q + '>\\}', 'g');
								p = p.replace(r,
										((!g && d[i]) || (g && h[i]) ? '$1'
												: ''))
							}
							$.each(o, function(n, v) {
								var a = new RegExp('\\{' + n + '\\}', 'g');
								p = p.replace(a, v)
							});
							return p
						},
						_minDigits : function(a, b) {
							a = '' + a;
							if (a.length >= b) {
								return a
							}
							a = '0000000000' + a;
							return a.substr(a.length - b)
						},
						_determineShow : function(a) {
							var b = this._get(a, 'format');
							var c = [];
							c[Y] = (b.match('y') ? '?' : (b.match('Y') ? '!'
									: null));
							c[O] = (b.match('o') ? '?' : (b.match('O') ? '!'
									: null));
							c[W] = (b.match('w') ? '?' : (b.match('W') ? '!'
									: null));
							c[D] = (b.match('d') ? '?' : (b.match('D') ? '!'
									: null));
							c[H] = (b.match('h') ? '?' : (b.match('H') ? '!'
									: null));
							c[M] = (b.match('m') ? '?' : (b.match('M') ? '!'
									: null));
							c[S] = (b.match('s') ? '?' : (b.match('S') ? '!'
									: null));
							return c
						},
						_calculatePeriods : function(c, d, e, f) {
							c._now = f;
							c._now.setMilliseconds(0);
							var g = new Date(c._now.getTime());
							if (c._since) {
								if (f.getTime() < c._since.getTime()) {
									c._now = f = g
								} else {
									f = c._since
								}
							} else {
								g.setTime(c._until.getTime());
								if (f.getTime() > c._until.getTime()) {
									c._now = f = g
								}
							}
							var h = [ 0, 0, 0, 0, 0, 0, 0 ];
							if (d[Y] || d[O]) {
								var i = $.countdown._getDaysInMonth(f
										.getFullYear(), f.getMonth());
								var j = $.countdown._getDaysInMonth(g
										.getFullYear(), g.getMonth());
								var k = (g.getDate() == f.getDate() || (g
										.getDate() >= Math.min(i, j) && f
										.getDate() >= Math.min(i, j)));
								var l = function(a) {
									return (a.getHours() * 60 + a.getMinutes())
											* 60 + a.getSeconds()
								};
								var m = Math
										.max(
												0,
												(g.getFullYear() - f
														.getFullYear())
														* 12
														+ g.getMonth()
														- f.getMonth()
														+ ((g.getDate() < f
																.getDate() && !k)
																|| (k && l(g) < l(f)) ? -1
																: 0));
								h[Y] = (d[Y] ? Math.floor(m / 12) : 0);
								h[O] = (d[O] ? m - h[Y] * 12 : 0);
								f = new Date(f.getTime());
								var n = (f.getDate() == i);
								var o = $.countdown._getDaysInMonth(f
										.getFullYear()
										+ h[Y], f.getMonth() + h[O]);
								if (f.getDate() > o) {
									f.setDate(o)
								}
								f.setFullYear(f.getFullYear() + h[Y]);
								f.setMonth(f.getMonth() + h[O]);
								if (n) {
									f.setDate(o)
								}
							}

							var p = Math
									.floor((g.getTime() - f.getTime()) / 1000);
							var q = function(a, b) {
								h[a] = (d[a] ? Math.floor(p / b) : 0);
								p -= h[a] * b
							};
							q(W, 604800);
							q(D, 86400);
							q(H, 3600);
							q(M, 60);
							q(S, 1);
							if (p > 0 && !c._since) {
								var r = [ 1, 12, 4.3482, 7, 24, 60, 60 ];
								var s = S;
								var t = 1;
								for ( var u = S; u >= Y; u--) {
									if (d[u]) {
										if (h[s] >= t) {
											h[s] = 0;
											p = 1
										}
										if (p > 0) {
											h[u]++;
											p = 0;
											s = u;
											t = 1
										}
									}
									t *= r[u]
								}
							}
							if (e) {
								for ( var u = Y; u <= S; u++) {
									if (e && h[u]) {
										e--
									} else if (!e) {
										h[u] = 0
									}
								}
							}
							return h
						}
					});
	function extendRemove(a, b) {
		$.extend(a, b);
		for ( var c in b) {
			if (b[c] == null) {
				a[c] = null
			}
		}
		return a
	}
	$.fn.countdown = function(a) {
		var b = Array.prototype.slice.call(arguments, 1);
		if (a == 'getTimes' || a == 'settings') {
			return $.countdown['_' + a + 'Countdown'].apply($.countdown,
					[ this[0] ].concat(b))
		}
		return this.each(function() {
			if (typeof a == 'string') {
				$.countdown['_' + a + 'Countdown'].apply($.countdown, [ this ]
						.concat(b))
			} else {
				$.countdown._attachCountdown(this, a)
			}
		})
	};
	$.countdown = new Countdown()
})(jQuery);
function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	} else
		var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for ( var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ')
			c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length, c.length);
	}
	return null;
}
function createWait(name, value, mins) {
	if (mins) {
		var date = new Date();
		date.setTime(date.getTime() + (mins * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	} else
		var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

