var newWin = null;


function forceReload()
{
	if (document.layers) window.location.reload(true);
}

function empty(str)
{
	return (str == "") ? true : false;
}

function validateArg(arg) // get boolean values for function arguments
{
	if ((arg == null) || (arg == "undefined") || (empty(arg)) || (arg.length < 1)) return false;
	else return true;
}

function validateInt(arg, allowZero)
{
	for (var i = 0; i < arg.length; i++) {
		if (isNaN(arg.charAt(i)) || arg.charAt(i) == " ")
			return false;
	}
	if (!allowZero && (arg == 0)) return false;
	return true;
}

function getQueryString(obj) // get query string from header
{
	var args = new Object();
	var qString = obj.location.search.substring(1);
	var argsArray = qString.split("&");

	for (var i = 0; i < argsArray.length; i++) {
		var pos = argsArray[i].indexOf('=');
		if (pos == -1) continue;
		var argName = argsArray[i].substring(0,pos);
	 	var value = argsArray[i].substring(pos+1);
		args[argName] = unescape(value);
	}
	return args;
}


function Preload() // preload script
{ 
	this.length = arguments.length;
	for (var i = 0; i < this.length; i++) {
		this[i + 1] = new Image();
		this[i + 1].src = arguments[i];
	}
}


function parseLayers(obj, name, type)
{
	var typeObj = null;
	for (var i = 0; i < obj.layers.length; i++) {
		if (type == 'images') typeObj = obj.layers[i].document.images;
		else if (type == 'anchors') typeObj = obj.layers[i].document.anchors;
		for (var j = 0; j < typeObj.length; j++) {
			if (typeObj[j].name == name) {
				return typeObj[j];
				break;
			}
		}
		parseLayers(obj.layers[i], name, type);
	} 
}

function swapImg(imgName, imgPath, msg) // rollover script
{
	if (document.images) {
		if ((document.layers) && (!validateArg(document.images[imgName]))) {
			var obj = parseLayers(document, imgName, 'images');
			obj.src = imgPath;
		}
		else {
			if (document.images[imgName]) {
				document.images[imgName].src = imgPath;
			}
		}
		window.status = msg;
	}
}

function handleSelectOnChange(selectObj, URL)
{
	var selectOptionValue = selectObj.options[selectObj.selectedIndex].value;
	
	if (selectObj.options[selectObj.selectedIndex].value != 0)
	{
    	var loc = URL + "&" + selectObj.name + "=" + selectOptionValue;
        parent.location = loc;
	}               
    else {
    	selectObj.selectedIndex = 0;
	}
	return false;
}

function launchNewWin(URL, windowName, windowWidth, windowHeight, scrollbars)
{
	var xposition = 400; 
	var yposition = 300;
	
    if ((parseInt(navigator.appVersion) >= 4 )) {
        xposition = (screen.width - windowWidth) / 2;
        yposition = (screen.height - windowHeight) / 2;
    }
	
	if (!scrollbars) var scrollbars = 0;
	
    var args = "width=" + windowWidth + ","
	    	+ "height=" + windowHeight + ","
	    	+ "location=0,"
		    + "menubar=0,"
		    + "scrollbars=" + scrollbars + ","
		    + "status=0,"
		    + "titlebar=0,"
		    + "hotkeys=0,"
		    + "screenx=" + xposition + ","  // NN Only
		    + "screeny=" + yposition + ","  // NN Only
		    + "left=" + xposition + ","     // IE Only
		    + "top=" + yposition;           // IE Only
		
	if (newWin != null && !newWin.closed) {
		newWin.close();
	}
	newWin = window.open(URL, windowName, args);
	
	newWin.focus();
}

function handleSelectOnload(formObj, selectName, override)
{
	var queryString = getQueryString(document);
	var value = queryString[selectName];
	var selectObj;
	var optionID;
	
	if (document.forms[formObj])
	{
		selectObj = document.forms[formObj][selectName];
		optionID = (override && !validateArg(value)) ?  override : value;
	}
	else return;
	
	for (var i = 0; i < selectObj.options.length; i++)
	{
		if (selectObj.options[i].value == optionID)
		{
			selectObj.selectedIndex = i;
		}
	}
}

function init()
{
	if (document.images) {
		var preloadImgArray = new Array();
		// loop through images array
		for (var i = 0; i < document.images.length; i++) {
			var imgSrc = document.images[i].src;
			// find images with "_off." in the name
			if (imgSrc.match("_off.")) {
				// replace "_off." with "_on."
				var imgSrcOn = imgSrc.replace(/_off./, "_on.");
				var imgInArray = false;
				// loop to aviod pre-loading multiples of the same image
				for (var j = 0; j < preloadImgArray.length; j++) {
					if (preloadImgArray[j] == imgSrcOn) {
						imgInArray = true;
						break;
					}
				}
				// append to array
				if (!imgInArray) {
					preloadImgArray.push(imgSrcOn);
				}
			}
		}
		var preload_images = new Array();
		for (var k = 0; k < preloadImgArray.length; k++) {
			preload_images[k] = new Preload(preloadImgArray[k]);
		}
	}
}

function returnDhtmlFeature(arg)
{
	var feature = null;
	if (document.all) feature = document.all(arg).style;  // IE
	else if (document.layers) feature = document.layers[arg];  // NN
	else if (document.getElementById) feature = document.getElementById(arg).style;  // N6
	return feature;
}

function setVisibilityName(state)
{
	var visibilityName = state;
	if (document.layers) { // N4
		visibilityName = (state == "visible") ? "show" : "hide";
	}
	return visibilityName;
}

var activeNavigation = null;
var timeoutId = 0;

function handleNaviVisibility(idName)
{
	var element = '';
	var state;
	
	if (activeNavigation != null) {
		window.clearTimeout(timeoutId);
		state = setVisibilityName("hidden"); // hide if visible
		element = returnDhtmlFeature(activeNavigation + "menu"); // dynamic menu
		element.visibility = state; // hide if visible
	}
	if (validateArg(idName)) {
		if (idName != "") {
			activeNavigation = idName;
			state = setVisibilityName("visible"); // hide if visible
			element = returnDhtmlFeature(activeNavigation + "menu"); // dynamic menu
			element.visibility = state; // show if hidden
		}
	}
}

function handleNaviTimeout()
{
	this.timeoutId = window.setTimeout("handleNaviVisibility();", 2000);
}


function swapImageGallery(set, imageNum)
{
	var imgPath = '../images/media/imagegallery/set_' + set + '/S' + set + '_MM' + imageNum + '.jpg';
	
	swapImg('medium', imgPath, '');
}

function launchLargeViewWin(subcat, albumID)
{
	var URL = "popup.php?category=music&subcat=" + subcat + "&albumID=" + albumID;
	
	launchNewWin(URL, "newWin", 352, 425);
}

function launchImageGalleryWin(set, imageNum)
{
	var URL = 'popup.php?category=image_gallery&setID=' + set + '&image=' + imageNum;
	
	launchNewWin(URL, 'newWin', 352, 425);
}

function launchMagCoversWin(subcat, imageNum)
{
	var URL = 'popup.php?category=mag_covers&subcat=' + subcat + '&image=' + imageNum;
	
	launchNewWin(URL, 'newWin', 352, 425);
}

function launchAudioWin(id)
{
	var URL = 'popup.php?category=audio_player&songID=' + id;
	
	launchNewWin(URL, 'newWin', 200, 48);
}

function launchLyricsWin(id)
{
	var URL = 'popup.php?category=music&display=lyrics&songID=' + id;
	
	launchNewWin(URL, 'newWin', 500, 600);
}

function launchSubmitFanSiteWin()
{
	var URL = 'popup.php?category=submit_fansite';
	
	launchNewWin(URL, 'newWin', 500, 600);
}

function launchSubmitMagCoverWin()
{
	var URL = 'popup.php?category=submit_magazine_cover';
	
	launchNewWin(URL, 'newWin', 500, 600);
}

function launchVideoGalleryWin(videoID)
{
	var URL = 'popup.php?category=video_gallery&videoID=' + videoID;
	
	launchNewWin(URL, 'newWin', 380, 300);
}

function validateRatingForm(formName)
{
	var formObj = document.forms[formName];
	var selectObj = formObj.rating;
	var selectOptionValue = selectObj.options[selectObj.selectedIndex].value;
	
	if (selectOptionValue == "null")
	{
		alert("Please enter your rating.");
	}
	else {
		formObj.target = "content";
		formObj.submit();	
	}
}

function stripWhitespace(text)
{
	return text.replace(/ /g, "");
}

function validateEmailAddress(email)
{
	var invalidChars = '!#$%^*()+{}[]|/:;"\'\\><?,';
	var email = stripWhitespace(email);
	var at = email.indexOf("@");
	var dot = email.lastIndexOf(".");
	
	if (email.length < 1) {
		return false;
	}
	else if (at < 1 || dot < 3 || dot == email.length -1 || (dot - at) < 2) {
		return false;
	}
	else {
		for (var i = 0; i < email.length; i++) {
			if (invalidChars.indexOf(email.charAt(i)) != -1) {
				return false;
			}
		}
	}
	return true;
}

function validateSearchParams(formObj)
{
	var hitEnter = true;
	var submitForm = true;
	
	if (!formObj)
	{
		var formObj = document.forms['SearchForm'];
		var hitEnter = false;
	}
	
	var params = formObj.params.value.toLowerCase();
	var stripped_params = params.replace(/\s/g, "");
	
	if (!validateArg(params) || stripped_params.length < 1)
	{
		alert("Please enter your search words.");
		var submitForm = false;
	}
	else if (params.indexOf('madonna') != -1)
	{
		alert("The word 'Madonna' appears in every article.\nPlease refine your search words.");
		var submitForm = false;
	}
	
	if (submitForm == false)
	{
		if (hitEnter == true) {
			return false;
		}
	}
	else {
		if (hitEnter == false) {
			formObj.submit();
		}
		else return true;
	}
}

