var flockingHP = {
	params: {},
	src_default: '',
	init: function(params) {
		$.extend(this.params, params);
		flockingHP.src_default = $('img#image-flocage').attr('src');
		
		//--
		$('#flocking-category').change(function() {
			flockingHP.requestSelect();
		});
		$('#flocking-product').change(function() {
			flockingHP.requestSelect();
		});
		
		// hp error OVERLOAD
		product.errorShow = function(jmarker, msg){
			product.errorHide();
			jmarker_toggle = '.choice-floc';
			$(jmarker_toggle +' p').hide();
	    	$(jmarker_toggle +' div').text(msg).show();
	    	flockingHP.errortimeout = setTimeout("product.errorHide()", 3000);
		};
		product.errorHide = function() {
			clearTimeout(flockingHP.errortimeout);
			jmarker_toggle = '.choice-floc';
			$(jmarker_toggle +' div').hide();
			$(jmarker_toggle +' p').show();
		};
		
		// only for first HP call
		$('#flocking-category option[value="'+ flockingHP.params.values['hp_category'] +'"]').attr('selected', 'selected');
		$('#flocking-product').append(
	        $('<option></option>').val(flockingHP.params.values['id']).html('')
	    );
		$('#flocking-category option[value="'+ flockingHP.params.values['id'] +'"]').attr('selected', 'selected');
		
		flockingHP.requestSelect();
	},
	requestSelect: function() {
		var postdata = $(document).find("#flocking-category, #flocking-product, #couleur-product").serializeArray();
		// add patch
		//postdata = flocking.postCart(postdata);
        
		// reinit field form
        $('#flocking-product option, #couleur-product option, #taille-product option, #badge-product option').filter('[value!=""]').remove();
        // patch + gift
        $("#badge-product, #product-form input#box_cadeau").attr('disabled', 'disabled');
        $('img#image-flocage-patch').attr('src', '').hide();
        // hiddens
        $('#product-form :input[type=hidden]').val('');
        $('#i_quantite').val('1');
        // custom
        $('#flocking-custom-name-max').text('0');
		$('#flocking-custom-number-max').text('0');
		// custom inputs
		$.each(flocking.custom_marker, function(key, marker) {
			$_marker = $(marker);
			$_marker.val('');
			$_marker.blur();
			$_marker.attr('disabled', 'disabled');
		});
		// promo + price
		$('#flocking-price-promo').hide();
		$("#crossed-price").text('');
		$("#big-price").text('');
		$("#small-price").text('');
		$('#flocking-price').text('');
		$('#flocking-price').removeClass('price-promotion');
		
        // post the data via AJAX post
        $.post(flockingHP.params.url_hp, postdata, function (data, textStatus) {
        	if (textStatus != "success") return;
            if(!data) return;
            // no produtc blank img
            if(!data['products'])
            {
            	$('img#image-flocage').attr('src', flockingHP.src_default);
            	return;
            }
            
            // populate products
			$.each(data['products_rank'], function(key, value) {
        	    $('#flocking-product').append(
        	        $('<option></option>').val(value).html(data['products'][value])
        	    );
        	});
            // populate select options
        	$.each({
        		'colors': '#couleur-product',
        		'sizes': '#taille-product',
        		'patch': '#badge-product'
        	}, function(key_data, value_selector) {
        		if(data[key_data]) {
                	$.each(data[key_data], function(key, value) {
                	    $(value_selector).append(
                	        $('<option></option>').val(key).html(value)
                	    );
                	});
            	}
        	});
        	
        	// set default
        	// search post product_id to set it by default !
			flocking_default_id = '';
			$.each(postdata, function(key, obj) {
				if(obj.name == 'flocking[id]') flocking_default_id = obj.value;
			});
        	$('#flocking-product option[value="'+ flocking_default_id +'"]').attr('selected', 'selected');
        	// color
        	$('#couleur-product option[value="'+  data['flocking_default_color_id'] +'"]').attr('selected', 'selected');
        	// crossed price
        	if(data['product_crossed_price']) $("#crossed-price").text(data['product_crossed_price']);
        	// patch
        	if(data['patch']) $('#badge-product').attr('disabled', '');
        	if(data['patch_src']) $('img#image-flocage-patch').attr('src', data['patch_src']);
        	// gift
        	if(data['product_gift']) $('#product-form input#box_cadeau').attr('disabled', '');
        	//
        	if(data['flocking_custom_name_max']) {
        		$('#flocking-custom-name-max').text(data['flocking_custom_name_max']);
        		$('#flocking-custom-number-max').text(data['flocking_custom_number_max']);
        		$('#flocking-custom-price').text(data['flocking_custom_price']);
        	}
        	// promo + flockingprice
        	$('#flocking-price').text(data['flocking_default_price']);
        	if(data['product_promo']) {
        		$('#flocking-price').addClass('price-promotion');
        		$('#flocking-price-promo').show();
        	}

        	// only for first HP call
        	if(!flockingHP.initflag)
        	{
        		$('#flocking-product option[value="'+ flockingHP.params.values['id'] +'"]').attr('selected', 'selected');
	    		$('#couleur-product option[value="'+ flockingHP.params.values['color_id'] +'"]').attr('selected', 'selected');
	    		$('#taille-product option[value="'+ flockingHP.params.values['size_id'] +'"]').attr('selected', 'selected');
	    		$('#badge-product option[value="'+ flockingHP.params.values['patch'] +'"]').attr('selected', 'selected');
	    		// view patch !
	    		if(flockingHP.params.values['patch']) $('img#image-flocage-patch').show();
	    		
	    		flockingHP.initflag = true;
        	}
        	
        	// Init product API
        	if($('#hidden-product_id').length > 0)
        	{
        		pdt_id = $('#flocking-product').val();
        		$('#hidden-product_id').val(pdt_id);
            	$('#hidden-desc-pdt').val($('#flocking-product option:selected').text());
            	
                // flocking
            	flocking.custom = {};
                flocking.is_active = data['flocking_default_color_id'];
                if(data['flocking_custom_name_max']) {
                	flocking.custom = {
                		name: data['flocking_custom_name_max'],
                		number: data['flocking_custom_number_max'],
                		price: data['flocking_custom_price']
            		};
                }
                flocking.price = {
                	active: data['flocking_default_price'],
                	patch: data['patch_price'],
                	gift: 1
                }
                // for price calculate
                if(data['product_promo']) flocking.promo = 1;
                
                product.init();
        	}
    		
        });
	}
}
