//Functions to control external links & the Google Custom Search box
var ExternalLinks = 
{
	init: function() 
	{
		var extLinks = $$('a.external');
		
		if (extLinks.length > 0) {
			for (var i=0; i<extLinks.length; i++)
			{
				Event.observe(extLinks[i], 'click', ExternalLinks.openNew.bindAsEventListener(extLinks[i]));	
			}
		}
		
		if ($('homepagelink')) 
		{
			var hp = $('homepagelink');
			if (typeof document.all != 'undefined') { //If it's IE
				Event.observe(hp, 'click', ExternalLinks.setHomepage.bindAsEventListener(hp));	
			} else {
				hp.addClassName('hidden');
			}
		}
		
		if ($('SearchQ')) {
			Event.observe($('SearchQ'), 'focus', ExternalLinks.clearsearchbox);
		}
	},
	
	openNew: function(event) 
	{
		Event.stop(event);
		open(this.href);
	},
	
	setHomepage: function(event)
	{
		Event.stop(event);
		document.body.style.behavior='url(#default#homepage)'; 
		document.body.setHomePage("http://nceca.net");
	},
	
	clearsearchbox: function()
	{
		$('SearchQ').value = '';	
	}
}
Event.observe(window, 'load', ExternalLinks.init);

//Mailto Encoding Functions
var HideMailto = 
{
	init: function() 
	{
		if ($$('a.email')) {
			var emls = $$('a.email');
			for (var i=0; i<emls.length; i++) {
				var pre = emls[i].id;
				if (emls[i].getAttribute('title')) {
					var domain = emls[i].getAttribute('title');
				} else {
					var domain = 'nceca.net';
				}
				emls[i].setAttribute("href", 'mailto:'+pre+'@'+domain);
				emls[i].firstChild.nodeValue = pre+'@'+domain;
			}
		}
	}
}
Event.observe(window, 'load', HideMailto.init);

//Subnav Functions
var HighlightNav = 
{
	init: function() 
	{
		if ($$('h2')) {
			var hdrs = $$('h2');
			for (var i=0; i<hdrs.length; i++) {
				var hdrtext = hdrs[i].firstChild.nodeValue.toUpperCase();//h2 converted to uppercase by CSS
				hdrtext = hdrtext.strip();
			}
			
			var lnks = $$('#subnav a');
			for (var i=0; i<lnks.length; i++) {
				var linktext = lnks[i].firstChild.nodeValue.toUpperCase();
				linktext = linktext.strip();
				if (linktext == hdrtext) {
					lnks[i].addClassName('active');
				}
			}
		}
	}
}
Event.observe(window, 'load', HighlightNav.init);

//Functions for Submission Forms
var FindNames = 
{
	init: function() 
	{
		if ($$('input.auto_complete')) {
			var els = $$('input.auto_complete');		
			for (var i=0; i<els.length; i++)
			{
				Event.observe(els[i], 'blur', FindNames.createList.bindAsEventListener(els[i]));	
			}
		}
		
		if ($$('input.auto_complete_all')) {
			var els = $$('input.auto_complete_all');
      		
			 for (var i=0; i<els.length; i++) {
  				Event.observe(els[i], 'keyup', FindNames.createAllList.bindAsEventListener(els[i]));	
  			}
			
		}		
		
		//Activates the self-nominate box & section title switching
		if ($('selfnomination')) {
			FindNames.toggleRecTitles();
			Event.observe($('selfnomination'), 'change', FindNames.toggleRecTitles);
		}
		
		//Activates the member/non-member section switching
		if ($('MemberStatus')) {
			FindNames.toggleMemberStatus();
			Event.observe($('MemberStatus'), 'change', FindNames.toggleMemberStatus);		
		}
		
		//Activates the submit button intercept
		if ($('slowloading')) { //Allows us to tag the slow-loading forms for this behavior
			var frm = $('slowloading');
			Event.observe(frm, 'submit', FindNames.showLoadingScreen);
		}
		
	},
	
	createList: function(event)
	{
		var first = $('MemberFirst').value;
		var last = $('MemberLast').value;
		new Ajax.Updater('MemberLast_autoComplete', '/app/members/getlist/'+first+'/'+last, {asynchronous:true, evalScripts:true});
		$('MemberLast_autoComplete').addClassName('show');
	},
	
	createAllList: function(event)
	{
		var first = $('MemberFirst').value;
		var last = $('MemberLast').value;
		new Ajax.Updater('MemberLast_autoComplete', '/app/members/getlist/'+first+'/'+last+'/1', {asynchronous:true, evalScripts:true});
		$('MemberLast_autoComplete').addClassName('show');
		$('StudentInfo').removeClassName('show');
		$('artist_details').removeClassName('show');
		if ($('rsjeMemberID').value) {
		  $('rsjeMemberID').value=0;
		}
	},	
	
	getInfo: function(id) 
	{
		new Ajax.Updater('artist_details', '/app/members/getinfo/'+id, {asynchronous:true, evalScripts:true});	
		$('MemberLast_autoComplete').removeClassName('show');
		$('artist_details').addClassName('show');
		ImageUpload.loadFirstImage();
	},
	
	
	getRSJEInfo: function(id) 
	{
		new Ajax.Updater('artist_details', '/app/members/getrsjeinfo/'+id, {asynchronous:true, evalScripts:true});	
		$('MemberLast_autoComplete').removeClassName('show');
		$('artist_details').addClassName('show');
		ImageUpload.loadFirstImage();
	},
	
	showStudentInfo: function()
	{
		$('StudentInfo').addClassName('show');    
		$('MemberLast_autoComplete').removeClassName('show');		
		
	},
	
	showLogin: function()
	{
		//var div = $('StudentInfo');
		
		$('StudentInfo').removeClassName('show');
		$('nonmemberinfo').removeClassName('show');
		$('memberselect').addClassName('show');
		$('MemberStatus').value='Yes';
		
		//alert("blahblah!");
		
	},
	
	toggleRecTitles: function()
	{
		var rec1 = $('rec1');
		var rec2 = $('rec2');
		var box = $('selfnomination');
		
		if (box.checked) {
			rec1.firstChild.nodeValue = 'Recommender #1';
			rec2.firstChild.nodeValue = 'Recommender #2';
		} else {
			rec1.firstChild.nodeValue = 'Nominator/Recommender #1';
			rec2.firstChild.nodeValue = 'Recommender #2';
		}
	},
	
	toggleMemberStatus: function()
	{
		var mem = $('memberselect');
		var non = $('nonmemberinfo');
		var sel = $('MemberStatus');
		if ($('RecommendationRequired')) {
			var recs = $('RecommendationRequired');
		} else {
			var recs = false;
		}
		if ($('ApplicationPayment')) {
			var paym = $('ApplicationPayment');
		} else {
			var paym = false;
		}
		
		if (sel.value == 'Yes') {
			mem.addClassName('show');
			non.removeClassName('show');
			//if (recs) {recs.value = '2';}
			ImageUpload.loadFirstImage();
			if (paym) {paym.value = '0';}
		} else if  (sel.value == 'No') {
			mem.removeClassName('show');
			non.addClassName('show');
			if (recs) {recs.value ++;} //The applicant is saved as a rec
			ImageUpload.loadFirstImage();
			new Ajax.Updater('artist_details', '/app/members/nonmember', {asynchronous:true, evalScripts:true});
		}
	},
	
	resetName: function()
	{
		$('MemberFirst').value = '';
		$('MemberLast').value = '';
		$('MemberLast_autoComplete').removeClassName('show');
		$('artist_details').removeClassName('show');
	},
	
	showLoadingScreen: function()
	{
		$('loadingscreen').addClassName('show');
		Event.observe( window, 'unload', FindNames.unShowLoadingScreen);
	},
	
	unShowLoadingScreen: function()
	{
		$('loadingscreen').removeClassName('show');
	}
	
}
Event.observe(window, 'load', FindNames.init);


//ImageUploading Functions
var ImageUpload = 
{
	loadFirstImage: function() 
	{
		if ($$('.imageiframeholder')) {
			var hldrs = $$('.imageiframeholder');
			var hldrid = hldrs[0].id;
			var num = hldrs[0].title;
			new Ajax.Updater(hldrid, '/app/applications/image_iframe/'+num, {asynchronous:true, evalScripts:true});		
		}
	},
	
	nextImageFrame: function(hldrid, num)
	{
		var hid = parent.document.getElementById(hldrid);
		if( hid) { //JCS
			new Ajax.Updater(hid, '/app/applications/image_iframe/'+num+'/'+num+'/', {asynchronous:true, evalScripts:true});
		}
	},
	
	nextResumeFrame: function(hldrid, framenum, fieldnum)
	{
		var hid = parent.document.getElementById(hldrid);
		if( hid ) { // JCS alert ( 'hid is null '+ hldrid+ ' '+ framenum+ ' '+ fieldnum);
			new Ajax.Updater(hid, '/app/applications/resume_iframe/'+fieldnum+'/'+framenum, {asynchronous:true, evalScripts:true});
		}
	},
	
	nextTranscriptFrame: function(hldrid, framenum, fieldnum)
	{
		var hid = parent.document.getElementById(hldrid);
		new Ajax.Updater(hid, '/app/applications/transcript_iframe/'+fieldnum+'/'+framenum, {asynchronous:true, evalScripts:true});
	},
	
	observeUploadFields: function()
	{
		if ($$('form.inner')) {
			var els = $$('form.inner input.image');		
			for (var i=0; i<els.length; i++)
			{
				Event.observe(els[i], 'change', ImageUpload.startUpload.bindAsEventListener(els[i]));
			}
		}	
	},
	
	startUpload: function(event)
	{
		$('loading').addClassName('showLoading'); //Shows the loading graphic
		var frm = 'form_'+this.id;
		$(frm).submit();
	},
	
	updateParent: function() 
	{
		var upd = $$('.updateparent');
		var val = upd[0].title;
		var num = upd[0].id;
		if (upd[0].hasClassName('image')) {
			var hid_id = 'ImageLoc'+num;
		} else if (upd[0].hasClassName('resume')) {
			var hid_id = 'DetailValue'+num;
		}
		var hid = parent.document.getElementById(hid_id);
		hid.value = val;
	}
	
	
}
//Event.observe(window, 'load', ImageUpload.init);


//Incremental form field area functions
var Incform = 
{	
	init: function() 
	{
		if ($$('.addlink')) {
			var nls = $$('.addlink');
			for (var i=0; i<nls.length; i++) 
			{		
				if (nls[i].hasClassName('image')) {
					Event.observe(nls[i], 'click', Incform.showNextImage.bindAsEventListener(nls[i]));
				} else if (nls[i].hasClassName('artist')) {
					Event.observe(nls[i], 'click', Incform.showNextArtist.bindAsEventListener(nls[i]));
				}
			}
		}
		
		//Reset the form if requested
		if ($('reset')) {
			var rs = $('reset');
			Event.observe(rs, 'click', Incform.resetForm.bindAsEventListener(rs));
		}
	},
	
	resetForm: function(event)
	{
		var page = window.location.href;
		window.location = page;
	},
	
	showNextImage: function(event) 
	{
		Event.stop(event);
		//Show the next area of the form
		var nextnum = parseInt(this.title) + 1;
		var next = $('image'+nextnum);
		next.removeClassName('hidden');
		
		//Hide the previous "Add Another" link
		this.addClassName('hidden');
	},
	
	showNextArtist: function(event) 
	{
		Event.stop(event);
		//Show the next area of the form
		var nextnum = parseInt(this.title) + 1;
		var next = $('artist'+nextnum);
		next.removeClassName('hidden');
		
		//Hide the previous "Add Another" link
		this.addClassName('hidden');
	}
}
Event.observe(window, 'load', Incform.init);

//JCS Functions for forms in general
var GeneralForm =
{
	init: function()
	{
		if( $$('form[class!="search"] input[type=text]')) {
			$$('form[class!="search"] input[type=text]').invoke( 'observe', 'keypress', GeneralForm.ignoreEnter);
		}
	},

	ignoreEnter: function(event)
	{
		if( event.keyCode == Event.KEY_RETURN) {
			Event.stop(event);
			alert( "Use the TAB key, to move to the next field.");
		}
	}
}
Event.observe(window, 'load', GeneralForm.init);

//Functions for Member-Related Forms
var MemberForm = 
{
	init: function() 
	{
		//Activates the member/non-member section switching
		if ($('memberaddress') && $('billingaddress')) {
			MemberForm.toggleAddress();
			Event.observe($('memberaddress'), 'change', MemberForm.toggleAddress);		
		}
	},
	
	toggleAddress: function()
	{
		var div = $('billingaddress');
		var sel = $('memberaddress');
		
		if (sel.checked) {
			div.removeClassName('show');
		} else {
			div.addClassName('show');
		}
	}	
}
Event.observe(window, 'load', MemberForm.init);


//Printable Functions
var Printable = 
{
	init: function() 
	{
		window.print();	
	}
}
