/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/**
 *  Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
 * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
 * Thanks to: Seamus Leahy for adding deltaX and deltaY
 *
 * Version: 3.0.4
 *
 * Requires: 1.2.2+
 */
(function(c){var a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",d)}});function b(i){var g=i||window.event,f=[].slice.call(arguments,1),j=0,h=true,e=0,d=0;i=c.event.fix(g);i.type="mousewheel";if(i.wheelDelta){j=i.wheelDelta/120}if(i.detail){j=-i.detail/3}d=j;if(g.axis!==undefined&&g.axis===g.HORIZONTAL_AXIS){d=0;e=-1*j}if(g.wheelDeltaY!==undefined){d=g.wheelDeltaY/120}if(g.wheelDeltaX!==undefined){e=-1*g.wheelDeltaX/120}f.unshift(i,j,e,d);return c.event.handle.apply(this,f)}})(jQuery);




(function($){
	
	$.ie6 = $.browser.msie && parseInt(jQuery.browser.version) <= 6 && !window["XMLHttpRequest"];
	$.ie7 = $.browser.msie && !$.ie6 && parseInt(jQuery.browser.version) <= 7;
	$.ie8 = $.browser.msie && !$.ie7 && parseInt(jQuery.browser.version) <= 8;
	$.ie9 = $.browser.msie && !$.ie8 && parseInt(jQuery.browser.version) <= 9;	
	
	
	$.fn.popup({ 
		register: 'default', 
		template : '<div class="popup">\
			<div id="popup-title"><div><a class="close popup-close"></a></div></div>\
		    <div id="popup-center" class="popup-overflow"><h2>%title%</h2>%content%</div>\
		    <div id="popup-bottom"><div></div></div>\
		</div>',
	    overlay:		{ opacity:0.6, background: '#000' },
		loading:		{ height: 100, background: 'url(/images/css/base/31.gif) no-repeat center center white' },
	    width: 			438
	});
	   					    
	$.fn.popup({
		register: 'confirm', 
		template : '<div class="popup">\
			<div id="popup-title"><div><a class="close popup-close"></a></div></div>\
		    <div id="popup-center" class="popup-overflow"><h2>%title%</h2>%content%</div>\
		    <div id="popup-bottom"><div></div></div>\
		</div>'		    
	});

	$.fn.popup({
		register: 'noclose',
		unique: true,
		template : '<div class="popup">\
			<div id="popup-title"><div></div></div>\
		    <div id="popup-center" class="popup-overflow"><h2>%title%</h2>%content%</div>\
		    <div id="popup-bottom"><div></div></div>\
		</div>',
		overlay:		{ opacity:0.6, background: '#000' },
		loading:		{ height: 100, background: 'url(/images/css/base/31.gif) no-repeat center center white' },
		width: 			438
	});
	   					    
	$.fn.popup({
		register: 'alert', 
		template: '<div class="popup">\
			<div id="popup-title"><div><a class="close popup-close"></a></div></div>\
		    <div id="popup-center" class="popup-overflow"><h2>%title%</h2>%content%</div>\
		    <div id="popup-bottom"><div><input class="ok" value="OK" type="button"/></div></div>\
		</div>', 
		okTrigger: 'input.ok',
		duration: 200
	});
	
	$.fn.popup({
		register: 'tooltip attachée', // On définit notre nouveau type de popup
		template: '<div class="tooltip" style="width:%width%;">%content%</div>', 
		selfClose:              true, // On clique sur la popup elle même pour la fermer
		outClose:		 true,
		overlay:                false,  // Cette fois, pas d'overlay du tout (popup non bloquante)
		delay: 3000 // Et pis allez, elle ne s'affichera que 1 seconde
	});
	
	

	$(function() {
		
		if($.ie7) {
			$.get('/'+LOCALE+'/content/popup_chromeframe/?ask=1', null, function(data) {
				if(data == 'true') $().popup({ 
					width: 770,
					url: '/'+LOCALE+'/content/popup_chromeframe/' 
				});
			});
		}
			
		
		$('#bgprofil').mouseover(function(e) { 	
			//if( $(this).hasClass('alone')) return false;
			$('#profil-menu').show();
			$('#pa').css({ backgroundPosition:'left -35px'});
			setTimeout(function() {
				$(document).unbind('mouseover.bgprofil').bind('mouseover.bgprofil', function(e) {
					
					//if (e.preventDefault) e.preventDefault();
					$('#profilmenu-close').click();
				    if (e.stopPropagation) e.stopPropagation();
				    $(document).unbind('mouseover.bgprofil');
				    return false;
				})
			}, 100);
			if (e.stopPropagation) e.stopPropagation();
			//e.stopPropagation();
		}).click(function() { return $(this).hasClass('alone') });
			
		$('#profil-menu').mouseover(function(e) { 
			//if (e.preventDefault) e.preventDefault();
		    if (e.stopPropagation) e.stopPropagation();
		    return false;
		});

		
		$('#profilmenu-close').click(function(e) {
			$('#profil-menu').hide();
			$('#pa').css({ backgroundPosition:'left 0px'});
			$('#bgprofil').css({ backgroundImage: 'none' });
			return false;
		});
	});


/**
 * Apply to any element a png fix, only or IE6 content
 * @function $( selector ).pngfix( [options] )
 * @param selector jQuery or selector // it must correspond to a <textarea> element.
 * @param options // not yet implemented
 * @return $( selector )
 * @example <textarea onkeydown="$(this).autogrow();">..</textarea>
 */

    $.fn.pngfix=function(o){
        if($.ie6){
            if(!o)o={};
            this.each(function(){
               // if(!this.pngfix){
                    this.pngfix = o.url?o.url:$(this).css("background-image");
                    $(this).attr("style","filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+
                        (this.pngfix.replace('url("','').replace('")',''))+
                        "\',sizingMethod='fit');").css("background-image","none");
                //}
            });
        }
    };




/**
 * @function $( selector ).movable( options )
 * $( selector ).move( options )
 * @param selector jQuery or selector // Any element
 * @param options {
 * 		items: string or jQuery // If set, items elements become movable each others
 * 		boxes: string or jQuery // If set, boxes contains items, its allow cross containers moves
 * 		container: string or jQuery // set this if selector is not the main container
 * 		handle: string or jQuery // If set, handle(s) are the movement triggers
 * 		change: function( options ) // Function called when a ghost placement occured
 * 		update: function( options ) // Function called when the movement is over
 * 		down: function( options ) // Function called when the movement is triggered 
 * }
 * @return $( selector ) 
 * @example 
 * <ul load="$(this).movable({ 
 * 			items: 'li',
 * 			handle: 'a' 					
 * 		});">
 * 		<li><a>..</a>..</li>
 * 		<li><a>..</a>..</li>
 * 		<li><a>..</a>..</li>
 * </ul>
 * @example 
 * <ul>
 * 		<li  onmousedown="$(this).move({ 
 * 				container: $(this).parent(),
 * 				items: 'li',
 * 				handle: 'a'					
 *			});><a>..</a>..</li>
 *		<li><a>..</a>..</li>
 *		<li><a>..</a>..</li>
 * </ul>
 */

	/** TODO : more cases */
	$.fn.movable = function(o,s) {		
		//s = this.selector; 
		//if(!o.handle) o.handing = $(this).find(o.items);
		//else o.handing = $(this).find(o.items).find(o.handle);
		//o.handing.set('mousedown', function(e) {
		if(o.container) {								
			this.unbind('mousedown').bind('mousedown', function(e) {				
				o.event = e;	
				o.s = $(this).parents(o.items);
				o.t = $(this).parents(o.container);		
				$.fn.move.mousedown(o);				
				return false;
			})
		}
		else {				
			o.t = this;	
			if(!o.handle) o.handing = this.find(o.items);
			else o.handing = this.find(o.items).find(o.handle);
			o.s = this.parents(o.items);
			o.handing.unbind('mousedown').bind('mousedown', function(e) {				
				o.event = e;
				$.fn.move.mousedown(o);				
				return false;
			})
		}
		return this;
	};
	$.fn.move=function(o){if(o.event && o.container){o.t=this.parents(o.container);o.s=this.parents(o.items);return $.fn.move.mousedown(o);}};
	$.fn.move.mousedown=function(o,order){if($.fn.move.lock)return false;$.fn.move.lock=true;o.x=o.event.pageX-o.s[0].offsetLeft;o.y=o.event.pageY-o.s[0].offsetTop;o.px=o.event.pageX;o.py=o.event.pageY;var boxes=!o.boxes?o.t:o.t.find(o.boxes);o.b=[];boxes.each(function(i,box){box=this;box.$=$(box).css($.ie6?'height':'min-height','1px');/*if(!$$.ie6) box.$.css('height','100%');*/box.realLeft=box.$.offset().left;if(boxes.eq(i-1).length)if(boxes.eq(i-1)[0].realLeft>box.realLeft)box.realTop=box.$.offset().top;box.items=[];$(o.items,box).each(function(j){this.$=$(this);this.j=j;this.i=i;this.fullHeight=this.$.height();this.halfHeight=this.fullHeight/2;if(this!=o.s[0])box.items.push(this);});box.maxCount=box.items.length-1;if(box.items.length==0)box.items=null;o.b.push(box);});o.clone=o.f=o.s.clone().css({position:"absolute",zIndex:99999,width:o.s.width(),left:o.s[0].offsetLeft,top:o.s[0].offsetTop});if(o.down)o.down(o);document.onselectstart=function(){return false;};boxes[0].appendChild(o.f.addClass('clone')[0]);o.s.css($.ie6?{visibility:'hidden'}:{opacity:0.2});$(document).unbind("mousemove").bind("mousemove",function(e){o.px=e.pageX;o.py=e.pageY;if(o.boxes)o.f[0].style.left=o.px-o.x+"px";o.f[0].style.top=o.py-o.y+"px";return false;}).unbind("mouseup").bind("mouseup",function(e){clearInterval(o.v);$(document).unbind("mousemove").unbind("mouseup");setTimeout(function(){$.showembed();},200);if($.ie6)o.s.css({visibility:''});else o.s.animate({opacity:1},200);o.f.animate({width:o.s.width(),left:o.s[0].offsetLeft,top:o.s[0].offsetTop},200,function(){o.f.empty().remove();o.f=null;if(o.update)o.update(o);$.fn.move.lock=false;});return false;});setTimeout(function(){$.hideembed();},200);o.v=setInterval(function(e){if(o.boxes){var b=[];for(var i in o.b)if(o.px>o.b[i].realLeft && o.px<o.b[i].realLeft+o.b[i].offsetWidth)b.push(i);if(!b.length) return false;if(b.length>1)i=(o.py>o.b[i].$.offset().top?b[1]:b[0]);else i=b[0];}else i=0;var k=o.b[i];if(!k.items){if(i!=o.s[0].i){o.s[0].i=i;o.s[0].j=0;$(k).prepend(o.s);if(o.change)o.change(o);}return false;}else for(var j in k.items){var top=k.items[j].$.offset().top;if(o.py<(top+k.items[j].halfHeight)){if(j==0 || o.py>top){if(!(i==o.s[0].i && o.s[0].j==parseInt(k.items[j].j-1))){o.s[0].i=i;o.s[0].j=parseInt(k.items[j].j-1);k.insertBefore(o.s[0],k.items[j]);if(o.change)o.change(o);}return false;}}else{if(j==k.maxCount || o.py<(top+k.items[j].fullHeight)){if(!(i==o.s[0].i && o.s[0].j==parseInt(k.items[j].j+1))){o.s[0].i=i;o.s[0].j=parseInt(k.items[j].j+1);k.insertBefore(o.s[0],k.items[j].nextSibling);if(o.change)o.change(o);}return false;}}}return false;},1);return false;};


/**
 * @function $( selector ).datapicker( [options] ) // not yet implemented 
 * @param selector jQuery or selector // it must correspond to a <input> element.
 * @param options // not yet implemented
 * @return $( selector )
 * @example // not yet implemented
 */
	
	$.fn.datapicker = function(o,encours) {		
		if(!o)o={};
		o.inp = this;
		o.classname=o.classname?o.classname:"datapicker";
		if(!$.fn.datapicker.h) {
			var d = new Date();
			var y = d.getFullYear()+2;
			var h = "<div id='datepicker' class='"+o.classname+"' style='position:absolute;z-index:99999999; height:300px;'>"+
			"<div class='years' style='float:left; overflow:auto; height:300px;'>";
			i = 0;
			h+= "<a style='display:block;' class='notFilled'></a>";
			h+= "<a style='display:block;' class='encours'></a>";
			while(i<51){h+="<a href='#' style='display:block;'>"+(y-i++)+"</a>";}
			h+="</div><div class='month' style='display:none; float:left; overflow:auto; height:300px; width:80px;'>";	
			h+= "<a href='#' class='nothing' style='display:block;'>---</a>";
			for(var j in o.months) { h+= "<a href='#' style='display:block;'>"+o.months[j]+"</a>"; }
			h+="</div></div>";
			$.fn.datapicker.h = $(h);
			$.fn.datapicker.h.find('.years a').bind("click", function() {
				$.fn.datapicker.h.find(".month").show();
				$(this).parent().find("a.selected").removeClass("selected");
				$(this).addClass("selected");
				if (o.linkedTo) {
					$(o.linkedTo).show();
				}
				return false;
			});				
			$("body").append($.fn.datapicker.h.hide());
		}		
		if(this.is('input')) {
			if(o.notFilled) { 
				$.fn.datapicker.h.find(".notFilled").text(o.notFilled).show();
			} else {
				$.fn.datapicker.h.find(".notFilled").text("").hide();
			}
			
			if(o.encours) $.fn.datapicker.h.find(".encours").text(o.encours).show();
			else $.fn.datapicker.h.find(".encours").text("").hide();
			$.fn.datapicker.h.find(".selected").removeClass("selected");
			$.fn.datapicker.h.find(".month").hide();		
			$.fn.datapicker.h.find('.years a.encours').unbind("click").bind("click", function() {
				o.inp.val($(this).text());
				$.fn.datapicker.h.hide();
				$(document).unbind('mousedown');
				return false;
			});	
			
			$.fn.datapicker.h.find('.years a.notFilled').unbind("click").bind("click", function() {
				o.inp.val($(this).text());
				$.fn.datapicker.h.hide();
				$(document).unbind('mousedown');
				if (o.linkedTo) {
					$(o.linkedTo).hide();
				}
				return false;
			});	
			
			$.fn.datapicker.h.find('.years a').unbind("dblclick").bind("dblclick", function() {
				o.inp.val($(this).text());//.toLowerCase());
				$.fn.datapicker.h.hide();
				$(document).unbind('mousedown');
				return false;
			});	
			$.fn.datapicker.h.find('.month a').unbind("click").bind("click", function() {
                if($(this).hasClass('nothing')) {
                    o.inp.val($.fn.datapicker.h.find('.years a.selected').text());
                    $.fn.datapicker.h.hide();
                    $(document).unbind('mousedown');
                }
                else {
                    o.inp.val($(this).text()/*.toLowerCase()*/ + " " + $.fn.datapicker.h.find('.years a.selected').text());
                    $.fn.datapicker.h.hide();
                    $(document).unbind('mousedown');
                }
				return false;
			});	
			$.fn.datapicker.h.show().css({ left: this.offset().left, top: this.offset().top});
			$(document).unbind('mousedown').bind('mousedown', function(e){
				if(	e.pageX < $.fn.datapicker.h.offset().left||
					e.pageX > $.fn.datapicker.h.offset().left+$.fn.datapicker.h.width()||
					e.pageY < $.fn.datapicker.h.offset().top||
					e.pageY > $.fn.datapicker.h.offset().top+$.fn.datapicker.h.height())	
				{
					$.fn.datapicker.h.hide();
					$(document).unbind('mousedown');
				}
			});			
		}
		return this;		
	}	
	$.fn.datapicker.h = null;


/**
 * @function $( selector ).select_custom( options )
 * 
 */

	$.fn.select_custom = function(opt) {	
		if(!opt)opt={};

		return this.each(function(o) {	
			o={
				change:opt.change,
				checked:opt.checked||":first",
				value:opt.value||"input:first",
				options:opt.options||"> *",
				select:$(this),
				element: $("<div class='select_custom' style='z-index:99999999;position:absolute;top:0px;left:0px;'>").appendTo("body").hide()
			};
			o._checked = o.select.find(o.checked).show();
			o._value = o.select.find(o.value);
			o._options = o.select.find(o.options).not(o._checked).not(o._value).hide();

			if($.ie6)o._options.each(function(){this.href="#";});
				
			o.select.bind("click", function() {
				if (o._options.eq(0).css("display") != "none") {
					$.fn.select_custom.close( o );
					return false;
				}
				o.element.css({
					left: o.select.offset().left, top: o.select.offset().top + o.select.height(),
					width : o.select.width()
				}).append(o._options.css("display","block")).show();
				$(document).unbind('click').bind('click', function(e){
					if(	e.pageX < o.element.offset().left||
						e.pageX > o.element.offset().left+o.element.width()||
						e.pageY < o.element.offset().top ||
						e.pageY > o.element.offset().top+o.element.height())	
					{
						$.fn.select_custom.close( o )
						$(document).unbind('click');
					}
				});
                return false;
			});
			o._options.bind("click",function() {
				$.fn.select_custom.close( o );
                o._options.find("input").hide();
                o.val = this.getAttribute('value');
				o.text = $(this).html();

                if(o.change){
                    if (o.change(o)==false) {
                        o._checked.show();
                        return false;
                    }
                }
                o._value.val(o.val).trigger('change');
				o._checked.html(o.text).attr("className", $(this).attr("className").replace(o.options.replace(".", ""), "")).addClass("checked")
					.attr("style", $(this).attr("style")).show();			
				return false;
			});
		});	
			
	};
	$.fn.select_custom.close = function( o ) {
		if(o.select) {
			o.element.hide();
			o.select.append(o._options.css("display","none"));
			return true;
		}	
		return false;
	};



/**
 * Apply to any element to open his href target, it's possible to make open/close et cross opener/closer (tabbed panel)
 * @function $( selector ).target( [options] )
 * @param selector jQuery or selector // Any element with an "href" attribute
 * @param options {
 * 		type fade | slide | show // Transition effect, default : show.
 *		closer boolean // If set, a trigger on an already opened target do close it.
 *		multiple boolean // If set, all others target trigger in the same level are crossed (tabbed panel)
 * }
 * @return $( selector )
 * @example // It open element of id "box_1"
 * <a href="#box_1" onclick="$(this).target();">...</a> 
 * <div id="box_1">...</div>
 * @example // It open elements named "box" and close it on trigger again
 * <a href="#box" onclick="$(this).target("show", true);">...</a> 
 * <div name="box">...</div>
 * <div name="box">...</div>
 * @example // Groups of a elements and div elements react like a tabbed panel
 * <a href="#box_1" onclick="$(this).target('show', false, true);">...</a> 
 * <a href="#box_2" onclick="$(this).target('show', false, true);">...</a>
 * <a href="#box_3" onclick="$(this).target('show', false, true);">...</a>
 * <div name="box_1">...</div>
 * <div name="box_2">...</div>
 * <div name="box_3">...</div>
 */
		
	$.fn.target=function(o){
		if(!o)o={};
		if(o.closer==null)o.closer=true;
		if (o.others) {
			o.others = this.parent().find("a[href*=#]").not(this);
			if (!o.others.length) 
				o.others = this.parent().parent().find("a[href*=#]").not(this);
			if (!o.others.length) 
				o.others = this.parent().parent().parent().find("a[href*=#]").not(this);
		}

		o.target=$("#"+this.attr("href").split("#")[1]);
		if(!o.target.length)o.target=$("[name="+this.attr("href").split("#")[1]+"]");	
		if(!o.target.length)return this;	
		if(o.target.css("display")=="none"){
			
			if(o.closedClass)this.removeClass(o.closedClass);
			if(o.openedClass)this.addClass(o.openedClass);
			if(o.targetClosedClass)o.target.removeClass(o.targetClosedClass);
			if(o.targetOpenedClass)o.target.addClass(o.targetOpenedClass);
			o.target.show();
			if(o.others){
				o.others.each(function(){
					var other = $("#"+$(this).attr("href").split("#")[1]);
					if(o.targetClosedClass)
						other.addClass(o.targetClosedClass);
					if(o.targetOpenedClass)
						other.removeClass(o.targetOpenedClass);
					other.hide();
				});
				if(o.openedClass)o.others.removeClass(o.openedClass);
				if(o.closedClass)o.others.addClass(o.closedClass);
			}
			if(o.open)o.open(o);
		}
		else if(o.closer){
			if(o.openedClass)this.removeClass(o.openedClass);
			if(o.closedClass)this.addClass(o.closedClass);
			if(o.targetClosedClass)o.target.addClass(o.targetClosedClass);
			if(o.targetOpenedClass)o.target.removeClass(o.targetOpenedClass);
			o.target.hide();	
			if(o.close)o.close(o);
			/*if(o.others){
				o.others.each(function(){$("#"+this.attr("href").split("#")[1]).show();});
			}*/		
		}
		return this;
		//if(a=="slide")return this.target_slide(b,c);
		//else if(a=="fade")return this.target_fade(b,c);
		//else return this.target_show(b,c);
	};
	$.fn.target_show=function(o){
		t=$("#"+this.attr("href").split("#")[1]);
		if(t.css("display")=="none")
			t.show();
		else{
			t.hide();			
		}
		return this;
	}
	$.fn.target_slide=function(t){
		t=$("#"+this.attr("href").split("#")[1]);
		if(t.css("display")=="none")
			t.slideDown(200,function(){t.show();});
		else{t.slideUp(200,function(){t.hide();});}
		return this;
	}
	
	$.fn.target_fade=function(t){
		t=$("#"+this.attr("href").split("#")[1]);		
		if(t.css("display")=="none"){
			t.css({display:'block',opacity:0}).animate({opacity:1},200);
			$.hideembed();
		}
			
		else{$.showembed();t.animate({opacity:0},200,function(){t.css({display:'none'});});}
		return this;
	}



/** 
 * Widget form validation, return True if form is validate, False if not
 * @function $( selector ).validate_form()
 * @param selector The <form> element to validate
 * @param o options return from ajax widget_edit or widget_add
 * @return $( selector )
 * @example 
 */

	$.fn.validate_form = function(o,d) {		
		o = $.extend({
			infoClass:  	"info",
			errorClass: 	"dyb_error"
		}, o);		
		this.find("."+o.errorClass).removeClass(o.errorClass).find("."+o.infoClass).html("");
		if($.fn.trim(o.data[0])=="{") {			
			var data = window["eval"]("("+o.data+")");
			for(var i in data) {
				var name = i.replace(/\[/g,"\\[").replace(/\]/g,"\\]");
				this.find(name).addClass(o.errorClass).find("."+o.infoClass).html(data[i]);
			}			
			return false;
		}
		else return true;
	};

	$.fn.check_input=function(o,b,l){
		b=this.find("input:checkbox").bind("mousedown", function(){
			if(b.is(":checked")) b.removeAttr("checked");
			else b.attr("checked", "checked");
		});
		this.bind("click", function() {	
			b.trigger("mousedown");
			return false;
		});		
		return this;
	};
	
/**
 * Share CV by email form
 */	
$.fn.share_cv_email_form = function( ) {
		
		if (typeof(this)=='object' && this instanceof Array) {
			if( this[0].share_cv_email_form && !this.is(':visible') ) return this;
			this[0].origin_message = this.find('textarea').val();
			this[0].share_cv_email_form = true;
		}
		
		this.find('a.back').click(function() {
			$('#sharecv-link').click();
		});
		
		return this.form({	
			enhance: true,
			before: function( o ) {
				if( o.lock ) return false;
				o.lock = true;
				o.input.addClass('loading');
			},
			success: function( o ) {
				if ( o.data != "" ) {
					o.data = $(o.data);
					if( o.data.length ) {
						o.form.replaceWith( o.data.eq(0).find('form').share_cv_email_form() );
						if( !o.data.find('div.error').length ) {
							o.data.eq(0).hide();
							setTimeout(function() { 
								$(document).trigger('click.options'); 
								$('.sharemailTab.form').show();
								$('.sharemailTab.valid').hide();
								}, 3000);
							
						}
					}
				}
				o.lock = false;
			}
		});
	}

	$.fn.smoothReplaceWith=function(elem){

		this.after(elem).remove();
		
		/*this.animate({opacity:0}).parent().append(elem.animate({opacity:1}, 100)).animate({ width:elem.width(), height:elem.height() }, function(){
			//this.parentNode.insertBefore(elem[0], this);
			//this.parentNode.remove(this);
		});*/		
		//w.wrap("<div style='position:relative;'></div>").css({width:w.width(), height:w.height(), left:0, top:0, position:'absolute' });						
		//w.before(rep.animate({opacity: 1}, 100));
		//w.animate({opacity: 0}, 100);//, function() {$(this).remove();})
	};


/**
 *
 * Color picker
 * Author: Stefan Petre www.eyecon.ro
 * 
 * Dual licensed under the MIT and GPL licenses
 * 
 */

	$.fn.colorpicker = function(opt) {
		opt = opt||{};
		opt.color = opt.color||"#FF0000";
		$.fn.colorpicker.tgr = this;
		$.fn.colorpicker.opt = opt;
		if (typeof opt.color == 'string')
			$.fn.colorpicker.opt.hsb = $.fn.colorpicker.HexToHSB(opt.color);
		else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined)
			$.fn.colorpicker.opt.hsb = $.fn.colorpicker.RGBToHSB(opt.color);
		else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined)
			$.fn.colorpicker.opt.hsb = $.fn.colorpicker.fixHSB(opt.color);
		else return this;		
		if(!$.fn.colorpicker.tpl) {
			$.fn.colorpicker.tpl = $('<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_submit">'+(opt.buttonName?opt.buttonName:"")+'</div></div>')
				.appendTo("body").hide();			
			$.fn.colorpicker.selector = $.fn.colorpicker.tpl.find('div.colorpicker_color').bind('mousedown', $.fn.colorpicker.downSelector);
			
			$.fn.colorpicker.selector_bg = $.fn.colorpicker.selector.find("> div");
			if($.ie6){
				$.fn.colorpicker.selector_bg.attr("style", "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					+ "(src=\'/images/css/base/configbar/changedesign/colorpicker/overlay.png\', sizingMethod='scale');");
				$.fn.colorpicker.selector_bg.css("background-image","none");			
			}

			$.fn.colorpicker.selectorIndic = $.fn.colorpicker.selector.find('div div');
			$.fn.colorpicker.hue = $.fn.colorpicker.tpl.find('div.colorpicker_hue').bind('mousedown', $.fn.colorpicker.downHue).find("div");
			$.fn.colorpicker.newColor = $.fn.colorpicker.tpl.find('div.colorpicker_new_color');			
		}		
			
		return this.each(function () {
			var options = $.extend({}, $.fn.colorpicker.opt);
			if(opt.onSubmit)$.fn.colorpicker.tpl.find('div.colorpicker_submit').unbind('click').bind('click', function() {
				opt.onSubmit($.fn.colorpicker.opt);
				//$.fn.colorpicker.hide();
			});	
			options.origColor = opt.color;
			$.fn.colorpicker.opt.picker = $.fn.colorpicker.tpl;			
			$.fn.colorpicker.show(null,$.fn.colorpicker.opt.contain?$.fn.colorpicker.opt.contain:null);
			$.fn.colorpicker.change();
			if($.ie6)$.fn.colorpicker.selector_bg.css("background-image","none");			
		});
	};	
	$.fn.colorpicker.show = function (ev) {			
		$(document).bind('mousedown', $.fn.colorpicker.hide);
		if($.fn.colorpicker.opt.onOpen){
			$.fn.colorpicker.opt.onOpen($.fn.colorpicker.opt);
			if($.ie6)$.fn.colorpicker.selector_bg.attr("style", "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					+ "(src=\'/images/css/base/configbar/changedesign/colorpicker/overlay.png\', sizingMethod='scale');");		
		}
		else {
			if(contain)	$.fn.colorpicker.tpl.appendTo(contain)
			else {
				var pos = $.fn.colorpicker.tgr.offset();
				var top = pos.top + $.fn.colorpicker.tgr[0].offsetHeight;
				var left = pos.left;
				$.fn.colorpicker.tpl.css({left: left + 'px', top: top + 'px'})
			}	
			$.fn.colorpicker.tpl.show();
			if($.ie6)$.fn.colorpicker.selector_bg.attr("style", "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					+ "(src=\'/images/css/base/configbar/changedesign/colorpicker/overlay.png\', sizingMethod='scale');");
		}
		return false;
	};
	$.fn.colorpicker.hide = function (ev) {		
		var offset = $.fn.colorpicker.tpl.offset();
		if(ev)ev = !(ev.pageX < offset.left || ev.pageX > offset.left + $.fn.colorpicker.tpl.width() ||
			ev.pageY < offset.top || ev.pageY > offset.top +  $.fn.colorpicker.tpl.height());
		if(!ev) {			
			$(document).unbind('mousedown', $.fn.colorpicker.hide);
			if($.fn.colorpicker.opt.onClose)$.fn.colorpicker.opt.onClose($.fn.colorpicker.opt);
			else $.fn.colorpicker.tpl.hide();
		}		
		return false;
	};
	$.fn.colorpicker.change = function (ev) {		
		$.fn.colorpicker.opt.rgbsat = $.fn.colorpicker.HSBToRGB({h: $.fn.colorpicker.opt.hsb.h, s: 100, b: 100});
		$.fn.colorpicker.selector_bg.css('background-color', 'rgb('+$.fn.colorpicker.opt.rgbsat.r+','+$.fn.colorpicker.opt.rgbsat.g+','+$.fn.colorpicker.opt.rgbsat.b+')');
		$.fn.colorpicker.selectorIndic.css({
			left: parseInt(150 * $.fn.colorpicker.opt.hsb.s/100, 10),
			top: parseInt(150 * (100-$.fn.colorpicker.opt.hsb.b)/100, 10)
		});
		$.fn.colorpicker.hue.css('top', parseInt(150 - 150 * $.fn.colorpicker.opt.hsb.h/360, 10));
		$.fn.colorpicker.opt.rgb = $.fn.colorpicker.HSBToRGB($.fn.colorpicker.opt.hsb);
		$.fn.colorpicker.newColor.css('backgroundColor', 'rgb('+$.fn.colorpicker.opt.rgb.r+','+$.fn.colorpicker.opt.rgb.g+','+$.fn.colorpicker.opt.rgb.b+')');
		if($.fn.colorpicker.opt.onChange)$.fn.colorpicker.opt.onChange($.fn.colorpicker.opt);
	};
	$.fn.colorpicker.downHue = function (ev) {
		ev.data = {y: $(this).offset().top};
		$.fn.colorpicker.moveHue(ev);
		$(document).bind('mouseup', ev.data, $.fn.colorpicker.upHue).bind('mousemove', ev.data, $.fn.colorpicker.moveHue);
	};
	$.fn.colorpicker.moveHue = function (ev) {
		$.fn.colorpicker.opt.hsb.h = parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10);
		$.fn.colorpicker.change();
		return false;
	};
	$.fn.colorpicker.upHue = function (ev) {
		$(document).unbind('mouseup', $.fn.colorpicker.upHue).unbind('mousemove', $.fn.colorpicker.moveHue);
		return false;
	};
	$.fn.colorpicker.downSelector = function (ev) {			
		ev.data = {pos: $(this).offset()};
		$.fn.colorpicker.moveSelector(ev);
		$(document).bind('mouseup', ev.data, $.fn.colorpicker.upSelector).bind('mousemove', ev.data, $.fn.colorpicker.moveSelector);
	};
	$.fn.colorpicker.moveSelector = function (ev) {
		$.fn.colorpicker.opt.hsb.b = parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10);
		$.fn.colorpicker.opt.hsb.s = parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10);
		$.fn.colorpicker.change();
		return false;
	};
	$.fn.colorpicker.upSelector = function (ev) {
		$(document).unbind('mouseup', $.fn.colorpicker.upSelector).unbind('mousemove', $.fn.colorpicker.moveSelector);
		return false;
	};
	$.fn.colorpicker.fixHSB=function(hsb){return{h:Math.min(360,Math.max(0,hsb.h)),s:Math.min(100,Math.max(0,hsb.s)),b:Math.min(100,Math.max(0,hsb.b))};}; 
	$.fn.colorpicker.fixRGB=function(rgb){return{r:Math.min(255,Math.max(0,rgb.r)),g:Math.min(255,Math.max(0,rgb.g)),b:Math.min(255,Math.max(0,rgb.b))};};
	$.fn.colorpicker.fixHex=function(hex){var len=6-hex.length;if(len>0){var o=[];for(var i=0;i<len;i++){o.push('0');}o.push(hex);hex=o.join('');}return hex;}; 
	$.fn.colorpicker.HexToRGB=function(hex){var hex=parseInt(((hex.indexOf('#')>-1)?hex.substring(1):hex),16);return{r:hex>>16,g:(hex&0x00FF00)>>8,b:(hex&0x0000FF)};};
	$.fn.colorpicker.HexToHSB=function(hex){return $.fn.colorpicker.RGBToHSB($.fn.colorpicker.HexToRGB(hex));};
	$.fn.colorpicker.RGBToHSB=function(rgb){var hsb={h:0,s:0,b:0};var min=Math.min(rgb.r,rgb.g,rgb.b);var max=Math.max(rgb.r,rgb.g,rgb.b);var delta=max-min;hsb.b=max;if(max!=0){}hsb.s=max!=0?255*delta/max:0;if(hsb.s!=0){if (rgb.r==max){hsb.h=(rgb.g-rgb.b)/delta;}else if(rgb.g==max){hsb.h=2+(rgb.b-rgb.r)/delta;}else{hsb.h=4+(rgb.r-rgb.g)/delta;}}else{hsb.h=-1;}hsb.h*=60;if (hsb.h<0){hsb.h+=360;}hsb.s*=100/255;hsb.b*=100/255;return hsb;};
	$.fn.colorpicker.HSBToRGB=function(hsb){var rgb={};var h=Math.round(hsb.h);var s=Math.round(hsb.s*255/100);var v=Math.round(hsb.b*255/100);if(s==0){rgb.r=rgb.g=rgb.b=v;}else{var t1=v;var t2=(255-s)*v/255;var t3=(t1-t2)*(h%60)/60;if(h==360)h=0;if(h<60){rgb.r=t1;rgb.b=t2;rgb.g=t2+t3}else if(h<120){rgb.g=t1;rgb.b=t2;rgb.r=t1-t3}else if(h<180){rgb.g=t1;rgb.r=t2;rgb.b=t2+t3}else if(h<240){rgb.b=t1;rgb.r=t2;rgb.g=t1-t3}else if(h<300){rgb.b=t1;rgb.g=t2;rgb.r=t2+t3}else if(h<360){rgb.r=t1;rgb.g=t2;rgb.b=t1-t3}else{rgb.r=0;rgb.g=0;rgb.b=0}}return{r:Math.round(rgb.r),g:Math.round(rgb.g),b:Math.round(rgb.b)};};
	$.fn.colorpicker.RGBToHex=function(rgb){var hex=[rgb.r.toString(16),rgb.g.toString(16),rgb.b.toString(16)];$.each(hex,function(nr,val){if(val.length==1){hex[nr]='0'+val;}});return hex.join('');};
	$.fn.colorpicker.HSBToHex=function(hsb){return $.fn.colorpicker.RGBToHex($.fn.colorpicker.HSBToRGB(hsb));};

		
})(jQuery);


$.hideembed =function(el, html, embeds) { embeds= $('embed, object', el) 
	if($.browser.msie && el && embeds.length != 0) 
		embeds.parent().each(function(t) { t = $(this);
			t.css({height:$('embed, object',this).height()})[0].html = t.html();
			t.html('').addClass('hiddedembed');
		});
	embeds.css({visibility:'hidden'});
};

$.showembed = function(el, hide) { hide = $('.hiddedembed', el);
	if($.browser.msie && el && hide.length != 0) 
		hide.each(function() { $(this).html(this.html).removeClass('hiddedembed'); });
	$('embed, object',el).css({visibility:'visible'});
};

(function(){ 
	$.getUrlParam = function(param, url) {
		var val = new RegExp(".*\?.*"+param+"=(.+)","g").exec(url);
		if(val) return val[1].split("&")[0];
		else return false;
	};
})(jQuery);

(function(){ 
	$.fn.pulsate = function(p, i, o) {		
		if(!o)o=0;
		if(!p)p=150;
		if(!i)i=4;
		this.animate({opacity:o},p, function() {			
			if(i<=0) return false;
			$(this).pulsate(p+=20, i-=1, (o==0 || i==0? 1 : 0));
		});
	};
})(jQuery);

/**
 * To delay a function call
 */
var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();


/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/**
 * Track a page view
 */
$.tracking = function(uri) {
	try{
		if (pageTracker) {
			pageTracker._trackPageview(uri);
		}
	} catch(e) {
		
	}
};

/**
 * Track an event
 */
$.trackEvent = function(cat, val, option) {
	try {
		if (pageTracker) {
			pageTracker._trackEvent(cat, val, option);
		}
	} catch (e) {
		
	}
}

$.fn.selectRange = function(start, end) {
return this.each(function() {
    if(this.setSelectionRange) {
        this.focus();
        this.setSelectionRange(start, end);
    } else if(this.createTextRange) {
        var range = this.createTextRange();
        range.collapse(true);
        range.moveEnd('character', end);
        range.moveStart('character', start);
        range.select();
    }
});
};

/** Copy to clipboard **/
var ZeroClipboard = {
	
	version: "1.0.7",
	clients: {}, // registered upload clients on page, indexed by id
	moviePath: '/script/lib/copy/ZeroClipboard.swf', // URL to movie
	nextId: 1, // ID of next movie
	
	$: function(thingy) {
		// simple DOM lookup utility function
		if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
		if (!thingy.addClass) {
			// extend element with a few useful methods
			thingy.hide = function() { this.style.display = 'none'; };
			thingy.show = function() { this.style.display = ''; };
			thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
			thingy.removeClass = function(name) {
				var classes = this.className.split(/\s+/);
				var idx = -1;
				for (var k = 0; k < classes.length; k++) {
					if (classes[k] == name) { idx = k; k = classes.length; }
				}
				if (idx > -1) {
					classes.splice( idx, 1 );
					this.className = classes.join(' ');
				}
				return this;
			};
			thingy.hasClass = function(name) {
				return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
			};
		}
		return thingy;
	},
	
	setMoviePath: function(path) {
		// set path to ZeroClipboard.swf
		this.moviePath = path;
	},
	
	dispatch: function(id, eventName, args) {
		// receive event from flash movie, send to client		
		var client = this.clients[id];
		if (client) {
			client.receiveEvent(eventName, args);
		}
	},
	
	register: function(id, client) {
		// register new client to receive events
		this.clients[id] = client;
	},
	
	getDOMObjectPosition: function(obj, stopObj) {
		// get absolute coordinates for dom element
		var info = {
			left: 0, 
			top: 0, 
			width: obj.width ? obj.width : obj.offsetWidth, 
			height: obj.height ? obj.height : obj.offsetHeight
		};

		while (obj && (obj != stopObj)) {
			info.left += obj.offsetLeft;
			info.top += obj.offsetTop;
			obj = obj.offsetParent;
		}

		return info;
	},
	
	Client: function(elem) {
		// constructor for new simple upload client
		this.handlers = {};
		
		// unique ID
		this.id = ZeroClipboard.nextId++;
		this.movieId = 'ZeroClipboardMovie_' + this.id;
		
		// register client with singleton to receive flash events
		ZeroClipboard.register(this.id, this);
		
		// create movie
		if (elem) this.glue(elem);
	}
};

ZeroClipboard.Client.prototype = {
	
	id: 0, // unique ID for us
	ready: false, // whether movie is ready to receive events or not
	movie: null, // reference to movie object
	clipText: '', // text to copy to clipboard
	handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
	cssEffects: true, // enable CSS mouse effects on dom container
	handlers: null, // user event handlers
	
	glue: function(elem, appendElem, stylesToAdd) {
		// glue to DOM element
		// elem can be ID or actual DOM element object
		this.domElement = ZeroClipboard.$(elem);
		
		// float just above object, or zIndex 99 if dom element isn't set
		var zIndex = 99;
		if (this.domElement.style.zIndex) {
			zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
		}
		
		if (typeof(appendElem) == 'string') {
			appendElem = ZeroClipboard.$(appendElem);
		}
		else if (typeof(appendElem) == 'undefined') {
			appendElem = document.getElementsByTagName('body')[0];
		}
		
		// find X/Y position of domElement
		var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
		
		// create floating DIV above element
		this.div = document.createElement('div');
		var style = this.div.style;
		style.position = 'absolute';
		style.left = '' + box.left + 'px';
		style.top = '' + box.top + 'px';
		style.width = '' + box.width + 'px';
		style.height = '' + box.height + 'px';
		style.zIndex = zIndex;
		
		if (typeof(stylesToAdd) == 'object') {
			for (addedStyle in stylesToAdd) {
				style[addedStyle] = stylesToAdd[addedStyle];
			}
		}
		
		// style.backgroundColor = '#f00'; // debug
		
		appendElem.appendChild(this.div);
		
		this.div.innerHTML = this.getHTML( box.width, box.height );
	},
	
	getHTML: function(width, height) {
		// return HTML for movie
		var html = '';
		var flashvars = 'id=' + this.id + 
			'&width=' + width + 
			'&height=' + height;
			
		if (navigator.userAgent.match(/MSIE/)) {
			// IE gets an OBJECT tag
			var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
			html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
		}
		else {
			// all other browsers get an EMBED tag
			html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
		}
		return html;
	},
	
	hide: function() {
		// temporarily hide floater offscreen
		if (this.div) {
			this.div.style.left = '-2000px';
		}
	},
	
	show: function() {
		// show ourselves after a call to hide()
		this.reposition();
	},
	
	destroy: function() {
		// destroy control and floater
		if (this.domElement && this.div) {
			this.hide();
			this.div.innerHTML = '';
			
			var body = document.getElementsByTagName('body')[0];
			try { body.removeChild( this.div ); } catch(e) {;}
			
			this.domElement = null;
			this.div = null;
		}
	},
	
	reposition: function(elem) {
		// reposition our floating div, optionally to new container
		// warning: container CANNOT change size, only position
		if (elem) {
			this.domElement = ZeroClipboard.$(elem);
			if (!this.domElement) this.hide();
		}
		
		if (this.domElement && this.div) {
			var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
			var style = this.div.style;
			style.left = '' + box.left + 'px';
			style.top = '' + box.top + 'px';
		}
	},
	
	setText: function(newText) {
		// set text to be copied to clipboard
		this.clipText = newText;
		if (this.ready) this.movie.setText(newText);
	},
	
	addEventListener: function(eventName, func) {
		// add user event listener for event
		// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
		if (!this.handlers[eventName]) this.handlers[eventName] = [];
		this.handlers[eventName].push(func);
	},
	
	setHandCursor: function(enabled) {
		// enable hand cursor (true), or default arrow cursor (false)
		this.handCursorEnabled = enabled;
		if (this.ready) this.movie.setHandCursor(enabled);
	},
	
	setCSSEffects: function(enabled) {
		// enable or disable CSS effects on DOM container
		this.cssEffects = !!enabled;
	},
	
	receiveEvent: function(eventName, args) {
		// receive event from flash
		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
				
		// special behavior for certain events
		switch (eventName) {
			case 'load':
				// movie claims it is ready, but in IE this isn't always the case...
				// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
				this.movie = document.getElementById(this.movieId);
				if (!this.movie) {
					var self = this;
					setTimeout( function() { self.receiveEvent('load', null); }, 1 );
					return;
				}
				
				// firefox on pc needs a "kick" in order to set these in certain cases
				if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
					var self = this;
					setTimeout( function() { self.receiveEvent('load', null); }, 100 );
					this.ready = true;
					return;
				}
				
				this.ready = true;
				try{
					this.movie.setText( this.clipText );
					this.movie.setHandCursor( this.handCursorEnabled );
				} catch (err) {
					
				}
				break;
			
			case 'mouseover':
				if (this.domElement && this.cssEffects) {
					this.domElement.addClass('hover');
					if (this.recoverActive) this.domElement.addClass('active');
				}
				break;
			
			case 'mouseout':
				if (this.domElement && this.cssEffects) {
					this.recoverActive = false;
					if (this.domElement.hasClass('active')) {
						this.domElement.removeClass('active');
						this.recoverActive = true;
					}
					this.domElement.removeClass('hover');
				}
				break;
			
			case 'mousedown':
				if (this.domElement && this.cssEffects) {
					this.domElement.addClass('active');
				}
				break;
			
			case 'mouseup':
				if (this.domElement && this.cssEffects) {
					this.domElement.removeClass('active');
					this.recoverActive = false;
				}
				break;
		} // switch eventName
		
		if (this.handlers[eventName]) {
			for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
				var func = this.handlers[eventName][idx];
			
				if (typeof(func) == 'function') {
					// actual function reference
					func(this, args);
				}
				else if ((typeof(func) == 'object') && (func.length == 2)) {
					// PHP style object + method, i.e. [myObject, 'myMethod']
					func[0][ func[1] ](this, args);
				}
				else if (typeof(func) == 'string') {
					// name of function
					window[func](this, args);
				}
			} // foreach event handler defined
		} // user defined handler for event
	}
	
};

(function() {
	escape_re = /[#;&,\.\+\*~':"!\^\$\[\]\(\)=>|\/\\]/;
	jQuery.escape = function jQuery$escape(s) {
	  var left = s.split(escape_re, 1)[0];
	  if (left == s) return s;
	  return left + '\\' + 
	    s.substr(left.length, 1) + 
	    jQuery.escape(s.substr(left.length+1));
	};
	})();

// Common action for app :
$(function() {
	$('.nyroModal').nyroModal({
		resizable: true,
		autoSizable: true
	});
	
	if ($("#limitationPremium").length > 0) {
		$.nmManual('#limitationPremium', {
			closeOnEscape: false,
			closeOnClick: false,
			showCloseButton: false
		});
	}
	
	$('.registerForm').live('submit', function(event) {
		var error = false;
		var form = $(this);
		$.ajax({
			url: '/'+LOCALE+'/user/emailValidation', 
			async: false,
			data: {email:form.find('#userRegister_login').val()},
			success: function(data) {
				if (data != '') {
					form.find('#userRegister_login').parent().addClass('error');
					form.find('div.field.email span.info').html(data);
					error = true;
				} else {
					form.find('#userRegister_login').parent().removeClass('error');
					form.find('div.field.email span.info').html('');
				}
			}
		});
		if (form.find('#userRegister_plainPassword').val().length == 0) {
			form.find('#userRegister_plainPassword').parent().addClass('error');
			error = true;
		} else {
			form.find('#userRegister_plainPassword').parent().removeClass('error');
		}
		if (error) {
			event.preventDefault();
		} else {
			$.trackEvent('register', 'manual');
		}
	});
	
	$('.facebookConnectBt').bind('click', function(event){
		if ($(this).attr('id') != 'fb-connect') {
			$.trackEvent('register', 'facebook');
		}
	});
	
	$('#closeIncentive').bind('click', function(event) {
		$.get('/' + LOCALE + '/export/exportSeen');
		$(this).parent().remove();
		event.preventDefault();
	});
	
	if ($(".chzn-select").length > 0) {
		$(".chzn-select").chosen();
	}
});


var DYBActionManger = function() {
	var Manager = function() {};
	
	Manager.prototype = {
		showLoader: true,
		doConfirm: false,
		loadingMessage: loadingMessage,
		messageBoxSelector: '#messagesBox',
		confirm: function(msg) {
			var html = this.formatMessage(msg);
			$(this.messageBoxSelector).removeClass().addClass('valid').html(html).slideDown().delay(2000).slideUp();
		},
		showError: function(msg) {
			var html = this.formatMessage(msg);
			$(this.messageBoxSelector).removeClass().addClass('error').html(html).slideDown().delay(2000).slideUp();
		},
		formatMessage: function(msg) {
			html = '<ul>';
			if (msg instanceof Array) {
				for(var i=0; i < msg.length; i++) {
					html = html + '<li>' + msg[i] + '</li>';
				}
			} else {
				html = html + '<li>' + msg + '</li>';
			}
			html = html + '</ul>';
			return html;
		},
		loaderShow: function(msg)  {
			var html = this.formatMessage(msg);
			$(this.messageBoxSelector).removeClass().addClass('loading').html(html).show();
		},
		loaderHide: function(msg)  {
			if ($(this.messageBoxSelector).hasClass('loading')) {
				$(this.messageBoxSelector).hide();
			}
		},
		callback: null,
		getData: function(url) {
			//var callback = this.callback;
			var manager = this;
			this.loaderShow(this.loadingMessage);
			$.ajax({
			  url: url,
			  type: 'GET',
			  context: this,
			  error: function(msg) {
				  manager.loaderHide();
				  manager.showError(eval(msg.responseText));
			  },
			  success: function(msg){
				  manager.loaderHide();
				  if (manager.callback !== null) {
					  manager.callback(msg);
				  }
				  if (manager.doConfirm){
					  manager.confirm(msg);
				  }
			  }
			});
		}
	}
	
	return({
		name: "DybActionManager",
		manage: function(url, options) {
			var manager = new Manager();
			$.extend(manager, options);
			manager.getData(url);
		}
	});
}();

//---------------promobar resize body--------------------------
promobarResize = function(){
	if ($("#promoBar").length > 0) {
		$("body.showPromobar").css('padding-top',$("#promoBar").height()+10);
	}
};
promobarResize();
$(window).resize(function() {
	promobarResize();
});


//-----------------------adminPanel----------------------------
adminPanel = function(){
	function adminPanelPos(){
		var adminPanelposY = ($(window).height() - 141) / 2
		$("#adminPanel").css('top',adminPanelposY +'px');
	};
	adminPanelPos();
	$("#adminPanel").animate({
	    opacity: 1
	}, 2000);
	$(window).bind('resize', function() {
		adminPanelPos();
	});
	$("#adminPanel .adminOpener").click(function(){
		if(!$('#adminPanelContent').hasClass('show')){
			$('#adminPanelContent').show().addClass('show');
		}
		else{
			$('#adminPanelContent').hide().removeClass('show');
		}
	});
	
	
	$('body').click(function() {
		if($('#adminPanelContent').hasClass('show')){
			$('#adminPanel .adminOpener').click();
		}
	});
	$('#adminPanel').click(function(event){
		event.stopPropagation();
	});
	

	$("#adminPanel_validate").click(function(){
		if ($('input[type=radio][name=moderation_level]:checked').length > 0) {
			$.ajax({"url": LOCALE + "/cv/moderate?moderation_level=" + $('input[type=radio][name=moderation_level]:checked').attr('value') + '&user_cv_id=' + user_cv_id,
					"type": "GET",
					"success": function(){alert('CV Updated');},
					"error" : function(xhr, ajaxOptions, thrownError){alert(xhr.responseText);}
				});
		}
	});
};
if ($("#adminPanel").length > 0) {
	adminPanel();
}
