// DOM ready
$(function(){
	initNav();
	initClearInputs();
	initOpenClose();
	initTabs();
	initNavIndexes();
	initCustomForms();
	initGallery();
	//initToolTips();
	contactOpenClose();
	scrollPageToTop();
	initScrollTo();
	initPopup();
	initSliderUI();
	initScrollFields();
	fixWidthTooltipsMap();
	addClassFunc();
	initMoveBlock();
	//initCustomFile();
	
	//Formulaire contact rapide
	$("#quick_contact").validationEngine('attach', {
		onValidationComplete: function(form, status){
			if (status == true) submit_to_ajax_page("#quick_contact");
		}
	});
	
	//Formulaire contact produit
	$("#product_contact").validationEngine('attach', {
		onValidationComplete: function(form, status){
			if (status == true) submit_product_contact_to_ajax_page("#product_contact");
		}
	});	
	
	//Formulaire recrutement
	$("#apply_form").validationEngine('attach', {
		onValidationComplete: function(form, status){
			if (status == true) submit_apply("#apply_form");
		}
	});		
	
	//Formulaire contact (page)
	$("#contact_form").validationEngine('attach', {
		onValidationComplete: function(form, status){
			if (status == true) submit_contact_to_ajax_page("#contact_form");
		}
	});		

	//Formulaire Cloud sur mesure
	$("#cloud_form").validationEngine('attach', {
		onValidationComplete: function(form, status){
			if (status == true) submit_cloud_quote("#cloud_form");
		}
	});		
	
	//Recherche rapide
	$("#search_form").bind("keypress", function(e) {
		if (e.keyCode == 13) return false;
	});

	$("#q").focusout(function() {
		$("#searchresults").hide();
	});
	
	$(".contact-link").bind("click", function(e) {
		if ($(".contact-drop").is(":visible")) $("#quick_contact").validationEngine('hideAll');
	});
	
	$("input[name='datacenter']").bind("click", function(e) {
		$.each($("input[name='datacenter']:checked"), function() {
			$(".mc_dc").text($(this).val());
		});
	});
	
	$("#os .col").bind("click", function(e) {
		$.each($("input[name='os']:checked"), function() {
			$(".mc_os").text($(this).val());
		});
	});		

	$("#plesk .col").bind("click", function(e) {
		$.each($("input[name='plesk']:checked"), function() {
			$(".mc_plesk").text($(this).val());
		});
	});	
	
});

// window load init
$(window).load(function(){}).scroll(toggleTopLink);


// init move block
function initMoveBlock(){
	$('#sidebar .cloud-widget').movingBlock({
		holder:'div.twocolumns',
		topDif:0,
		bottomDif:0,
		toEl:'#footer',
		cssTop:'marginTop',
		duration:350    
	});
}

// add class
function addClassFunc(){
	addClass({
		tagName:'div',
		tagClass:'lang',
		classAdd:'lang-active'
	})
	
	addClass({
		tagName:'a',
		tagClass:'a-class',
		classAdd:'div-parent-add-class',
		addToParent:true
	})
}

// fix width tooltip
function fixWidthTooltipsMap(){
	$('div.step-map').each(function(){
		var map = $(this);
		map.find('div.dot').each(function(){
			var dot = $(this);
			var tt = dot.find('div.product-tooltip');
			tt.find('.dot-frame').width(tt.find('label').width()*1.75)
		});
	});
}

// scroll to ancore from input:checkbox
function initScrollFields(){
	var _d =300;
	$('form.scroll-fields').each(function(){
		var form = $(this);
		var input = form.find('input.scroll-to');
		input.change(function(){
			if($(this).is(':checked')){
				var _top  = $($(this).attr('alt')).length ? $($(this).attr('alt')).offset().top : 0;
				$('body, html').animate({scrollTop: _top},{duration: _d})
			}
		});
	});
}

// init slider UI
function initSliderUI(){
	$('div.step-slider').each(function(){
		var _this = $(this);
		var counter = _this.find('.ttl span.count');
		var hidval	= _this.find('.ttl input.count');
		var checkedval	= _this.find('.ttl span.checked');
		
		var recapval = $('.'+_this.attr("id"));
		var sliderBar = _this.find('.slider-bar > .slider');
		var scale = _this.find('div.scale ul > li');

		if(sliderBar.parent().attr('title')){
			// create settings for slider
			var settings = {};
			var options = sliderBar.parent().attr('title').split(';');
			for ( var i in options ) {
				var opt = eval(options[i].split('=')[1]);
				settings[options[i].split('=')[0]] = opt; 
			}
			sliderBar.parent().removeAttr('title');
			
			// init sliders
			sliderBar.slider({
				range: "min",
				value: settings.value,
				min: settings.min,
				max: settings.max,
				step: settings.step,
				create: function(event, ui){
					if(settings.value == settings.max) sliderBar.addClass('fix');
					else sliderBar.removeClass('fix');
					if(settings.values) { counter.text(settings.values[settings.value]); hidval.val(settings.values[settings.value]); recapval.text(settings.values[settings.value]); }
					else { counter.text(settings.value); hidval.val(settings.value); recapval.text(settings.value);}
					scale.removeClass('done').filter(':lt('+((settings.value/settings.step))+')').addClass('done');
				},
				change: function(event, ui){
					if(ui.value == settings.max) sliderBar.addClass('fix');
					else sliderBar.removeClass('fix');
					if(settings.values) { counter.text(settings.values[ui.value]); hidval.val(settings.values[ui.value]); recapval.text(settings.values[ui.value]);$(checkedval).addClass("done");}
					else { counter.text(ui.value); hidval.val(ui.value); recapval.text(ui.value);$(checkedval).addClass("done");}
					scale.removeClass('done').filter(':lt('+((ui.value/settings.step))+')').addClass('done');
				},
				slide: function(event, ui){
					if(ui.value == settings.max) sliderBar.addClass('fix');
					else sliderBar.removeClass('fix');
					if(settings.values) { counter.text(settings.values[ui.value]); hidval.val(settings.values[ui.value]); recapval.text(settings.values[ui.value]);}
					else { counter.text(ui.value); hidval.val(ui.value); recapval.text(ui.value);}
					scale.removeClass('done').filter(':lt('+((ui.value/settings.step))+')').addClass('done');
				}
			})
		}
	});
}

// init lightbox
function initPopup(){
	$('body').myPopup();
}

// submit forms
function contact(){
	$("#quick_contact").submit();
}

// submit forms
function send_contact(){
	$("#contact_form").submit();
}

// submit forms
function product(){
	$("#product_contact").submit();
}

// submit forms
function apply(){
	$("#apply_form").submit();
}

// submit forms
function cloud(){
	$("#cloud_form").submit();
}

// submit forms
function newsletter(){
	//$("#newsletter_form").submit();
	submit_newsletter_optin_to_ajax_page("#newsletter_form");
}

// submit forms
function download(){
	
	//alert('Downloading....');
	//$("#newsletter_form").submit();
	submit_download_request_to_ajax_page("#download_form");
}


// submit forms
function searchform(){
	//alert ('ok');
	//$("#search_form").submit();
	submit_to_ajax_search_page("#search_form");
}

// ajax
function submit_to_ajax_page(formid){
	$('#loading').show();
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			if (obj.code == 200){
				$('.error_box').hide();
				$('.success_box').html(obj.message);
				$('.success_box').show();
				$('#loading').hide();
			}
			else{
				$('.success_box').hide();
				$('.error_box').html(obj.message);
				$('.error_box').show();
				$('#loading').hide();
			}
		}
	});
}

function submit_to_ajax_search_page(formid){
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			//if (obj.nb > 0){
				$('#searchresults').html(obj.message);
				$('#searchresults').show().delay(5000).fadeOut();
			//}
		}
	});
}

function submit_newsletter_optin_to_ajax_page(formid){
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			if (obj.code == 200){
				$('#newsletter_email').validationEngine('showPrompt', obj.message, 'pass', 'topLeft', true);
			}
			else{
				$('#newsletter_email').validationEngine('showPrompt', obj.message, 'erreur', 'topLeft', true);
			}	
		}
	});
}

function submit_product_contact_to_ajax_page(formid){
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			if (obj.code == 200){
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'pass', 'topLeft', true);
			}
			else{
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'erreur', 'topLeft', true);
			}	
		}
	});
}

function submit_contact_to_ajax_page(formid){
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			if (obj.code == 200){
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'pass', 'topLeft', true);
			}
			else{
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'erreur', 'topLeft', true);
			}	
		}
	});
}

function submit_cloud_quote(formid){
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			if (obj.code == 200){
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'pass', 'topLeft', true);
			}
			else{
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'erreur', 'topLeft', true);
			}	
		}
	});
}

function submit_apply(formid){
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			if (obj.code == 200){
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'pass', 'topLeft', true);
			}
			else{
				$('#sendbutton').validationEngine('showPrompt', obj.message, 'erreur', 'topLeft', true);
			}	
		}
	});
}

function submit_download_request_to_ajax_page(formid){
	$.ajax({
		type: 'POST',
		url: $(formid).attr("action"),
		data: $(formid).serialize(),
		success: function(retour) {
			var obj = jQuery.parseJSON(retour);
			if (obj.code == 200){
				$('#dlbutton').validationEngine('showPrompt', obj.message, 'pass', 'topLeft', true);
			}
			else{
				$('#dlbutton').validationEngine('showPrompt', obj.message, 'erreur', 'topLeft', true);
			}	
		}
	});
}

//toogle state to top-link
function toggleTopLink(){
	if($(window).scrollTop() > $(window).height()/2) $('a.top-link').fadeIn();
	else $('a.top-link').fadeOut();
}

// Scroll page top
function scrollPageToTop(){
	$('a.top-link').hide().click(function(){
		if ($.browser.safari) {
			$('body').animate({
				'scrollTop':0
			}, 750)
		}
		else $('html').animate({
			'scrollTop':0
		}, 750)
		return false;
	})
}

// Scroll page to ancore
function initScrollTo(){
	var link = $('a.scroll-to');
	var _d =300;
	link.click(function(){
		var _top  = $($(this).attr('href')).length ? $($(this).attr('href')).offset().top : 0;
		$('body, html').animate({scrollTop: _top},{duration: _d})
		return false;
	});
}

// init contact Open-Close
function contactOpenClose(){
	$('div.contact-block').each(function(){
		var _this = $(this);
		var linkOpen = _this.find('a.contact-link');
		var drop = _this.find('div.contact-drop');
		var closeBtn = drop.find('a.close');
		
		linkOpen.click(function(){
			if(_this.hasClass('opened')){
				_this.removeClass('opened');
				drop.slideUp();
			}
			else{
				_this.addClass('opened');
				drop.slideDown();
			}
			return false;
		});
		closeBtn.click(function(){
			_this.removeClass('opened');
			drop.slideUp();
			return false;
		});
	});
}

// init tooltips in logos gallery
function initToolTips(){
	var body = $('body');
	$('.promo-section ul > li').each(function(){
		var _this = $(this);
		var toolTip = _this.find('div.promo-tooltip');
		var top = _this.offset().top - toolTip.outerHeight(true) + _this.height()*1.3;
		var left = _this.width();
		var closeBtn = toolTip.find('a.close');
		
		_this.data('tootip', toolTip);
		
		toolTip.css({
			left:_this.offset().left + left,
			top:top,
			zIndex:1000
		});
		
		_this.find('> a').click(function(){
			_this.parent().children().each(function(){
				$(this).data('tootip').find('a.close').trigger('click');
			})
			toolTip.css({left:_this.offset().left+left}).appendTo(body).show();
			$('html, body').bind('click', hideToolTip)
			$(window).bind('resize', hideToolTip);
			return false
		});
		
		closeBtn.click(hideToolTip);
		
		function hideToolTip(e){
			if(!$(e.target).parents('.promo-tooltip').length || $(e.target).hasClass('close')){
				toolTip.hide().appendTo(_this);
				$('html, body').unbind('click', hideToolTip)
				$(window).unbind('resize', hideToolTip);
			}
			return false;
		}
	});
}

// init gallery
function initGallery(){
	new gallery('.main-gallery', {
		autoRotation: 4000,
		list: '.frame > ul',
		switcher: '.controls > .switcher > ul > li',
		prev: 'a.prev',
		next: 'a.next',
		effect: 'fade'
	});
	new gallery('.news-section', {
		autoRotation: 7000,
		list: '.news-gallery ul',
		prev: 'a.prev',
		next: 'a.next',
		effect: 'slide'
	});
	new gallery('.net-widget', {
		autoRotation: false,
		list: '.frame > ul',
		prev: 'a.prev',
		next: 'a.next',
		effect: 'slide'
	});
	new gallery('.promo-section', {
		autoRotation: false,
		customDimension: true,
		list: '.frame > ul',
		prev: 'a.prev',
		next: 'a.next',
		effect: 'slide'
	});
}

// init custom form
function initCustomForms(){
	$('input:checkbox').customCheckbox();
	$('input:radio').customRadio({
		parentClass: 'rad-checked'
	});
}

// zIndex breadcrumbs
function initNavIndexes(){
	var nav = document.getElementById("breadcrumbs");
	if(nav) {
		var lis = nav.getElementsByTagName("li");
		for (var i=0; i<lis.length; i++) {
			lis[i].style.zIndex = lis.length-i;
		}
	}
}

// init tabs when page ready
function initTabs() {
	if(typeof ContentTabs !== 'undefined') {
		ContentTabs.init();
	}
}

// open-close init
function initOpenClose() {
	jQuery('li.slide-block').OpenClose({
		activeClass:'slide-active',
		opener:'a.open-close',
		slider:'div.slide',
		effect:'slide',
		animSpeed:500
	});
}

// custom upload input
function initCustomFile() {
	var inputs = document.getElementsByTagName('input');
	for (var i= 0; i < inputs.length; i++) {
		if(inputs[i].className.indexOf('file-input-area') != -1) {
			new customFileUpload(inputs[i]);
		}
	}
}

// init clear form fields
function initClearInputs(){
	clearFormFields({
		clearInputs: true,
		clearTextareas: true,
		passwordFieldText: true,
		addClassFocus: "focus",
		filterClass: "default"
	});
}

// init navigation
function initNav(){
	initAutoScalingNav({
		menuId: "nav",
		sideClasses: true,
		minPaddings: 10
	});
	initDrop();
}

// fade drop func
function initDrop(){
	var _dur = 100;
	var _durout = 500;
	$('#nav > li').each(function(){
		var _this = $(this);
		var drop = _this.find('div.nav-drop');
		//click
		_this.mouseenter(function(){
			drop.css({
				opacity:0,
				'display':'block'
			}).stop().animate({opacity:1}, {queue:false, duration: _dur});
		}).mouseleave(function(){
			drop.stop().animate({opacity:0}, {queue:false, duration: _durout, complete: function(){
				drop.css({
					opacity:1,
					'display':'none'
				});
			}});
		});
	});
}

// init auto scaling nav
function initAutoScalingNav(o) {
	if (!o.menuId) o.menuId = "nav";
	if (!o.tag) o.tag = "a";
	if (!o.spacing) o.spacing = 0;
	if (!o.constant) o.constant = 0;
	if (!o.minPaddings) o.minPaddings = 0;
	if (!o.liHovering) o.liHovering = false;
	if (!o.sideClasses) o.sideClasses = false;
	if (!o.equalLinks) o.equalLinks = false;
	if (!o.flexible) o.flexible = false;
	var nav = document.getElementById(o.menuId);
	if(nav) {
		nav.className += " scaling-active";
		var lis = nav.getElementsByTagName("li");
		var asFl = [];
		var lisFl = [];
		var width = 0;
		for (var i=0, j=0; i<lis.length; i++) {
			if(lis[i].parentNode == nav) {
				var t = lis[i].getElementsByTagName(o.tag).item(0);
				asFl.push(t);
				asFl[j++].width = t.offsetWidth;
				lisFl.push(lis[i]);
				if(width < t.offsetWidth) width = t.offsetWidth;
			}
			if(o.liHovering) {
				lis[i].onmouseover = function() {
					this.className += " hover";
				}
				lis[i].onmouseout = function() {
					this.className = this.className.replace("hover", "");
				}
			}
		}
		var menuWidth = nav.clientWidth - asFl.length*o.spacing - o.constant;
		if(o.equalLinks && width * asFl.length < menuWidth) {
			for (var i=0; i<asFl.length; i++) {
				asFl[i].width = width;
			}
		}
		width = getItemsWidth(asFl);
		if(width < menuWidth) {
			var version = navigator.userAgent.toLowerCase();
			for (var i=0; getItemsWidth(asFl) < menuWidth; i++) {
				asFl[i].width++;
				if(!o.flexible) {
					asFl[i].style.width = asFl[i].width + "px";
				}
				if(i >= asFl.length-1) i=-1;
			}
			if(o.flexible) {
				for (var i=0; i<asFl.length; i++) {
					width = (asFl[i].width - o.spacing - o.constant/asFl.length)/menuWidth*100;
					if(i != asFl.length-1) {
						lisFl[i].style.width = width + "%";
					}
					else {
						if(navigator.appName.indexOf("Microsoft Internet Explorer") == -1 || version.indexOf("msie 8") != -1 || version.indexOf("msie 9") != -1)
							lisFl[i].style.width = width + "%";
					}
				}
			}
		}
		else if(o.minPaddings > 0) {
			for (var i=0; i<asFl.length; i++) {
				asFl[i].style.paddingLeft = o.minPaddings + "px";
				asFl[i].style.paddingRight = o.minPaddings + "px";
			}
		}
		if(o.sideClasses) {
			lisFl[0].className += " first-child";
			lisFl[0].getElementsByTagName(o.tag).item(0).className += " first-child-a";
			lisFl[lisFl.length-1].className += " last-child";
			lisFl[lisFl.length-1].getElementsByTagName(o.tag).item(0).className += " last-child-a";
		}
		nav.className += " scaling-ready";
	}
	function getItemsWidth(a) {
		var w = 0;
		for(var q=0; q<a.length; q++) {
			w += a[q].width;
		}
		return w;
	}
}

// init add class
function addClass (_options) {
	var _tagName = _options.tagName;
	var _tagClass = _options.tagClass;
	var _classAdd = _options.classAdd;
	var _addToParent = false || _options.addToParent;
	var _el = document.getElementsByTagName(_tagName);
	if (_el) {
		for (var i=0; i < _el.length; i++) {
			if (_el[i].className.indexOf(_tagClass) != -1) {
				_el[i].onclick = function() {
					if (_addToParent) {
						if (this.parentNode.className.indexOf(_classAdd) == -1) {
							this.parentNode.className += ' '+_classAdd;
						} else {
							this.parentNode.className = this.parentNode.className.replace(_classAdd,'');
						}
					} else {
						if (this.className.indexOf(_classAdd) == -1) {
							this.className += ' '+_classAdd;
						} else {
							this.className = this.className.replace(_classAdd,'');
						}
					}
					return false;
				}
			}
		}
	}
}

// clear form fields func
function clearFormFields(o){
	if (o.clearInputs == null) o.clearInputs = true;
	if (o.clearTextareas == null) o.clearTextareas = true;
	if (o.passwordFieldText == null) o.passwordFieldText = false;
	if (o.addClassFocus == null) o.addClassFocus = false;
	if (!o.filter) o.filter = "default";
	if(o.clearInputs) {
		var inputs = document.getElementsByTagName("input");
		for (var i = 0; i < inputs.length; i++ ) {
			if((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass)) {
				inputs[i].valueHtml = inputs[i].value;
				inputs[i].onfocus = function ()	{
					if(this.valueHtml == this.value) this.value = "";
					if(this.fake) {
						inputsSwap(this, this.previousSibling);
						this.previousSibling.focus();
					}
					if(o.addClassFocus && !this.fake) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				inputs[i].onblur = function () {
					if(this.value == "") {
						this.value = this.valueHtml;
						if(o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);
					}
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
				if(o.passwordFieldText && inputs[i].type == "password") {
					var fakeInput = document.createElement("input");
					fakeInput.type = "text";
					fakeInput.value = inputs[i].value;
					fakeInput.className = inputs[i].className;
					fakeInput.fake = true;
					inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);
					inputsSwap(inputs[i], null);
				}
			}
		}
	}
	if(o.clearTextareas) {
		var textareas = document.getElementsByTagName("textarea");
		for(var i=0; i<textareas.length; i++) {
			if(textareas[i].className.indexOf(o.filterClass)) {
				textareas[i].valueHtml = textareas[i].value;
				textareas[i].onfocus = function() {
					if(this.value == this.valueHtml) this.value = "";
					if(o.addClassFocus) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				textareas[i].onblur = function() {
					if(this.value == "") this.value = this.valueHtml;
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
			}
		}
	}
	function inputsSwap(el, el2) {
		if(el) el.style.display = "none";
		if(el2) el2.style.display = "inline";
	}
}

// custom file input module
function customFileUpload(obj, opt) {
    if(obj) {
        this.options = {
            jsActiveClass:'file-input-js-active',
            fakeClass:'file-input-value',
            hoverClass:'hover'
        }
        this.fileInput = obj;
        this.fileInput.custClass = this;
        this.init();
    }
}
customFileUpload.prototype = {
    init: function() {
        this.getElements();
        this.setStyles();
        this.addEvents();
    },
    getElements: function() {
        this.fileInputParent = this.fileInput.parentNode;
        this.fileInputParent.className += ' ' + this.options.jsActiveClass;
        var tmpInputs = this.fileInput.parentNode.getElementsByTagName('input');
        for(var i = 0; i < tmpInputs.length; i++) {
            if(tmpInputs[i].className.indexOf(this.options.fakeClass) != -1) {
                this.fakeInput = tmpInputs[i];
                this.fakeInput.readOnly = true;
                break;
            }
        }
    },
    getFileName: function(){
        return this.fileInput.value.replace(/^[\s\S]*(?:\\|\/)([\s\S^\\\/]*)$/g, "$1");
    },
    setStyles: function() {
        // IE styling fix
        if((/(MSIE)/gi).test(navigator.userAgent)) {
            this.tmpNode = document.createElement('span');
            this.fileInputParent.insertBefore(this.tmpNode,this.fileInput);
            this.fileInputParent.insertBefore(this.fileInput,this.tmpNode);
            this.fileInputParent.removeChild(this.tmpNode);
        }
        this.fileInput.style.opacity = 0;
        this.fileInput.style.filter = 'alpha(opacity=0)';
    },
    addEvents: function() {
        this.fileInput.onchange = this.bind(this.updateTitle,this);
        this.fileInput.onmouseover = this.bind(function(){
            this.fileInputParent.className += ' ' + this.options.hoverClass;
        },this);
        this.fileInput.onmouseout = this.bind(function(){
            this.fileInputParent.className = this.fileInputParent.className.replace(' '+this.options.hoverClass,'');
        },this);
    },
    updateTitle: function() {
        if(this.fakeInput) {
            this.fakeInput.value = this.getFileName();
        }
    },
    bind: function(func, scope) {
        return function() {
            return func.apply(scope, arguments);
        }
    }
}

// content tabs module
ContentTabs = {
	options: {
		classOnParent: false,
		hiddenClass: 'tab-hidden',
		visibleClass: 'tab-active',
		activeClass: 'active',
		tabsets: 'ul.tabset',
		tablinks: 'a.tab',
		event: 'click'
	},
	init: function(){
		this.createStyleSheet();
		this.getTabsets();
		return this;
	},
	createStyleSheet: function() {
		this.tabStyleSheet = document.createElement('style');
		this.tabStyleSheet.setAttribute('type', 'text/css');
		this.tabStyleRule = '.'+this.options.hiddenClass;
		this.tabStyleRule += '{position:absolute !important;left:-9999px !important;top:-9999px !important;display:block !important}';
		document.getElementsByTagName('head')[0].appendChild(this.tabStyleSheet);
		if (this.tabStyleSheet.styleSheet) {
			this.tabStyleSheet.styleSheet.cssText = this.tabStyleRule;
		} else {
			this.tabStyleSheet.appendChild(document.createTextNode(this.tabStyleRule));
		}
	},
	getTabsets: function() {
		this.tabsets = this.queryElements(this.options.tabsets);
		for(var i = 0; i < this.tabsets.length; i++) {
			this.initTabset(this.tabsets[i]);
		}
	},
	initTabset: function(tabset) {
		var tabLinks = this.queryElements(this.options.tablinks, tabset), instance = this;
		for(var i = 0; i < tabLinks.length; i++) {
			tabLinks[i]['on'+this.options.event] = function(){
				instance.switchTab(this, tabLinks);
				return false;
			}
			if(this.hasClass(this.options.classOnParent ? tabLinks[i].parentNode : tabLinks[i], this.options.activeClass)) {
				this.switchTab(tabLinks[i], tabLinks);
			}
		}
	},
	switchTab: function(link, set) {
		for(var i = 0; i < set.length; i++) {
			var curLink = set[i];
			var curTab = document.getElementById(curLink.href.substr(curLink.href.indexOf('#')+1));
			if(curLink === link) {
				this.addClass(this.options.classOnParent ? curLink.parentNode : curLink, this.options.activeClass);
				this.addClass(curTab,this.options.visibleClass);
				this.removeClass(curTab,this.options.hiddenClass);
			} else {
				this.removeClass(this.options.classOnParent ? curLink.parentNode : curLink, this.options.activeClass);
				this.removeClass(curTab,this.options.visibleClass);
				this.addClass(curTab,this.options.hiddenClass);
			}
		}
	},
	queryElements: function(selector, holder) {
		var box = holder || document;
		if(box.querySelectorAll) {
			return box.querySelectorAll(selector);
		} else {
			var res = [], selectorData = selector.split('.');
			var tagName = selectorData[0];
			var set = box.getElementsByTagName(tagName);
			if(selectorData.length > 1) {
				for(var i = 0; i < set.length; i++) {
					if(this.hasClass(set[i], selectorData[1])) res.push(set[i]);
				}
				return res;
			} else {
				return set;
			}
		}
	},
	hasClass: function (obj,cname) {
		return (obj.className ? obj.className.match(new RegExp('(\\s|^)'+cname+'(\\s|$)')) : false);
	},
	addClass: function (obj,cname) {
		if (!this.hasClass(obj,cname)) obj.className += " "+cname;
	},
	removeClass: function (obj,cname) {
		if (this.hasClass(obj,cname)) obj.className=obj.className.replace(new RegExp('(\\s|^)'+cname+'(\\s|$)'),' ');
	}
};

// open-close plugin
jQuery.fn.OpenClose = function(_options){
	// default options
	var _options = jQuery.extend({
		activeClass:'active',
		opener:'.opener',
		slider:'.slide',
		animSpeed: 400,
		animStart:false,
		animEnd:false,
		effect:'fade',
		event:'click'
	},_options);

	return this.each(function(){
		// options
		var _holder = jQuery(this);
		var _slideSpeed = _options.animSpeed;
		var _activeClass = _options.activeClass;
		var _opener = jQuery(_options.opener, _holder);
		var _slider = jQuery(_options.slider, _holder);
		var _animStart = _options.animStart;
		var _animEnd = _options.animEnd;
		var _effect = _options.effect;
		var _event = _options.event;
		if(_slider.length) {
			_opener.bind(_event,function(){
				if(!_slider.is(':animated')) {
					if(typeof _animStart === 'function') _animStart();
					if(_holder.hasClass(_activeClass)) {
						_slider[_effect=='fade' ? 'fadeOut' : 'slideUp'](_slideSpeed,function(){
							if(typeof _animEnd === 'function') _animEnd();
						});
						_holder.removeClass(_activeClass);
					} else {
						_holder.addClass(_activeClass);
						_slider[_effect=='fade' ? 'fadeIn' : 'slideDown'](_slideSpeed,function(){
							if(typeof _animEnd === 'function') _animEnd();
						});
					}
				}
				return false;
			});
			if(_holder.hasClass(_activeClass)) _slider.show();
			else _slider.hide();
		}
	});
}

/* Custom CheckBox */
jQuery.fn.customCheckbox = function(_options){
	var _options = jQuery.extend({
		checkboxStructure: '<div></div>',
		checkboxDisabled: 'disabled',
		checkboxDefault: 'checkboxArea',
		checkboxChecked: 'checkboxAreaChecked'
	}, _options);
	return this.each(function(){
		var checkbox = jQuery(this);
		if(!checkbox.hasClass('outtaHere') && checkbox.is(':checkbox')){
			var replaced = jQuery(_options.checkboxStructure);
			this._replaced = replaced;
			if(checkbox.is(':disabled')) replaced.addClass(_options.checkboxDisabled);
			else if(checkbox.is(':checked')) replaced.addClass(_options.checkboxChecked);
			else replaced.addClass(_options.checkboxDefault);
			
			replaced.click(function(){
				if(checkbox.is(':checked')) checkbox.removeAttr('checked');
				else checkbox.attr('checked', 'checked');
				changeCheckbox(checkbox);
			});
			checkbox.click(function(){
				changeCheckbox(checkbox);
			});
			replaced.insertBefore(checkbox);
			checkbox.addClass('outtaHere');
		}
	});
	function changeCheckbox(_this){
		_this.change();
		if(_this.is(':checked')) _this.get(0)._replaced.removeClass().addClass(_options.checkboxChecked);
		else _this.get(0)._replaced.removeClass().addClass(_options.checkboxDefault);
	}
}

/* Custom RadioButton */
jQuery.fn.customRadio = function(_options){
	var _options = jQuery.extend({
		radioStructure: '<div></div>',
		radioDisabled: 'disabled',
		radioDefault: 'radioArea',
		radioChecked: 'radioAreaChecked',
		parentClass: false
	}, _options);
	return this.each(function(){
		var radio = jQuery(this);
		if(!radio.hasClass('outtaHere') && radio.is(':radio')){
			var replaced = jQuery(_options.radioStructure);
			this._replaced = replaced;
			if(radio.is(':disabled')) replaced.addClass(_options.radioDisabled);
			else if(radio.is(':checked')) {
				replaced.addClass(_options.radioChecked);
				if(_options.parentClass) radio.parent().addClass(_options.parentClass);
			}
			else {
				replaced.addClass(_options.radioDefault);
				if(_options.parentClass) radio.parent().removeClass(_options.parentClass);
			}
			replaced.click(function(){
				if($(this).hasClass(_options.radioDefault)){
					radio.attr('checked', 'checked');
					changeRadio(radio.get(0));
				}
			});
			radio.click(function(){
				changeRadio(this);
			});
			replaced.insertBefore(radio);
			radio.addClass('outtaHere');
		}
	});
	function changeRadio(_this){
		$(_this).change();
		$('input:radio[name='+$(_this).attr("name")+']').not(_this).each(function(){
			if(this._replaced && !$(this).is(':disabled')) {
				this._replaced.removeClass().addClass(_options.radioDefault);
				if(_options.parentClass) this._replaced.parent().removeClass(_options.parentClass);
			}
		});
		_this._replaced.removeClass().addClass(_options.radioChecked);
		if(_options.parentClass) _this._replaced.parent().addClass(_options.parentClass);
	}
}

// main gallery module
function gallery(context, options){this.init(context, options)}
(function($){
	gallery.prototype = {
		autoRotation: false,
		customDimension: false,
		duration: 500,
		disableBtn: false,
		disabledChild: false,
		list: 'ul.g1',
		switcher: false,
		prev: false,
		next: false,
		effect: false,
		event:'click',
		onStart: false,
		onChange: false,
		
		init: function(context, options){
			for ( var i in options ) this[i] = options[i]; 
			this.holder = $(context);
			if(this.holder == undefined) return;
			
			this.list = this.holder.find(this.list);
			this.animation = true, this.active = 0;
			this.prevActive = this.active, this.wait;
			this.count = this.list.children().length;
			
			if(this.customDimension){
				var calculateWidth = 0;
				var _this = this;
				_this.w = [];
				this.holdW = this.list.parent().width();
				this.visEl = 0;

				this.list.children().each(function(i){
					if(_this.holdW >= calculateWidth) _this.visEl = i+1;
					_this.w.push(calculateWidth);
					calculateWidth += $(this).outerWidth(true);
				});
			}
			else{
				this.w = this.list.children().eq(0).outerWidth(true);
				this.holdW = this.list.parent().width();
				this.visEl = Math.ceil(this.holdW/this.w);
			}

			if(this.count <= this.visEl) this.animation = false;
			
			if(this.effect == 'fade') this.list.children().css('opacity', 0).eq(this.active).css('opacity', 1).addClass('active');
			else if(this.effect == 'slide') this.list.css('marginLeft', -this.w*this.active);

			this.initControls(this);
			
			this.toggleState.listItem(this);
			if(this.switcher) this.toggleState.switchItem(this);
			
			if(typeof this.onStart === 'function') this.onStart(this);
			
			if(this.autoRotation && this.animation) this.runTimer(this);
		},
		initControls: function(_this){
			if(_this.prev && _this.next){
				_this.prev = _this.holder.find(_this.prev).attr('rel', 'prev').click(function(e){
					_this.refreshState(e);
					return false;
				});
				_this.next = _this.holder.find(_this.next).attr('rel', 'next').click(function(e){
					_this.refreshState(e);
					return false;
				});
			}
			if(_this.switcher){
				_this.switcher = _this.holder.find(_this.switcher);
				_this.toggleState.switchItem(_this);
				_this.switcher.bind(_this.event, function(){
					var ind = _this.switcher.index($(this));
					_this.refreshState(ind);
					return false;
				});
			}
			if(this.disableBtn) this.disabledConrtol();
		},
		toggleState:{
			listItem: function(_this){
				_this.list.children().eq(_this.prevActive).removeClass('active');
				_this.list.children().eq(_this.active).addClass('active');
			},
			switchItem: function(_this){
				_this.switcher.eq(_this.prevActive).removeClass('active');
				_this.switcher.eq(_this.active).addClass('active');
			}
		},
		disabledConrtol: function(){
			if(this.active == 0) {
				if(this.disabledChild){
					this.prev.attr('rel', 'stop').children().addClass('disabled');
					this.next.attr('rel', 'next').children().removeClass('disabled');
				}
				else{
					this.prev.attr('rel', 'stop').parent().addClass('disabled');
					this.next.attr('rel', 'next').parent().removeClass('disabled');
				}
			}
			else if(this.active == this.count-1 || (this.visEl > 2 && this.active + this.visEl == this.count)) {
				if(this.disabledChild){
					this.prev.attr('rel', 'prev').children().removeClass('disabled');
					this.next.attr('rel', 'stop').children().addClass('disabled');
				}
				else{
					this.prev.attr('rel', 'prev').parent().removeClass('disabled');
					this.next.attr('rel', 'stop').parent().addClass('disabled');
				}
				this.autoRotation = false;
			}
			else {
				if(this.disabledChild){
					this.prev.attr('rel', 'prev').children().removeClass('disabled');
					this.next.attr('rel', 'next').children().removeClass('disabled');
				}
				else{
					this.prev.attr('rel', 'prev').parent().removeClass('disabled');
					this.next.attr('rel', 'next').parent().removeClass('disabled');
				}
			}
		},
		runTimer: function(_this){
			this.wait = setTimeout(function(){_this.refreshState('next')}, this.autoRotation)
		},
		stop: function(){
			if(this.wait) clearTimeout(this.wait)
		},
		play: function(){
			if(this.wait) clearTimeout(this.wait);
			if(this.autoRotation) this.runTimer(this);
		},
		changeSlide:{
			fade:function(_this){
				_this.list.children().eq(_this.prevActive).animate({opacity:0}, {queue:false, duration:_this.duration});
				_this.list.children().eq(_this.active).animate({opacity:1}, {queue:false, duration:_this.duration, complete:function(){
					_this.play();
					if(typeof _this.onChange === 'function') _this.onChange(_this);
				}});
			},
			slide:function(_this){
				if(_this.customDimension){
					if(_this.active + _this.visEl > _this.count) _this.active = 0;
					_this.list.animate({marginLeft:-_this.w[_this.active]}, {queue:false, duration:_this.duration, complete:function(){
						_this.play();
						if(typeof _this.onChange === 'function') _this.onChange(_this);
					}});
				}
				else{
					if(_this.active + _this.visEl > _this.count) _this.active = 0;
					_this.list.animate({marginLeft:-_this.w*_this.active}, {queue:false, duration:_this.duration, complete:function(){
						_this.play();
						if(typeof _this.onChange === 'function') _this.onChange(_this);
					}});
				}
			}
		},
		refreshState: function(e){
			if(this.animation){
				this.prevActive = this.active;
				if(typeof e == 'string' && e == 'next') this.active++;
				else if(typeof e == 'number') this.active=e;
				else{
					if($(e.currentTarget).attr('rel') == 'next') this.active++;
					else if($(e.currentTarget).attr('rel') == 'prev') this.active--;
				}
				if(this.wait) clearTimeout(this.wait);
				if(this.active == this.count) this.active = 0;
				else if(this.active == -1 && !this.customDimension) this.active=this.count - 1;
				else if(this.active == -1 && this.customDimension) this.active=this.count - this.visEl;
				
				this.toggleState.listItem(this);
				if(this.switcher) this.toggleState.switchItem(this);
				
				if(this.disableBtn) this.disabledConrtol();
				
				if(this.effect == 'fade') this.changeSlide.fade(this);
				else if(this.effect == 'slide') this.changeSlide.slide(this);
			}
		}	
	}
})(jQuery);

// lightbox plugin
(function($){
	jQuery.fn.myPopup = function(_options){
		// defaults options	
		var _options = jQuery.extend({
			duration: 700,
			linkOpenName: '.link-popup',
			linkCloseName: 'a.close, a.btn-close',
			divFader: 'fader',
			wrapper: '#wrapper'
		},_options);

		return this.each(function(){
			var _hold = $(this);
			var _speed = _options.duration;
			var _IE = $.browser.msie;
			var links = _hold.find(_options.linkOpenName);
			var _fader = $('<div class="'+_options.divFader+'"></div>');
			var _select = $(_options.wrapper).find('select');
			var popup;
			$('body').append(_fader);
			_fader.css({
				position: 'absolute',
				top: '0px',
				left: '0px',
				zIndex: 999,
				background: 'black',
				opacity: 0.4
			});
			
			function init(_obj){
				popup = $(_obj);
				var btnClose = popup.find(_options.linkCloseName);
				var submitBtn = popup.find('.link-submit');
				
				if (_IE) _select.css({visibility: 'hidden'});
				var w = $('body').width();
				var _w = $(_options.wrapper).width();
				if (_w > w) w =_w;
				var h = $(window).height();
				var _offset = $(window).scrollTop();
				
				var ret = _offset+(h/2) - popup.outerHeight(true)/2;
				if (ret < 0) ret = 0;
				var te = $(_options.wrapper).height();
				if ($(window).height() > te) te = $(window).height();
				
				popup.css({
					top: ret,
					left: w/2 - popup.outerWidth(true)/2
				}).hide();
				_fader.css({
					width: w,
					height: te
				}).fadeIn(300, function(){
					popup.fadeIn(300);
				});
				$(window).resize(function(){
					w = $('body').width();
					_w = $(_options.wrapper).width();
					if (_w > w) w =_w;
					popup.animate({
						left: w/2 - popup.outerWidth(true)/2
					}, {queue:false, duration: 300});
					_fader.css({
						width: w
					});
				});
				function closedPopup(opt1){
					popup.fadeOut(300, function(){
						popup.css({left: '-9999px'}).show();
						if (_IE) _select.css({visibility: 'visible'});
						submitBtn.unbind('click');
						$(window).unbind('resize');
						if (opt1) _fader.hide();
						else {
							if (submitBtn.attr('href')) init(submitBtn.attr('href'));
							else init(submitBtn.attr('title'));
						}
					});
				}
				btnClose.click(function(){
					closedPopup(true);
					return false;
				});
				submitBtn.click(function(){
					closedPopup();
					return false;
				})
				_fader.click(function(){
					closedPopup(true);
					return false;
				});
			}
			links.click(function(){
				if ($(this).attr('href')) init($(this).attr('href'));
				else init($(this).attr('title'));
				return false;
			});
		});
	}
})(jQuery);

(function($){
	jQuery.fn.movingBlock = function(_options){    
		// defaults options	    
		var _options = jQuery.extend({
			holder:'div.wrapper',
			topDif:0,
			bottomDif:0,
			toEl:false,
			cssTop:'marginTop',
			duration:350
		},_options);
		
		return this.each(function(){
			var _obj = jQuery(this);
			var _holder = _obj.parents(_options.holder);
			var _offset = _obj.offset();
			var _thisHeight = _obj.outerHeight(true);
			var _prop = _options.cssTop.toString();
			var _duration = _options.duration;
			var _defTop = parseInt(_obj.css(_prop));
			var _move = true, _height;
			if (!_defTop) _defTop = 0;
			var _toEl = (_options.toEl) ? jQuery(_options.toEl) : false;
			var _toElTop = (_options.toEl) ? _toEl.offset().top - _obj.height() : 0;
			var _tD = parseInt(_options.topDif)
			var _top = _offset.top - _tD + _defTop;
			var _bottom = _holder.innerHeight() - _options.bottomDif - _thisHeight - _defTop;
			
			if (_options.toEl) {
				_offset.bottom = jQuery(_options.toEl).offset().top;
			}
			
			var _win = jQuery(window);
			_win.scroll(function(){
				animateBlock();
			});
			_win.resize(function(){
				winResize();
				animateBlock();
			});
			animateBlock();
			winResize();
			function winResize(){
				if (window.innerHeight) _height = window.innerHeight;
				else _height = document.documentElement.clientHeight;
				if (_thisHeight >= _height) _move = false;
				else _move = true;
			}
			function animateBlock(){
				if (_move) {
					var _scrollTop = _win.scrollTop();
					var _dif = _scrollTop - _top;
					
					if (_toEl && _scrollTop - _toElTop + _tD > 0) _dif = _toElTop - _top -_tD;
					
					if (_dif > 0) {
						if (_dif >= _bottom) _dif = _bottom;
						eval('_obj.animate({'+_prop+':_dif+_defTop}, {duration:_duration, queue:false})');
					} else {
						eval('_obj.animate({'+_prop+':_defTop}, {duration:_duration, queue:false})');
					}
				}
			}
		});
	}
})(jQuery);

/*!
 * jQuery UI 1.8.16
 *
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * http://docs.jquery.com/UI
 */
(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16",
keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=
this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":
"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,
outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,
"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&
a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&
c.ui.isOverAxis(b,e,i)}})}})(jQuery);
;/*!
 * jQuery UI Widget 1.8.16
 *
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * http://docs.jquery.com/UI/Widget
 */
(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler("remove")}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=
function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):
d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=
b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
;/*!
 * jQuery UI Mouse 1.8.16
 *
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * http://docs.jquery.com/UI/Mouse
 *
 * Depends:
 *	jquery.ui.widget.js
 */
(function(b){var d=false;b(document).mouseup(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"&&a.target.nodeName?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
;/*
 * jQuery UI Slider 1.8.16
 *
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * http://docs.jquery.com/UI/Slider
 *
 * Depends:
 *	jquery.ui.core.js
 *	jquery.ui.mouse.js
 *	jquery.ui.widget.js
 */
(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(b.range){if(b.range===true){if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length?
(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i-
m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false;
this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c<f))c=f;if(c!==this.values(b)){f=this.values();f[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:f});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
this._trimAlignValue(a);this._refreshValue();this._change(null,0)}else return this._value()},values:function(a,b){var c,f,e;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):
this.value();else return this._values()},_setOption:function(a,b){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e-
g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"},
b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery);
;
