// ---------- rules product ----------
var product_tabs = {defaulttab:'product_description', current:'', tabs:new Array()};

var rules_product = {
	'#product_tabs': function(el) {
		el = $(el);
		
		var b;
		var product_buttons = $A(el.getElementsByTagName('DIV'));
		product_buttons.each(function(b) {
			b = $(b);
			
			b.initTriRollover();
			
			product_tabs.tabs.push(b);	// add tab button
			b.tab = $(b.id+'_tab');		// tab reference
			if (b.id==product_tabs.defaulttab) {
				b.trion();
				b.tab.show();
			} else {
				b.tab.hide();
			}
			
			b.onmouseover = function() {
				b.rollover();
				b.removeClassName('hover');
			}
			b.onmouseout = function() {
				b.rollout();
				b.removeClassName('hover');
			}
			b.onclick = function() {
				// show clicked tab
				b.trion();
				b.tab.show();
				
				// hide other tabs
				product_tabs.tabs.each(function(t) {
					if (b!=t) {
						t.trioff();
						t.tab.hide();
					}
				});
			}
		});
	},
	'#buynow': function(el) {
		el = $(el);
		el.initRollover(null,true,'buynow_over.gif');
		//SmartPreload.preload(el.img.src_);
	},
	'#style_selector': function(el) {
		el = $(el);
		el.onchange = function() {
		  handleStockAlerts(el);

		  if(el.selectedIndex > 0) {
		    var l = el.options[el.selectedIndex].innerHTML;
		    // Get the color which will be seperated by a pipe.
		    var parts = l.split(' | ');
		    
		    showProductColor(parts[0]);
		  }
		}
	}
};

function handleStockAlerts(el){
  var sadiv = document.getElementById('stock_alert_div');
  if(sadiv){
    var success_text = document.getElementById('stock_alert_success_text');
    if(success_text){
      success_text.style.display = 'none';
    }
    if (sadiv.childNodes && sadiv.childNodes.length > 0) {
      for (var x = 0; x < sadiv.childNodes.length; x++) {
	if(sadiv.childNodes[x].className == 'general_error'){
	  sadiv.childNodes[x].style.display = 'none';
	}
      }
    }

    current_style = sadiv.style.display;
    var is_out_of_stock = el.options[el.selectedIndex].text.match(/Get Stock Alert/);
    if(current_style != 'block' && is_out_of_stock ){
      sadiv.style.display = 'block';
      setDisabledElement(sadiv, false);
    }else if(current_style != 'none' && !is_out_of_stock){
      sadiv.style.display = 'none';
      setDisabledElement(sadiv, true);
    }
  }
  return true;
}

function setDisabledElement(el, toggle) {
  var nodesToDisable = {button :'', input :'', optgroup :'', option :'', select :'', textarea :''};
  try {
    if(el.nodeName && el.nodeName.toLowerCase() in nodesToDisable){
      el.disabled = toggle;
    }
  }
  catch(E){}
                
  if (el.childNodes && el.childNodes.length > 0) {
    for (var x = 0; x < el.childNodes.length; x++) {
      setDisabledElement(el.childNodes[x], toggle);
    }
  }
  return true;
}

function showProductColor(color_name) {
  var option_name = color_product_mapping[color_name];

  showProduct(option_name, true);
}

function showCrossData(productkey) {
  if(!cross_results) {
    return;
  }
  var results = cross_results[product_option_images[productkey]['colour']];

  if(!results) {

    var types =['under', 'over', 'with'];
    for(var i = 0; i < 3; i++) {
      t = types[i];
      c = 'wear_with_' + t;
      co = 'wear_with_' + t + '_contents';
      if($(c)) {
	$(c).style.display = 'none';
      }
    }

    return;
  }



  var types =['under', 'over', 'with'];
  for(var i = 0; i < 3; i++) {
    t = types[i];
    c = 'wear_with_' + t;
    co = 'wear_with_' + t + '_contents';

    if(results[t]) {
      var r = results[t];
      $(c).style_display = '';
      $(co).innerHTML = '';    

      for(var j = 0; j < r.length; j++) {
        var item = r[j];
	var content;
	content = '<div class="productItem"><div class="thumb"><a href="' + item['url'] + '"><img src="' + cross_base + '/icebreaker/new/images/thumb_72_72/' + item['thumb'] + '" alt="' + item['name'] + '" border="0" height="72" width="72" /></a></div><div class="info"><h2>' + item['range'] + ' ' + item['weight'] + '</h2><h1><a href="' + item['url'] + '">' + item['name'];
        content  += '</a></h1></div><div class="moredetail"><a href="' + item['url'] + '"><img src="' + cross_base + '/catalog07/images/en/moredetail_getlayered_button.gif" alt="More detail" class="rollover" border="0" height="72" width="86" /></a></div><div class="spacer"></div></div><div class="horozontaldots"></div>';
      
	$(co).innerHTML += content;
      }      
    } else {
      $(c).style.display = 'none';
    }
  }

}

function showProduct(productkey, doupdate) {
	// get product
  
	var product = product_option_images[productkey];
	if (!product) return;
        current_product_color = productkey;

	showCrossData(productkey);
	// build views
	var views = $('views');
	if (!views) return;
	var viewhtml = '<span>views:</span>&nbsp;|';
	
	// front view
	var defaultview = '';
	var selectedclass = 'class="selected"';
	if (product.views.keys().include('front')) {
		viewhtml += '&nbsp;<a id="viewlink_front" '+selectedclass+' href="javascript:void(0)" onclick="showProductView(\''+productkey+'\',\'front\');">front</a>&nbsp;|';
		selectedclass = '';
		defaultview = 'front';
	}
	
	// other views
	product.views.each(function(view) {
		if (view.key!='front') {
			viewhtml += '&nbsp;<a id="viewlink_'+view.key+'" '+selectedclass+' href="javascript:void(0)" onclick="showProductView(\''+productkey+'\',\''+view.key+'\');">'+view.key.toLowerCase()+'</a>&nbsp;|';
			if (defaultview=='') defaultview = view.key;
		}
	});
	
	
	
	if (doupdate==undefined || doupdate===true) {
		views.update(viewhtml);
		// show front or first view
		// load image, show description
		$('large_image_spinner').show();
		$('large_image').src = product.views[defaultview];
		var description = product.colour;
		if (product.sizes && product.sizes!='') {
		  description = description + ' - ' + product.sizes;
		}if ( product.limited == 1){
		  description = description + "<br />This colour will be offered for a limited time only.";
		}
		$('image_caption').innerHTML = description;
	}
}

function showProductView(productkey, view) {
	// get product
	var product = product_option_images[productkey];
	if (!product) return;
	
	// update view links	
	var views = $('views');
	if (!views) return;
	
	var viewlinks = $A(views.getElementsByTagName('A'));
	viewlinks.each(function(a) {
		a = $(a);
		if (a.id==('viewlink_'+view)) {
			a.addClassName('selected');
		} else {
			a.removeClassName('selected');
		}
	});

	// load image, show description
	$('large_image_spinner').show();
	$('large_image').src = product.views[view];
	var description = product.colour;
	if (product.sizes && product.sizes!='') {
		description = description + ' / ' + product.sizes;
	}if ( product.limited == 1){
	        description = description + "<br />This colour will be offered for a limited time only.";
	}
	$('image_caption').innerHTML = description;
	
	return false;
}

function hideLargeImageSpinner() {
	$('large_image_spinner').hide();
}

// ---------- init product ----------
function initProduct() {
	Behaviour.applySheet(rules_product);
	
	showProduct(defaultproduct, false);
	
	Event.observe('large_image', 'load', hideLargeImageSpinner);
	Event.observe('large_image', 'error', hideLargeImageSpinner);
}
