// SMC general scripts
window.onload = init;

function init() {
	if (window.noBanner === undefined || noBanner != true) {
		insertBanner();
	}
}


/**
 * Rollover image script
 * Call on page load
 * image class: rollover
 * filenames: a.jpg, a_over.jpg
 */
function rolloverImages() {
	imgsPreload = new Array();
	var imgs = $$('.rollover');
	if (imgs !== undefined) {
		imgs.each( function(img) {
			var fileNameAr = /(.+)(\..{3})$/.exec(img.src);
			img.newSrc = fileNameAr[1] + '_over' + fileNameAr[2];

			imgsPreload[img.src] = new Image();
			imgsPreload[img.src].src = img.newSrc;

			img.observe('mouseover', function(img) {
				img.target.oldSrc = img.target.src;
				img.target.src = img.target.newSrc;
			});
			img.observe('mouseout', function(img) {
				img.target.src = img.target.oldSrc;
			});
		});
	}
}


/**
 * Clear default values from input fields
 * and replace them if field not changed
 * input class: default_value
 */
function clearDefaultInputs() {
	var inps = $$('input.default_value');
	if (inps !== undefined) {
		inps.each( function(inp) {
			inp.observe('focus', function(inp) {
				if (inp.target.value == inp.target.defaultValue) {
					inp.target.value = '';
					inp.target.style.color = '#000000';
				}
			});
			inp.observe('blur', function(inp) {
				if (inp.target.value == '') {
					inp.target.value = inp.target.defaultValue;
					inp.target.style.color = '#999999';
				}
			});
			
		});
	}
}

/*** BANNER SLIDESHOW ***/


// Add new scrolling effects
Effect.ScrollVertical = Class.create();
Object.extend(Object.extend(Effect.ScrollVertical.prototype, Effect.Base.prototype), {
    initialize: function(element) {
        if(typeof element == "string") {        
            this.element = $(element);
            if(!this.element) {
                throw(Effect._elementDoesNotExistError);
            }
        }
        var options = Object.extend({
            from: this.element.scrollTop || 0,
            to:   this.element.offsetHeight
        }, arguments[1] || {});
        this.start(options);
    },
    update: function(position) {
        this.element.scrollTop = position;
    }
});

Effect.ScrollHorizontal = Class.create();
Object.extend(Object.extend(Effect.ScrollHorizontal.prototype, Effect.Base.prototype), {
    initialize: function(element) {
        if(typeof element == "string") {        
            this.element = $(element);
            if(!this.element) {
                throw(Effect._elementDoesNotExistError);
            }
        }
        var options = Object.extend({
            from: this.element.scrollLeft || 0,
            to:   this.element.offsetWidth
        }, arguments[1] || {});
        this.start(options);
    },
    update: function(position) {
        this.element.scrollLeft = position;
    }
});



// rewrite the Array function so that it can return random members
Array.prototype.random = function() {
    return this[Math.floor((Math.random()*this.length))];
}

// Array of slides in "/images/v2/banner_slides":  filename, height, scroll direction.
/*var myData = [  ['stupa.jpg',667,'up'],
				['sunset-mountain-tree-gs.jpg',884,'down'],
				['gesarthangka.jpg',481,'down'],
				['kyudosensei.jpg',594,'down'],
				['frank.jpg',728,'up'],
				['redflower-aspen.jpg',376,'up'],
				['stupa2.jpg',562,'up'],
				['hhdl.jpg',502,'up'] 
			];*/
var myData = [  ['stupa.jpg',667,'down'],
				['sunset-mountain-tree-gs.jpg',884,'down'],
				['gesarthangka.jpg',481,'down'],
				['kyudosensei.jpg',594,'down'],
				['frank.jpg',728,'down'],
				['redflower-aspen.jpg',376,'down'],
				['stupa2.jpg',562,'down'],
				['hhdl.jpg',502,'down'] 
			];
var bannerHeight = 104;

var myCurrent = myData.random();
var myFile = myCurrent[0];
var myHeight = myCurrent[1];
var myDirection = myCurrent[2];

function insertBanner() {
	var banner = $('banner_container');
	Element.update(banner, '<img class="slide_overlay" src="/images/v2/home_banner_lines.gif" alt="" /><img class="slide_overlay" src="/images/v2/home_banner_white.gif" id="slide_white" alt="" /></div><div class="slide" id="slide" style="display:none"><img id="slide_img" src="/images/v2/banner_slides/'+myFile+'" alt="Yoga, Group Rentals, Retreats, Travel, Meditation Cushions" style="" /></div><p id="slide_text01" style="display:none">Buddhism...</p><p id="slide_text02" style="display:none">Meditation...</p><p id="slide_text03" style="display:none">Yoga...</p><p id="slide_text04" style="display:none">Retreats...</p><p id="slide_text05" style="display:none">...in the Colorado Rockies</p>');
	Element.setOpacity('slide_white', 0.5);
	$('slide_img').onload = bannerAnimation();
}

function bannerAnimation() {
	if (myDirection == 'up') {
		var myScrollFrom = myHeight - bannerHeight;
		var myScrollTo = 0;
	} else {
		var myScrollFrom = 0;
		var myScrollTo = myHeight - bannerHeight;
	}
		
	Element.setOpacity('slide', 0);
	$('slide').style.display = 'block';
	new Effect.ScrollVertical('slide', { from: 0, to: myScrollFrom, duration: 0.1});
	new Effect.Opacity('slide', { from:0, to:1, delay: 1 });
	new Effect.ScrollVertical('slide', { from: myScrollFrom, to: myScrollTo, delay: 2, duration: 25 });

	new Effect.Appear('slide_text01', { delay: 3, duration: 1, queue: { position: 'end', scope: 'text'} });
	new Effect.Fade('slide_text01', { delay: 2, duration: 2, queue: { position: 'end', scope: 'text'} });

	new Effect.Appear('slide_text02', { duration: 1, queue: { position: 'end', scope: 'text'} });
	new Effect.Fade('slide_text02', { delay: 2, duration: 2, queue: { position: 'end', scope: 'text'} });

	new Effect.Appear('slide_text03', { duration: 1, queue: { position: 'end', scope: 'text'} });
	new Effect.Fade('slide_text03', { delay: 2, duration: 2, queue: { position: 'end', scope: 'text'} });

	new Effect.Appear('slide_text04', { duration: 1, queue: { position: 'end', scope: 'text'} });
	new Effect.Fade('slide_text04', { delay: 2, duration: 2, queue: { position: 'end', scope: 'text'} });

	new Effect.Appear('slide_text05', { duration: 1, queue: { position: 'end', scope: 'text'} });
	new Effect.Fade('slide_text05', { delay: 2, duration: 2, queue: { position: 'end', scope: 'text'} });
}

/*** END BANNER SLIDESHOW ***/
