/* Home Main Images Rollover */

Event.observe(document, 'dom:loaded', mainImageInit, false);
MainImages = new Object();

function mainImageInit() {

	/* setup toggle status property */
    MainImages.sources = new Array('dl.valueClients dt a','dl.valueProviders dt a');
    MainImages.targets = new Array('dl.valueClients','dl.valueProviders');
	MainImages.toggleState = new Array();

    //we would use prototype .each() here but it fails. we use a classic
    //but optimized for loop to iterate over array of sources instead
    for (var i=0, l = MainImages.sources.length; i < l; i++) {
        var source = MainImages.sources[i];
	    if (mainImageAreaEls = $A($$(source))) {
		    mainImageAreaEls.each( function(src){
                //set the target elements
                var targetRef = MainImages.targets[i];
                //set initial toggle state
                var tRefs = $A($$(targetRef));
                //attach event handlers
                tRefs.each( function(tar) { 
                    MainImages.toggleState[tar.id] = 0; 
                    Event.observe(tar, 'click', function(src){ return function(){window.location = src.href;} }(src), false);
			        Event.observe(tar, 'mouseover', function(target){ return function(){toggleHover(target);} }(targetRef), false);
			        Event.observe(tar, 'mouseout', function(target){ return function(){toggleHover(target);} }(targetRef), false);
                });
		    });
	    }
    }
}

function toggleHover(elementsRef) {
		els = $$(elementsRef);
		els.each( function(el) {
			if (MainImages.toggleState[el.id] == 0) {
				el.addClassName('hover');
				MainImages.toggleState[el.id] = 1;
			} else {
				el.removeClassName('hover');
				MainImages.toggleState[el.id] = 0;
			}
		});
}


/* Home News Slider Interface */

Event.observe(document, 'dom:loaded', sliderInit, false);

function sliderInit() {
	/* setup controls defaults */
	if (controlL = $('newsToggleL')) {
		controlL.addClassName('active');
		controlL.addClassName('inactive');
	}
	if (controlR = $('newsToggleR')) {
		controlR.addClassName('active');
	}

    /* set width on news container as function of number of newsLinks */
    if (slider = $('newsSlider')) {
        var newsExcerptWidth = 225;
        var newsExcerpts = $A($$('dl.newsExcerpt'));
        var totalSliderWidth = newsExcerpts.length * newsExcerptWidth; 
        slider.style.width = totalSliderWidth+'px';
    }
	
    /* hover and click events for individual dl.newsExcerpt blocks */
    var newsLinks = $A($$('dl.newsExcerpt dt a'));

    newsLinks.each( function(link){
        var newsExcerpt = link.ancestors()[1];
        Event.observe(newsExcerpt, 'click', function(){ window.location = link.href; }, false);
        Event.observe(newsExcerpt, 'mouseover', function(){ this.addClassName('hover'); }, false);
        Event.observe(newsExcerpt, 'mouseout', function(){ this.removeClassName('hover'); }, false);
    });

	/* setup hover events on controls */
	Event.observe('newsToggleL', 'mouseover', function(){ 
		if (!this.hasClassName('inactive')) { 
			this.addClassName('hover'); 
		}
	}, false);
	Event.observe('newsToggleL', 'mouseout', function(){ 
		if (this.hasClassName('hover')) { 
			this.removeClassName('hover'); 
		}
	}, false);
	Event.observe('newsToggleR', 'mouseover', function(){ 
		if (!this.hasClassName('inactive')) { 
			this.addClassName('hover'); 
		}
	}, false);
	Event.observe('newsToggleR', 'mouseout', function(){ 
		if (this.hasClassName('hover')) { 
			this.removeClassName('hover'); 
		}
	}, false);

	/* setup slider object */
	/* defined in sliderule.js */
    //setting our own tolerance because for CoventryWC we want the slider items
    //to just barely overhang the box. without this mod the rounding differences
    //intersect to an extra page with content layout crushed in the inner slider
    //var numPages = Math.floor(this.slider.offsetWidth/this.showBox.offsetWidth)+1;
    homeSlider = Class.create();
    homeSlider.prototype = SlideRule.prototype;
    homeSlider.prototype.getNumPages = function() {
        var numPages = Math.floor((this.slider.offsetWidth-newsExcerpts.length*3)/this.showBox.offsetWidth)+1;
        return numPages;
    };

	var newsSlider = new homeSlider('newsSliderWrap', 'newsSlider', { pageForeward: 'newsToggleR', pageBackward: 'newsToggleL', transition: true });

	/* track against slider state for control states */ 
	newsSlider.onPageChange = function(toPage) {
		if (controlL = $('newsToggleL')) {
			if (toPage == 1) {
				controlL.addClassName('inactive');
			} else {
				controlL.removeClassName('inactive');
			}
		}
		numPages = newsSlider.getNumPages();
		if (controlR = $('newsToggleR')) {
			if (toPage == numPages) {
				controlR.addClassName('inactive');
			} else {
				controlR.removeClassName('inactive');
			}
		}

	}

    newsSlider.goToPage(1);
}

