// JavaScript Document
var sliding = false;

function prevSlide(e){
	Event.stop(e);
	if (!sliding)
		{
			sliding = true;
			var scroller_pos = $('tickerList').positionedOffset();
			if (scroller_pos[0] == 0)
			{
				$('tickerList').setStyle({ 'left': (-(317*(totalSlides)))+'px' });
			}
			new Effect.Move('tickerList', { x: 317, y: 0, duration: 0.4, afterFinish: function() {	sliding = false; } });
		}
}
function nextSlide(e){
	Event.stop(e);
	if (!sliding)
		{
			sliding = true;
			var scroller_pos = $('tickerList').positionedOffset();
			if (scroller_pos[0] == (-(317*(totalSlides))))
			{
				$('tickerList').setStyle({ 'left': '0px' });
			}
			new Effect.Move('tickerList', { x: -317, y: 0, duration: 0.4, afterFinish: function() { 	sliding = false; } });
		}
}
function replaceReg(){
    ticker_desc.each(function(s){ 
        s.innerHTML = s.innerHTML.replace(/®/gi, "<span class=\"reg\">&reg;</span>");
    });
    ticker_desc2.each(function(s){
        s.innerHTML = s.innerHTML.replace(/®/gi, "<span class=\"reg\">&reg;</span>");
    });
}
function pulseArrows(){
	if(totalSlides > 3){
		if(pulsing_next == true){
			pulseNext = new Effect.Pulsate('hp_next', { pulses:120, duration: 120, from: 0.7 });
			//alert('next pulse');
		}else{
			//alert('next pulse stop');
			pulseNext.cancel();
			$('hp_next').setStyle({ 'opacity' : 1 });
			pulsePrev.cancel();
			$('hp_prev').setStyle({ 'opacity' : 1 });
		}
		if(pulsing_prev == true){
			pulsePrev = new Effect.Pulsate('hp_prev', { pulses:120, duration: 120, from: 0.7 });
			//alert('prev pulse');
		}else{
			//alert('prev pulse stop');
			pulsePrev.cancel();
			$('hp_prev').setStyle({ 'opacity' : 1 });
			pulseNext.cancel();
			$('hp_next').setStyle({ 'opacity' : 1 });
		}
	}
}
function initialize(){
	totalSlides = $$('.slide').length;
	pulsing_next = true;
	pulsing_prev = true;
	
	//arrows currently hidden
	//pulseArrows();
	
	if ($('hp_prev') != null) {Event.observe('hp_prev', 'click', prevSlide, false)};
	if ($('hp_prev') != null) {Event.observe('hp_prev', 'mouseover', function(event) { pulsing_prev = false; pulseArrows();})};
	if ($('hp_next') != null) {Event.observe('hp_next', 'click', nextSlide, false)};
	if ($('hp_next') != null) {Event.observe('hp_next', 'mouseover', function(event) { pulsing_next = false; pulseArrows();})};
	if ($('viewmore_next') != null) {Event.observe('viewmore_next', 'click', nextSlide, false)};
	
	if($('scroller_item_flow1')!=null){$('scroller_item_flow1').innerHTML = $('scroller_item_1').innerHTML;};
	if($('scroller_item_flow2')!=null){$('scroller_item_flow2').innerHTML = $('scroller_item_2').innerHTML;};
	if($('scroller_item_flow3')!=null){$('scroller_item_flow3').innerHTML = $('scroller_item_3').innerHTML;};
	
	ticker_desc = $$('div.description .desc_h2');
    ticker_desc2 = $$('div.description .desc_p');
	
	replaceReg();
	
	if ($('viewmore_next') != null){
		new PeriodicalExecuter(function(pe) {
		  $('viewmore_next').simulate('click');
		}, 7);
	}

	if ($('hometicker_latest_news') != null) {Effect.Pulsate('hometicker_latest_news', { pulses: 200, duration: 1200, from: 0.3 })};
	if ($('hometicker_view_more') != null) {Effect.Pulsate('hometicker_view_more', { pulses: 200, duration: 1200, from: 0.3 })};
}
if($('scroller_item_1')!=null){Event.observe(window, 'load', initialize, false);}


/**
* c.f. http://github.com/kangax/protolicious/blob/5b56fdafcd7d7662c9d648534225039b2e78e371/event.simulate.js
* 
* Event.simulate(@element, eventName[, options]) -> Element
*
* - @element: element to fire event on
* - eventName: name of event to fire (only MouseEvents and HTMLEvents interfaces are supported)
* - options: optional object to fine-tune event properties - pointerX, pointerY, ctrlKey, etc.
*
* $('foo').simulate('click'); // => fires "click" event on an element with id=foo
*
**/
(function(){
  
  var eventMatchers = {
    'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,
    'MouseEvents': /^(?:click|mouse(?:down|up|over|move|out))$/
  }
  var defaultOptions = {
    pointerX: 0,
    pointerY: 0,
    button: 0,
    ctrlKey: false,
    altKey: false,
    shiftKey: false,
    metaKey: false,
    bubbles: true,
    cancelable: true
  }
  
  Event.simulate = function(element, eventName) {
    var options = Object.extend(defaultOptions, arguments[2] || { });
    var oEvent, eventType = null;
    
    element = $(element);
    
    for (var name in eventMatchers) {
      if (eventMatchers[name].test(eventName)) { eventType = name; break; }
    }

    if (!eventType)
      throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported');

    if (document.createEvent) {
      oEvent = document.createEvent(eventType);
      if (eventType == 'HTMLEvents') {
        oEvent.initEvent(eventName, options.bubbles, options.cancelable);
      }
      else {
        oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView,
          options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY,
          options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element);
      }
      element.dispatchEvent(oEvent);
    }
    else {
      options.clientX = options.pointerX;
      options.clientY = options.pointerY;
      oEvent = Object.extend(document.createEventObject(), options);
      element.fireEvent('on' + eventName, oEvent);
    }
    return element;
  }
  
  Element.addMethods({ simulate: Event.simulate });
})()
