// JavaScript Document

magazines = new Array();
openDates = new Array();
closeDates = new Array();
links = new Array();

function addMagazine(name, openDate, closeDate, link) {
	pos = magazines.length;
	magazines[pos] = name;
	openDates[pos] = new Date(openDate);
	closeDates[pos] = new Date(closeDate);
	links[pos] = link;
}

addMagazine("AGNI (Spring)", "1/1/2009", "5/31/2009", "http://fictionondemand.com/agni_literary.asp");
addMagazine("AGNI (Fall)", "9/1/2009", "12/31/2009", "http://fictionondemand.com/agni_literary.asp");
addMagazine("Ascent (year round)", "1/1/2009", "12/31/2009", "http://fictionondemand.com/ascent.asp");
addMagazine("Boston Review (year round)", "1/1/2009", "12/31/2009", "http://bostonreview.net/");
addMagazine("Black Clock", "10/1/2009", "12/1/2009", "http://www.calarts.edu/blackclock/open.html");
addMagazine("The Chattahoochee Review (year round)", "1/1/2009", "12/31/2077", "http://fictionondemand.com/chattahoochee_review.asp");
addMagazine("The Cincinnati Review (Spring)", "1/1/2009", "5/31/2009", "http://www.cincinnatireview.com/");
addMagazine("The Cincinnati Review (Fall)", "9/1/2009", "12/31/2009", "http://www.cincinnatireview.com/");
addMagazine("The Missouri Review (year round)", "1/1/2009", "12/31/2009", "http://missourireview.org/");
addMagazine("Natural Bridge (Summer)", "7/1/2009", "8/31/2009", "http://fictionondemand.com/Natural_Bridge.asp");
addMagazine("Natural Bridge (Winter)", "11/1/2009", "12/31/2009", "http://fictionondemand.com/Natural_Bridge.asp");
addMagazine("The New England Review (Fall)", "9/1/2009", "12/31/2009", "http://cat.middlebury.edu/~nereview/");
addMagazine("The New England Review (Spring)", "1/1/2009", "5/31/2009", "http://cat.middlebury.edu/~nereview/");
addMagazine("NO: A Journal of the Arts (year round)", "1/1/2009", "12/31/2077", "http://fictionondemand.com/NO_A_Journal_of_the_Arts.asp");
addMagazine("Ploughshares (Spring)", "1/1/2009", "3/31/2009", "http://fictionondemand.com/ploughshares_literary_magazine.asp");
addMagazine("Ploughshares (Fall)", "8/1/2009", "12/31/2009", "http://fictionondemand.com/ploughshares_literary_magazine.asp");
addMagazine("The 2nd Hand (year round)", "1/1/2009", "12/31/2009", "http://fictionondemand.com/2nd_hand.asp");
addMagazine("StoryQuarterly (Spring)", "1/1/2009", "1/31/2009", "http://fictionondemand.com/storyquarterly.asp");
addMagazine("StoryQuarterly (Fall)", "11/1/2009", "12/31/2009", "http://fictionondemand.com/storyquarterly.asp");
addMagazine("Subtropics (Spring)", "1/1/2009", "5/15/2009", "http://www.english.ufl.edu/subtropics/");
addMagazine("Subtropics (Fall)", "8/16/2009", "12/31/2009", "http://www.english.ufl.edu/subtropics/");
addMagazine("Washington Square Review (Spring)", "1/1/2009", "3/15/2009", "http://www.washingtonsquarereview.com/");
addMagazine("Washington Square Review (Fall)", "8/1/2009", "12/31/2009", "http://www.washingtonsquarereview.com/");

today = new Date();
function isMagazineOpen(magazine) {
	//document.writeln(openDates[magazine]);
	if(today >= openDates[magazine] && today < closeDates[magazine]) {
		document.writeln("Submissions are open!");
	} else {
		document.writeln("Sorry, submissions Closed on: " + closeDates[magazine]);
	}
}

function writeMagazineStatus() {
	document.writeln("<table border='1'>");
	document.writeln("<tr><td>Magazine</td><td>Open Date</td><td>Close Date</td><td>Is Open?</td></tr>");
	for(i=0; i < magazines.length; i++) {
		magazine = magazines[i];
		dateOpen = openDates[i];
		dateClosed = closeDates[i];
		link = links[i];
		if(todayIsWithinOpenPeriod(dateOpen, dateClosed, today)) {
			document.writeln("<tr><td><a href='" + link + "'>" + magazine + "</a></td><td>" + formatDate(dateOpen) + "</td><td>" + formatDate(dateClosed) + "</td><td><strong><font color='red'>YES</font></strong></td></tr>");
		} else {
			document.writeln("<tr><td><a href='" + link + "'>" + magazine + "</a></td><td>" + formatDate(dateOpen) + "</td><td>" + formatDate(dateClosed) + "</td><td>No</td></tr>");
		}
	}
	document.writeln("</table>");
}

function todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate) {
	/*
	var openMonth = dateOpen.getMonth();
	var closeMonth = dateClosed.getMonth();
	
	if(closeMonth < openMonth) { //period extends past end of year
		dateOpen = new Date((dateOpen.getMonth() + 1) + "/" + dateOpen.getDate() + "/" + (1900 + currentDate.getYear()));
		dateClosed = new Date((dateClosed.getMonth() + 1) + "/" + dateClosed.getDate() + "/" + (currentDate.getYear() + 1901));
	} else {
		dateOpen = new Date((dateOpen.getMonth() + 1) + "/" + dateOpen.getDate() + "/" + (1900 + currentDate.getYear()));
		dateClosed = new Date((dateClosed.getMonth() + 1) + "/" + dateClosed.getDate() + "/" + (1900 + currentDate.getYear()));
	}
	
	if(openMonth > currentDate.getMonth()) {
		dateOpen = new Date((dateOpen.getMonth() + 1) + "/" + dateOpen.getDate() + "/" + (1899 + currentDate.getYear()));
	}
	
	alert(dateOpen + " \n " + dateClosed);
	*/
	return dateOpen <= currentDate && dateClosed > currentDate;
}

function doTest() {
		dateOpen = new Date("1/1/2009");
		dateClosed = new Date("2/1/2009");
		currentDate = new Date("1/1/2009");
		alert("1Expecting true: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
		
		currentDate = new Date("1/2/2009");
		alert("2Expecting true: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
												
		currentDate = new Date("2/1/2009");
		alert("3Expecting true: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
														   
		currentDate = new Date("2/2/2009");   
		alert("4Expecting false: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
														
														
		dateOpen = new Date("12/1/2009");
		dateClosed = new Date("2/1/2009");
		currentDate = new Date("11/1/2009");
		alert("5Expecting false: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
		
		currentDate = new Date("12/1/2009"); //wrong
		alert("6Expecting true: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
												
		currentDate = new Date("12/2/2009"); //wrong
		alert("7Expecting true: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
														   
		currentDate = new Date("1/1/2009");   //wrong
		alert("8Expecting true: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
														   
		currentDate = new Date("2/1/2009");   //wrong
		alert("9Expecting true: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));
														   
		currentDate = new Date("2/2/2009");   
		alert("0Expecting false: " + todayIsWithinOpenPeriod(dateOpen, dateClosed, currentDate));														   
}

function getMonth(month) {
	months = new Array();
	months[0] = "January";
	months[1] = "February";
	months[2] = "March";
	months[3] = "April";
	months[4] = "May";
	months[5] = "June";
	months[6] = "July";
	months[7] = "August";
	months[8] = "September";
	months[9] = "October";
	months[10] = "November";
	months[11] = "December";
	return months[month];
}

function formatDate(date) {
	return getMonth(date.getMonth()) + " " + date.getDate();
}