/*
* $Id: item.js 36795 2010-10-22 08:45:12Z mganev $
* @author Eber Herrera
*/
var itemBoxTemplateXsell = null;
var firstAttempt = true;
function initXsells(){
		if (!GSI.activeItem.xsellNav && firstAttempt) {
			firstAttempt = false;
			return GSI.activeItem.getXsells(initXsells);
		}
		var initItemBox = function(item){
			try{
			var tBox = itemBoxTemplateXsell.clone();
			$('.item-box',tBox).attr('id','sku_'+item.manufacturer_sku);
				$('.item-box-image-href', tBox).attr('href', 'item?sku='+item.manufacturer_sku);
				$('.item-box-contents-text-href', tBox).attr('href', 'item?sku='+item.manufacturer_sku).html(item.name);
				
				if (item['originaldisplayprice']){
					var orgPrice = GSI.functions.moneyFormat(item.originaldisplayprice, item.currencyid);
					var offrPrice = GSI.functions.moneyFormat(item.displayprice, item.currencyid);
				} else {
					var orgPrice = GSI.functions.moneyFormat(item.displayprice, item.currencyid);
					var offrPrice = false;
				}
				
				if (offrPrice) {
					$('.item-box-contents-price-offer', tBox).html(offrPrice);
					$('.item-box-contents-price', tBox).html(orgPrice).addClass('originalprice');
					$('.offer-percentage', tBox).css("display","block");
				} else {
					$('.item-box-contents-price-offer', tBox).hide();
					$('.item-box-contents-price', tBox).html(orgPrice);
					$('.offer-percentage', tBox).css("display","none");
				}
				
				$('.item-box-image-img', tBox).attr('src', GSI_CATALOG_IMG_PATH+'small/'+item.image_small[0]);
							
				$('.ajax-rounded-blue', tBox).attr('id','btn_'+item.manufacturer_sku);
				/*$('.ajax-rounded-blue', tBox).click(function(){
					showExpressItem(item.manufacturer_sku);
				});*/
			tBox.appendTo("#cross-sales-wrp");
			}
			catch(e){
				$('.ajax-rounded-blue', tBox).remove();
				tBox.appendTo("#cross-sales-wrp");
				GSI.setError('initItemBox drawing item : '+item.manufacturer_sku+'\n'+e.message,'ERROR');
			}
		};
		
		if (!GSI.activeItem.xsellNav) return;
		$("#cross-sales-wrp").empty().show();//.css('left', '-1000px');
		if (GSI.functions.count(GSI.activeItem.xsells)==0) return;
		var _FLAG = false;
		for (var anItem in GSI.activeItem.data.xsell.response.docs){
			if (anItem == 'indexOf') continue;
			_FLAG = true;
			initItemBox(GSI.activeItem.data.xsell.response.docs[anItem]);
		}
		//$(".ajax-rounded-blue", "#cross-sales-wrp").each(showRoundedButton);
		if (_FLAG) setTimeout(function(){
			$("#cross-sales-wrp").animate({"left": "20px"}, "normal").animate({"left": "0px"}, "fast");
			} , 500);

};


	function initPrevNext(){
			var createToolTip = function(type){
				
				switch (type){
					case 'next':
						var tItem = tNext; 
					break;
					case 'prev':
						var tItem = tPrev;
					break
					default:
					break;
				}

				var orgPrice = tItem.getData('orgprice');
				var offrPrice = tItem.getData('offrprice');
				var tWidth= 80;
				
				
				if (offrPrice){
				$(".item-box-contents-price-offer, .item-tooltip-offer-percentage", "#item-tooltip-thumb").show();
				$(".item-box-contents-price", "#item-tooltip-thumb").addClass('originalprice').css({position: "relative"});
				tWidth= 120;
				}
				else {
					$(".item-box-contents-price-offer, .item-tooltip-offer-percentage", "#item-tooltip-thumb").hide();
					$(".item-box-contents-price", "#item-tooltip-thumb").removeClass('originalprice')
						.css({position: "relative"});
				}
				var name  =tItem.getData('name');
				if (name.length >=50) name = name.substr(0,50)+'...';
				var tooltipTemplate = $("#item-tooltip-thumb").html(); 

				var tStr = tooltipTemplate.replace(/__itemPriceOrg__/g,GSI.functions.moneyFormat(orgPrice, tItem.getData('currencyid')));
				if (offrPrice) tStr = tStr.replace(/__itemPriceOffr__/g,GSI.functions.moneyFormat(offrPrice, tItem.getData('currencyid')));
				tStr = tStr.replace(/__itemName__/g,name);
				tStr = tStr.replace(/__itemImage__/g,'<img src="' +tItem.getImage('small')+ '" />') ;
				
				return tStr;
			};
			
			var onHoverInNext = function(){
							var tTip = GSI.widgets.getWidget('tooltip');
							if (!tTip) return;
							tTip.show(this, null, createToolTip('next'),null, 170, null, false);
						};
						
			var onHoverInPrev = function(){
							var tTip = GSI.widgets.getWidget('tooltip');
							if (!tTip) return;
							tTip.show(this, null, createToolTip('prev'),null, 170, null, false);
						};
						
			var onHoverOut = function(){
							var tTip = GSI.widgets.getWidget('tooltip');
							if (!tTip) return;
							tTip.hide();
						};
		tNext = GSI.se.getNextItem();
		tPrev = GSI.se.getPreviousItem();
		if (tNext) {
			$("#previous-next-item-next").attr("href" , "/item?sku="+tNext.getData('id')).hover(onHoverInNext, onHoverOut);
			}else   $("#previous-next-item-next").hide(); 
		if (tPrev) {
			$("#previous-next-item-previous").attr("href" , "/item?sku="+tPrev.getData('id')).hover(onHoverInPrev, onHoverOut);
			} else   $("#previous-next-item-previous").hide();
	}

//del xpress

	var itemZoom = null;
	
	var addToBasket = function(callback){
		if (minibasket = GSI.widgets.getWidget('minibasket')) {
			minibasket.addToBasket(callback);
			return true;
			}
		GSI.setError('addToBasket not executed!','ERROR');
		return false;
	};
	
	var loader = function(on){
		if (on){
			$('#item-content').hide();
			$('#item-loader').html('<img src="'+GSI_APP_IMG_PATH+'shared/loader_big.gif" alt="" title="">').show();
		} else {
			$('#item-content').show();
			$('#item-loader').hide();
		}
	};
	
	var activateItem = function(id, callback){
		if (!GSI.functions.isset(callback)) callback = function(){};
		
		var retrieveItemCallback = function(){
			draw();
			loader(false);
			var tWidget = GSI.widgets.getWidget('expressitem');
			if (tWidget){
				tWidget.setCollection(GSI.activeItem);
			}
			var tCarousel = GSI.widgets.getWidget('searchcarousel');
			if (tCarousel) {
				tCarousel.onReady(initPrevNext);
			}
			callback();
		};
		
		loader(true);
		if (GSI.setActiveItem(id)){
			if(!GSI.activeItem.loaded) {
				GSI.activeItem.retrieve(retrieveItemCallback);
			} else {
				GSI.activeItem.resetFilters();
				GSI.activeItem.quantity = 1;
				retrieveItemCallback();
			}
		}
		else GSI.setError('ERROR setting active the ITEM '+id, 'ERROR');
	};
	
	var draw = function(){ 
		var id = GSI.activeItem.getData('id');
		//pic
			var imgZoom = GSI.activeItem.getImage('zoom');
			if (!imgZoom) {
				itemZoom.deactivate();
				$("#activate-zoom").hide();
			} else $("#activate-zoom").show();//itemZoom.activate();
			var imBig = GSI.activeItem.getImage('medium');
			var imSml = GSI.activeItem.getImage('mini');
			$(".item-image-main", "#item-image").attr("src", imBig);
			$(".jqimage", "#item-image").attr("src", imgZoom);
		//pic
		$("#item-availability").html('');
		$("#basket-add").attr("disabled","disabled").trigger("disable");
		
		initDynamics();
		
		$("#item-dyn").fadeIn('slow',null);
		$('#item-quantity-select').trigger('reset');
	};

	
	// common functions
		var initDynamics = function(){
			$("#item-dyn").empty();
			GSI.activeItem.refreshAvailableProperties();
			initSelects();
			initColorPicker();
			$('.item-dynamic-element').trigger('refresh').trigger('deactivateme');
			
		};
		
		var initImages = function(id){
				$(".item-image-main", "#item-image").bind('refresh', function(){
					$(this).attr("src", GSI.activeItem.getImage('medium'));
					var imgZoom = GSI.activeItem.getImage('zoom');
					if (!imgZoom) {
						itemZoom.deactivate();
						$("#activate-zoom").hide();
					}
					else $("#activate-zoom").show(); //itemZoom.activate();
					$(".jqimage", "#item-image").attr("src", imgZoom);
				}).addClass('item-dynamic-images');
		};
	
		var initColorPicker=function(){
			var reset = function(){
			$('img', '#item-color-pickers').each(function(){
				$(this).removeClass('disabled').removeClass('selected').addClass('available');}
				);
			GSI.activeItem.removeFilter('COLOR');
			GSI.activeItem.refreshAvailableProperties();
			$('.item-dynamic-images').trigger('reset');
			};
			
			var refresh = function (){
				var colors = GSI.activeItem.availProperties['COLOR'];
				var _FLAG  = (GSI.functions.count(GSI.activeItem.availProperties['COLOR'])==1) ? true : false;
				$('img', '#item-color-pickers').each(function(){
						$(this).addClass('disabled');						
						for(var aColor in colors){
							if (aColor=='indexOf') continue;
							if ($(this).attr('id') == colors[aColor]) {
								$(this).removeClass('disabled');
								if (_FLAG){
									$(this).addClass('selected');
									setFilter('COLOR', colors[aColor]);
								}
								break;
							}
						}
					});
				$('.item-dynamic-images').trigger('refresh');
			};
			
			var activate = function(){
				refresh();
				$('#item-color-pickers').removeClass('inactive').addClass('active');
				$('#item-color-pickers span').fadeTo("fast", 1);
				$('#item-color-pickers img').fadeTo("fast", 1);
				$('img', '#item-color-pickers').click(onClick);
			};
			
			var deactivate = function(){
				reset();
				$('#item-color-pickers').removeClass('active').addClass('inactive');
				$('#item-color-pickers span').fadeTo("fast", 0.33);
				$('#item-color-pickers img').fadeTo("fast", 0.60);
				$('img', '#item-color-pickers').unbind('click', onClick);
			};
			
			var colors = GSI.activeItem.data.PROPERTIES['COLOR'];
			if (!colors) return;
						
			var html = '<div id="item-color-pickers" class="item-dynamic-element"><span>'+ GSI.dict.getText('property_selector', 'COLOR_selector') + ':</span>';
			for (var aColor in colors){
					if (aColor == 'indexOf') continue;
					try{
					var aSwatchImg = GSI_CATALOG_IMG_PATH + 'swatch/'+GSI.activeItem.data.content.IMG['swatch'][colors[aColor]].name;
					html += '<img src="'+aSwatchImg+'" id="'+colors[aColor]+'" alt="'+colors[aColor]+'" title="'+colors[aColor]+'">';
					}
					catch(e){
					// alert('this color I do not like it!!! -> ' + colors[aColor]);
					}
			}
			html+="</div>";
			var domObj = $(html);
			
			$(domObj).bind('reset', function(e,obj){
						var obj = obj;
						if (obj != this) reset();
					}).bind('refresh', function(e, obj){
						var obj = obj;
						if (obj != this) refresh();
					}).bind('activateme', function(e, obj){
						var obj = obj;
						if ($(obj).hasClass('last-select')) activate();
					}).bind('deactivateme', function(e, obj){
						 if (GSI.functions.count(GSI.activeItem.data.PROPERTIES)>2) deactivate();
					});
					
			var onHoverIn = function(){
						if (!$(this.parentNode).hasClass('inactive')) return;
							var tTip = GSI.widgets.getWidget('tooltip');
							if (!tTip) return;
							tTip.show(this, null, GSI.dict.getText('item', 'select_size_first'),null, 150);
						};
						
			var onHoverOut = function(){
							var tTip = GSI.widgets.getWidget('tooltip');
							if (!tTip) return;
							tTip.hide();
						};
						
			var onClick = function(){
				var me = this.parentNode;
				if ($(this).hasClass('disabled')) {
					  alert('Color invalid, try other size ');
					  return false;
					} else {
					setFilter('COLOR',this.id);
					$('img', domObj).removeClass('selected');
					}
				$(this).addClass('selected');
				$('.item-dynamic-images').trigger('refresh');
				checkStock();
				GSI.rvp.add(GSI.activeItem, GSI.activeItem.filters);
				return false;
				};
				
			$('img', domObj).click(onClick); //.hover(onHoverIn, onHoverOut);
				
			$("#item-dyn").append(domObj);
		};
			
		var initSelects = function(){
			
			var itemPropsOrder = {'SIZE':1,'WAIST':1,'default':1};
			
			var selectNumber = 0;
			
			var reset = function(cmb){
				var cmb = cmb;
				$('option', cmb).removeClass('selected').removeClass('disabled').addClass('available');
				cmb.options[0].selected = "selected";
				var filtername =  cmb.name; 
				GSI.activeItem.removeFilter(filtername);
				GSI.activeItem.refreshAvailableProperties();
			};
			
			var refresh = function(cmb){
				if (cmb.refreshing) return;
				cmb.refreshing = true;
				$(cmb).empty();
				try {
					cmb.add(new Option("---", ""), null);
					} catch(e){
					cmb.add(new Option("---", "")); 
					}
				var tI = 0;
				for(var i in GSI.activeItem.availProperties[cmb.name]){
					var tActive = (GSI.activeItem.availProperties[cmb.name][i] == GSI.activeItem.filters[cmb.name]) ? true : false;
					var tOpt = document.createElement('option');
					tOpt.text = GSI.activeItem.availProperties[cmb.name][i];
					tOpt.value = GSI.activeItem.availProperties[cmb.name][i];
					if (tActive) tI = i+1;
					try{
						cmb.add(tOpt, null);
						} catch(e){
						cmb.add(tOpt);
						}
				}
				cmb.selectedIndex = tI;
				cmb.refreshing = false;
				return;
			};
			
			var activate = function(cmb){
				refresh(cmb);
				$(cmb).removeAttr('disabled').parent().fadeTo("fast", 1);
			};
			
			var deactivate = function(cmb){
				reset(cmb);
				$(cmb).attr('disabled','true').parent().fadeTo("fast", 0.33);
			};
			
			var initSelect = function(k,values){
				
				var _FLAG = false;
				if (selectNumber == 0) _FLAG = true;

				var div = $("<div class='item-dynamic-element-div'><span class='title'>"+ GSI.dict.getText('property_selector', k+'_selector') + ":</span>");				
				var sel = $("<select>");
				
				sel.addClass('item-dynamic-element').attr("id",'id_'+ selectNumber++).attr("name",k).bind('reset', function(e, obj){
					var obj = obj;
					if (obj.id.replace(/id_/,'') < this.id.replace(/id_/,'')) reset(this); 
				}).bind('refresh', function(e, obj){
					var obj = obj;
					if (obj && obj != this) refresh(this);
				}).bind('activateme', function(e, obj){
					var obj = obj;
					if (parseInt(this.id.replace(/id_/,'')) == parseInt(obj.id.replace(/id_/,'')) + 1) activate(this);
				}).bind('deactivateme', function(e, obj){
					var obj = (obj == undefined) ? $('select.item-dynamic-element').get(0) : obj;
					if (this.id.replace(/id_/,'') > obj.id.replace(/id_/,'')) deactivate(this);
				}).change(function(){
					var me = this;
					$('option', this).removeClass('selected');
					setFilter(this.name,this.value);
					
					if ($(this).hasClass('last-select') && $(this).val()!="") {
						$(this.options[this.selectedIndex]).addClass('selected');	
						$('.item-dynamic-element').trigger('deactivateme',[me]).trigger('activateme', [me]).trigger('refresh', [me]);
					} else if ($(this.options[this.selectedIndex]).hasClass('disabled')) {
						  $('#item-quantity-select').trigger('reset');
						  $('option', this).removeClass('disabled').addClass('available');
						  $(this.options[this.selectedIndex]).addClass('selected');
						  $('.item-dynamic-element').trigger('deactivateme',[me]).trigger('activateme', [me]);
					} else {
						if ($(this.options[this.selectedIndex]).val() == "") {
							$('#item-quantity-select').trigger('reset');
							$(".item-dynamic-element").trigger('deactivateme',[me]).trigger('refresh', [me]);
							reset(this);
							refresh(this);
							} else {
							$(".item-dynamic-element").trigger('refresh', [me]).trigger('activateme', [me]);
							$(this.options[this.selectedIndex]).addClass('selected');
							}
					}

					checkStock();
					return false;
				}).append('<option value=""> --- </option>');

				
				for(var index in values){
					if (index=='indexOf') continue;
					var v = values[index];
					sel.append('<option value="'+v+'">'+ v + '</option>');
				}
				$(div).append(sel);
				if (_FLAG) $(div).append("<span class='sizing-chart'><a href='#' target='_blank' onclick = 'tb_show(\"\", \"#TB_inline?height=600&width=800&inlineId=sizing-thickbox\",false);return false;'>"+GSI.dict.getText('item', 'sizing_chart')+"</a></span>");
				$("#item-dyn").append(div);
			};
			
			var PROPS = GSI.activeItem.data.PROPERTIES;
			if (!PROPS) return false;
		
			for (var aPos in itemPropsOrder){
				if(aPos=='indexOf') continue;
				if(aPos=="default"){
					for(var optName in PROPS){
						if(optName=='indexOf') continue;
						if(optName=='PRIMARY_COLOR') continue;
						if(optName=='COLOR') continue;
						if (!itemPropsOrder[optName]) {
							initSelect(optName, PROPS[optName]);
							continue;
							}
						else continue;
					}
					continue;
				} else {
					if (PROPS[aPos]) {
						initSelect(aPos, PROPS[aPos]);
						continue;
					} else continue;
				}
			}
			
			selectNumber--;
			$("#id_"+selectNumber+".item-dynamic-element").addClass('last-select');
		};
		
		var setFilter = function(k,v) {
			var key = k;
			GSI.activeItem.addFilter(key,v);
			GSI.activeItem.refreshAvailableProperties();
		};
		
		var checkStock = function(){
			var whenStock = function() {
				if(!GSI.activeItem.data.available) {
						$("#item-availability").html(GSI.dict.getText('availability', 'out of stock'));
						$("#basket-add").attr("disabled","disabled").trigger("disable");
						$('#item-quantity-select').trigger('reset');
						return;
					}
				$('#item-quantity-select').trigger('refresh');
				$("#item-availability").html(GSI.dict.getText('availability', 'in_stock'));
				$("#basket-add").removeAttr('disabled').trigger("enable");
				
			};
		if (!GSI.activeItem.getStock(whenStock)) {
			$("#item-availability").html('');
			$("#basket-add").attr("disabled","disabled").trigger("disable");
			$('#item-quantity-select').trigger('reset');
		}
		else{
			$("#item-availability").html('<img src="'+GSI_APP_IMG_PATH+'shared/loader_small.gif" alt="" title="">');
		}
		};
		

		
	var disableGUI = function(){
		$('#basket-add').attr('disabled', 'true').trigger("disable");
		$('#add-to-bag-content').hide();
		$('.loader', '#add-to-bag').show();
	};

	var enableGUI = function(){
		$('#basket-add').removeAttr('disabled').trigger("disable");
		$('.loader', '#add-to-bag').hide();
		$('#add-to-bag-content').show();
	};

	var initItem = function(){
		$('#extended-info-content').tabs();
		
		$('#item-basic-info').hover(function(){
			if (GSI.activeItem.getData('id')!=page_item_id){
				GSI.setActiveItem(page_item_id);
			}
		}, function(){});
		
		//add to basket button
		$('#basket-add').click(function(){
				var addToBasketFb = function(){
					enableGUI();
					GSI.activeItem.resetFilters();
					draw();
				};
			try{		
				disableGUI();
				if (!addToBasket(addToBasketFb)) GSI.setError('Widget minibasket not found!!!', 'ERROR');
				}catch(e){
				GSI.setError('ERROR when adding to basket!!!'+'\n'+e.message, 'ERROR');
				}
		});
		
		//images
		initImages();
		
		//quantity selector
		$('#item-quantity-select').change(function(){
			GSI.activeItem.quantity = $(this).val();
		}).bind('reset', function(){
			$(this).empty();
			$(this).attr("disabled","disabled");
			$('#item-quantity').fadeTo("fast", 0.33);
		}).bind('refresh', function(){
			$(this).empty();
			var qty = parseInt(GSI.activeItem.data.iol_stock_qty);
			qty = qty<=10?qty:10;
			if (qty<=0) {
				$(this).attr('disabled', 'disabled');
				$('#item-quantity').fadeTo("fast", 0.33);
				return;
				}
			$(this).append('<option value="1" selected>1</option>');
			for (var i=2; i<=qty; i++){
				$(this).append('<option value="'+i+'">'+i+'</option>');
			}
			$(this).removeAttr('disabled');
			$('#item-quantity').fadeTo("fast", 1);
			return;
		});
		
		//image zoom
		itemZoom = $('.jqzoom', '#item-image').jqueryzoom({
				xzoom: 505, //zooming div default width(default width value is 200)
				yzoom: 400, //zooming div default height(default height value is 200)
				xoffset: false, //zooming div default left offset(default offset value is 10)
				yoffset: false, //zooming div default top offset(default offset value is 10)
				IdContainer: 'item-data'
		});
		
		itemZoom.deactivate();
		itemZoom.zoomReady(false);
		
		$("#placeholder-zoom").hover(
		function(){
			$(this).hide();
			itemZoom.zoomReady(true);
		},
		function(){}
		);
		$("#activate-zoom").click(function(){
			if ($(this).hasClass("on")){
				$("#placeholder-zoom").hide();
				itemZoom.deactivate();
				itemZoom.zoomReady(false);	
				$(this).removeClass("on").html(GSI.dict.getText('item', 'view_larger'));
			} else {
				$("#placeholder-zoom").show();
				$(this).addClass("on").html(GSI.dict.getText('item', 'desactivate_view_larger'));
				itemZoom.activate();				
			}	
			
			return false;
		});
		
		itemBoxTemplateXsell = $(".item-box-wrapper#sku_xxx").clone().removeAttr('id');
		//GSI.activeItem.getXsells(initXsells);
		return true;
	};

var page_item_id = 87232;//null
//fin xpress




