var msImages_arr;
var msNavBubbles_arr;
var msTitles_arr;
var currentMSImage_num;
var nextMSImage_num;
var timer;
var timeTrackTimer;
var slideDuration_num = 5000;
var transitionDuration_num = 500;

function msInit() {
	msImages_arr = getElementsByClassName('ms_image');
	msNavBubbles_arr = getElementsByClassName('ms_nav_bubble');
	msTitles_arr = getElementsByClassName('ms_nav_title');
	initMSImages();
	currentMSImage_num = 0;
	nextMSImage_num = 1;
	startTimer();
	updateTimeTracker();
	//showReadMore(false)
	var readMoreLink = getDiv('ms_read_more_link');
	var currentAnchorTag = msImages_arr[currentMSImage_num].getElementsByTagName('a');
	if (!currentAnchorTag[0]) {
		showReadMore(false);
		$(readMoreLink).hide();
	}
}
function initMSImages() {
	for (var i=0; i<msImages_arr.length; i++) {
		if (i == 0) {
			msImages_arr[i].style.left = '0px';
			msTitles_arr[i].style.top = '8px';
			$(msImages_arr[i]).animate({ opacity: '1' }, 20);
			$(msNavBubbles_arr[i]).animate({ opacity: '1' }, 20);
			$(msTitles_arr[i]).animate({ opacity: '1' }, 20);
		} else {
			$(msImages_arr[i]).animate({ opacity: '0' }, 20);
			$(msNavBubbles_arr[i]).animate({ opacity: '0.25' }, 20);
			$(msTitles_arr[i]).animate({ opacity: '0' }, 20);
		}
	}
}
function startTimer() {
	if (msImages_arr.length > 1) {
		timer = setTimeout(transitionToNextImage, slideDuration_num);
	}
}
function updateTimeTracker() {
	$('#ms_time_tracker_slider').animate({ width: '100%' }, slideDuration_num);
}
function transitionToNextImage() {
	clearTimeout(timer);
	msTitles_arr[nextMSImage_num].style.top = '8px';
	msImages_arr[nextMSImage_num].style.left = '0px';
	$('#ms_time_tracker_slider').animate({ width: '0%' }, 20);
	$(msNavBubbles_arr[currentMSImage_num]).animate({ opacity: '0.25' }, transitionDuration_num);
	$(msNavBubbles_arr[nextMSImage_num]).animate({ opacity: '1' }, transitionDuration_num);
	$(msTitles_arr[currentMSImage_num]).animate({ opacity: '0' }, transitionDuration_num);
	$(msTitles_arr[nextMSImage_num]).animate({ opacity: '1' }, transitionDuration_num);
	$(msImages_arr[currentMSImage_num]).animate({ opacity: '0' }, transitionDuration_num);
	$(msImages_arr[nextMSImage_num]).animate({ opacity: '1' }, transitionDuration_num, function() {
		calculateNextImage();
	});
}
function stopTransitions(imgNumber) {
	$('#ms_time_tracker_slider').stop(true, false);
	$('#ms_time_tracker_slider').animate({ width: '0%' }, 20);
	$(msNavBubbles_arr[currentMSImage_num]).stop(true, false);
	$(msNavBubbles_arr[nextMSImage_num]).stop(true, false);
	$(msTitles_arr[currentMSImage_num]).stop(true, false);
	$(msTitles_arr[nextMSImage_num]).stop(true, false);
	$(msImages_arr[currentMSImage_num]).stop(true, false);
	$(msImages_arr[nextMSImage_num]).stop(true, false);
	$(msNavBubbles_arr[currentMSImage_num]).animate({ opacity: '0.25' }, 20);
	$(msNavBubbles_arr[nextMSImage_num]).animate({ opacity: '0.25' }, 20);
	$(msTitles_arr[currentMSImage_num]).animate({ opacity: '0' }, 20);
	$(msTitles_arr[nextMSImage_num]).animate({ opacity: '0' }, 20);
	$(msImages_arr[currentMSImage_num]).animate({ opacity: '0' }, 20);
	$(msImages_arr[nextMSImage_num]).animate({ opacity: '0' }, 20, function() {
		calculateNextImage(imgNumber);
	});
}
function calculateNextImage(forcedNextImage) {
	if (forcedNextImage != null) {
		if (forcedNextImage < msImages_arr.length) {
			if (forcedNextImage > 0) {
				nextMSImage_num = forcedNextImage-1;
			} else {
				nextMSImage_num = msImages_arr.length-1;
			}
		} else {
			nextMSImage_num = 0;
		}
	}
	msTitles_arr[currentMSImage_num].style.top = '35px';
	msImages_arr[currentMSImage_num].style.left = '-9999em';
	currentMSImage_num = nextMSImage_num;
	var readMoreLink = getDiv('ms_read_more_link');
	var currentAnchorTag = msImages_arr[currentMSImage_num].getElementsByTagName('a');
	if (currentAnchorTag[0]) {
		$(readMoreLink).show();
		showReadMore(true);
		readMoreLink.href = currentAnchorTag[0].href;
		readMoreLink.target = currentAnchorTag[0].target;
		readMoreLink.innerHTML = currentAnchorTag[0].title;
	} else {
		showReadMore(false);
		readMoreLink.href = '';
		readMoreLink.target = '';
		readMoreLink.innerHTML = '&nbsp;';
		$(readMoreLink).hide();
	}
	if (nextMSImage_num < msImages_arr.length-1) {
		nextMSImage_num++;
	} else {
		nextMSImage_num = 0;
	}
	if (forcedNextImage != null) {
		transitionToNextImage();
	} else {
		startTimer();
		updateTimeTracker();
	}
}

function gotoImage(imgNumber) {
	stopTransitions(imgNumber);
}

function showReadMore(show) {
	var readMoreDiv = getDiv('ms_read_more');
	if (show) {
		$(readMoreDiv).animate({ right: '1px' }, 800);
	} else {
		var divWidth = parseInt(readMoreDiv.offsetWidth) + 20;
		divWidth = (-1) * divWidth;
		$(readMoreDiv).animate({ right: ''+divWidth+'px' }, 800);
	}
}

function getDiv(divID) {
	var r = document.getElementById(divID);
	/*if (!r)
		r = window.getElementById(divID);*/
	return r;
}

/***********************

  The following code is developed by Robert Nyman, http://www.robertnyman.com
  Code/licensing: http://code.google.com/p/getelementsbyclassname/
   
************************/

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
