(function($) {

	$.extend({
		add2cart: function(source_id, target_id, callback) {
    
      var source = $('#' + source_id );
      var target = $('#' + target_id );
      
      var shadow = $('#' + source_id + '_shadow');
      if( !shadow.attr('id') ) {
          source.before('<div id="'+source.attr('id')+'_shadow" style="display: none; background-color: darkgray; border: solid 1px darkgray; position: static; top: 0px; z-index: 100000;">&nbsp;</div>');
          var shadow = $('#'+source.attr('id')+'_shadow');
      }
      
      if( !shadow ) {
          alert('Cannot create the shadow div');
      }
      
      shadow.width(source.css('width')).height(source.css('height')).css('top', source.offset().top).css('left', source.offset().left).css('opacity', 0.5).show();
      shadow.css('position', 'absolute');
      
      shadow.animate( { width: target.innerWidth(), height: target.innerHeight(), top: target.offset().top, left: target.offset().left }, { duration: 300 } )
      .animate( { opacity: 0 }, { duration: 100, complete: function(){$.myCallBack(shadow);}} );
		}
	});
	
	$.extend({
		delfromcart: function(source_id, target_id, car_id) {
    
      var source = $('#' + source_id );
      var target = $('#' + target_id );
      
      var shadow = $('#' + source_id + '_shadow');
      if( !shadow.attr('id') ) {
          source.before('<div id="'+source.attr('id')+'_shadow" style="display: none; background-color: darkgray; border: solid 1px darkgray; position: static; top: 0px; z-index: 100000;">&nbsp;</div>');
          var shadow = $('#'+source.attr('id')+'_shadow');
      }
      
      if( !shadow ) {
          alert('Cannot create the shadow div');
      }
      
      shadow.width(source.css('width')).height(source.css('height')).css('top', source.offset().top).css('left', source.offset().left).css('opacity', 0.5).show();
      shadow.css('position', 'absolute');
      
      shadow.animate( { width: target.innerWidth(), height: target.innerHeight(), top: target.offset().top, left: target.offset().left }, { duration: 300 } )
      .animate( { opacity: 0 }, { duration: 100, complete: function(){$.delcartColumn(car_id);}} );
		}
	});
	$.extend({
	  myCallBack: function(o_element){
		  o_element.remove();		  
	  }
	});
  $.extend({
    addCarToCart: function(s_path,i_id,element_id,source_id, target_id) {
      var html = $.ajax({
        type: "GET",
        url: s_path+"?view=100&id="+i_id,
        async: false
      }).responseText;
      if(html=="false"){
        var s_errors="U kunt maximaal 3 auto's selecteren";
        if(($("#basket_error").length)==0){
          $("#"+element_id).before("<div id='basket_error' class='error'>"+s_errors+"</div>");
          window.location=window.location+"#basket_error";
        }
      }else{
        $.add2cart(source_id, target_id);
        $("#my_selectionlink").css("visibility","visible");
		    $("#my_selectionlink").html("Mijn selectie (" + html + ") &raquo;");
      }
    }
  });
  $.extend({
    delCarFromCart: function(s_path,i_id,element_id,source_id, target_id) {
      var html = $.ajax({
        type: "GET",
        url: s_path+"?view=100&del="+i_id,
        async: false
      }).responseText;
      if(html=="false"){
        var s_errors="Fout bij het verwijderen";
        if(($("#basket_error").length)==0){
          $("#"+element_id).before("<div id='basket_error' class='error'>"+s_errors+"</div>");
          window.location=window.location+"#basket_error";
        }
      }else{
         $(".car"+i_id).fadeOut("normal",$.delcartColumn(i_id,html));
       }
    }
  });
  $.extend({
    delcartColumn: function(i_id,i_count) {
      if(i_count==0){
        window.location=window.location;
      }else{
      }     
    }
  });
  
})(jQuery);
