/**
 * 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);

/**
 * Scripts communs
 * @see jquery-1.4.2.min.js
 * @see jquery-ui-1.7.2.custom.min.js
 * @see jquery-validate.min.js
 * @see slimbox2.js
 * @see DD_belatedPNG
 */
$(document).ready(function() {
	fixBrowser();
	setSearchBar();
	setQuickAdd();
	checkForms();
	setRequired();
	$('#codeClient').focus();
	setMultiForms();
	$('#boxProduitsConsultesTogLnk').click(function(){$('#boxProduitsConsultes').slideToggle()});
	$('#boxProduitsAjoutesTogLnk').click(function(){$('#boxProduitsAjoutes').slideToggle()});
	$('.blocParPageControl').change(function() {
		$.ajax({
			method: 'POST',
			data: 'nbBlocParPage='+$(this).val(),
			dataType: 'json',
			url:'compte/options/change-bloc-par-page',
			success: function(data) {
				if(data.status == 1) {
					window.location.reload();
				}
			}
		});
	});
	$('#headerColisResume')
		.mouseenter(function(){$('#headerColisMontant').fadeIn(200)})
		.mouseleave(function(){$('#headerColisMontant').fadeOut(200)})
	//$('input[type=password]').keypress(function(e){testCapsLock(e)});
	
	var mTimer;
	$('.menuList').mouseenter(function(){
		window.clearTimeout(mTimer);
		var el = $(this).find('ul.subMenu').attr('id');
		$('ul.subMenu').each(function() {
			if($(this).attr('id') != el) {
				$(this).hide();
				$(this).prev('a.menuLink').css('backgroundPosition', '0 0');
			}
		});
		mTimer = window.setTimeout('toggleNiveau("'+el+'", 1)', 300);
	});
	$('.menuList').mouseleave(function(){
		window.clearTimeout(mTimer);
		var el = $(this).find('ul.subMenu').attr('id');
		$('#'+el).stop(true, true).hide();
		$('#'+el).prev('a.menuLink').css('backgroundPosition', '0 0');
	});

	$('.newWindow').attr('target', '_blank');
	$('.addForm').submit(function() { return false; });
	$('.addButton').click(function() {
		var data = $(this).parent().parent('form').serialize();
		$.post(
			'compte/colis', 
			data,
			function(data) {
				
                if(data.status == 0) {
                    $('#quickAddDialog').html(data.html);
                    $('#quickAddDialog').dialog('open');
                } else {
                    $('#boxProduitsAjoutes').html(data.colis);
                    $('#clientHeaderColis').html(data.totalQte);
                    $('#topMessage').html(data.html).css('opacity', 1).slideDown().animate({opacity: 1}, 4000).slideUp().slideUp();
                    $('#colisMontantValue').html(data.montant).effect('pulsate', {times:2});
					$('#art'+data.status+' td').addClass('highlight');
                }
			},
			'json');
		return false;
	});
    $('#formAddArticles').dialog({
    	title: 'Ajouter au colis',
        modal: true,
        draggable: false,
        resizable: false,
        position: ['center', 200],
        width: 760,
        autoOpen: false,
        buttons: {'Fermer': function() { $(this).dialog('close'); }}
    });
    $('.addLinkModal').click(function() {
    	$('#formAddArticles').html('<div class="loading"><img src="img/ui/loading.gif" width="16" height="16" alt="chargement..." /></div>');
    	var id = $(this).attr('id').substr(7);
		$.post(
			'produit/index', 
			{idProduit: id},
			function(data) {
				$('#formAddArticles').html(data);
			});
		$('#formAddArticles').dialog('open'); return false;
	});
    $('#listeAddChoice').dialog({
    	title: 'Ajouter à une liste',
        modal: true,
        resizable: false,
        draggable: false,
        width: 600,
        autoOpen: false,
        buttons: {'Annuler': function() { $(this).dialog('close'); }}
    });
	$('.listeAddLink').click(function() {
		var idElem = $(this).attr('id');
		var idArticle = idElem.substr(8);
		$('#listeAddChoice').find('input[name=article]').val(idArticle);
		$('#listeAddChoice').dialog('open');
		return false;
	});
	$('.topLink').click(function() {
		window.scrollTo(0, 0);
		return false;
	});
	$('.exportButton').click(function(){
		$(this).css('display', 'none')
			.prevAll('select').change(function(){
				$(this).nextAll('input[type=submit]').css('display', 'inline');	
				$('#divPreparation').html('');
			});
			$('#divPreparation').html('Votre document est en cours de préparation');
	});
	$(".confirmSuppression").each( function() {
		$(this).click(function(){
			if(confirm("Voulez-vous supprimer cet élément ?")) $(this).parents('form').submit();
			else return false;
		});
	});
	$(".confirmRegen").each( function() {
		$(this).click(function(){
			if(confirm("Voulez-vous regénérer le mot de passe ?")) $(this).parents('form').submit();
			else return false;
		});
	});
	$('div.formReactivation').each(function(){
		$(this).hide();
	});
	$('.boutonreactivation').toggle(
		function(){$(this).parent('td').children('div.formReactivation').show();},
		function(){$(this).parent('td').children('div.formReactivation').hide();});
	$('.boutonreactivation').submit(function() { 
		return false;
	});
	if($('#rollBoard').height() > 150) {
		var minH = 16;
		var destH = $('#rollBoard').height();
		$('#rollBoard').find('li').each(function(){$(this).hide()});
		$('#rollBoard')
			.prepend('<a id="rollOpener" class="fright" href="javascript:void(0)">+ infos sur la gamme</a>')
			.css('height', minH)
			.css('overflow', 'hidden');
		$('#rollOpener').click(function() {
			if($(this).hasClass('open')) {
				$('#rollOpener').html('+ infos sur la gamme');
				$('#rollBoard').find('li').each(function(){$(this).hide()});
				$('#rollBoard').animate({
					height: minH
				}, 500);
			} else {
				$('#rollOpener').html('- infos sur la gamme');
				$('#rollBoard').find('li').each(function(){$(this).show()});
				$('#rollBoard').animate({
					height: destH
				}, 500);
			}
			$(this).toggleClass('open');
		});
	}
	
	$('#detailPrintAsDevis').hide();
	$('#printAsDevis').click(function(){
		$('#detailPrintAsDevis').toggle(250);
	});

	
	$('#formCommandeRapide').hide();
	$('#slideFormCommandeRapide').click(function(){
		$('#formCommandeRapide').toggle(250);
	});
	
	$('#slideFormCommandeRapide').toggle(function(){
		$('.triangle').css('background-position', '0 0');
	}, function(){
		$('.triangle').css('background-position', '0 5px');
	});
	
	$('.divBonDeCommande').click(function(){
		var lien = $(this).children('a').attr('href');
		window.open(lien);
	    return false;
	});
	
	$("a.lienExterne").click(function(){
	    window.open(this.href);
	    return false;
    });
    
    $('#togglePrintOptions').click(function(){
        $('#printOptions').slideToggle(300);
        return false;
    });
    
    $('#printOptions a').click(function(){
        $('#togglePrintOptions').trigger('click');
    });

});

function fixBrowser() {
	if(jQuery.browser.msie) {
		if(jQuery.browser.version == '6.0') {
			//$('.subMenu').remove();
			DD_belatedPNG.fix('body, #headerSearch, #headerInfo, #clientHeader, .png');
			$('#clientHeader img').css('marginTop', '9px');
			$('#clientHeader a').css('marginTop', '5px');
			$('#topMessage').css('position', 'absolute');
		} else if(jQuery.browser.version == '7.0') {
			$('.subMenu').css('top', '52px');
		}
	} else if(jQuery.browser.opera) {
		//$('.subMenu').remove();
		//$('.subMenu').css('top', '52px');
	}
}

function toggleNiveau(id, s) {
	if(s == 1) {
		$('.menuLink')
		$('#'+id).prev('a.menuLink').css('backgroundPosition', '0 -45px');
		$('#'+id).stop(true, true).slideDown();
	}
	else if(s == 0) {
		$('#'+id).prev('a.menuLink').css('backgroundPosition', '0 0');
		$('#'+id).stop(true, true).hide();
	}
}

function setMultiForms() {
	var form = $('.multiform');
	var prevButton = '<input type="button" class="prevMultiForm" value="Etape précédente" />';
	var nextButton = '<input type="button" class="nextMultiForm" value="Etape Suivante" />';
	var fieldsets = $('.multiform fieldset');
	var count = fieldsets.size();
	if(count > 0) {
		fieldsets.each(function(i) {
			if(i == 0) {
				$(this).append(nextButton);
			}
			else if(i < count-1) {
				$(this).append(prevButton + nextButton);
				$(this).parent().hide();
			}
			else {
				$(this).find('input[type=submit]').before(prevButton);
				$(this).parent().hide();
			}
		});
		
		$('.prevMultiForm').click(function() {
			var current = $(this).parent().parent();
			var prev = current.prev();
			current.hide();
			prev.fadeIn();
			window.scrollTo(0, 0);
		});
	
		$('.nextMultiForm').click(function() {
			var valid = true;
			var current = $(this).parent().parent();
			if(form.hasClass('validateForm')) {
				$(current).each(function() {
					var inputs = $(this).find('input');
					var subValid = true;
					inputs.each(function(){
						subValid = $('.validateForm').validate().element(this);
						if(subValid == false) valid = false;
					});
					if(valid == false) return false;
				});
			}
			if(valid == false) return false;
			else {
				var next = current.next();
				current.hide();
				next.fadeIn();
				window.scrollTo(0, 0);
			}
		});
	}
}

function checkForms() {
	$('.validateForm').validate({
		errorPlacement: function(error, element) {
			var type = $(element).attr('type');
			if(type == 'radio') error.appendTo(element.parent('label'));
			else if(type == 'text') error.appendTo(element.parent('div'));
		},
		rules: {
			codeClient: { required: true, digits: true },
			password: 'required',
			email: { required: true, email: true },
			confirmEmail: { required: true, equalTo: '#email' },
			societe: 'required',
			nom: 'required',
			destinataire: 'required',
			prenom: 'required',
			adresse1: 'required',
			autreAdresse1: 'required',
			codePostal: { required: true, digits: true, maxlength: 5, minlength: 5 },
			autreCodePostal: { required: true, digits: true, maxlength: 5, minlength: 5 },
			autreVille: 'required',
			ville: 'required',
			telephone: { required: true },
			message: 'required'
		}
	});
	
	$('.validateFormContact').validate({
		errorPlacement: function(error, element) {
			var type = $(element).attr('type');
			if(type == 'radio') error.appendTo(element.parent('label'));
			else if(type == 'text') error.appendTo(element.parent('div'));
		},
		rules: {
			email: { required: true, email: true },
			confirmEmail: { required: true, equalTo: '#email' },
			nom: 'required',
			prenom: 'required',
			codePostal: { digits: true, maxlength: 5, minlength: 5 },
			message: 'required'
		}
	});
}

var suggestTimeout;
var suggestSelect = false;
function setSearchBar() {
	$('#term').attr('autocomplete', 'off');
    var searchText = 'Code article, Gencod, désignation...';
    if($('#term').attr('value') == '') {
    	$('#term').attr('value', searchText).css('color', '#999');
    }
    $('#submitSearch').click(function() {
    	var term = $('#term').attr('value');
    	if(term == '' || term == searchText) return false;
    });
    $('#searchSuggest').hover(function() {
    	
    });
    $('.searchSuggestion').live('click', function() {
    	var term = $(this).html();
    	$('#term').val(term);
    	$('#headerSearch').submit();
    });
    $('#term').keydown(function(e) {
    	var hasSuggest = $('#searchSuggest').css('display') != 'none' ? true : false;
		if(e.keyCode == 40) { // Descend dans les suggests
			if(hasSuggest) {
				if(!suggestSelect) {
					var item = $('.searchSuggestion').first();
					item.css('background', '#E0E9FD');
					suggestSelect = item.html();
				} else {
					$('.searchSuggestion').each(function() {
						var suggest = $(this).html();
						if(suggestSelect == suggest) {
							$(this).css('background', '#fff');
							var item = $(this).next();
							item.css('background', '#E0E9FD');
							suggestSelect = item.html();
							return false;
						}
					});
				}
			}
		} else if(e.keyCode == 38) { // Monte dans les suggests
			if(hasSuggest) {
				if(!suggestSelect) {
					var item = $('.searchSuggestion').last();
					item.css('background', '#E0E9FD');
					suggestSelect = item.html();
				} else {
					$('.searchSuggestion').each(function() {
						var suggest = $(this).html();
						if(suggestSelect == suggest) {
							$(this).css('background', '#fff');
							var item = $(this).prev();
							item.css('background', '#E0E9FD');
							suggestSelect = item.html();
							return false;
						}
					});
				}
			}
		} else if(e.keyCode == 13) { // Valide une suggest ou un terme
			if(suggestSelect) {
		    	$('#term').attr('value', suggestSelect);
		    	$('#headerSearch').submit();
		    	return false;
			}
		} else { // Recherche suggest
			var term = $('#term').val();
			if(term.length > 0) {
				clearTimeout(suggestTimeout);
				suggestTimeout = setTimeout('searchSuggest("'+term+'")', 300);
			} else {
				$('#searchSuggest').hide();
			}
		}
    });
    $('#term')
    	.focus(function(){
			if($(this).attr('value') == searchText) $(this).attr('value', '').css('color', '#000');
		})
		.blur(function(){
			var hasSuggest = $('#searchSuggest').css('display') != 'none' ? true : false;
			if($(this).attr('value') == '') $(this).attr('value', searchText).css('color', '#999');
			setTimeout("$('#searchSuggest').hide();", 300);
		});
}

function searchSuggest(term) {
	$.ajax({
		url: 'recherche/suggest',
		type: 'POST',
		data: 'userSearch='+term,
		dataType: 'json',
		success: function(data) {
			if(data.length >= 1) {
				var html = '';
				for(var i = 0; i < data.length; i++) {
					html += '<a class="searchSuggestion" style="padding: 5px; cursor: pointer; border-bottom: 1px dashed #aaa; display: block;">'+data[i]+'</a>';
				}
				$('#searchSuggest').html(html).slideDown(200);
			} else {
				$('#searchSuggest').html('').hide();
			}
		}
	});	
}

function setQuickAdd() {
    var addText = 'code article, gencod...';
    var addTextDevisClient = 'code article / code personnel';
    var addTextCodePersonnel = "Votre désignation"
    //var qteText = 'quantité';
    //$('#quickAddCode').attr('value', addText).focus(function(){if($(this).attr('value') == addText) $(this).attr('value', '');}).blur(function(){if($(this).attr('value') == '') $(this).attr('value', addText);});
    //$('#quickAddQte').attr('value', qteText).focus(function(){if($(this).attr('value') == qteText) $(this).attr('value', '');}).blur(function(){if($(this).attr('value') == '') $(this).attr('value', qteText);});
    $('#devisClientCodeArticle').attr('value', addTextDevisClient).focus(function(){if($(this).attr('value') == addTextDevisClient) $(this).attr('value', '');}).blur(function(){if($(this).attr('value') == '') $(this).attr('value', addTextDevisClient);});
    $('#devisClientCodePersonnel').attr('value', addTextCodePersonnel).focus(function(){if($(this).attr('value') == addTextCodePersonnel) $(this).attr('value', '');}).blur(function(){if($(this).attr('value') == '') $(this).attr('value', addTextCodePersonnel);});
    
}

function setRequired() {
	$('.label.required').append('<span class="requiredHint">*</span>');
}

function getStock(articles) {
    $.ajax({
    	url: 'ajax/stock-articles?art='+articles.join(','),
    	dataType: 'json',
    	type: 'GET',
    	success: function(data) {
		 	for(var i = 0; i < data.length; i++) {
				var id = 'art'+data[i].idArticle;
				var total = data[i].total;
				if(total > 0) {
					var indic = ' <img src="img/ui/stock-ok.png" title="En stock" />';
				}/* else if(total < 10) {
					var indic = ' <img src="img/ui/stock-limit.png" title="Stock limité, possibilité de reliquats" />';
				} */else {
					var indic = ' <img src="img/ui/stock-no.png" title="Rupture" />';
				}
				$('#'+id+' .stock').html(indic);
		 	}
		 },
		 error: function() {
			 var id = 'art'+data[i].idArticle;
			 var indic = '<img src="img/ui/stock-limit.png" title="Stock indisponible" />';
			 $('#'+id+' .stock').html(indic);
		 }
    });
}

