var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;

var $Y;
var $D;
var $E;
var $A;

if(typeof YAHOO != "undefined")
{
$Y = YAHOO.util;
$D = YAHOO.util.Dom;
$E = YAHOO.util.Event;
$A = YAHOO.util.Anim;
}

if(! Math.randomInt) {
	Math.randomInt = function(max)
	{
		if( ! max) 
		max = 1;
		return (Math.round( Math.random() * max ));
	}
}

if(! Math.randomIntRange) {
	Math.randomIntRange = function(min, max)
	{
		if(!min)
			min = 0;
		if(!max)
			max = 1;
			
		return Math.round( (Math.random() * max ) + min);
	}
}

function $() {
	if (arguments.length == 1) return get$(arguments[0]);
	var elements = [];
	
	$c(arguments).each(function(el){
		elements.push(get$(el));
	});
	return elements;
	
	function get$(el){
		if (typeof el == 'string') el = document.getElementById(el);
		return el;
	}
}

// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
// Free usage permitted as long as this notice remains intact.
// This must be a path to a blank image. That's all the configuration you need here.
var blankImg = 'blank.gif';
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
function filt(n, s, m) {
	if(n && s && n.style)
	{
		n.style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
		n.src = blankImg;
	}
}

function doFix() 
{
	var nodes = document.getElementsByTagName('img');
	
	for(var i = nodes.length; i-- > 0;)
	{	
		var node = nodes[i];
		
		if (node.tagName == 'IMG') 
		{
			if ((/\.png$/i).test(node.src)) 
			{
				filt(node, node.src, 'image');  // was 'scale'
				src = blankImg;
			} 
		} 
		else if (node.style && node.style.backgroundImage) 
		{
			if (node.style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) 
			{
				var s = RegExp.$1;
				node.style.backgroundImage = '';
				filt(node, s, 'crop');
			}
			else 
			{
				filt();
			}
		}
	}
}

var iarr = [];
var imgels;
var rt = null;
var rtmin = 1; var rtmax = 3;

function initImageRotate(container)
{
	
	var s100 = document.getElementsByClassName('s100');
	var s125 = document.getElementsByClassName('s125');
	var s150 = document.getElementsByClassName('s150');
	var s200 = document.getElementsByClassName('s200');
	
	var r100 = new RotateImages(s100, i100, 'dotshots/', 2);
	var r125 = new RotateImages(s125, i125, 'dotshots/', 2.25);
	var r150 = new RotateImages(s150, i150, 'dotshots/', 3);
	var r200 = new RotateImages(s200, i200, 'dotshots/', 1.87);
	
	//alert('inited');
}

var RotateImages = function(els, images, pathprefix, interval) {
	
	this.elements = els;
	this.images = images;
	if(pathprefix != undefined && pathprefix != null)
		this.pathprefix = pathprefix;
	this.pathprefix = pathprefix;
	if(interval != undefined && interval != null)
		this.interval = interval;
	
	timer = setInterval(rotate, this.interval*1000, this);
	
	function rotate(o) {
		
		var eIndex = Math.randomInt(o.elements.length);
		var iIndex = Math.randomInt(o.images.length);
		
		var p = o.pathprefix + o.images[iIndex];
		
		if(o.images[iIndex] != undefined && o.elements[eIndex] != undefined)
			o.elements[eIndex].src = p;
	}
	
	
}

var Replacer = {
	replace : function(img, nsrc) {
		el = $(img);
		var fadeDuration = 0.3;
		var fadeoutAttr = { opacity: { to: 0 } };
		var fadeinAttr = { opacity: { to: 1 } };
		var fadeout = new $A(el, fadeoutAttr, fadeDuration, YAHOO.util.Easing.easeOut);
		var fadein = new $A(el, fadeinAttr, fadeDuration, YAHOO.util.Easing.easeOut);
		fadeout.onComplete.subscribe(
			function(){
				el.src = nsrc;
				$E.addListener(el,'load',fadein.animate, fadein, true);
			}
		);
		fadeout.animate();		
	}
};

function getRandomImage(w)
{
	if(iarr[w])
	{
		var index = Math.randomInt(iarr[w].length-1);
		var src = 'dotshots/'+iarr[w][index];

		// check to make sure that the selected image isn't already in use...
		var c = $('dotshotimages');
		if(c)
		{
			var cimgs = c.getElementsByTagName('img');
			for(var i = cimgs.length; i-- > 0;)
			{
				//alert(cimgs[i].src + ' == ' + src);
				if( (cimgs[i].src.indexOf(src)) > 0)
					return getRandomImage(w);
			}
		}
		
		return src;
	}
	return null;
}

function rotateImages()
{
	if(rt) clearTimeout(rt);
	var imgindex = Math.randomInt(imgels.length - 1)
	var iel = imgels[imgindex];
	var w = iel.width;
	var src = null;
	x = 0;
	while (src == null && x < 100)
	{
		src = getRandomImage(w);
		x ++;
	}
	if(src == null) return;
	Replacer.replace(iel, src);
	var dur = Math.randomIntRange(rtmin, rtmax);
	rt = setTimeout(rotateImages, dur*1000);	
}	

function fixExternalLinks()
{
	var anchors = document.getElementsByTagName('a');
	for(var i = anchors.length; i-- > 0;)
	{
		if(anchors[i].rel == 'external' || anchors[i].getAttribute('rel') == 'external' )
		{
			anchors[i].target = '_blank;';
			anchors[i].className = anchors[i].className + ' extlnk';
		}
	}
}

function init()
{
	if(isIE) doFix();
	var container = document.getElementById('dotshotimages');
	if(container) initImageRotate(container);
	fixExternalLinks();
	initLightbox();
	initBuyForms();
}


function initBuyForms()
{
	var b = document.getElementById('buypg');
	if(! b) return;
	
	var fs = document.getElementsByTagName('form');
	
	for(var i = fs.length; i-- > 0;)
	{
		var f = function() {
			showzoom($('votenow'));
		}
		$E.addListener(fs[i], 'submit', f);
	}
}

function initLightbox()
{
	// the rest of this code inserts html at the top of the page that looks like this:
	//
	// <div id="overlay">
	//		<a href="#" onclick="hideLightbox(); return false;"><img src="blank.gif" alt="waiting" /></a>
	// </div>
	// <div id="lightbox">
	//		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">
	//			<img src="close.gif" alt="x" />	close
	//		</a>
	//		<div id="lightboxcontents">
	//		</div>
	// </div>
	
	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.onclick = function () {hidezoom(); return false;}
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '900';
 	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// create lightbox div, same note about styles as above
	var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id','lightbox');
	objLightbox.style.display = 'none';
	objLightbox.style.position = 'absolute';
	objLightbox.style.zIndex = '1000';	
	objBody.insertBefore(objLightbox, objOverlay.nextSibling);
	
	// create link
	var objLink = document.createElement("a");
	objLink.setAttribute('href','#');
	objLink.setAttribute('title','Click to close');
	objLink.onclick = function () {hidezoom(); return false;}
	
	var objImg = document.createElement('img');
	objImg.setAttribute('src', 'close.gif');
	objImg.setAttribute('alt', 'X');
	objLink.appendChild(objImg);
	
	objLightbox.appendChild(objLink);
	
	// create content div
	var objContents = document.createElement("div");
	objContents.setAttribute('id','lightboxContents');
	objLightbox.appendChild(objContents);

}

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


function showzoom(elem) {

	var el = $(elem);
	var h = el.innerHTML;

	// prep objects
	var objOverlay = document.getElementById('overlay');
	var objLightbox = document.getElementById('lightbox');
	var objContents = document.getElementById('lightboxContents');
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// set height of Overlay to take up whole page and show
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';

	objContents.innerHTML = h;
	
	objLightbox.style.display = 'block';

	arrayPageSize = getPageSize();
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objLightbox.style.top = (arrayPageScroll[1] + 20 + 'px');
	objLightbox.style.left = ( (arrayPageSize[2]-540)/2 + 'px');
	
	// hide selects
	selects = document.getElementsByTagName("select");
    for (i = selects.length; i-- > 0;) {
		selects[i].style.visibility = "hidden";
	}
	
	// replace images in zoomed content
	var imgs = objContents.getElementsByTagName('img');
	for( i = imgs.length; i-- > 0;)
	{
		var s = imgs[i].getAttribute('rel');
		var sw = imgs[i].getAttribute('relw');
		var sh = imgs[i].getAttribute('relh');
		
		if(s)
		{
			imgs[i].src = s;
			imgs[i].style.width = sw + 'px';
			imgs[i].style.height = sh + 'px';
		}
	}
	
	// show needed selects
	selects = objContents.getElementsByTagName("select");
    for (i = selects.length; i-- > 0;) {
		selects[i].style.visibility = "visible";
	}
			
}

function hidezoom()
{
	// get objects
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');
	objContents = document.getElementById('lightboxContents');

	// hide lightbox and overlay
	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';

	// clear innerHTML
	objContents.innerHTML = '';
	
	// make select boxes visible
	selects = document.getElementsByTagName("select");
    for (i = selects.length; i-- > 0;) {
		selects[i].style.visibility = "visible";
	}
}

function show(el)
{
	var el = $(el);
	if(!el) return;
	el.style.display = (el.style.display == "block")? "none" : "block";
}

window.onload = init;

