////////////////////////////////////////////////////////////////
//	ORECA.ORG
//	ACTION/SCRIPT CONTROL
//
//
//
//
////////////////////////////////////////////////////////////////

var loggedin = false;
var usertype = 0;

//	runSetup
//	First main startup for each page.
var loginIntervalId	= 0;

function runSetup()
{
	check_login();
	
	//	Run the calendar updater on each page
	startCalendar();
}
 






var current_slide = "";
var previous_slide = "";
var totalSlides = 7;
var interval_id = 0;
var interval_speed = 3000;



function runhomepage() 
{	 
	var browser = navigator.appName;
	
	new Effect.Appear("slide1", {duration:1});
	
	previous_slide = 1;
	current_slide = 1;
	
	//	Setup interval for the flash/intro
	setInterval("doSlideShow()", interval_speed);
	
	//	Check login. If cookie exists, remove login and show user page
	
}

function doSlideShow()
{
	previous_slide = current_slide;
	current_slide++;
	
	if(current_slide > totalSlides)
		current_slide = 1;
		
	new Effect.Fade( 'slide'+previous_slide, {duration:.5});
	new Effect.Appear( 'slide'+current_slide, {duration:.5, delay:.5});

}

function startCalendar()
{
	//	Setup the auto updater for the calendar events.
	new Ajax.PeriodicalUpdater( 'calendar', 'ajax.php?option=calendarupdate', { method: 'get', frequency: 5 } );
}

function startRecentNews()
{
	//	Setup the auto updater for the calendar events.
	new Ajax.PeriodicalUpdater( 'news', 'ajax.php?option=recentnews', { method: 'get', frequency: 5 } );
}

function submit_event()
{ 
	if( $('eventdate').value == "" || $('eventtitle').value == "" ) {
		alert('You must atleast provide a date and title to add an event.');
		return false;
	}
	new Ajax.Request('ajax.php', {	
  		method: 'post',
		onSuccess: function(e) 
					{ 
						var event_added = e.responseText;
						
						event_added = event_added.replace(/\s/gi, '');
						
						if( event_added == "0")
						{
							alert("Failed to add event to the system calendar. Please check with your system administrator or try agian.");
						}
						else
						{
							// Close the event window
							closeEventWindow('addeventwindow', 'addeventwindow');
							
							//	Clear the event window values
							$('eventdate').value = "";
							$('eventtitle').value = "";
							$('eventlink').value = "";
							$('eventdescription').value = "";
						}
					},
		onFailure: function(e) { alert('Unable to submit request. Please try again.'); },
  		parameters: 
			{
				option: 'request',
				type: 'submitevent',
				eventdate: $('eventdate').value,
				eventtitle: $('eventtitle').value,
				eventlink: $('eventlink').value,
				eventdescription: $('eventdescription').value
			} 
	});
}

function submit_news()
{ 
	if( $('newseventdate').value == "" || $('newseventtitle').value == "" ) {
		alert('You must atleast provide a date and title to add a news item.');
		return false;
	}
	new Ajax.Request('ajax.php', {	
  		method: 'post',
		onSuccess: function(e) 
					{ 
						var event_added = e.responseText;
						
						event_added = event_added.replace(/\s/gi, '');
						
						if( event_added == "0")
						{
							alert("Failed to add event to the system calendar. Please check with your system administrator or try agian.");
						}
						else
						{
							// Close the event window
							closeEventWindow('addnewswindow', 'addnewswindow');
							
							//	Clear the event window values
							$('eventdate').value = "";
							$('eventtitle').value = "";
							$('eventlink').value = "";
							$('eventdescription').value = "";
						}
					},
		onFailure: function(e) { alert('Unable to submit request. Please try again.'); },
  		parameters: 
			{
				option: 'request',
				type: 'submitnews',
				eventdate: $('newseventdate').value,
				eventtitle: $('newseventtitle').value,
				eventlink: $('newseventlink').value,
				eventdescription: $('newseventdescription').value
			} 
	});
}


/*	LOGIN 	*/
function check_login()
{ 
	new Ajax.Request('ajax.php', {	
  		method: 'post',
		onSuccess: function(e) 
					{ 
						//	Strip whitespace from result	
						results = e.responseText.split("^");
						var result_bool = results[0];
						var message = results[1];
						var type = results[2];
						
						result_bool = result_bool.replace(/\s/gi, '');
						
						if( result_bool = 'true')
						{
							loggedin = true;
							usertype = type;
						}
												
						$('header-login').innerHTML = message;
					},
		onFailure: login_com_fail,
  		parameters: {
			option: 'request',
			type:	'loggedin' }	});

}

function submit_login()
{
	new Ajax.Request('ajax.php', {	
  		method: 'post',
		onSuccess: login_results,
		onFailure: login_com_fail,
  		parameters: {
			option: 'login',
			type:	'ajax',
			username: $('username').value,
			password: $('password').value }
  	});
	
	//	Show Progress
	hide_element('header-login');
	show_element('progress');
}

function login_results( response )
{
	var results = new Array();
	results = response.responseText.split("^");
	
	var result_bool = results[0];
	var message = results[1];
	var type = results[2];
	
	//	Strip whitespace from result	
	result_bool = result_bool.replace(/\s/gi, '');
		
	if( result_bool == "false") 
	{
		hide_element('progress');
		show_element('header-login');
		alert(message);
	}
	else
	{
		//	Hide progress
		hide_element('progress');
		
		//	Message value will include html 
		$('header-login').innerHTML = message;
		show_element('header-login');
		
		loggedin = true;
		usertype = type;
	}
}
function login_com_fail( response )
{
		alert("FAIL");
}

function logout()
{
	new Ajax.Request('ajax.php', {	
  		method: 'post',
		onSuccess: function(e) { check_login(); window.location='index.php'; },
  		parameters: {
			option: 'logout',
			type:	'logout' }
  	});
	
	
}

function get_usermenu()
{
	new Ajax.Request('ajax.php', {	
  		method: 'post',
		onSuccess: function(e) { $('header-login').innerHTML = e.responseText; },
  		parameters: {
			option: 'request',
			type:	'usermenu' }
  	});
}

/*	LOGIN	*/


function deleteEvent(id)
{
	if( confirm('Are you sure you want to delete this event?' ) )
	{
		new Ajax.Request('ajax.php', {	
  		method: 'post',
  		parameters: {
			option: 'delete_event',
			event_id: id }
  		});
		
		//	Hide event from list until it is removed on next refresh
		new Effect.Fade('calendar'+id, {duration:.5});
	}
	
	//$('header-login').setStyle( {opacity:1} );
}

function deleteNews(id)
{
	if( confirm('Are you sure you want to delete this event?' ) )
	{
		new Ajax.Request('ajax.php', {	
  		method: 'post',
  		parameters: {
			option: 'delete_news',
			event_id: id }
  		});
		
		//	Hide event from list until it is removed on next refresh
		new Effect.Fade('news'+id, {duration:.5});
	}
	
	//$('header-login').setStyle( {opacity:1} );
}

var windowopen = null;

//	
function showEventWindow(element, owner)
{ 
	if( windowopen )
		if( windowopen != element )	//	if the window open isn't the current window, close the other
			closeEventWindow(windowopen, windowopen);
		
	var eventbutton = $(element);
	var offsetX = parseInt($(element).getStyle( "width" ));
	var offsetY = parseInt($(element).getStyle( "height" ));
	
	var screenx = screen.availWidth;
	var screeny = screen.availHeight;
	
	var left = (screenx / 2) - (offsetX / 2);
	var top = (screeny / 2) - (offsetY / 2);
	
	new Effect.Parallel([
	  new Effect.Move(owner, { sync: true, x: left, y: top, mode: 'absolute' }), 
	  new Effect.Appear(owner, { sync: true }) ], {  duration: 0.8, queue: 'end' });
	
	windowopen = element;
}

function closeEventWindow(element, owner)
{
	var eventbutton = $(element);
	var offsetX = parseInt($(element).getStyle( "width" ));
	var offsetY = parseInt($(element).getStyle( "height" ));
	
	var screenx = screen.availWidth;
	var screeny = screen.availHeight;
	
	var left = (screenx / 2) - (offsetX / 2);
	var top = (screeny / 2) - (offsetY / 2);
	
	new Effect.Parallel([
	  new Effect.Move(owner, { sync: true, x: (left - (left*2)), y: (top - (top*2)), mode: 'absolute' }), 
	  new Effect.Fade(owner, { sync: true }) ], {  duration: 0.8, queue: 'end' });
	
	windowopen=null;
}



function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name + "=");
	  	if (c_start!=-1)
		{
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	
	return "";
}

function validate_phone_number_format(ElemID)
{
	var value = document.getElementById(ElemID).value;
	value = value.replace(/[^\d]+/ig, "");

	if(value.length == 7)
	{
		value = "(503) " + value;
		value = value.slice(0,9) + "-" + value.slice(9,14);
	}
	else if(value.length == 10)
		value = "(" + value.slice(0,3) + ") " + value.slice(3,6) + "-" + value.slice(6,10);
	else if(value.length == 11)
		value = value.slice(0,1) + " (" + value.slice(1,4) + ") " + value.slice(4,7) + "-" + value.slice(7,11);
	else if(value.length > 0 && value.length < 7)
		document.getElementById(ElemID).style.backgroundColor = '#FF0000';
		
	document.getElementById(ElemID).value = value;
}

function validate_statecode(ElemID)
{
	var elem_value = document.getElementById(ElemID).value;
	elem_value = elem_value.toUpperCase();
	document.getElementById(ElemID).value = elem_value;
}

function validate_date(ElemID)
{
	var value = document.getElementById(ElemID).value;
	var mysql_date_fmt = /(\d{4})-(\d{2})-(\d{2})/
	var std_date_fmt = /\d{2}-\d{2}-\d{4}/
	
	if(value.length == 4)
	{
		var year = value.slice(2,4);
		// If year starts with 0, add 20 to it. else, ad 19
		if(year.slice(0,1) == 0)
			year = "20" + year;
		else
			year = "19" + year;
			
		value = "0" + value.slice(0,1) + "/0" + value.slice(1,2) + "/" + year;
	}
	else if(value.length == 5)
	{
		var year = value.slice(3,5);
		// If year starts with 0, add 20 to it. else, ad 19
		if(year.slice(0,1) == 0)
			year = "20" + year;
		else
			year = "19" + year;
			
		value = "0" + value.slice(0,1) + "/" + value.slice(1,3) + "/" + year;
	}
	else if(value.length == 6)
	{
		// Problem. This could either be 121005 as meaning 12/10/2005, or it could be 231978 meaning
		// 02/03/1978. Must check value
		var year = value.slice(2,6);			
		value = "0" + value.slice(0,1) + "/0" + value.slice(1,2) + "/" + year;
	}
	else if(value.length == 7)
	{
		var year = value.slice(3,7);
		value = "0" + value.slice(0,1) + "/" + value.slice(1,3) + "/" + year;
	}
	else if(value.length == 8)
	{
			value = value.slice(0,2) + "/" + value.slice(2,4) + "/" + value.slice(4,8);
	}
	
	if(value == "00/00/0000")
		value = "";
	
	document.getElementById(ElemID).value = value;
}

function changebgColor(ID, Color)
{
	document.getElementById(ID).style.backgroundColor=Color;
	document.getElementById(ID).style.bgColor=Color;
}

function change_image(element, src)
{
	var obj = document.getElementById(element);
	
	obj.src = src;
}


function hide_elements_by_name(name, hide)
{
	var elements = document.getElementsByName(name);
	if(!elements)
		return false;
	for(var i = 0; i < elements.length; i++)
		hide_element(elements[i], hide);
}

function enable_element(element, enable)
{
	if(typeof element != "object")
		element = document.getElementById(element);
	element.disabled = enable ? "" : "disabled";
}

function enable_elements_by_name(name, enable)
{
	var elements = document.getElementsByName(name);
	if(!elements)
		return false;
	for(var i = 0; i < elements.length; i++)
		enable_element(elements[i], enable);
}

// --------------------------------------------------

function get_current_date()
{
	var date = new Date;
	var month = "" + (date.getMonth()+1);
	month = month.length < 2 ? "0" + month : month;
	var day_of_month = "" + date.getUTCDate();
	day_of_month = day_of_month.length < 2 ? "0" + day_of_month : day_of_month;
	return month + "/" + day_of_month + "/" + date.getUTCFullYear();
}

function get_last_day(year, month)
{
	var date_obj = new Date(year, month, 1);
	var last_day;
	do {last_day = date_obj.getDate(); date_obj.setDate(date_obj.getDate() + 1);} while (date_obj.getDate() > 1);
	return last_day;
}

// --------------------------------------------------
function phone_lookup(value)
{
	var area_code;
	var number;
	value = value.replace(/[^\d]+/ig, "");
	
	if(value.length == 10)
	{
		area_code = value.slice(0,3); number = value.slice(3,6) + "-" + value.slice(6,10);
	}
	else if(value.length == 11)
	{
		area_code = value.slice(1,4); number = value.slice(4,7) + "-" + value.slice(7,11);
	}
	else if(value.length == 7)
	{
		alert("You must enter an area code for this number");
		return;
	}
	else
	{
		alert("Invalid phone number");
		return;
	}
	
	var url = "http://www.whitepages.com/10858/search/Reverse_Phone?npa=" + area_code + "&phone=" + number;
	window.open(url, 'reverse_lookup', 'scrollbars=yes, resizable=yes, width=750, height=480, left=' + ((screen.width / 2) - 375) + ', top=' + ((screen.height / 2) - 240));
}

// ----------------------------------------------------------------------------------

function hide_element(obj)
{
	obj = document.getElementById(obj);
	obj.style.visibility = "hidden";
	obj.style.display = "none";
}

function show_element(obj)
{
	obj = document.getElementById(obj);
	obj.style.visibility = "";
	obj.style.display = "";
}
function collapseElement(ID)
{
	var element = document.getElementById(ID);
	element.style.display = "none";
}
function expandElement(ID)
{
	var element = document.getElementById(ID);
	element.style.display = "";
}






//	
function verify_manual(elemid)
{
	var obj = document.getElementById(elemid);
		  
	if( obj[obj.selectedIndex].value == 0)
	{
		alert("You have not selected a valid item in the list. Please select a device manual to continue.");
		return false;
	}
	else
		return true;
}