/*
 * cacheImage: a jQuery plugin
 *
 * cacheImage is a simple jQuery plugin for pre-caching images.  The
 * plugin can be used to eliminate flashes of unstyled content (FOUC) and
 * improve perceived page load time.  Callbacks for load, error and abort
 * events are provided.
 *
 * For usage and examples, visit:
 * http://github.com/alexrabarts/jquery-cacheimage
 *
 * Licensed under the MIT:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright (c) 2008 Stateless Systems (http://statelesssystems.com)
 *
 * @author   Alex Rabarts (alexrabarts -at- gmail -dawt- com)
 * @requires jQuery v1.2 or later
 * @version  0.1

Cache an image:

    $.cacheImage('/path/to/image.png');
    // or if you have images hidden in the DOM:
    $('#myImage').cacheImage();

Cache several images:

    $.cacheImage(['/path/to/an/image.png', '/path/to/another/image.png'])
    // or if you have images hidden in the DOM:
    $('#myImages img').cacheImage();

Add some callbacks:

    $.cacheImage('/path/to/image.png', {
      load : function (e) { console.log('Loaded',  this, e); },
      error: function (e) { console.log('Error',   this, e); },
      abort: function (e) { console.log('Aborted', this, e); }
    });
 */

(function ($) {
	$.extend($, {
		cacheImage: function (src, options) {
			if (typeof src === 'object') {
				$.each(src, function () {
					$.cacheImage(String(this), options);
				});
			}

			var image = new Image();

			options = options || {};

			$.each(['load', 'error', 'abort'], function () { // Callbacks
				var e = String(this);
				if (typeof options[e] === 'function') { $(image)[e](options[e]); }
			});

			image.src = src;

			return image;
		}
	});

	$.extend($.fn, {
		cacheImage: function (options) {
			return this.each(function () {
				$.cacheImage(this.src, options);
			});
		}
	});
})(jQuery);

/*
 * jQuery JSON Plugin
 * version: 1.0 (2008-04-17)
 *
 * This document is licensed as free software under the terms of the
 * MIT License: http://www.opensource.org/licenses/mit-license.php
 *
 * Brantley Harris technically wrote this plugin, but it is based somewhat
 * on the JSON.org website's http://www.json.org/json2.js, which proclaims:
 * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that
 * I uphold.  I really just cleaned it up.
 *
 * It is also based heavily on MochiKit's serializeJSON, which is
 * copywrited 2005 by Bob Ippolito.
 *
var thing = {plugin: 'jquery-json', version: 1.3};

var encoded = $.toJSON(thing);              //'{"plugin": "jquery-json", "version": 1.3}'
var name = $.evalJSON(encoded).plugin;      //"jquery-json"
var version = $.evalJSON(encoded).version;  // 1.3
 */

(function($) {
    function toIntegersAtLease(n)
    // Format integers to have at least two digits.
    {
        return n < 10 ? '0' + n : n;
    }

    Date.prototype.toJSON = function(date)
    // Yes, it polutes the Date namespace, but we'll allow it here, as
    // it's damned usefull.
    {
        return this.getUTCFullYear()   + '-' +
             toIntegersAtLease(this.getUTCMonth()) + '-' +
             toIntegersAtLease(this.getUTCDate());
    };

    var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g;
    var meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        };

    $.quoteString = function(string)
    // Places quotes around a string, inteligently.
    // If the string contains no control characters, no quote characters, and no
    // backslash characters, then we can safely slap some quotes around it.
    // Otherwise we must also replace the offending characters with safe escape
    // sequences.
    {
        if (escapeable.test(string))
        {
            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 + '"';
    };

    $.toJSON = function(o, compact)
    {
        var type = typeof(o);

        if (type == "undefined")
            return "undefined";
        else if (type == "number" || type == "boolean")
            return o + "";
        else if (o === null)
            return "null";

        // Is it a string?
        if (type == "string")
        {
            return $.quoteString(o);
        }

        // Does it have a .toJSON function?
        if (type == "object" && typeof o.toJSON == "function")
            return o.toJSON(compact);

        // Is it an array?
        if (type != "function" && typeof(o.length) == "number")
        {
            var ret = [];
            for (var i = 0; i < o.length; i++) {
                ret.push( $.toJSON(o[i], compact) );
            }
            if (compact)
                return "[" + ret.join(",") + "]";
            else
                return "[" + ret.join(", ") + "]";
        }

        // If it's a function, we have to warn somebody!
        if (type == "function") {
            throw new TypeError("Unable to convert object of type 'function' to json.");
        }

        // It's probably an object, then.
        var ret = [];
        for (var k in o) {
            var name;
            type = typeof(k);

            if (type == "number")
                name = '"' + k + '"';
            else if (type == "string")
                name = $.quoteString(k);
            else
                continue;  //skip non-string or number keys

            var val = $.toJSON(o[k], compact);
            if (typeof(val) != "string") {
                // skip non-serializable values
                continue;
            }

            if (compact)
                ret.push(name + ":" + val);
            else
                ret.push(name + ": " + val);
        }
        return "{" + ret.join(", ") + "}";
    };

    $.compactJSON = function(o)
    {
        return $.toJSON(o, true);
    };

    $.evalJSON = function(src)
    // Evals JSON that we know to be safe.
    {
        return eval("(" + src + ")");
    };

    $.secureEvalJSON = function(src)
    // Evals JSON in a way that is *more* secure.
    {
        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.");
    };
})(jQuery);

/*
 * get data passed by aplication
 *
 */
(function ($) {
	$.extend($, {
		getAppData: function () {
			return $.evalJSON($('#ijsh').val());
		}
	});
})(jQuery);

/*
 * simple image fader
 *
 */
(function ($) {
	$.extend($, {
		faderController: {
			faderList: new Array(),
			//setNextIndex: null,
			createFader: function(elementId, interval) {
				if(!$.faderController.getFader(elementId)) {
					$.faderController.faderList.push({
						'elementId': elementId,
						'index': 0,
						'list': $('#'+elementId+' img').get().reverse(),
						'interval': interval,
						'timerReference': null,
						'setNextIndex': null,
						'fading': false,
						'immediateFade': false
					});
				}

				imgs = $('#'+elementId+' img')
				imgs.css('visibility', 'hidden');

				$(imgs.get(imgs.length - 1)).css('visibility', 'visible');
			},
			getFader: function(elementId) {
				for(var x = 0; x < $.faderController.faderList.length; ++x) {
					if($.faderController.faderList[x].elementId = elementId) {
						return $.faderController.faderList[x];
					}
				}

				return false;
			},
			beginFader: function(elementId) {
				var faderRef = $.faderController.getFader(elementId);
				if(faderRef && faderRef.timerReference == null) {
					faderRef.timerReference = window.setTimeout(function(){$.faderController.fade(elementId)}, faderRef.interval);
				}
			},
			stopFader: function(elementId) {
				var faderRef = $.faderController.getFader(elementId);
				if(faderRef && faderRef.timerReference != null) {
					window.clearTimeout(faderRef.timerReference);
					faderRef.timerReference = null;
				}
			},
			cycleFader: function(elementId) {
				var faderRef = $.faderController.getFader(elementId);
				if(faderRef) {
					faderRef.timerReference = window.setTimeout(function(){$.faderController.fade(elementId)}, faderRef.interval);
				}
			},
			skipToIndex: function(elementId, toIndex) {
				var faderRef = $.faderController.getFader(elementId);
				if(faderRef) {
					if(toIndex > (faderRef.list.length - 1))toIndex = (faderRef.list.length - 1);
					faderRef.setNextIndex = toIndex;
					if(faderRef.timerReference == null) {
						$.faderController.fade(elementId);
					} else {
						if(faderRef.fading == false) {
							$.faderController.stopFader(elementId);
							$.faderController.fade(elementId);
						} else {
							faderRef.immediateFade = true;
						}
					}
				}
			},
			fade: function(elementId) {
				var faderRef = $.faderController.getFader(elementId);

				if(faderRef) {
					$(faderRef.list[faderRef.index]).css({'opacity': 1, 'z-index': '10', 'visibility': 'visible'});
					$(faderRef.list).each(function(i){
						if(i != faderRef.index) {
							$(faderRef.list[i]).css({'opacity': 0, 'z-index': '5', 'visibility': 'visible'});
						}
					});

					if(faderRef.setNextIndex != null) {
						if(faderRef.setNextIndex > (faderRef.list.length - 1))faderRef.setNextIndex = (faderRef.list.length - 1);
						faderRef.index = faderRef.setNextIndex;
						faderRef.setNextIndex = null;
					} else {
						++faderRef.index;
					}

					if(!(faderRef.index < faderRef.list.length)) {
						faderRef.index = 0;
					}

					$(faderRef.list[faderRef.index]).css({'z-index': '10', 'visibility': 'visible'});
					$(faderRef.list).each(function(i){
						if(i != faderRef.index) {
							$(faderRef.list[i]).css({'z-index': '5', 'visibility': 'visible'});
						}
					});

					faderRef.fading = true;
					$(faderRef.list[faderRef.index]).animate({'opacity': 1}, 1500, 'swing', function(){
						$.faderController.endFade(elementId);
					});

					$.faderController.cycleFader(elementId);
				}
			},
			endFade: function(elementId) {
				var faderRef = $.faderController.getFader(elementId);
				if(faderRef) {
					faderRef.fading = false;

					if(faderRef.immediateFade == true) {
						faderRef.immediateFade = false;
						$.faderController.stopFader(elementId);
						$.faderController.fade(elementId);
					}
				}
			}

		}
	});

	$.extend($.fn, {
		createFader: function (interval) {
			return this.each(function (i) {
				var eid = $(this).attr('id');
				if(eid) {
					$.faderController.createFader(eid, interval);
					$.faderController.beginFader(eid);
				}
			});
		}
	});
})(jQuery);

(function ($) {
	$.extend($, {
		bannerController: {
			bannerList: new Array(),
			timerReference: null,
			lastFade: null,
			setupBanners: function(className) {
				var addBanners = {};

				$('div.'+className).each(function(){
					var setLen = $($(this).children('a')).length;
					if(setLen > 1) {
						$(this).get(0).bLen = setLen;
						$(this).get(0).aIndex = 0;
						$(this).get(0).bBist = $(this).children('a').get().reverse();
						$.each($(this).get(0).bBist, function(){
							$(this).css({
								'opacity': 0,
								'display': 'none',
								'z-index': 1
							});
						});

						$($(this).get(0).bBist[0]).css({
							'opacity': 1,
							'display': 'block',
							'z-index': 2
						});

						$.bannerController.bannerList.push($(this).get(0));
					}
				});

				if($.bannerController.bannerList.length) {
					$.bannerController.prepare();
				}
			},
			prepare: function() {
				$.bannerController.timerReference = window.setTimeout(function(){$.bannerController.fade()}, 2000);
			},
			fade: function() {
				var cont = true;

				do {
					var fadeIndex = Math.floor(Math.random() * $.bannerController.bannerList.length);
					cont = false;
					if(fadeIndex == $.bannerController.lastFade)var cont = true;
					if($.bannerController.bannerList.length <= 1)cont = false;
				} while(cont);

				$.bannerController.lastFade = fadeIndex;

				var aBanner = $.bannerController.bannerList[fadeIndex];
				var aIndex = aBanner.aIndex;
				var toIndex = parseInt(aIndex) + 1;

				if(toIndex > aBanner.bLen - 1)toIndex = 0;

				$(aBanner.bBist[toIndex]).css({
					'display': 'block',
					'z-index': 3
				});

				$(aBanner.bBist[toIndex]).animate({'opacity': 1}, 1000, 'linear', function() {
					$(aBanner.bBist[aIndex]).css({
						'z-index': 1,
						'opacity': 0,
						'display': 'none'
					});
					$(aBanner.bBist[toIndex]).css('z-index', 2);

					aBanner.aIndex = toIndex;
					$.bannerController.prepare();
				});
			}
		}
	});
})(jQuery);

//side scroll
(function ($) {
	$.extend($, {
		sideScroll: function(obj, speed) {
			//nastav scrollovacimu objektu spravnou sirku
			var tw = 0;
			var scDiv = $(obj).children('div');
			scDiv.find('span').clone().appendTo(scDiv);

			var images = scDiv.find('img');
			images.each(function(){
				tw += parseInt($(this).width() + 0);
				if(!isNaN(parseInt($(this).css('margin-left'))))tw += parseInt($(this).css('margin-left'));
				if(!isNaN(parseInt($(this).css('margin-right'))))tw += parseInt($(this).css('margin-right'));
				if(!isNaN(parseInt($(this).css('border-left-width'))))tw += parseInt($(this).css('border-left-width'));
				if(!isNaN(parseInt($(this).css('border-right-width'))))tw += parseInt($(this).css('border-right-width'));
			});

			if((tw / 2) > $(obj).width()) {
				scDiv.width(tw);
				scDiv.children('div').css({
					'position': 'relative',
					'left': 0
				});

				//inicializuj scroller
				obj.scroller = {
					target: obj,
					speed: parseInt(speed),
					maxLeft: parseInt($(obj).width()) - $(obj).children('div').width(),
					timerRef: null,
					movement: null,
					scrollLeft: function(){
						if(this.movement != 'left' && this.timerRef != null) {
							window.clearTimeout(this.timerRef);
							this.timerRef = null;
						}
						this.movement = 'left';

						cLeft = parseInt($(this.target).children('div').css('left'));

						if((cLeft - this.speed) > this.maxLeft) {
							$(this.target).children('div').css('left', parseInt(cLeft - this.speed));
						} else {
							/*
							if(this.timerRef != null) {
								window.clearTimeout(this.timerRef);
								this.timerRef = null;
							}
							*/

							var spans = $(this.target).find('span');
							spans.eq(0).clone().appendTo(scDiv);
							spans.eq(0).remove();

							$(this.target).children('div').css('left', cLeft + Math.round($(obj).children('div').width() / 2) - this.speed);
						}

						this.timerRef = window.setTimeout(function(){obj.scroller.scrollLeft()}, 30);
					},
					scrollRight: function(){
						if(this.movement != 'right' && this.timerRef != null) {
							window.clearTimeout(this.timerRef);
							this.timerRef = null;
							this.movement = 'right';
						}

						cLeft = parseInt($(this.target).children('div').css('left'));

						if((cLeft + this.speed) < 0) {
							$(this.target).children('div').css('left', parseInt(cLeft + this.speed));
						} else {
							/*
							if(this.timerRef != null) {
								window.clearTimeout(this.timerRef);
								this.timerRef = null;
							}
							*/

							var spans = $(this.target).find('span');
							spans.eq(1).clone().prependTo(scDiv);
							spans.eq(1).remove();

							$(this.target).children('div').css('left', cLeft - Math.round($(obj).children('div').width() / 2) + this.speed);
						}

						this.timerRef = window.setTimeout(function(){obj.scroller.scrollRight()}, 30);
					},
					scrollStop: function() {
						if(this.timerRef != null) {
							window.clearTimeout(this.timerRef);
							this.timerRef = null;
						}
						this.timerRef = null;
						this.movement = null;
					}
				}
			} else {
				obj.scroller = {
					target: obj,
					speed: parseInt(speed),
					maxLeft: parseInt($(obj).width()) - $(obj).children('div').width(),
					timerRef: null,
					movement: null,
					scrollLeft: function(){
					},
					scrollRight: function(){
					},
					scrollStop: function() {
					}
				}

				scDiv.find('span').eq(1).remove();
			}
		}
	});

	$.extend($.fn, {
		sideScroll: function(speed) {
			$.sideScroll($(this).get(0), speed)
		}
	});
})(jQuery);

//popup gallery
(function ($) {
	$.extend($, {
		coverId: 'sCover',
		pGalNum: 0,
		showCover: function() {
			$('div#'+$.coverId).remove();
			$('body').append('<div id="'+$.coverId+'">&nbsp;</div>');

			var cover = $('div#'+$.coverId);

			cover.css({
				'width': '100%',
				'height': $(window).height()+'px',
				'position': 'fixed',
				'top': '0px',
				'left': '0px',
				'background-color': '#000',
				'opacity': 0.8,
				'z-index': 1000
			}).hide();

			cover.fadeIn('fast');
		},
		hideCover: function() {
			$('div#'+$.coverId).fadeOut('fast', function(){$('div#'+$.coverId).remove();});
		},
		pGal: function(container) {
			container.pGal = {
				obj: container,
				jqObj: $(container),

				galId: '',
				galJqObj: null,

				galContJqObj: null,
				bigImgJqObj: null,
				smImgsJqObj: null,
				activeImgIndex: 1,

				imgAnchs: null,

				createGallery: function(){
					++$.pGalNum;
					this.galId = 'pGal'+$.pGalNum;

					$('body').append('<div class="pGal" id="'+this.galId+'"></div>');
					this.galJqObj = $('div#'+this.galId);

					this.galJqObj.append(
					'<div class="pGalCont">' +
					'<a href="#" class="pGalCloser">&nbsp;</a>' +
					'<a href="#" class="galLeft">&nbsp;</a>' +
					'<a href="#" class="galRight">&nbsp;</a>' +
					'</div>'
					);

					this.galJqObj.find('a.galLeft').click(function(){
						var pGal = $(this).parents('div.pGal').pGal();
						var index = pGal.activeImgIndex;
						var imgs = pGal.smImgsJqObj.find('img');

						--index;

						if(index <= 0) {
							index = imgs.length;
						}
						
						$(this).blur();
						imgs.eq((index - 1)).trigger('click');
					});

					this.galJqObj.find('a.galRight').click(function(){
						var pGal = $(this).parents('div.pGal').pGal();
						var index = pGal.activeImgIndex;
						var imgs = pGal.smImgsJqObj.find('img');

						++index;

						if(index > imgs.length) {
							index = 1;
						}

						$(this).blur();
						imgs.eq((index - 1)).trigger('click');
					});

					this.galContJqObj = this.galJqObj.find('div.pGalCont');

					this.imgAnchs = this.jqObj.find('a');

					var first = true;
					var pGalRef = this;
					var objRef = this.galContJqObj;
					var added = new Array();
					var x = 0;

					this.imgAnchs.each(function(){
						var bigImg = $(this).attr('href');
						var smImg = $(this).find('img').eq(0);

						if($.inArray(smImg.attr('src'), added) == -1) {
							if(first) {
								objRef.append('<img src="'+bigImg+'" alt="'+smImg.attr('alt')+'" class="bigImg" />');
								pGalRef.bigImgJqObj = objRef.find('img.bigImg').eq(0);

								objRef.append('<div class="smImgs"></div>');
								pGalRef.smImgsJqObj = objRef.find('div.smImgs').eq(0);
							}

							++x;

							pGalRef.smImgsJqObj.append('<img src="'+smImg.attr('src')+'" alt="'+smImg.attr('alt')+'" />');
							var aimgs = pGalRef.smImgsJqObj.find('img');
							aimgs.get(aimgs.length - 1).bigImg = bigImg;
							aimgs.get(aimgs.length - 1).index = x;

							added.push(smImg.attr('src'));
							first = false;
						}
					});

					this.smImgsJqObj.find('img').click(function(){
						var bigImg = $(this).parents('div.pGal').find('img.bigImg');
						bigImg.attr('src', $(this).get(0).bigImg);
						bigImg.attr('alt', $(this).attr('alt'));

						$(this).parents('div.pGal').pGal().activeImgIndex = $(this).get(0).index;
						//alert('click: '+$(this).parents('div.pGal').pGal().activeImgIndex);

						bigImg.unbind('load');
						bigImg.load(function(){
							$(this).parents('div.pGal').pGal().arrangeGallery();
						});
					});

					this.galJqObj.find('a.pGalCloser').click(function(){
						$(this).parents('div.pGal').pGal().close();
					});

					this.obj.pGal.arrangeGallery();
					this.galJqObj.hide();
				},
				open: function(index) {
					if(parseInt(index) == index) {
						index = parseInt(index);
						this.smImgsJqObj.find('img').eq(index).trigger('click');
					} else {
						this.smImgsJqObj.find('img').each(function(){
							//alert(index+'\n'+$(this).attr('src')+'\n'+$(this).get(0).bigImg);

							if(
							$(this).attr('src') == index
							|| $(this).get(0).bigImg == index
							) {
								$(this).trigger('click');
							}
						});
					}

					$.showCover();
					this.galJqObj.fadeIn('fast', function(){
						container.pGal.arrangeGallery();
					});
				},
				close: function() {
					$.hideCover();
					this.galJqObj.fadeOut('fast');
				},
				arrangeGallery: function(){
					//2do - cely cisla ziskavat z marginu atd
					var bigImg = this.galContJqObj.find('img.bigImg');
					var wid = this.galContJqObj.innerWidth();
					var bigImWid = bigImg.width();
					var bigImHei = bigImg.height();
					var bigML = Math.round((wid - bigImWid) / 2);

					bigImg.css('left', bigML);

					var smImgs = this.galContJqObj.find('div.smImgs');
					
					var smWid = 0;
					smImgs.find('img').each(function(){
						var n = smWid + $(this).outerWidth() + parseInt($(this).css('margin-right'))
						if(n < bigImWid) {
							smWid = n;
						}
					});
					
					smImgs.css({
						'width': smWid
					});
					
					smImgs.css({
						'left': Math.round((wid - smImgs.outerWidth()) / 2),
						'top': bigImHei + 60
					});

					var closer = this.galContJqObj.find('a.pGalCloser');
					closer.css({
						'left': Math.round(((wid - bigImWid) / 2) + bigImWid - (closer.width() / 2)),
						'top': 30 - Math.round(closer.height() / 2)
					});

					var galLeft = this.galContJqObj.find('a.galLeft');
					var galRight = this.galContJqObj.find('a.galRight');
					var half = Math.round(bigImg.width() / 2);

					galLeft.css({
						'width': half,
						'height': bigImHei,
						'left': bigML
					});

					galRight.css({
						'width': half,
						'height': bigImHei,
						'left': half + bigML
					});
				}
			}

			container.pGal.createGallery();
			container.pGal.galJqObj.get(0).pGal = container.pGal;

			return container.pGal;
		}
	});

	$.extend($.fn, {
		pGal: function() {
			if($(this).get(0).pGal == undefined) {
				return $.pGal($(this).get(0));
			} else {
				return $(this).get(0).pGal;
			}
		},
		openPGal: function(index) {
			$(this).get(0).pGal.open(index);
		},
		closePGal: function() {
			$(this).get(0).pGal.close();
		}

	});
})(jQuery);

//functions
(function ($) {
	$.extend($, {
		areaGuards: {},
		toolTipMove: function(event) {
			$('div#gnTooltip').css({
				'top': event.pageY - 15,
				'left': event.pageX + 15
			});
		},
		showToolTip: function(text){
			if(!$('div#gnTooltip').length) {
				$(document.body).append('<div id="gnTooltip">'+text+'</div>');

				$('div#gnTooltip').css({
					'display': 'none',
					'float': 'left',
					'position': 'absolute',
					'top': 0,
					'left': 0
				});
			} else {
				$('div#gnTooltip').html(text);
			}

			$(document.body).bind('mousemove', $.toolTipMove);

			$('div#gnTooltip').css('display', 'block');
		},
		hideToolTip: function() {
			if($('div#gnTooltip').length) {
				$('div#gnTooltip').css({
					'display': 'none'
				});
			}

			$(document.body).unbind('mousemove', $.toolTipMove);
		}
	});

	$.extend($.fn, {
		blankHref: function () {
			$(this).attr('href', 'javascript:void(0)');
		},
		guardArea: function(idCount) {
			if($('#'+idCount).length) {
				var area = $(this);
				var count = $('#'+idCount);
				var limit = parseInt($('#'+idCount).html());

				function guard() {
					if($(this).attr('value').length > limit) {
						$(this).attr('value', $(this).attr('value').toString().substring(0, limit));
					}

					count.html(limit - parseInt($(this).attr('value').length));
				}

				area.keypress(guard);
				area.keyup(guard);
				area.keydown(guard);
			}
		}
	});
})(jQuery);

/* jQuery CooQuery Plugin v2 (minified) - http://cooquery.lenonmarcel.com.br/
Copyright 2009, 2010 Lenon Marcel
Dual licensed under the MIT and GPL licenses.
http://www.opensource.org/licenses/mit-license.php
http://www.gnu.org/licenses/gpl.html

Create/set a cookie:

$.setCookie( 'NAME', 'VALUE', {
    duration : 1, // In days
    path : '',
    domain : '',
    secure : false
});
Delete a cookie:

$.delCookie( 'NAME' );
Read cookie value:

$.readCookie( 'NAME' );

*/
(function($){$.setCookie=function(name,value,options){if(typeof name==='undefined'||typeof value==='undefined')
return false;var str=name+'='+encodeURIComponent(value);if(options.domain)str+='; domain='+options.domain;if(options.path)str+='; path='+options.path;if(options.duration){var date=new Date();date.setTime(date.getTime()+options.duration*24*60*60*1000);str+='; expires='+date.toGMTString();}
if(options.secure)str+='; secure';return document.cookie=str;};$.delCookie=function(name){return $.setCookie(name,'',{duration:-1});};$.readCookie=function(name){var value=document.cookie.match('(?:^|;)\\s*'+name.replace(/([-.*+?^${}()|[\]\/\\])/g,'\\$1')+'=([^;]*)');return(value)?decodeURIComponent(value[1]):null;};$.CooQueryVersion='v 2.0';})(jQuery);
