var ajaxFormArgs = Object;

YAHOO.util.Event.onDOMReady(init);

function addExternalLinks() {
   var anchors = document.getElementsByTagName('a',document.getElementById('hd'));
   for(loop=0; loop<anchors.length; loop++) {
      // ensure that links outside the main site open in a new window
      if(anchors[loop].rel=='external') {
	 YAHOO.util.Event.addListener(anchors[loop],'click',openNewWin);
      }
   }
}

function init(ev) {
   var loop,loop2;

   // manipulate links; external ones and flagged nav ones
   var anchors = document.getElementsByTagName('a',document.getElementById('hd'));
   for(loop=0; loop<anchors.length; loop++) {
      var winLoc = new String(window.location);
      var linkLoc = new String(anchors[loop].href);

      // most nav links should highlight for a whole 'tree' of pages
      if(winLoc.match(linkLoc) && linkLoc.match(/\/\/.+\/[^\/]+\/[^\/]+\//)) {
	 YAHOO.util.Dom.addClass(anchors[loop],"youAreHere");
      }

      // section headings should only be highlighted on ONE page
      else if(winLoc.match(linkLoc) && !winLoc.match(/\/[^\/]+\/[^\/]+\/[^\/]+\//)) {
	 YAHOO.util.Dom.addClass(anchors[loop],"youAreHere");
      }
   }

   addExternalLinks();

   init_ajaxforms();

   hide_js_excludes('bd');

   register_image_switchers();

   // 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);
      }
   }

   // if there is a referral list, show/hide 'other' box
   if(document.getElementById('referral') && document.getElementById('other_referral')) {
      var select = document.getElementById('referral');
      if(select.value!='Other') {
	 YAHOO.util.Dom.setStyle('other_referral','display','none');
      }
      YAHOO.util.Event.addListener('referral','change',function() { 
	    var other_referral = document.getElementById('other_referral');
	    if(this.value=='Other') {
	    YAHOO.util.Dom.setStyle('other_referral','display','block');
	    }
	    else {
	    YAHOO.util.Dom.setStyle('other_referral','display','none');
	    }
	    });
   }
}



function register_image_switchers(ev) {
   var loop;

   var thumbs = YAHOO.util.Dom.getElementsByClassName('imageSwitcher','img','bd');
   if(document.getElementById('mainImage')) {
      for(loop=0; loop<thumbs.length; loop++) {
	 YAHOO.util.Event.addListener(thumbs[loop],'click',switchImage,thumbs[loop],true);

	 thumbs[loop].title="Click here to enlarge";

	 if(thumbs[loop].id=='') {
	    thumbs[loop].id = "imageSwitchThumb"+loop;
	 }
      }
   }
}


function switchImage(ev) {
   var pic, matches;

   if(pic = document.getElementById('mainImage')) {
      if(matches = this.src.match(/(.*)-thumb.(jpg|gif|png)/)) {
	 pic.src = matches[1]+"."+matches[2];
	 pic.alt = this.alt;
      }
   }
}



function hide_js_excludes(elemID) {
   var loop;
   var excludes = YAHOO.util.Dom.getElementsByClassName('jsexclude','',elemID);
   for(loop=0; loop<excludes.length; loop++) {
      excludes[loop].style.display='none';
   }
   
}


function init_ajaxforms() {

   var loop,loop2;

   // find the AJAX-able forms
   var ajaxForms = YAHOO.util.Dom.getElementsByClassName('ajaxForm','form','mainContent');
   for(loop=0; loop<ajaxForms.length; loop++) {
      var formID = ajaxForms[loop].id;
      YAHOO.util.Event.addListener(ajaxForms[loop],'submit',submitAjaxForm,ajaxForms[loop],false);

      var resubmitters = YAHOO.util.Dom.getElementsByClassName('resubmitter',null,ajaxForms[loop]);
      for(loop2=0; loop2<resubmitters.length; loop2++) {
	 YAHOO.util.Event.addListener(resubmitters[loop2],'change',submitForm,ajaxForms[loop],false);
      }
   }

}


function visitChildLink(ev) {
   var cellAnchors = this.getElementsByTagName('a');
   if(cellAnchors.length>0) {
      window.location = cellAnchors[0].href;
   }
}


function submitForm(ev,form) {
   submitAjaxForm(ev,form);
}


function submitAjaxForm(ev,form) {
   YAHOO.util.Event.preventDefault(ev);
   YAHOO.util.Connect.setForm(form);
   var transaction = YAHOO.util.Connect.asyncRequest('POST', "/short-breaks-holidays/prices.php?ajax=1" , {success: ajaxFormSuccess, failure: ajaxFormFailure, argument: form.id } , form.id);
}



function ajaxFormSuccess(o) {
   var code = new String(o.responseText);
   var formID = new String(o.argument);
   var updateBlock=null;
   var matches; 
   var loop;

   if(matches = formID.match(/(.+)-ajaxForm/)) {
      updateBlock = matches[1];
      document.getElementById(updateBlock).innerHTML = code;
      init_ajaxforms();
      hide_js_excludes(updateBlock);

      var faders = YAHOO.util.Dom.getElementsByClassName('fadeIn','',updateBlock);
      for(loop=0; loop<faders.length; loop++) {
	 YAHOO.util.Dom.setStyle(faders[loop],'opacity',0.0);
	 var myAnim = new YAHOO.util.Anim(faders[loop]); 
	 myAnim.attributes.opacity = { to: 1.0 }; 
	 myAnim.duration = 1.0; 
	 myAnim.method = YAHOO.util.Easing.easeOut; 
	 myAnim.animate();
      }
   }

   // we need to re-run the external link function, as new links
   // may now be visible in the page
   addExternalLinks();
}

function ajaxFormFailure(o) {
   alert('There has been an error.');
}


function openNewWin(ev) {
   YAHOO.util.Event.preventDefault(ev);
   var win = window.open(this.href,"Ribbyhall","menubar=no,width=800,height=640,toolbar=no,scrollbars=1");
}


function availabilityChecker(id) {
   YAHOO.util.Event.onAvailable(id, this.handleOnAvailable, this);
}

availabilityChecker.prototype.handleOnAvailable = function() {
}



