/////////////////////////////////////////////////////////////
//	
//
//	REQUIRES: Prototype v1.6+, Scriptaculous v1.8+
//
/////////////////////////////////////////////////////////////


////////////////////////////////
//	UTILITY CLASS
//	
////////////////////////////////
var Utility = {
			
	//	TEXT/FORM VALIDATION 
	
	////////////////////////////////
	//	isVisible - See whether or not
	//	an element is currently visible.
	isVisible: function(e) {
		//	Whereas e = element ID
		//returns true if e is should be visible to user.
		if (typeof e == "string") {
			e = document.getElementById(e);
		}
		while (e.nodeName.toLowerCase() != 'body' && e.style.display.toLowerCase() != 'none' && e.style.visibility.toLowerCase() != 'hidden') {
			e = e.parentNode;
		}
		if (e.nodeName.toLowerCase() == 'body') {
			return true;
		} else{
			return false;
		}
	},
	
	////////////////////////////////
	//	validatePhoneNumber - Ensures
	//	that phone numbers are formatted
	//	to a (000) 000-0000 format
	validatePhoneNumber: function(e)
	{
		var value = $(e).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)
			new Effect.Highlight( e, {startcolor:'#ff0000'} );
			
		$(e).value = value;
	},
	
	////////////////////////////////
	//	validateStateCode - Ensures
	//	that the STATE code is always
	//	two letters and is capitalized
	validateStateCode: function(e)
	{
		if( $(e).value.length < 2 )
			new Effect.Highlight( e, {startcolor:'#ff0000'} );
		else
			$(e).value = $(e).value.toUpperCase();
	},
	
	////////////////////////////////
	//	validateDate - 
	//	Ensure that the displayed date
	//	format is standardized,
	//	mm/dd/yyyy
	validateDate: function(e) 
	{
		var value = $(e).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 = "";
		
		$(e).value = value;	
	},
	
	////////////////////////////////
	//	validateEmail - Basic check
	//	to ensure email address contains
	//	the @ and . symbols. 
	validateEmail: function(e)
	{
		var atpos = $(e).value.indexOf("@");
		var dotpos = $(e).value.lastIndexOf(".");
		
		if (atpos < 1 || dotpos < (atpos + 2) || (dotpos + 2) >= $(e).value.length)
		{
			new Effect.Highlight( e, {startcolor:'#ff0000'} );
		}
	},
	
	//	IMAGE MANIPULATION
	
	////////////////////////////////
	//	changeImage - Swap the src
	//	image of referenced source
	//	element
	changeImage: function(e, img)
	{
		$(e).src = img;
	},
	
	//	ELEMENT & COLOR MANIPULATION
	
	////////////////////////////////
	//	changeImage - Swap the src
	//	image of referenced source
	//	element
	changeBackgroundColor: function(e, color)
	{
		$(e).style.backgroundColor=Color;
		$(e).style.bgColor=Color;
	}
	
	
};


function mouseX(evt) {
if (evt.pageX) return evt.pageX;
else if (evt.clientX)
   return evt.clientX + (document.documentElement.scrollLeft ?
   document.documentElement.scrollLeft :
   document.body.scrollLeft);
else return null;
}
function mouseY(evt) {
if (evt.pageY) return evt.pageY;
else if (evt.clientY)
   return evt.clientY + (document.documentElement.scrollTop ?
   document.documentElement.scrollTop :
   document.body.scrollTop);
else return null;
}


////////////////////////////////
//	SUBMIT_CONTACT - 
//	Submit our form via Ajax
//	Includes validation
function submit_contact()
{
	//	VALIDATE
	var formElements = document.getElementById("contact-form").elements;
	
	/*for (i=0; i<formElements.length; i++)
	{	
		// If required fields are empty, error
		if (formElements[i].type == "text")
			formElements[i].value = "";
	}*/
	
	//	SUBMIT FORM TO CONTACT.PHP
	$('contact-form').hide(); 
	$('contact-progress').show(); 

	$('contact-form').request({
			onSuccess: function(e) 
			{ 
				var response = e.responseText.split('^');;
				var success = response[0];
				success = success.replace(/\s/gi, '');
				
				var message = response[1];
				
				//	
				if( success == "false" )
				{
					alert("ERROR!\n\nUnable to add customer to the database. \n\nServer Response:\n"+message);
					
					$('submit-button').show(); 
					$('general-progress').hide(); 
				}
				if( success == "true" )
				{
					//	Upon success, move to view page
					//	Message will contain customer's new ID number
					window.location="customers.php?page=customer&view="+message;
				}
				else
					alert( e.responseText );
				
			},
			onFailure: function(e)
			{
				alert("Nope");
			}
			});
}









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 "";
}






//////////////////////////////////////////////
// -------------------------------------------
//	Tour Page Controls
//
var in_action = false;
function tour_open( slide_number )
{	
	if( in_action === true ) 
		return;
	
	for( var i = 1; i <= $$('.tour-window').length; i++ )
	{ 
		if( i == slide_number )
			continue;
			
		if( Utility.isVisible( 'tour-window-'+i ) )	
			tour_close(i);
	}
	
	in_action = true;
	var left;
	var top;
	
	if( slide_number == 3 )
		$('tour-window-'+slide_number).setStyle( { left: mouseX(event) - 280 + 'px', top: mouseY(event) - 200 + 'px' } );
	else if( slide_number >= 4 && slide_number < 8 ) 
		$('tour-window-'+slide_number).setStyle( { left: mouseX(event) - 280 + 'px', top: mouseY(event) - 400 + 'px' } );
	else if ( slide_number == 8 )
		$('tour-window-'+slide_number).setStyle( { left: mouseX(event) + 30 + 'px', top: mouseY(event) - 350 + 'px' } );
	else 
		$('tour-window-'+slide_number).setStyle( { left: mouseX(event) + 30 + 'px', top: mouseY(event) - 200 + 'px' } );
	
	
	new Effect.Appear('tour-window-'+slide_number, { duration: .3, queue:'end', scope:'slides', limit:1 });
	
	//	Clear our action check
	window.setTimeout("clear_action()", 300);
}

function tour_close( slide_number )
{
	$('tour-window-'+slide_number).hide();
}


function clear_action()
{
	in_action = false;
}
//
// -------------------------------------------
//////////////////////////////////////////////


//////////////////////////////////////////////
// --------------------------------------------------

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 getWindowHeight ()
{
	if( typeof( window.innerWidth ) == 'number' ) 
	{
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} 
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} 
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	
	return myHeight;
}

function getWindowWidth ()
{
	if( typeof( window.innerWidth ) == 'number' ) 
	{
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} 
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} 
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	
	return myWidth;
}

function getScreenCenter()
{
	var centerX = getWindowWidth() / 2;
	var centerY = getWindowHeight() / 2;
	
	var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body

	var pageoffsetX=document.all? iebody.scrollLeft : pageXOffset
	var pageoffsetY=document.all? iebody.scrollTop : pageYOffset
	
	centerX+=pageoffsetX;
	centerY+=pageoffsetY;

	return [centerX, centerY];
}

function getScreenOffset()
{
	var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body

	var pageoffsetX=document.all? iebody.scrollLeft : pageXOffset
	var pageoffsetY=document.all? iebody.scrollTop : pageYOffset
	
	return [pageoffsetX, pageoffsetY];
}


function emptyForm(form, ignorefields) 
{	
	var formElements = document.getElementById(form).elements;
	var skip_field = false;
	
	for (i=0; i<formElements.length; i++)
	{	
		// Ignore certain fields
		if( isArray(ignorefields) ) {
			
			for( a=0; a<ignorefields.length; a++)
				if(ignorefields[a] == formElements[i].name)
					skip_field = true;
		}

		if( skip_field ) { skip_field = false; continue; }
		
		if (formElements[i].type == "text")
			formElements[i].value = "";
		else if (formElements[i].type == "checkbox")
			formElements[i].checked = false;
		else if (formElements[i].type == "select-one" || formElements[i].type == "select-multiple")
			formElements[i].selectedIndex = -1;
		else if (formElements[i].type == "textarea" )
			formElements[i].value = "";
	}
}





var mask_open = false;

function show_mask()
{
	if(mask_open)
		return;
	
	var offset = getScreenOffset();
	
	$('mask').setStyle( { width: Screen.getViewportWidth(), height: $('main-container').getStyle( 'height' ), top: 0 } );
	
	new Effect.Appear("mask", {duration:.3, to:.7});
	mask_open = true;
}

function close_mask()
{
	$('mask').hide();
	mask_open = false;
}

function hitcounter()
{

	//decrease/increase counter value (depending on perceived popularity of your site!)
	var decrease_increase=76

	var counterdate=new Date()
	var currenthits=counterdate.getTime().toString()
	currenthits=parseInt(currenthits.substring(2,currenthits.length-4))+decrease_increase

	$('hits').innerHTML = "You are visitor # <b>"+currenthits+"</b> to my site!";
}

function renderGoogle() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
}


