OMINOR = {}
OMINOR.FormActions = {
  disbale: function(form) {
    $("commit").disable();    
    $("commit").hide();    
    $("loading").show();    
  }  
}

OMINOR.Products = {
  bestAvailability: "",
  
  onShow: function() { 
    OMINOR.Products.enableDispatchSwitching(); 
    OMINOR.Products.enableAlternateImages(); 
  },  
  
  enableAlternateImages: function() {
    if ($('product_image_views')){
      $('product_image_views').appear({delay: 2, duration: 2});
    }
  },
  
  enableDispatchSwitching: function() {
    $('basket_item_code').onchange = function() { 
      OMINOR.Products.skuSelect();
    };
  }, 
  
  click: function()  {
    element_id = this.id.gsub("_link", "");
    $$(".active").each(function(value, index){value.removeClassName('active')});
    $(this).addClassName('active');
    
    $$(".info_box").each(function(value, index){value.hide();});
    $(element_id).show();
    return false;
  },  
  
  skuSelect: function() {
    code = $('basket_item_code');                         
    selected_option = code.options[code.selectedIndex]
    dispatch_element = $('product_options').getElementsBySelector("p.dispatch span").first();
    if(selected_option.value == "" ) {
      dispatch_element.innerHTML = OMINOR.Products.bestAvailability
    } else {
      dispatch_text = selected_option.text.split(' : ')[1]
      dispatch_element.innerHTML = dispatch_text;
    }
  },
  
  addEngraving: function() {
    if ($('basket_item_code') && $('basket_item_code').value == '') {
      alert('Please choose a size.');
      return false;
    }
    new Ajax.Updater('add_engraving_box', '/engraving/new', {asynchronous:true, evalScripts:false, method:'get', parameters: $('new_basket_item').serialize()}); 
    return false;
  },
  
  updateEngraving: function(link) {
    new Ajax.Updater('add_engraving_box', link.href, {asynchronous:true, evalScripts:false, method:'get'}); 
    return false;
  },
  
  skipEngravingButton: function() {
    $('basket_item_add_engraving').value = '0';
  },
  
  addEngravingButton: function() {
    if ($('basket_item_engraving_message').value == '') {
      alert("Please enter the message you want to engrave.");
      return false;
    }
    length = $('basket_item_engraving_message').value.length;
    if (length > 20) {
      alert("Please restrict your message to 20 characters - your current message is " + length + " characters long.");
      return false;
    }
  },
  
  closeEngravingWindow: function() {
    $('add_engraving_box').innerHTML = '';
  },
  
  setupAddEngraving: function() {
    Event.observe('add_engraving', 'click', OMINOR.Products.addEngraving);
  }
}     

OMINOR.UploadYourStory = {
  setupUploadYourStory: function() {
    if ($('upload_your_story')) {
      Event.observe('upload_your_story', 'click', function(event) { OMINOR.UploadYourStory.activateUploadYourStory(event) } );
    }
  },
  
  activateUploadYourStory: function(event) {
    new Ajax.Updater('upload_your_story_box', '/upload_your_story/new', {asynchronous:true, evalScripts:false, method:'get'}); 
    event.stop();
  },
  
  submit: function() {
    new Ajax.Updater('upload_your_story_box', '/upload_your_story', {asynchronous:true, evalScripts:false, method:'post', parameters: $('upload_your_story_form').serialize()}); 
    return false;
  },
  
  close: function() {
    $('upload_your_story_box').innerHTML = '';
  }
} 

OMINOR.Payments = {
  formSubmitted: false,
  
  onNew: function() {
    OMINOR.Payments.setUpDeliveryType();
  },
  
  setUpDeliveryType: function() {
    $('delivery_type_submit').hide();
    
    Event.observe('delivery_type_normal', 'click', OMINOR.Payments.check);
    Event.observe('delivery_type_nextday', 'click', OMINOR.Payments.check);
  },
  
  check: function() {
  
    $('delivery_type_form').submit();
  },
  
  disablePaymentForm: function() {
    if(OMINOR.Payments.formSubmitted == false){
      $('payment_form').submit();
      OMINOR.Payments.formSubmitted = true;
    }
  }
  
}

OMINOR.BasketAddresses = {
  
  address_fields: 
    ['address_title', 'address_first_name', 'address_last_name',
     'address_address_line_1', 'address_address_line_2', 'address_town',
     'address_county', 'address_country_code', 'address_postcode',
     'address_telephone'], 
  
  onNew: function() { OMINOR.BasketAddresses.setUpCheckBox(); },
  onCreate: function() { OMINOR.BasketAddresses.setUpCheckBox(); },
  
  setUpCheckBox: function() {
    Event.observe('same_delivery_address', 'click', OMINOR.BasketAddresses.flip);
    OMINOR.BasketAddresses.flip();
  },
  
  flip: function() {
    checked = $('same_delivery_address').checked;
    
    if(checked) {
      OMINOR.BasketAddresses.address_fields.each(function(value) {
        $('delivery_' + value).disable();
        $('delivery_' + value).value = $('billing_' + value).value;
      })
    } else {
      OMINOR.BasketAddresses.address_fields.each(function(value) {
        $('delivery_' + value).enable();
        $('delivery_' + value).value = "";
      })
    }
  }

}    

OMINOR.Home = {
  
  /* Giftfinder */
  
  onShow: function() {
    //replace the action so that users with javascript have cascading filters.
    $('gift_finder').action = '/home/gift-finder';
    
    //change the action to the results page when submit is clicked.
    Event.observe('find_gift', 'click', OMINOR.Home.submitClicked);
  },
  
  submitClicked: function() {
    $('gift_finder').action = '/gift-finder/page/1';
  }
}

OMINOR.MagicZoom = {
  reset: function() {
    MagicZoom_stopZooms(); 
    setTimeout('MagicZoom_findZooms()', 100);
  }
}

OMINOR.ShowMore = {
  toggleVisibility: function(link, target, show_text, hide_text) {
    if (show_text == undefined) show_text = "Show more...";
    if (hide_text == undefined) hide_text = "Hide more...";
    Effect.toggle(target, 'blind');
    if (link.innerHTML == show_text) {
      link.innerHTML = hide_text;
    } else {
      link.innerHTML = show_text;
    }
    return false;
  }
};

OMINOR.CharacterCountdown = function(field_id, element_to_update, max_length) {
  var count = $(field_id).value.length;
  var remaining = max_length - (count + 1);
  if (remaining < 0) { remaining = 0 };
  $(element_to_update).innerHTML = remaining + " characters remaining";
  return true;
};

function confirm_destroy(element, action, authenticity_token) {
  var f = document.createElement('form');
  f.style.display = 'none';
  element.parentNode.appendChild(f);
  f.method = 'POST';
  f.action = action;
  var m = document.createElement('input');
  m.setAttribute('type', 'hidden');
  m.setAttribute('name', '_method');
  m.setAttribute('value', 'delete');
  f.appendChild(m);
  var s = document.createElement('input');
  s.setAttribute('type', 'hidden');
  s.setAttribute('name', 'authenticity_token');
  s.setAttribute('value', authenticity_token);
  f.appendChild(s);
  f.submit();
}



/*
Simple Image Trail script- By JavaScriptKit.com
Visit http://www.javascriptkit.com for this script and more
This notice must stay intact
*/

var offsetfrommouse=[15,15]; //image x,y offsets from cursor position in pixels. Enter 0,0 for no offset
var displayduration=0; //duration in seconds image should remain visible. 0 for always.
var currentimageheight = 270;	// maximum image size.

if (document.getElementById || document.all){
	document.write('<div id="trailimageid">');
	document.write('</div>');
}

function gettrailobj() {
	
	if (document.getElementById) {
		return document.getElementById("trailimageid").style;
	}
	else if (document.all) {
		return document.all.trailimagid.style;
	}
	return '';
}

function gettrailobjnostyle(){
	
	if (document.getElementById) {
		return document.getElementById("trailimageid");
	}
	else if (document.all) {
		return document.all.trailimagid;
	}
	return '';
}

function truebody() {
	return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function showtrail(title,description,currentimageheight) {
	document.onmousemove=followmouse;

	newHTML = '<div class="trailimage_box">';
	newHTML = newHTML + '<h2>' + title + '</h2>';
	newHTML = newHTML + description + '<br/>';

	newHTML = newHTML + '</div>';
	gettrailobjnostyle().innerHTML = newHTML;
	gettrailobj().display="inline";
}


function hidetrail() {
	gettrailobj().innerHTML = " ";
	gettrailobj().display="none"
	document.onmousemove=""
	gettrailobj().left="-500px"
}

function followmouse(e) {
	var xcoord=offsetfrommouse[0]
	var ycoord=offsetfrommouse[1]

	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth - 15
	var docheight=document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight)

	if (typeof e != "undefined"){ // firefix
		xcoord = e.pageX - xcoord - 160; // Move to the left side of the cursor
		ycoord += e.pageY - 10;
	} else if (typeof window.event != "undefined"){ // ie
		xcoord = event.clientX + truebody().scrollLeft - xcoord - 160; // Move to the left side of the cursor
		ycoord += truebody().scrollTop + event.clientY - 10;
	}

	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
	var docheight=document.all? Math.max(truebody().scrollHeight, truebody().clientHeight) : Math.max(document.body.offsetHeight, window.innerHeight)
		if(ycoord < 0) { ycoord = ycoord*-1; }
	gettrailobj().left=xcoord+"px"
	gettrailobj().top=ycoord+"px"
}
/* END Simple Image Trail */

function toggleLayer(whichLayer) {
	if (document.getElementById) {
		// this is the way the standards work
		var style2 = document.getElementById(whichLayer).style;
		style2.display = style2.display? "":"block";
		}
	else if (document.all) {
		// this is the way old msie versions work
		var style2 = document.all[whichLayer].style;
		style2.display = style2.display? "":"block";
		}
	else if (document.layers)	{
		// this is the way nn4 works
		var style2 = document.layers[whichLayer].style;
		style2.display = style2.display? "":"block";
		} // if
	}

/* Email to a friend */

function close_email_friend_window() {
  $('email_friend_box').innerHTML = '';
}

function toggle_detail_tab(tab) {
	var tabs = new Array('delivery', 'description', 'product');
	
	for (var i = 0; i < tabs.length; i++) {
		var tab_id = tabs[i] + '_info';
		var link_id = tabs[i] + '_info_link';

		if (tabs[i] == tab) {
			document.getElementById(tab_id).style.display = '';
			document.getElementById(link_id).className = 'active';
		} else {
			document.getElementById(tab_id).style.display = 'none';
			document.getElementById(link_id).className = '';
		}
	}
}

function toggle_menu(id, link) {
	var img = link.firstChild;
	if(img.getAttribute('src') == '/images/admin/tree_minus.gif'){
		img.setAttribute('src', '/images/admin/tree_plus.gif');
	} else {
		img.setAttribute('src', '/images/admin/tree_minus.gif');
	}
	
	
	if(document.getElementById(id)) {
		if(document.getElementById(id).style.display == 'none') {
			document.getElementById(id).style.display = '';
		} else {
			document.getElementById(id).style.display = 'none';
		}
	}
}
