/////////////////////////////////////////////////////////////////////////////
// Copyright © 2009 Heartbeat. All rights reserved.
//
// Settings file
// version 1.0
//
// Description:
// General settings for the site.
//
// Package: /templates/sepia/js
// Developer: Bogdan Amartisoaie <bogdan.amartisoaie@heartbeat.ro>
// Modifications: Friday, September 25, 2009
//
// Modifications history:
// 1.0 - creation of the class
/////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////// FILE START

// initialize event
add_event(window, 'load', initialize, false);

/////////////////////////////////////////////////////////////////////////////
// Initialize
// version 1.0
//
// Description:
// Adds handlers for every type text and password input with the class
// 'textbox' associated.
//
// Parameters
//		N/A
//
// Returns
//		N/A
//
// Modifications: Friday, September 25, 2009
//
// Modifications history:
// 1.0 - creation of the function
/////////////////////////////////////////////////////////////////////////////
function initialize()
{
	// get input element
	var inputs = document.getElementsByTagName('input');
	
	// go through input elements
	for (var i = 0; i < inputs.length; i++)
	{
		// set current input
		var input = inputs[i];
		
		// check for text and password input types with textbox class assigned
		if ((input.type == 'text' || input.type == 'password') && input.className.match(/\btextbox-clear\b/))
		{ 
			// add event handlers
			add_event(input, 'focus', clear_default_text, false);
			add_event(input, 'blur', replace_default_text, false);
			
			// check input value
			if (input.value != '')
			{
				// save the current value
				input.defaultText = input.value;
			}
		}
	}
}

/////////////////////////////////////////////////////////////////////////////
// Clear Default Text
// version 1.0
//
// Description:
// Clears the target value when it gains focus.
//
// Parameters
//		e (event): focus event
//
// Returns
//		N/A
//
// Modifications: Friday, September 25, 2009
//
// Modifications history:
// 1.0 - creation of the function
/////////////////////////////////////////////////////////////////////////////
function clear_default_text(e)
{
	// get target
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	
	// check target
	if (!target)
	{
		// invalid target
		return;
	}
	
	// check target value
	if (target.value == target.defaultText)
	{
		// clear target value
		target.value = '';
	}
}

/////////////////////////////////////////////////////////////////////////////
// Replace Default Text
// version 1.0
//
// Description:
// Replaces the target value when it loses focus.
//
// Parameters
//		e (event): blur event
//
// Returns
//		N/A
//
// Modifications: Friday, September 25, 2009
//
// Modifications history:
// 1.0 - creation of the function
/////////////////////////////////////////////////////////////////////////////
function replace_default_text(e)
{
	// get target
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	
	// check target
	if (!target)
	{
		// invalid target
		return;
	}
	
	// check target value
	if (target.value == '' && target.defaultText)
	{
		// replace target value
		target.value = target.defaultText;
	}
}

/////////////////////////////////////////////////////////////////////////////
// Add Event
// version 1.0
//
// Description:
// Adds event to an element.
//
// Parameters
//		element (element): element to add event to
//		event_type (event): event type
//		lamda_function (string): function to be executed
//		use_capture (boolean): execution phase (capturing or bubbling)
//
// Returns
//		N/A
//
// Modifications: Friday, September 25, 2009
//
// Modifications history:
// 1.0 - creation of the function
/////////////////////////////////////////////////////////////////////////////
function add_event(element, event_type, lamda_function, use_capture)
{
	// check element event status
	if (element.addEventListener)
	{
		// add event listener
		element.addEventListener(event_type, lamda_function, use_capture);
	}
	else if (element.attachEvent)
	{
		// attach event
		element.attachEvent('on' + event_type, lamda_function);
	}
}

///////////////////////////////////////////////////////////////////////////// FILE END

