(function($){
	        	
	$.productRange = function(el, options){
		// To avoid scope issues, use 'base' instead of 'this'
	    // to reference this class from internal events and functions.
		var base = this;
        
        // Access to jQuery and DOM versions of element
        base.$el = $(el);
        base.el = el; 

		// Set up a few defaults
        base.activePhone = 1;
    	base.phoneSliding = false;
        base.imageBase = "";
        base.learnMore = "";
        base.items = [];
        base.container;
        
        base.init = function(){
        	base.options = $.extend($.productRange.defaults, options);
        	base.loadData(base.options.dataUrl);
        }
        
        base.loadData = function(url){
        	$.ajax({
    			type: "GET",
    			url: url,
    			dataType: "xml",
    			success: function(xml) {
    				
    				$(xml).find('product').each(function(){
    					base.items.push($(this));
    				});
    				
    				$(xml).find('products').each(function(){
    					base.imageBase = $(this).attr('imageBase');
    					base.learnMore = $(this).attr('learnMore');
    				});
    				
    				base.create();
    			}
    		});
        }
        
        base.create = function(){
        	base.container = base.$el;//$('<ul/>').addClass("phones clearfix");
        	//base.container.appendTo(base.$el);
        	
        	base.createItems();
        	
        	var el_products = base.container.children("li").children("a.phone");
        	//el_products.fadeTo("fast", 0.5);
        	
        	el_products.hover(	function(){
        		     			var selectedPhone = parseInt($(this).attr('rel').replace("item",""));
     			     			if(selectedPhone!=base.activePhone && !base.phoneSliding){
     				base.phoneSliding = true;
     				//var maxWidth = parseInt(base.items[selectedPhone].attr("descriptionWidth"));     				//var minWidth = parseInt(base.items[selectedPhone].attr("imageWidth"));
     				
     				var maxWidth;
     				if(selectedPhone==base.items.length){
     					maxWidth = parseInt(base.items[selectedPhone-1].attr("descriptionWidth"))+parseInt(base.items[selectedPhone-1].attr("imageWidth"));
     				}else{
     					maxWidth = parseInt(base.items[selectedPhone-1].attr("descriptionWidth"))+parseInt(base.items[selectedPhone-1].attr("imageWidth"))+40;
     				}
     				
    				var minWidth = parseInt(base.items[selectedPhone-1].attr("imageWidth"))+10;
    				
    				if($.browser.msie){
    					
    					//minWidth += parseInt(base.items[selectedPhone-1].css("padding-left")) + parseInt(base.items[selectedPhone-1].css("padding-right"))
    					//maxWidth += 40;
    				}
     				if(base.activePhone!=null){
	     				$("ul.phones li.item"+base.activePhone+" a.phone").stop();
	     				$("ul.phones li.item"+base.activePhone).stop();
	     				
	     				//$("ul.phones li.item"+base.activePhone).fadeTo("fast", 0.5);
	     				$("ul.phones li.item"+base.activePhone+" a.phone").fadeTo("fast", 0.5);
	     				
	     				//$("ul.phones li.item"+base.activePhone).css("width",maxWidth+"px");
	     				
	     				
	     				$("ul.phones li.item"+base.activePhone).animate({width: minWidth+"px", duration:400},"easeout",function(){$(this).children(".description").hide()});
	     				//$("ul.phones li.item"+base.activePhone+" .description").hide();
     				}
     				
     				$("ul.phones li.item"+selectedPhone).stop();
     				$("ul.phones li.item"+selectedPhone+" a.phone").stop();
     				     				     				$("ul.phones li.item"+selectedPhone+" a.phone").fadeTo("fast", 1);
     				//$("ul.phones li.item"+selectedPhone).fadeTo("fast", 1);
     				
     				$("ul.phones li.item"+selectedPhone).css("width", minWidth+"px");
     				$("ul.phones li.item"+selectedPhone+" .description").show();
     				$("ul.phones li.item"+selectedPhone+" .description").css("height","240px")
     				
     				$("ul.phones li.item"+selectedPhone).animate({width: maxWidth+"px", duration:400 },"easeout",function(){base.phoneSliding = false;});
     				
     				     				base.activePhone = selectedPhone;
     			}
     			    			
    		}).click(function(){

        		return false;
        	});
        	
        	//el_products[0].triggerEvent("hover");
        	
        	base.options.onComplete.call(this);
        }
        
        base.createItems = function(){
    		for(var i=0; i < base.items.length;i++){
    			base.createItem(i);
    		}
        }
        
        base.createItem = function(num){
        	
        	var item = $('<li/>').addClass("item item"+(num+1));
        	
        	if(num==0) item.addClass("active");
        	else 
        	item.addClass("inactive");
        	
        	var div = $('<div/>').addClass("description");
        	
        	if(num!=0) 
        	div.css("display","none")
        	
        	var p = $('<p>');
        	p.appendTo(div);
        	p.html(base.items[num].text());
        	
        	var image = $('<img/>');
        	
        	var plink = $('<p/>').addClass("p2");
        	var link = $('<a/>').attr("href",base.items[num].attr("link")).attr("title",base.learnMore).addClass("readMore").html(base.learnMore);
        	
        	link.appendTo(plink);
        	plink.appendTo(p);
        	
        	div.appendTo(item);
        	
        	var title = $('<a/>').addClass("phone").html(base.items[num].attr("title")).attr("rel","item"+(num+1));
        	title.appendTo(item);
        	title.css("background","url("+base.imageBase+base.items[num].attr("image")+") 0 0 no-repeat");
        	title.css("width",(parseInt(base.items[num].attr("imageWidth"))+10)+"px");
        	div.css("left",base.items[num].attr("imageWidth")+"px");
        	div.css("width",base.items[num].attr("descriptionWidth")+"px");
        	
        	//$("ul.phones .description p.p2").css("width",base.items[num].attr("descriptionWidth")+"px");
        	
        	var maxHeight = parseInt(base.items[num].attr("descriptionHeight"));
        	if(!maxHeight) maxHeight = 250;
        	item.css("height",maxHeight+"px");
        	if(num==0) {
        		item.css("width",(parseInt(base.items[num].attr("descriptionWidth")) + parseInt(base.items[num].attr("imageWidth"))+40) +"px");
        		title.fadeTo("fast", 1);
        	}else{
        		title.fadeTo("fast", 0.5);
        	}
        	
        	item.appendTo(base.container);
        }
		
        base.init();
	};
	
	$.productRange.defaults = {
		dataUrl:"/consumerfiles/pageitems/locales/it_IT/CONSUMER/categorypages/landlinephones/assets_update_v2/js/productRange.xml",
		onComplete : function(){}
	};
	
	$.fn.productRange = function(options){
		options = $.extend($.productRange.defaults, options);
		
		return this.each(function() {
			
			(new $.productRange(this, options));
			
		});
		
		// allow jQuery chaining 
		return this; 
	}
	
})(jQuery);
