// JavaScript Document

//globals and constants

var owlname = 0;
var titles = 1;
var files = 2;
var entries = 3;

//~*~*~*~*~*~*~*~*~*~
//topNav(index)
//(index) is directory level:
// 0 outwardlink.net/index.html
// 1 documents in main level folders
//2 documents in features/namekey folders

//
function topNav(index) {
	var dirlevel; //used to determine levels down in directory structure based on index value
    
	//sets values for dirlevel variable based on document type
	switch (index) {
		case 0: //outwardlink.net/index.html
			dirlevel="";
			break;
		case 1: //documents in main level folders
			dirlevel="../";
			break;
		case 2: //documents in features/namekey folders
			dirlevel="../../";
			break;
	}

	document.write('<br />');

	stdMenu(dirlevel);

	document.write('<img class="topstrip" src="' + dirlevel + 'shared/graphics/topstrip.gif" /><br />');
}

//~*~*~*~*~*~*~*~*~*~
//topLogo(index)
//(index) is directory level:
// 0 paulann.net/index.html
// 1 documents subfolders
//
function topLogo(index) {
	var dirlevel; //used to determine levels down in directory structure based on index value
    
	//sets values for dirlevel variable based on document type
	switch (index) {
		case 0: //outwardlink.net/index.html
			dirlevel="";
			break;
		case 1: //documents in subfolders
			dirlevel="../";
			break;
		case 2: //documents in features/namekey folders
			dirlevel="../../";
			break;
	}

	document.write('<a href="' + dirlevel + 'index.html"><img src="' + dirlevel + 'shared/graphics/owl_halfsingle.gif" style="float:right;margin:15px;" border="0" /></a><br clear="all" /><br />');
}

//~*~*~*~*~*~*~*~*~*~
//bottomNav(index)
//(index) is directory level:
// 0 paulann.net/index.html
// 1 documents subfolders
//
function bottomNav(index) {
	var dirlevel; //used to determine levels down in directory structure based on index value
    
	//sets values for dirlevel variable based on document type
	switch (index) {
		case 0: //outwardlink.net/index.html
			dirlevel="";
			break;
		case 1: //documents in subfolders
			dirlevel="../";
			break;
		case 2: //documents in features/namekey folders
			dirlevel="../../";
			break;
	}

	document.write('<div style="font-size:7.5pt;padding-top:15px;padding-bottom:5px;">&copy; 2009-2012 Edie Lungreen all content exclusive of authors\' works, which are copyrighted by the individual authors. All rights reserved. Home, Our Community, and Contact Us photos &#150; "Group of adults standing together" &copy; Jose Luis Pelaez Inc/Blend Images/Corbis. The contents of this website may not be copied or reprinted, either physically or electronically, without permission. For more information, contact the <a href="../../contact_us/index.html?recip=webmaster">Webmaster</a>.</div>');
	document.write('<img class="bottomstrip" src="' + dirlevel + 'shared/graphics/bottomstrip.gif" /><br />');

	stdMenu(dirlevel);
	
	document.write('<br />');
}

//~*~*~*~*~*~*~*~*~*~
//stdMenu(dirlvl)
//(dirlvl) is directory level:
// "" paulann.net/index.html
// "../" documents subfolders
//
function stdMenu(dirlvl) {
	var dirlvl; //levels down in directory structure based on index value
    
	document.write('<table class="nav">');
	document.write('<tr>');
	document.write('<td style="text-align:center;"><a class="nav" href="' + dirlvl + 'index.html">Home</a></td>');
	document.write('<td style="text-align:center;"><a class="nav" href="' + dirlvl + 'features/index.html">Features</a></td>');
	document.write('<td style="text-align:center;"><a class="nav" href="' + dirlvl + 'links/index.html">Links</a></td>');
	document.write('<td style="text-align:center;"><a class="nav" href="' + dirlvl + 'our_community/index.html">Our Community</a></td>');
	document.write('<td style="text-align:center;"><a class="nav" href="' + dirlvl + 'submissions/index.html">Submissions</a></td>');
	document.write('<td style="text-align:center;"><a class="nav" href="' + dirlvl + 'contact_us/index.html">Contact Us</a></td>');
	document.write('</tr>');
	document.write('</table>');	
}

//~*~*~*~*~*~*~*~*~*~
//playIntro()
//plays the animated outwardlink.net gif
//
function playIntro() {
	var owlgif=document.getElementById("owl");

	owlgif.innerHTML='<img src="shared/graphics/owl_intro.gif" />';
}

//******** SIDE NAV SECTION STARTS HERE ********

//~*~*~*~*~*~*~*~*~*~
//sideNav(arrayname) - builds nav items down left side of page
//arrayname = specifies which array set to plug into the nav writer
//
function sideNav(arrayname) {
	var currentpage=location.pathname;
	var currentpath=currentpage.split("/");
	var docpos = currentpath.length - 1;
	
	var navtitles = new Array();
	var navdocs = new Array();
	var navnames = new Array();

	var indexa;
	
	var activeclass;
	
	//uses the getArrayName function to build the appropriate arrays
	getArrayName(arrayname,navtitles,navdocs,navnames);
	
	//write HTML for side navs
	for (indexa = 0; indexa < navdocs.length; indexa++) {
		lastpos = navdocs.length - 1;

		if (currentpath[docpos]==navdocs[indexa]) {
			activeclass="active";
		}
		else {
			activeclass="norm";
		}
		
		document.write('<a class="' + activeclass + '" href="' + navdocs[indexa] + '">' + navnames[indexa] + '&nbsp;&#9658;</a> \n');
	}
}

//~*~*~*~*~*~*~*~*~*~
//getArrayName(arrayname,navdocs,navnames) - fetches the appropriate path and title arrays based on arrayname
//
function getArrayName(arrayname,navtitles,navdocs,navnames) {
	switch (arrayname) {
		case "submissions":
			navtitles[0] = "Submissions";
			navdocs[0] = "index.html";					navnames[0] = "Submissions";
			navdocs[1] = "subject_matter.html";			navnames[1] = "Subject Matter";
			navdocs[2] = "specifications.html";			navnames[2] = "Specifications";
			navdocs[3] = "accepted_formats.html";		navnames[3] = "Accepted Formats";
			navdocs[4] = "rights_restrictions.html";	navnames[4] = "Rights and Restrictions";
			navdocs[5] = "facebook_posts.html";			navnames[5] = "Facebook Posts";
			navdocs[6] = "privacy.html";				navnames[6] = "Privacy";
			navdocs[7] = "how_to_submit.html";			navnames[7] = "How to Submit Your Work";
			break;
		case "our_community":
			navtitles[0] = "Our Community";
			navdocs[0] = "index.html";					navnames[0] = "Our Community";
			navdocs[1] = "facebook.html";				navnames[1] = "News on Facebook";
			navdocs[2] = "twitter.html";				navnames[2] = "Twitter Updates";
			navdocs[3] = "our_contributors.html";		navnames[3] = "Our Contributors";
			break;
	}
} 

//******** FEATURES SCRIPTS SECTION STARTS HERE ********

//~*~*~*~*~*~*~*~*~*~
//owlnamesList()
//lists the contributors, from which visitors can click to see items for each
//
function owlnamesList() {
	var owlitem = new Object;
	owlItems(owlitem);
	
	var owlarray = new Array;
	var index = 0;
	
	for (var name in owlitem) {
		if (name!='webmaster') {
			owlarray[index] = name;
		}
		index++;
	}
	
	owlarray.sort();
	
	document.write('<p style="font-size:9pt;">');
	for (index = 0; index < owlarray.length; index++) {
		var namestring = owlitem[owlarray[index]][owlname];
		namestring = namestring.toLowerCase();
		if (index==0) {
			document.write('<a href="#' + namestring.substring(0,1) + '" style="text-decoration:underline;">');
			document.write(namestring.substring(0,1).toUpperCase());
			document.write('</a>&nbsp;')
		}
		else {
			var prevname = owlitem[owlarray[index - 1]][owlname];
			prevname = prevname.toLowerCase();
			if (namestring.substring(0,1)!=prevname.substring(0,1)) {
				document.write('<a href="#' + namestring.substring(0,1) + '" style="text-decoration:underline;">');
				document.write(namestring.substring(0,1).toUpperCase());
				document.write('</a>&nbsp;')
			}
		}
	}
	document.write('</p>');
	
	document.write('<ul style="margin-bottom:30px;list-style-type:square;">');
	for (index = 0; index < owlarray.length; index++) {
		var idattr = '';
		var namestring = owlitem[owlarray[index]][owlname];
		namestring = namestring.toLowerCase();
		if (index==0) {
			idattr = ' id="' + namestring.substring(0,1) + '"';
		}
		else {
			var prevname = owlitem[owlarray[index - 1]][owlname];
			prevname = prevname.toLowerCase();
			if (namestring.substring(0,1)!=prevname.substring(0,1)) {
				idattr = ' id="' + namestring.substring(0,1) + '"';
			}
		}
		document.write('<li  style="padding-bottom:5px;">');
		document.write('<a' + idattr + ' href="javascript:owlFeatures(\'' + owlarray[index] + '\')">');
		document.write(owlitem[owlarray[index]][owlname]);
		document.write('</a></li>');
	}
	document.write('</ul>');
}

//~*~*~*~*~*~*~*~*~*~
//owlFeatures(namekey)
//creates links to items for the selected contributor
//namekey=key value in owlitem object
//
function owlFeatures(namekey) {
	var owlitem = new Object;
	owlItems(owlitem);
	
	var featuresHTML = '<h1 style="margin-top:40px;">' + owlitem[namekey][owlname] + '</h1>';

	featuresHTML += '<blockquote>';
	featuresHTML += '<ul style="list-style-type:square;">';
	
	var index = 0;
	
	while (owlitem[namekey][titles][index]) {
		featuresHTML += '<li style="font-size:13pt;"><a href="' + namekey + '/' + owlitem[namekey][files][index] + '">';
		featuresHTML += owlitem[namekey][titles][index] + '</a></li>';
		index ++;
	}
	
	featuresHTML += '</ul>';
	featuresHTML += '</blockquote>';
	featuresHTML += '<p>&nbsp;</p>';
	featuresHTML += '<p>&nbsp;</p>';

	var features = document.getElementById('features');
	features.innerHTML = featuresHTML;
	
}

//******** FORM SECTION STARTS HERE ********

//~*~*~*~*~*~*~*~*~*~
//contactH1()
//Modifies the h1 on "Contact Us" if coming from a specific contact request
//
function contactH1(chg) {
	var recipstr;

	if (chg) {
		var recipient = document.getElementById('recipient');
		recipstr = recipient.value;
	} else {
		recipstr = location.search.substring(location.search.indexOf("=")+1);
	}
	
	if (recipstr) { 
		var owlitem = new Object;
		owlItems(owlitem);

		var contacth1 = document.getElementById('contacth1');
		
		if (owlitem[recipstr][owlname]) {
			contacth1.innerHTML = 'Contact ' + owlitem[recipstr][owlname];
			var introtext = document.getElementById('introtext');
			introtext.style.display='none';
		}
	}
}

//~*~*~*~*~*~*~*~*~*~
//nameList()
//creates the recipient selection list in the "Contact Us" form
//
function nameList() {
	var owlitem = new Object;
	owlItems(owlitem);
	
	for (var name in owlitem) {
		document.write('<option value="' + name + '" id="' + name + '">' + owlitem[name][owlname] + '</option>');
	}
}
	
//~*~*~*~*~*~*~*~*~*~
//nameSelect()
//preselects a recipient if coming from a specific contact request or preselects Webmaster
//
function nameSelect() {
	var recipstr = location.search.substring(location.search.indexOf("=")+1);

	var owlitem = new Object;
	owlItems(owlitem);

	if (recipstr && owlitem[recipstr][owlname]) { 
		var nameselect = document.getElementById(recipstr);
		nameselect.selected=true;
	} else {
		var nameselect = document.getElementById('webmaster');
		nameselect.selected=true;
	}
}

//~*~*~*~*~*~*~*~*~*~
//function for submitting the Contact Us form
function submitform() {
	//initialize the form status to true
	formok = true;
	
	//collect form elements for validation
	var formrecip = document.getElementById('recipient');
	var formfname = document.getElementById('firstname');
	var formlname = document.getElementById('lastname');
	var formemail = document.getElementById('email');
	var formtext = document.getElementById('text');
	
	//collect error elements for display
	var errrecip1 = document.getElementById('recip_err1');
	var errrecip2 = document.getElementById('recip_err2');
	var errfname1 = document.getElementById('fname_err1');
	var errfname2 = document.getElementById('fname_err2');
	var errlname1 = document.getElementById('lname_err1');
	var errlname2 = document.getElementById('lname_err2');
	var erremail1 = document.getElementById('email_err1');
	var erremail3 = document.getElementById('email_err3');
	var errtext1 = document.getElementById('text_err1');
	var errtext3 = document.getElementById('text_err3');

	//elements for local and domain e-mail portions and message
	var formlocal = document.getElementById('email_local');
	var formdomain = document.getElementById('email_domain');
	var formmessage = document.getElementById('message');
	
	//recipient test
	formemptytest(errrecip1,formrecip); 
	forminvaltest(errrecip2,formrecip); 
	//first name tests
	formemptytest(errfname1,formfname); 
	forminvaltest(errfname2,formfname);
	//last name tests
	formemptytest(errlname1,formlname); 
	forminvaltest(errlname2,formlname);
	//e-mail address tests
	formemptytest(erremail1,formemail); 
	formemailtest(erremail3,formemail);
	//message text tests
	formemptytest(errtext1,formtext); 
	formtexttest(errtext3,formtext);
	
	if (formok) {
		//split e-mail address into local and domain pieces
		formlocal.value = formemail.value.substring(0,formemail.value.lastIndexOf('@'));
		formdomain.value = formemail.value.substring(formemail.value.lastIndexOf('@')+1);
		formemail.value = "";

		//move textarea contents to message field
		formmessage.value = formtext.value;
		formtext.value = "";

		//replace " and ' with escape sequences for transport
		formrecip.value = formrecip.value.replace(/\"/g, "~@q~"); formrecip.value = formrecip.value.replace(/\'/g, "~@a~");
		formfname.value = formfname.value.replace(/\"/g, "~@q~"); formfname.value = formfname.value.replace(/\'/g, "~@a~");
		formlname.value = formlname.value.replace(/\"/g, "~@q~"); formlname.value = formlname.value.replace(/\'/g, "~@a~");
		formlocal.value = formlocal.value.replace(/\"/g, "~@q~"); formlocal.value = formlocal.value.replace(/\'/g, "~@a~");
		formdomain.value = formdomain.value.replace(/\"/g, "~@q~"); formdomain.value = formdomain.value.replace(/\'/g, "~@a~");
		formmessage.value = formmessage.value.replace(/\"/g, "~@q~"); formmessage.value = formmessage.value.replace(/\'/g, "~@a~");

		contactform = document.getElementById('contact');
		alert("Request submitted. Thank you!");
		contactform.submit();
	} else {
		alert("Form contains missing or invalid entries. Please correct and resubmit.");
	}
}
function formemptytest(error,field) {
	error.style.display=(field.value==null||field.value=="")?"block":"none"; 
	if (error.style.display=="block") {formok=false}
}
function forminvaltest(error,field) {
	var regex1 = /[\(%:<`\|]/; //regex for potentially unsafe characters
	var regex2 = /\\/; //regex for backslash
	error.style.display=(field.value.match(regex1)||field.value.match(regex2))?"block":"none";
	if (error.style.display=="block") {formok=false}
}
function formemailtest(error,field) {
	var regex1 = /.@./; //regex for general e-mail pattern
	var regex2 = /[\(%;:,<`\|\s]/; //regex for potentially unsafe characters
	var regex3 = /\\/; //regex for backslash
	error.style.display=((!field.value.match(regex1)||field.value.match(regex2)||field.value.match(regex3))&&field.value!=null&&field.value!="")?"block":"none";
	if (error.style.display=="block") {formok=false}
}
function formtexttest(error,field) {
	var regex1 = /\\/; //regex for backslash
	var regex2 = /[<`]/; //regex for potentially unsafe characters
	error.style.display=((field.value.match(regex1)||field.value.match(regex2))&&field.value!=null&&field.value!="")?"block":"none";
	if (error.style.display=="block") {formok=false}
}


