YAHOO.util.Event.onDOMReady(init);

var navLinks;
var sections;
var currentPriceIndex=null;
var tickerSpans;
var tickerRepeater=null;

function init() {
   var loop;

   if(YAHOO.util.Dom.hasClass(document.body,'home')) {
      var list = document.getElementById('navList');
      navLinks = list.getElementsByTagName('a');
      sections = YAHOO.util.Dom.getElementsByClassName('section','div','whatBusiness');

      for(loop=0; loop<sections.length; loop++) {
	 if(sections[loop].id!='default') {
	    YAHOO.util.Dom.setStyle(sections[loop],'display','none');
	 }
      }

      for(loop=0; loop<navLinks.length; loop++) {
	 YAHOO.util.Event.addListener(navLinks[loop],'click',changeSection);
      }
   }

   // add tool-tips to map
   if(document.getElementById('centremap')) {
      var centres = document.getElementById('centremap').getElementsByTagName('a');

      for(loop=0; loop<centres.length; loop++) {
	 var tmpText = centres[loop].title.match(/^(.*):(.*):(.*)/);

	 if(tmpText.length>0) {
	    var myTooltip = new YAHOO.widget.Tooltip("centreTT"+loop, { 
	       context:centres[loop], 
	       text:"<h4>"+tmpText[1]+"</h4><strong>"+tmpText[2]+"</strong><span>"+tmpText[3]+"</span>",
	       autodismissdelay:30000,
	       hideDelay:0,
	       showDelay:0 } );
	 }
      }
   }

   // find elements which need to use a child's anchor link as a click event,
   // and make it so
   var linkContainers = YAHOO.util.Dom.getElementsByClassName('inheritChildLink','','bd');
   for(loop=0; loop<linkContainers.length; loop++) {
      var cellAnchors = linkContainers[loop].getElementsByTagName('a');
      if(cellAnchors.length>0) {
	 YAHOO.util.Event.addListener(linkContainers[loop],'mouseover',function() { YAHOO.util.Dom.addClass(this,'hover'); });
	 YAHOO.util.Event.addListener(linkContainers[loop],'mouseout',function() { YAHOO.util.Dom.removeClass(this,'hover'); });
	 YAHOO.util.Event.addListener(linkContainers[loop],'click',visitChildLink);
      }
   }
}


function visitChildLink(ev) {
    var cellAnchors = this.getElementsByTagName("a");
    if (cellAnchors.length > 0) {
        window.location = cellAnchors[0].href;
    }
}


function changeSection(ev) {
   YAHOO.util.Event.preventDefault(ev);
   var loop;

   for(loop=0; loop<sections.length; loop++) {

      if(this.href.indexOf(sections[loop].id)!=-1) {
	 YAHOO.util.Dom.setStyle(sections[loop],'display','block');
      }
      else {
	 YAHOO.util.Dom.setStyle(sections[loop],'display','none');
      }
   }

   for(loop=0; loop<navLinks.length; loop++) {
      if(navLinks[loop]==this) {
	 YAHOO.util.Dom.addClass(navLinks[loop],'selected');
      }
      else {
	 YAHOO.util.Dom.removeClass(navLinks[loop],'selected');
      }
   }
}

function check_support_form(ev)
{
   gotowhich = ""; // Reset variable
   var element_good = returnGood(); // Copy variable from included validation functions

   textbox_OK(document.getElementById('query'), document.getElementById('query'), element_good);
   textbox_OK(document.getElementById('title'), document.getElementById('title'), element_good);
   textbox_OK(document.getElementById('r_name'), document.getElementById('r_name'), element_good);

   textbox_OK(document.getElementById('s_name'), document.getElementById('s_name'), element_good);
   textbox_OK(document.getElementById('company'), document.getElementById('company'), element_good);
   email_OK(document.getElementById('email'), document.getElementById('email'), element_good);
   textbox_OK(document.getElementById('country'), document.getElementById('country'), element_good);
   

   // == Send focus to appropriate element ==============================
   if ( gotowhich != "" ) {
      gotowhich.focus(); // Go to the first incorrect field
      // window.scrollBy(0, -50); // Then scroll a bit above it.  (Disabled for short form)
      alert('Please check the questions marked and try again.');
      YAHOO.util.Event.preventDefault(ev);
      return false;
   } else
   { // Submit form
      return true;
   }
}


function check_contact_form(ev)
{
   gotowhich = ""; // Reset variable
   var element_good = returnGood(); // Copy variable from included validation functions

   textbox_OK(document.getElementById('query'), document.getElementById('query'), element_good);
   textbox_OK(document.getElementById('title'), document.getElementById('title'), element_good);
   textbox_OK(document.getElementById('r_name'), document.getElementById('r_name'), element_good);

   textbox_OK(document.getElementById('s_name'), document.getElementById('s_name'), element_good);
   textbox_OK(document.getElementById('company'), document.getElementById('company'), element_good);
   email_OK(document.getElementById('email'), document.getElementById('email'), element_good);
   textbox_OK(document.getElementById('country'), document.getElementById('country'), element_good);
   

   // == Send focus to appropriate element ==============================
   if ( gotowhich != "" ) {
      gotowhich.focus(); // Go to the first incorrect field
      // window.scrollBy(0, -50); // Then scroll a bit above it.  (Disabled for short form)
      alert('Please check the questions marked and try again.');
      YAHOO.util.Event.preventDefault(ev);
      return false;
   } else
   { // Submit form
      return true;
   }
}


function availabilityChecker(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this);
}

availabilityChecker.prototype.handleOnAvailable = function() {
   if(this.id=="contactusForm") {
      YAHOO.util.Event.addListener(this, "submit", check_contact_form);
   }
   else if(this.id=="supportForm") {
      YAHOO.util.Event.addListener(this, "submit", check_support_form);
   }
   else if(this.id=="priceTicker") {
      tickerSpans = document.getElementById('priceTicker').getElementsByTagName('span');

      var loop;
      var elem = document.createElement('strong');
      elem.id = "tickerText";

      for(loop=0; loop<tickerSpans.length; loop++) {
	 tickerSpans[loop].style.display='none';
      }

      document.getElementById('priceTicker').appendChild(elem);
      scrollPrices(true);
   }
}


function scrollPrices(reset) {

   if(currentPriceIndex==null || currentPriceIndex>=tickerSpans.length) {
      currentPriceIndex=0;
   }

   if(reset) {
      document.getElementById('tickerText').innerHTML = '';
   }

   var tickerText = document.getElementById('tickerText').innerHTML;
   var spanText = tickerSpans[currentPriceIndex].innerHTML;

   // scroll is complete! reset it
   if(tickerText.length >= spanText.length) {
      currentPriceIndex = currentPriceIndex+1;
     
      clearInterval(tickerRepeater); 
      tickerRepeater=null;
      setTimeout("scrollPrices(true);",3000);
   }
   else {
      addTickerChar();
      if(!tickerRepeater) {
	 tickerRepeater = setInterval(scrollPrices,50,false);
      }
      //setTimeout("scrollPrices(false);",50);
   }
}


function addTickerChar() {
   var tickerText = new String(document.getElementById('tickerText').innerHTML);
   var spanText = new String(tickerSpans[currentPriceIndex].innerHTML);
  
   var newLength = parseInt(tickerText.length+1);
   if(spanText[newLength]=='&') {
      var entityEndIndex = spanText.indexOf(';',newLength)
      document.getElementById('tickerText').innerHTML = spanText.substring(0,entityEndIndex); 
   }
   else {
      document.getElementById('tickerText').innerHTML = spanText.substring(0,newLength); 
   }
}



var contactForm = new availabilityChecker('contactusForm');
var supportForm = new availabilityChecker('supportForm');
var ticker = new availabilityChecker('priceTicker');
