var browserName=navigator.appName;

/* AJAX STUFF */

// start an event listener
Event.observe(window, 'load', init, false);

var picSel = 0; // selected picture index
// albumSel, numPics, numPages, numPerPage and pageOffset vars are set in header

// INIT FUNCTION
function init() {

}

function showSubSection(section) {
	var params = '';
	// update page content
	var myAjaxUpdate = new Ajax.Updater('main', section+'ContentHandler.php', {method: 'get', parameters: params});
	return;
}

function pressButton(img) {
	var thisSrc = img.src;
	var newSrc = thisSrc.substring(0, thisSrc.indexOf(".")) + "_down.gif";
	img.src = newSrc;
}

function unpressButton(img) {
	var thisSrc = img.src;
	var newSrc = thisSrc.substring(0, thisSrc.indexOf("_")) + ".gif";
	img.src = newSrc;
}

function toggleNavImg(direction, section, path) {
	if ($(section + 'NavCell')) {
		if (direction == "hot") {
			$(section + 'NavCell').className = "navItemHot";
			$(section + 'NavImg').src = path + "/" + section + "Hot.gif";
		} else {
			$(section + 'NavCell').className = "navItemCold";
			$(section + 'NavImg').src = path + "/" + section + "Cold.gif";
		}
	}
	return;
}

function toggleFeedbackHeaderLink(elt) {
	if ($(elt).innerHTML == "[+] send feedback") {
		$(elt).innerHTML = "[-] send feedback";
	} else {
		$(elt).innerHTML = "[+] send feedback";
	}
}

// for simple link hot/cold toggling
function toggleLink (thisLink, otherLinks) {
	var coldLinkName = "linkCold";
	var hotLinkName = "linkHot";

	while (otherLinks.indexOf("|") > -1) {
		var otherLink = otherLink.substring(0, otherLinks.indexOf("|"));
		$(otherLink).className = coldLinkName;
		otherLinks = otherLinks.substring(otherLinks.indexOf("|") + 1);
	}
	$(otherLinks).className = coldLinkName;
	$(thisLink).className = hotLinkName;
	return;
}

// show/hide a div
function toggleDiv(elt) {
	if ($(elt).style.display == "none") {
		$(elt).style.display = "block";
	} else if ($(elt).style.display == "block") {
		$(elt).style.display = "none";
	}
	return;

}

function toggleDashboardView(name) {

	var names = ['profile', 'activity', 'clubs'];

	// first, change the nav
	for (var i=0; i < names.length; i++) {
		var thisName = names[i];
		if (thisName == name) {
			$(name + "Div").className = "tabEltHot";
		} else {
			$(name + "Div").className = "tabEltCold";
		}
	}
	loadAjax('dashboard', 'getDashboardViewHandler.php', 'name='+name);
	return;
}

function homeRegisterUpdateCohort(cohortDomainAndName, eltId) {
	var cohortName =  cohortDomainAndName.substring(cohortDomainAndName.indexOf("|") + 1);
	$(eltId).innerHTML = cohortName;
	return;
}

function homeRegisterIsValueMatch(val1, val2) {
	if (val1 != val2) {
		alert("Make sure your emails match");
	}
	return;
}

function homeRegisterCheckSpecialty(value, eltId) {
	if (value == "Other") {
		$(eltId).style.display = 'block';
	}
	return;
}

function validateForm(form) {

}

function inviteFormValidate(form) {
	var toField = form.invitee.value;
	var regex = /^(.+)\@(\w+)\.(\w+)/;

	if (!regex.exec(toField)) {
		$('emailMsg').innerHTML = "Email address is invalid.";
	}
	else {
		$('emailMsg').innerHTML = "";

		var fromEmail = form.fromEmail.value;
		var text = form.body.value;
		text = text.replace(/\n/g, "<BR>");

		var text1 = form.text1.value;
		text = encodeURI(text1 + text);

		loadAjax('inviteBox', 'getInviteSendHandler.php', 'from=' + fromEmail + '&to=' + toField + '&text=' + text);

	}
}

function previewDebate(form) {
	var title = form.title.value;
	var content = form.content.value;
	content = content.replace(/\n/g, "<BR>");
	var params = "t=" + title + "&c=" + content;
	var myAjaxUpdate = new Ajax.Updater('content', '_previewContentHandler.php', {method: 'get', parameters: params});

	return;
}

function processBlogPost(form, blogId, elt, page) {
	body = parseNewLines(body);
	loadAjax(elt, page, "t=" + body + "&b=" + blogId);
}

function loadAjax(elt, page, params) {
	params = encodeURI(params);
	var myAjaxUpdate = new Ajax.Updater(elt, page, {method: 'get', evalScripts: true, parameters: params});
	return;
}

function loadAjaxForm(elt, page, formElts) {

	var params = "";
	for (var i=0; i<formElts.length; i++) {
		var type = formElts[i].type;
		if ( (type == "radio") || (type == "checkbox") ) {

			// only keep the selected values for radio buttons
			if (formElts[i].checked) {

				var name = formElts[i].name;
				var value = formElts[i].value;
				params += name + "=" + encodeURI(value) + "&";
			}

		} else {

			var name = formElts[i].name;
			var value = encodeURI(formElts[i].value);
			// preserve new lines
			value = value.replace(/\n/g, "<BR>");
			value = value.replace(/\?/g, "%3F");
			value = value.replace(/\&/g, "%26");
			params += name + "=" + value + "&";

		}
	}

	var myAjaxUpdate = new Ajax.Updater(elt, page, {method: 'get', evalScripts: true, parameters: params});
	return;
}

function validateRegistrationForm(formElts) {

	var fields = new Array();
	var params = "";

	for (var i=0; i<formElts.length; i++) {
		var type = formElts[i].type;
		if (type == "checkbox") {
			// only keep the selected values for radio buttons
			if (formElts[i].checked) {
				var name = formElts[i].name;
				var value = formElts[i].value;
				params += encodeURI(name) + "=" + encodeURI(value) + "&";
				fields[name] = value;
			}
		} else {
			var name = formElts[i].name;
			var value = formElts[i].value;
			// preserve new lines
			value = value.replace(/\n/g, "<BR>");
			params += encodeURI(name) + "=" + encodeURI(value) + "&";
			fields[name] = value;
		}
	}

	/* VALIDATE */

	/*** START VALIDATION **/
	var errorStr = "";

	var regExp = /^.+\@\w+\.\w+(\.\w+)?$/;

	if ( (fields["firstName"] == null) || (fields["firstName"].length <= 0) ) {
		errorStr += "First Name is required<BR>";
	}
	if ( (fields["lastName"] == null) || (fields["lastName"].length <= 1) ) {
		errorStr += "Last Name is required<BR>";
	}
	if ( (fields["userName"] == null) || (fields["userName"].length <= 3) ) {
		errorStr += "Username is required<BR>";
	}
	if ( (fields["email1"] == null) || (!regExp.test(fields["email1"])) || (fields["email2"] == null) || (!regExp.test(fields["email2"])) ) {
		errorStr += "Valid email is required<BR>";
	}
	if ( fields["email1"] != fields["email2"] ) {
		errorStr += "Email addresses do not match<BR>";
	}
	if ( (fields["pw1"].length < 5) || (fields["pw2"].length < 5) || (fields["pw1"] != fields["pw2"]) ) {
		errorStr += "Passwords are not valid or do not match<BR>";
	}
	if ( fields["certify"] == null ) {
		errorStr += "You must be a physician, medical student, or clinical researcher to register<BR>";
	}

	// if error msg
	if (errorStr.length > 0) {
		$('messageBox').innerHTML = errorStr;
	} else {


	}
	return;
}


function changeListViewLink(elt, otherElts) {
	$(elt).className = "tabEltHot";
	while (otherElts.indexOf("|") > -1) {
		var otherElt = otherElts.substring(0, otherElts.indexOf("|"));
		$(otherElt).className = "tabEltCold";
		otherElts = otherElts.substring(otherElts.indexOf("|") + 1);
	}
	$(otherElts).className = "tabEltCold";


	return;
}


// just for subtabs on peer review page
function changeListViewTab(elt, otherElts) {
	$("subTab-" + elt).className = "subTabHorzHot";
	while (otherElts.indexOf("|") > -1) {
		var otherElt = otherElts.substring(0, otherElts.indexOf("|"));
		$("subTab-" + otherElt).className = "subTabHorzCold";
		otherElts = otherElts.substring(otherElts.indexOf("|") + 1);
	}
	$("subTab-" + otherElts).className = "subTabHorzCold";


	return;
}

function changeCaseViewLink(elt) {
	if ($(elt).innerHTML == "View case") {
		$(elt).innerHTML = "Hide case";
	} else if ($(elt).innerHTML == "Hide case") {
		$(elt).innerHTML = "View case";
	}
}

// when opening/closing article list
function changeOpenCloseLink(eltName) {
	if ($(eltName).innerHTML == "+") {
		$(eltName).innerHTML = "-";
	} else if ($(eltName).innerHTML == "-") {
		$(eltName).innerHTML = "+";
	}
}

function parseNewLines(str) {
	return str.replace(/\n|\r/g, "<BR>");
}

function selectStar(button, review, imgPath) {
	var number = button.substring(button.length - 1);
	var i = 1;

	// fill all the stars up to this one
	for (var i=1; i < 6; i++) {

		if (i < number) {
			$('star' + i + "-" + review).src = imgPath + '/star_small_full.gif';
		} else if (i == number) {
			$('star' + i + "-" + review).src = imgPath + '/star_small_full.gif';
		} else if (i > number) {
			$('star' + i + "-" + review).src = imgPath + '/star_small_open.gif';
		}
	}
	document.cookie ='r=' + number;
}

function processVoteReviewOnly(forwardUrl, imgPath, voteParam, articleId, elt, form) {

	var vote = -1;
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf('r=') == 0) {
			vote = c.substring(2,3);
			document.cookie ='r=-1;expires=Fri, 17 Dec 1999 10:00:00 GMT';
		}
	}
	var reviewBody = escape(form.reviewBody.value);
	var params = voteParam + "=" + vote + "&reviewBody=" + reviewBody + "&articleId=" + articleId;

	params = parseNewLines(params);

	// reload left side
	loadAjax(elt, forwardUrl, params);

	// clear textarea
	$('reviewBody').value = "";

}


//---------------------------------------------------------------------------
// Utility routines used by various javascript functions to create new querys
// from existing urls.  If current browser url does not reflect current query,
// these functions are not useful (since they are not aware of the current
// application state.)  These functions are used sparingly in the reference
// implementation only in conjunction with modules that contain form element.
//---------------------------------------------------------------------------

function ConstructURL(url,removeterms,addterms) {
	var params = BuildURLArray(url);
	var newurl = "";
	for (var i=0; i<params.length; i++) {
		val = CheckArray(removeterms,params[i][0]);
		if (val == -1)
			newurl = newurl + "&" + params[i][0] + "=" + params[i][1];
	}
	for (var i=0; i<addterms.length; i++) {
		newurl = newurl + "&" + addterms[i];
	}
	if (newurl.length > 0) {
		newurl = newurl.substr(1);
		newurl = "?"+newurl;
	}
	else {
		newurl = "?N="+eneroot;
	}
	return newurl;
}
function BuildURLArray(oldurl) {
	var returnArray = new Array();
	var url;
	if (oldurl == "CURRENTURL")
		url = location.search;
	else if (oldurl == "BLANKURL") {

	}
	else {
		var tokens = oldurl.split("?");
		url = "?"+tokens[1];
	}
	if (url) {
		url = url.substr(1);
		var params = url.split("&");
		for (var i=0; i<params.length; i++) {
			var param = params[i].split("=");
			returnArray[i] = param;
		}
	}
	return returnArray;
}
function CheckArray(removeterms,checkterm) {
	for (var i=0; i<removeterms.length; i++) {
		if (removeterms[i] == checkterm)
			return 1;
	}
	return -1;
}
function GetValue(url, term) {
	var params = BuildURLArray(url);
	for (var i=0; i<params.length; i++) {
		if (params[i][0] == term) {
			return params[i][1];
		}
	}
	return -1;
}

/*************BROWSER DETECT********************/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function popUpBio (id) {
	var newWin = window.open('getBiosketchHandler.php?id='+id, 'bio', 'height=300, width=500, scrollbars=1, toolbar=0, status=0, location=0, menubar=0, directories=0, top=100, left=300');
	newWin.focus();
	return;
}

// if use selects "other", show other field
function showOtherFieldAffil () {
	var selVal = document.profileForm.school[document.profileForm.school.selectedIndex].value;
	if (selVal == 'OTHER') {
		$('otherFieldAffil').style.display = 'block';
	}

	return;
}


function showOtherFieldDegree () {
	var selVal = document.profileForm.degree[document.profileForm.degree.selectedIndex].value;
	if (selVal == 'OTHER') {
		$('otherFieldDegree').style.display = 'block';
	}

	return;
}

function imposeMaxLength(Object, MaxLen) {
  return (Object.value.length <= MaxLen);
}

function toggleHighlight(current, total) {
	for (var i=0; i < total; i++) {
		if (current == i) {
			$('project-' + i).style.backgroundColor = '#FFCC66';
			$('project-' + i).style.fontWeight = 'bold';
		} else {
			$('project-' + i).style.backgroundColor = '#ffffff';
			$('project-' + i).style.fontWeight = 'normal';
		}
	}

}

function toggleHighlightProfile(current, total) {
	for (var i=0; i < total; i++) {
		if (current == i) {
			$('profile-' + i).style.backgroundColor = '#FFCC66';
			$('profile-' + i).style.fontWeight = 'bold';
		} else {
			$('profile-' + i).style.backgroundColor = '#ffffff';
			$('profile-' + i).style.fontWeight = 'normal';
		}
	}

}