/** JavaScript code for NUTOS (nEW uNIFIED tEMPLATE FOR oNLINE sERVICES)
 (c) 2008 Aleksandr Andreev

 This code is free software, distributed under the GNU General Public License
**/
// Globals
var mths = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

var countries = new Array("Afghanistan", "Albania", "Algeria", "Andorra", "Angola", "Antigua and Barbuda",
	"Argentina", "Armenia", "Australia", "Austria", "Azerbaijan", "Bahamas",
	"Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin",
	"Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Brazil", "Brunei",
	"Bulgaria", "Burkina Faso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada",
	"Cape Verde", "Central African Republic", "Chad", "Chile", "China", "Colombia",
	"Comoros", "Congo (Kinshasa)", "Congo (Brazzaville)", "Costa Rica", "Cote d'Ivoire",
	"Croatia", "Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica",
	"Dominican Republic", "East Timor", "Ecuador", "Egypt", "El Salvador", 
	"Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Fiji", "Finland",
	"France", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Greece", "Grenada",
	"Guatemala", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Honduras",
	"Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland",
	"Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya",
	"Kiribati", "North Korea", "South Korea", "Kuwait", "Kyrgyzstan",
	"Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein",
	"Lithuania", "Luxembourg", "Macedonia", "Madagascar", "Malawi", "Malaysia",
	"Maldives", "Mali", "Malta", "Marshall Islands", "Mauritania", "Mauritius",
	"Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro",
	"Morocco", "Mozambique", "Namibia", "Nauru", "Nepal", "Netherlands", 
	"New Zealand", "Nicaragua", "Niger", "Nigeria", "Norway", "Oman", "Pakistan",
	"Palau", "Palestine", "Panama", "Papua New Guinea", "Paraguay", "Peru", 
	"Philippines", "Poland", "Portugal", "Qatar", "Romania", "Russia",
	"Rwanda", "Saint Kitts and Nevis", "Saint Lucia", "Saint Vincent Grenadines",
	"Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal",
	"Serbia", "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia",
	"Solomon Islands", "Somalia", "South Africa", "Spain", "Sri Lanka", "Sudan",
	"Suriname", "Swaziland", "Sweden", "Switzerland", "Syria", "Tajikistan",
	"Tanzania", "Thailand", "Togo", "Tonga", "Trinidad and Tobago", "Tunisia",
	"Turkey", "Turkmenistan", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates",
	"United Kingdom", "United States", "Urugay", "Uzbekistan", "Vanuatu",
	"Vatican City", "Venezuela", "Vietnam", "Yemen", "Zambia", "Zimbabwe");

var states = new Array();
states['Canada'] = new Array("Alberta", "British Columbia", "Manitoba", "New Brunswick", "Newfoundland / Labrador", "Northwest Territories", "Nova Scotia", "Nunavut", "Ontario", "Prince Edward Island", "Quebec", "Saskatchewan", "Yukon Territory");
states['United States'] = new Array("Alabama", "Alaska", "American Samoa", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida", "Georgia", "Guam", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "N. Mariana Isl.", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Puerto Rico", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Virgin Islands", "Washington", "West Virginia", "Wisconsin", "Wyoming");
states['Mexico'] = new Array("Aguascalientes", "Baja California", "Baja California Sur", "Campeche", "Chiapas", "Chihuahua", "Coahuila", "Colima", "Distrito Federal", "Durango", "Guanajuato", "Guerrero", "Hidalgo", "Jalisco", "México", "Michoacán", "Morelos", "Nayarit", "Nuevo León", "Oaxaca", "Puebla", "Querétaro", "Quintana Roo", "San Luis Potosí", "Sinaloa", "Sonora", "Tabasco", "Tamaulipas", "Tlaxcala", "Veracruz", "Yucatán", "Zacatecas");
states['Australia'] = new Array("Capital Territory", "Christmas Island", "Cocos (Keeling) Islands", "Jervis Bay Territory", "New South Wales", "Northern Territory", "Queensland", "South Australia", "Tasmania", "Victoria", "Western Australia");
states['Argentina'] = new Array("Capital Federal", "Buenos Aires", "Catamarca", "Chaco", "Chubut", "Cordoba", "Correntes", "Ente Rios", "Formosa", "Jujuy", "La Pampa", "La Rioja", "Mendoza", "Misiones", "Neuquen", "Rio Negro", "Salta", "San Juan", "San Luis", "Santa Cruz", "Santa Fe", "Santiago del Estero", "Tierra del Fuego", "Tucuman");
states['Belarus'] = new Array("Brest", "Homyel", "Hrodna", "Mahilyow", "Minsk", "Vitebsk");
states['Brazil']  = new Array("Acre", "Alagoas", "Amapa", "Amazonas", "Bahia", "Ceara", "Distrito Federal", "Espirito Santo", "Goias", "Maranhao", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Para", "Paraiba", "Parana", "Pernambuco", "Piaui", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondonia", "Roraima", "Santa Catarina", "Sao Paulo", "Sergipe", "Tocantins");
states['China'] = new Array("Anhui", "Beijing", "Chongqing", "Fujian", "Gansu", "Guangdong", "Guangxi", "Guizhou", "Hainan", "Hebei", "Heilongjiang", "Henan", "Hong Kong", "Hubei", "Hunan", "Inner Mongolia", "Jiangsu", "Jiangxi", "Jilin", "Liaoning", "Macau", "Ningxia", "Qinghai", "Shaanxi", "Shandong", "Shanghai", "Shanxi", "Sichuan", "Taiwan", "Tianjin", "Tibet", "Xinjiang", "Yunnan", "Zhejiang");
states['France'] = new Array("Alsace", "Aquitaine", "Auvergne", "Basse-Normandie", "Bourgogne", "Bretagne", "Centre", "Champagne-Ardenne", "Corse", "Franche-Comte", "Haute-Normanie", "Ile-de-France", "Languedoc-Roussillon", "Limousin", "Lorraine", "Midi-Pyrenees", "Nord-Pas de Calais", "Pays-de-la-Loire", "Picardie", "Poitou-Charentes", "PACA", "Rhone-Alpes", "Guadeloupe", "Guyane francaise", "Martinique", "Reunion", "Nouvelle Caledonie");
states['Germany'] = new Array("Baden-Wurttemberg", "Bavaria", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hesse", "Mecklenburg-Vorpommern", "Lower Saxony", "North Rhine-Westphalia", "Rhineland-Palatinate", "Saarland", "Saxony", "Saxony-Anhalt", "Schleswig-Holstein", "Thuringia");

var abbrs = new Array();
abbrs['Canada'] = new Array("AB", "BC", "MB", "NB", "NL", "NT", "NS", "NU", "ON", "PE", "QC", "SK", "YT");
abbrs['United States'] = new Array("AL", "AK", "AS", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "MP", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "VI", "WA", "WV", "WI", "WY");
abbrs['Mexico'] = new Array("AGU", "BCN", "BCS", "CAM", "CHP", "CHH", "COA", "COL", "DF", "DUR", "GUA", "GRO", "HID", "JAL", "MEX", "MIC", "MOR", "NAY", "NLE", "OAX", "PUE", "QUE", "ROO", "SLP", "SIN", "SON", "TAB", "TAM", "TLA", "VER", "YUC", "ZAC");
abbrs['Australia'] = new Array("ACT", "CX", "CC", "JBT", "NSW", "NT", "QLD", "SA", "TAS", "VIC", "WA");
abbrs['Argentina'] = new Array("AR-C", "AR-B", "AR-K", "AR-H", "AR-U", "AR-X", "AR-W", "AR-E", "AR-P", "AR-Y", "AR-L", "AR-F", "AR-M", "AR-N", "AR-Q", "AR-R", "AR-A", "AR-J", "AR-D", "AR-Z", "AR-S", "AR-G", "AR-V", "AR-T");
abbrs['Belarus'] = new Array("Brest", "Homyel", "Hrodna", "Mahilyow", "Minsk", "Vitebsk");
abbrs['Brazil']  = new Array("Acre", "Alagoas", "Amapa", "Amazonas", "Bahia", "Ceara", "Distrito Federal", "Espirito Santo", "Goias", "Maranhao", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Para", "Paraiba", "Parana", "Pernambuco", "Piaui", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondonia", "Roraima", "Santa Catarina", "Sao Paulo", "Sergipe", "Tocantins");
abbrs['China'] = new Array("Anhui", "Beijing", "Chongqing", "Fujian", "Gansu", "Guangdong", "Guangxi", "Guizhou", "Hainan", "Hebei", "Heilongjiang", "Henan", "Hong Kong", "Hubei", "Hunan", "Inner Mongolia", "Jiangsu", "Jiangxi", "Jilin", "Liaoning", "Macau", "Ningxia", "Qinghai", "Shaanxi", "Shandong", "Shanghai", "Shanxi", "Sichuan", "Taiwan", "Tianjin", "Tibet", "Xinjiang", "Yunnan", "Zhejiang");
abbrs['France'] = new Array("Alsace", "Aquitaine", "Auvergne", "Basse-Normandie", "Bourgogne", "Bretagne", "Centre", "Champagne-Ardenne", "Corse", "Franche-Comte", "Haute-Normanie", "Ile-de-France", "Languedoc-Roussillon", "Limousin", "Lorraine", "Midi-Pyrenees", "Nord-Pas de Calais", "Pays-de-la-Loire", "Picardie", "Poitou-Charentes", "PACA", "Rhone-Alpes", "Guadeloupe", "Guyane francaise", "Martinique", "Reunion", "Nouvelle Caledonie");
abbrs['Germany'] = new Array("Baden-Wurttemberg", "Bavaria", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hesse", "Mecklenburg-Vorpommern", "Lower Saxony", "North Rhine-Westphalia", "Rhineland-Palatinate", "Saarland", "Saxony", "Saxony-Anhalt", "Schleswig-Holstein", "Thuringia");

function loadCountries(countryListID, syncID) {
	countryList = document.getElementById(countryListID);
	sync	= document.getElementById(syncID);

	for (i = countryList.length; i < countries.length; i++) {
		countryList.options[countryList.length] = new Option(countries[i], countries[i]);
		if (countries[i] == sync.value)	{
			countryList.selectedIndex = i;
			stateListID = countryListID + "s";
			stateSyncID = syncID + "s";
			loadStatesNew(countryListID, stateListID, stateSyncID);
		}
	}
}

function loadStatesNew(countryListID, stateListID, stateSyncID) {
	countryList = document.getElementById(countryListID);
	stateList   = document.getElementById(stateListID);
	stateSync   = document.getElementById(stateSyncID);
	namesList   = states[countryList.value];
	abbrsList   = abbrs[countryList.value];

	stateList.options.length = 0;

	if ( namesList == null ) {
		// No subdivisions in this country (e.g. San Marino)
		stateList.style.display  = "none";
		stateList.options[stateList.length] = new Option(" ", " ");
	} else {
		stateList.style.display = "";
		if ( !abbrsList ) {
			abbrsList = namesList;
		}

		for (j = 0; j < namesList.length; j++) {
			stateList.options[stateList.length] = new Option(namesList[j], abbrsList[j]);
			if (namesList[j] == stateSync.value || abbrsList[j] == stateSync.value) {
				stateList.selectedIndex = j;
			}
		}
	}
	return 1;
}

function addLoadEvent(f) {
	var old = window.onload;

	if (typeof window.onload != 'function') {
		window.onload = f;
	} else {
		window.onload = function() {
			if (old) {
				old();
			}
			f();
		}
	}
}

// First, calendar control elements:
function goDay(month, day, year) {
	// month == 1 -> January
	// ALL DATES ARE ON THE JULIAN CALENDAR REGARDLESS OF THE STYLE OF THE CONTROL
	var location = "http://www.ponomar.net/cgi-bin/menologion.cgi?month=" + month + "&day=" + day + "&year=" + year;

	top.location = location;
}

// Second, menologion navigation functions:
// Navigates between dates in the Menologion
function navigate(month, day, year) {
	var location = "http://www.ponomar.net/cgi-bin/menologion.cgi?month=" + month + "&day=" + day + "&year=" + year;
	document.location = location;
}

// Opens the saints for a particular day
function doSaintsLink(month, day) {
	var nmonth = new Number(month);

	nmonth++; // THIS IS BECAUSE OCA MONTHS START AT ONE, NOT ZERO

	var url = "http://www.oca.org/FSlives.asp?SID=4&M=" + nmonth + '&D=' + day;
	window.open(url, 'nWindow', 'height=500,width=800,scrollbars=yes,resizable=yes');
}

// Opens the Prologue readings for a particular day
function doPrologue(month, day) {
	var nmonth = new Number(month);

	var prolUrl = 'day=' + day + '&month=' + mths[nmonth];
	window.open('http://www.westsrbdio.org/prolog/my.html?' + prolUrl, 'nPrologue', 'height=500,width=800,scrollbars=yes,resizable=yes');
}

// Opens the Scripture readings for a particular day
function doReadings(book, chapter) {
	var url = 'http://www.ponomar.net/cgi-bin/bible.cgi?menu=no&book=' + book + '&reading=' + chapter;
	
	window.open(url, 'bible', 'height=600,width=800,scrollbars=yes,resizable=yes');
}

function doLives(id) {
	var url = 'http://www.ponomar.net/cgi-bin/lives.cgi?id=' + id;
	window.open(url, 'life' + id, 'height=600,width=800,scrollbars=yes,resizable=yes');
}

/** Code for the Scripture reader (Lectionary) **/
// Selects readings from the navigation form
function changeMe() {
	// change of chapter and / or verse
	try {
		document.forms["navigate"].submit();
	} catch (err) {
		window.status = "Navigation error. Check the console and inform the webmaster.";
	}
}

function changeMe2() {
	// change of chapter and / or verse
	try {
		document.getElementById("reading").value = document.getElementById("chapter").value;
		document.forms["navigate"].submit();
	} catch (err) {
		window.status = "Navigation error. Check the console and inform the webmaster.";
	}
}

// Opens the Patristic commentary
function doComments(url) {
	// get the commentary

	window.open(url, 'commentary', 'height=600,width=800,scrollbars=yes,resizable=yes');
}

/** Parish directory functions **/
// Removes a clergyman from a parish
function doKill(i) {
	eval("parishForm.Clergy" + i + ".value=\"\"");
	eval("parishForm.name" + i + ".value=\"\"");
}

// Select a new clergyman for the parish
function doChoose(i) {
	var obj = window.open("chooseclergy.cgi?obj=" + i, "chooser", "alwaysRaised=1, dependent=1, directory=0, height=500, left=150, location=0, menubar=0, resizable=0, status=0, toolbar=0, top=150, width=500, scrollbars=1");
	if (obj.opener == null) childWindow.opener = self;
}

// Bottom bar e-mail link
function openWindow (url) {
	window.open(url, "mailer", "scrollbars=1, height=600, left=150, top=150, width=500");
}

function loadClergyInfo(i) {
	var obj = window.open("viewclergy.cgi?Uid=" + i, "chooser", "alwaysRaised=1, dependent=1, directory=0, height=600, left=150, location=0, menubar=0, resizable=0, status=0, toolbar=0, top=150, width=450, scrollbars=1");
}

function okDelete() {
	return confirm("Are you absolutely sure you want to delete this listing?\nTHIS OPERATION CANNOT BE UNDONE!\n\nPress 'OK' to delete the listing and 'Cancel' to keep it.");
}

