/* DEFINE GLOBALS
================================================== */

var searchDivState = "closed";
var searchDivLock = new Boolean(false);
// SCHOOLS NAV
var subNav_elements = new Array('about','program','enrollment','get_involved','athletics','news','contact','faqs');
var subNav_t = new Object('about','program','enrollment','get_involved','news','athletics','contact','faqs');
var subNav_ts = new Array();
var navSecondaryState = "closed";
var navSecondaryLock = new Boolean(false);
var t_searchDiv; // timer
var t_navSecondary; // timer
var t_landingFeature; // timer
var c_landing = new Number(8000); // milliseconds to hold landing item
var currLandingFeature = new Number(0); // track which one we're on
var interfaceTimeoutMilliseconds = new Number(500);
var elementsNeedingHelp;
// GALLERY
var currentSlide = new Number(-1);
var nextSlide = new Number(0);
var t_s; // slideshow timer
var galleryDuration = new Number(4000); // milliseconds
var transitionDuration = new Number(0.5); // seconds
var slideshowElements = new Array();
var galleryRandomStart = new Boolean(true);
var galleryRandomAdvance = new Boolean(false);


/* EVENTS
================================================== */

document.observe('dom:loaded', function() {
	if (document.getElementById('username'))
	{
		document.getElementById('username').focus();
	}
	formatPage();
	if (formatPageType != "")
	{
		adminFormatPage();
	}
	if (document.getElementById('slideshow') && $('slideshow').childElements().length > 1)
	{
		startGallery();
	}
	if (document.getElementById('map_canvas'))
	{
		init_google_map();
	}
	if (document.getElementById('admin_dashboard')){
		load_dashboard();
	}
});


/* FUNCTIONS
================================================== */

function formatPage()
{
	if (navSecondaryCollapse == true)
	{
		toggleNavSecondary('open',false);
	} else {
		navSecondaryLock = true;
	}
	if (document.getElementById('notice'))
	{
		new Effect.Pulsate('notice', { pulses: 1, duration: 1 });
	}
	elementsNeedingHelp = $$('.has_help');
	if (elementsNeedingHelp.length > 0)
	{
		for(i=0; i<elementsNeedingHelp.length; i++)
		{
			$(elementsNeedingHelp[i]).observe('focus', function(){
				var element = 'helpFor_' + this.id;
				if (!Element.hasClassName(element, 'doNotToggle') && document.getElementById(element))
				{
					document.getElementById(element).className = "help";
				}
			});
			$(elementsNeedingHelp[i]).observe('blur', function(){
				var element = 'helpFor_' + this.id;
				if (!Element.hasClassName(element, 'doNotToggle') && document.getElementById(element))
				{
					document.getElementById(element).className = "help a";
				}
			});
		}
	}
	if (document.getElementById('landing_features_wrapper'))
	{
//		var nextNum = Math.ceil(Math.random() * $('landing_features_wrapper').childElements().length);
		var nextNum = 1;
		landingFeature_next(nextNum);
	}
}

function toggleSearch(action,focus)
{
	if (focus == true)
	{
		searchDivLock = true;
	} else if (focus == false) {
		searchDivLock = false;
	}
	if (searchDivLock == false)
	{
		if(action == "open")
		{
			if (searchDivState == "closed")
			{
				new Effect.Move('searchform', { x: 170, duration: 0.25, queue: {position: 'end', scope: 'searchToggle', limit: 2 }});
			}
			searchDivState = "open";
			clearTimeout(t_searchDiv);
		} else if (action == "timedclose" && searchDivState != "closed") {
			t_searchDiv = setTimeout("toggleSearch('close')", interfaceTimeoutMilliseconds);
		} else if (action == "close" && searchDivState != "closed") {
			searchDivState = "closed";
			new Effect.Move('searchform', { x: -170, duration: 0.25, queue: {position: 'end', scope: 'searchToggle', limit: 2 }});
		}
	}
}

function subNav_toggle(element,action)
{
	if(element != "" && document.getElementById('main-nav-sub-' + element))
	{
		if(action == "open")
		{
			for(i=0; i<subNav_elements.length; i++)
			{
				if (subNav_elements[i] != element)
				{
					if(document.getElementById('main-nav-sub-' + subNav_elements[i]))
					{
						document.getElementById('main-nav-sub-' + subNav_elements[i]).style.display="none";
					}
					if (document.getElementById('main-nav-parent-' + subNav_elements[i]))
					{
						document.getElementById('main-nav-parent-' + subNav_elements[i]).className="f";
					}
					clearTimeout(subNav_t[subNav_elements[i]]);
				}
			}
			document.getElementById('main-nav-sub-' + element).style.display="block";
			document.getElementById('main-nav-parent-' + element).className="hover"
			clearTimeout(subNav_t[element]);
		} else if (action == "timedclose") {
			subNav_t[element] = setTimeout("subNav_toggle('" + element + "','close')",500);
		} else if (action == "close") {
			document.getElementById('main-nav-sub-' + element).style.display="none";
			document.getElementById('main-nav-parent-' + element).className="";
		}
	}
}

function subNav_toggle(element,action)
{
	if(element != "" && document.getElementById('main-nav-sub-' + element))
	{
		if(action == "open")
		{
			for(i=0; i<subNav_elements.length; i++)
			{
				if (subNav_elements[i] != element)
				{
					if(document.getElementById('main-nav-sub-' + subNav_elements[i]))
					{
						document.getElementById('main-nav-sub-' + subNav_elements[i]).style.display="none";
					}
					if (document.getElementById('main-nav-parent-' + subNav_elements[i]))
					{
						document.getElementById('main-nav-parent-' + subNav_elements[i]).className="f";
					}
					clearTimeout(subNav_t[subNav_elements[i]]);
				}
			}
			document.getElementById('main-nav-sub-' + element).style.display="block";
			document.getElementById('main-nav-parent-' + element).className="hover"
			clearTimeout(subNav_t[element]);
		} else if (action == "timedclose") {
			subNav_t[element] = setTimeout("subNav_toggle('" + element + "','close')",500);
		} else if (action == "close") {
			document.getElementById('main-nav-sub-' + element).style.display="none";
			document.getElementById('main-nav-parent-' + element).className="";
		}
	}
}

function subNav_slide(elementNum,action)
{
	if(elementNum > 0 && document.getElementById('page_'+ elementNum +'_subnav'))
	{
		if(action == "open")
		{
			if(document.getElementById('page_'+ elementNum +'_subnav').style.display=="none")
			{
//				Effect.BlindDown('page_'+ elementNum +'_subnav', { duration: 0.5 });
				document.getElementById('page_' + elementNum + '_subnav').style.display = "block";
			} else {
//				alert('cleared');
			}
			clearTimeout(subNav_ts[elementNum]);
		} else if (action == "timedclose") {
			subNav_ts[elementNum] = setTimeout("subNav_slide(" + elementNum + ",'close')",500);
//			alert('set');
		} else if (action == "close") {
//			Effect.BlindUp('page_'+ elementNum +'_subnav', { duration: 0.5 });
			document.getElementById('page_' + elementNum + '_subnav').style.display = "none";
		}
	}
}

function toggleNavSecondary(action,focus)
{
	if (focus == true)
	{
		navSecondaryLock = true;
	} else if (focus == false) {
		navSecondaryLock = false;
	}
	if (navSecondaryLock == false)
	{
		if (action == "open")
		{
			if(navSecondaryState == "closed")
			{
				if (document.getElementById('nav_secondary_arrow_toggle'))
				{
					document.getElementById('nav_secondary_arrow_toggle').className = "active";
				}
				for(i=1;i<=3;i++)
				{
					if($("nav_secondary_" + i))
					{
						Effect.SlideDown('nav_secondary_' + i, { scaleY: false, scaleX: true, duration: 0.25, queue: {position: 'end', scope: 'navSecondaryToggle_' + i, limit: 3 } });
					}
				}
				if (document.getElementById('nav_tertiary'))
				{
					Effect.Appear('nav_tertiary', { from: 0, to: 1.0, duration: 0.25, position: 'end', scope: 'navTertiary', limit: 2 });
				}
			}
			navSecondaryState = open;
			clearTimeout(t_navSecondary);
		} else if (action == "timedclose") {
			t_navSecondary = setTimeout("toggleNavSecondary('close')", interfaceTimeoutMilliseconds);
		} else if (action == "close") {
			for(i=1;i<=3;i++)
			{
				if($("nav_secondary_" + i))
				{
					Effect.SlideUp('nav_secondary_' + i, { scaleY: false, scaleX: true, duration: 0.25, queue: {position: 'end', scope: 'navSecondaryToggle_' + i, limit: 3 } });
				}
			}
			if (document.getElementById('nav_tertiary'))
			{
				Effect.Fade('nav_tertiary', { from: 1.0, to: 0, duration: 0.25, position: 'end', scope: 'navTertiary', limit: 2 });
			}
			if (document.getElementById('nav_secondary_arrow_toggle'))
			{
				document.getElementById('nav_secondary_arrow_toggle').className = "inactive";
			}
			navSecondaryState = "closed";
		} else if (action == "choose") {
			if (navSecondaryState == "open") {
				toggleNavSecondary('close');
			} else if (navSecondaryState == "closed") {
				toggleNavSecondary('open');
			}
		}
	}
}
function landingFeature_next(num)
{
	if (num != currLandingFeature)
	{
		$('feature_'+num+'_details').appear({ duration: 1.0 });
		$('feature_'+num+'_title').morph('background: #a8b400', {duration: 0.5});
		var prevNum = currLandingFeature;
		var tmpAlert = "show "+num.toString();
		if (prevNum < 1)
		{
			prevNum = new Number($('landing_features_wrapper').childElements().length);
		}
		$('feature_'+prevNum+'_details').fade({ duration: 1.0 });
		$('feature_'+prevNum+'_title').morph('background: #91420e', {duration: 0.5});
		var tmpAlert = tmpAlert + ", hide "+prevNum.toString();
	}
	var nextNum = new Number(parseInt(num) + 1);
	if (nextNum > $('landing_features_wrapper').childElements().length)
	{
		nextNum = 1;
	}
	currLandingFeature = num;
	t_landing = setTimeout("landingFeature_next('"+(nextNum)+"');", c_landing);
}
function landingFeature_show(num)
{
	clearTimeout(t_landing);
	landingFeature_next(num);
}
function startGallery()
{
	slideshowElements = $$('div.slideshowImage'); // get all slideshow elements
	if (galleryRandomStart == true)
	{
		nextSlide = Math.floor(Math.random() * slideshowElements.length); // randomize position
	}
	advanceGallerySlide(); // begin gallery
}
function advanceGallerySlide()
{
	if($(slideshowElements[nextSlide]).firstDescendant().complete) // image inside element has loaded
	{
		if (slideshowElements[currentSlide]) // not necessary for first slide on page load
		{
			new Effect.Fade(slideshowElements[currentSlide],{from: 1.0, to: 0, duration: transitionDuration * 2});
		}
		new Effect.Appear(slideshowElements[nextSlide],{from: 0, to: 1.0, duration: transitionDuration});
		currentSlide = nextSlide;
		if (galleryRandomAdvance == true)
		{
			nextSlide = Math.floor(Math.random() * slideshowElements.length); // randomize position
			while (nextSlide == currentSlide) // pick random slides until we get a unique one
			{
				nextSlide = Math.floor(Math.random() * slideshowElements.length); // randomize position
			}
		} else {
			nextSlide++;
		}
		if(nextSlide >= slideshowElements.length) 
		{
			nextSlide = 0;
		}
		t_s = setTimeout("advanceGallerySlide()", galleryDuration);
	} else { // file not loaded, try again soon
		t_s = setTimeout("advanceGallerySlide()",500);
	}
}

function init_google_map()
{
	var latlng = new google.maps.LatLng(39.828175, -93.5795);
	var myOptions = {
		zoom: 4,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP, 
		mapTypeControl: true, 
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
		navigationControl: true, 
		navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL }, 
		scaleControl: false
	};
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	add_google_maps_markers();
}

/* COMMUNITY SERVICE
================================================== */

function staff_comment(actionURI,itemID,itemType)
{
	if(document.getElementById('staff_comment_'+itemID))
	{
		$('staff_comment_'+itemID).action ="/community_service/"+actionURI+"/"+itemID+"?item_type="+itemType;
		var elementID = 'staff_response_wrapper_'+itemType+'_'+itemID;
		if($(elementID).style.display = "block")
		{
			Effect.Appear(elementID, { duration: 0.25 });
		}
		if (actionURI == "deny_content")
		{
			$('submit_staff_comment_'+itemID).value="Save as denied";
			$('label_staff_comment_'+itemID).innerHTML="Why are you denying this content?";
		} else if (actionURI == "approve_content") {
			$('submit_staff_comment_'+itemID).value="Save as approved";
			$('label_staff_comment_'+itemID).innerHTML="Comments to student";
		} else if (actionURI == "delete_content") {
			$('submit_staff_comment_'+itemID).value="Reject";
			$('label_staff_comment_'+itemID).innerHTML="Staff comment";
		} else {
			$('submit_staff_comment_'+itemID).value="Send to student for revision";
			$('label_staff_comment_'+itemID).innerHTML="What edits should the student make?";
		}
	}
}

/* DASHBOARD
================================================== */
function load_dashboard() {
	new Ajax.Updater('dashboard-left1', '/admin/dashboard_item/discussions', {
		method: 'get',
		insertion: 'top', 
		onComplete: $('dashboard-left1').removeClassName('loading')
	});
	$('admin_dashboard-1').addClassName('current');
	new Ajax.Updater('dashboard-right1', '/admin/dashboard_item/events', {
		method: 'get',
		insertion: 'top', 
		onComplete: $('dashboard-right1').removeClassName('loading')
	});
	$('admin_dashboard-1').observe('click', dashboard_item);
	$('admin_dashboard-2').observe('click', dashboard_item);
	$('admin_dashboard-3').observe('click', dashboard_item);
	$('admin_dashboard-4').observe('click', dashboard_item);
}

function dashboard_item(event) {
	var element = event.element();
	var elements = $$('a.dashboard-item');
	for ( i=0; i<elements.length; i++ ) {
		elements[i].removeClassName('current');
	}
	element.addClassName('current');
	var my_id = element.id.replace('admin_dashboard-','');
	$('dashboard-left1').addClassName('loading');
	$('dashboard-left1').innerHTML = '<p><img src="/images/ajax-loader.gif" height="16" width="16" alt="loading" class="noborder" /> Loading…</p>';
	switch(my_id){
		case '1':
			item_id = 'discussions';
			break;
		case '2':
			item_id = 'new_replies';
			break;
		case '3':
			item_id = 'activity_feed';
			break;
		case '4':
			item_id = 'core_knowledge';
			break;
	}
	new Ajax.Updater('dashboard-left1', '/admin/dashboard_item/'+item_id, {
		method: 'get',
		insertion: 'top', 
		onInteractive: $('dashboard-left1').innerHTML = '', 
		onComplete: $('dashboard-left1').removeClassName('loading')
	});
}


