function relative_time(time_value) {
	var values = time_value.split(" ");
	time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
	var parsed_date = Date.parse(time_value);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta = delta + (relative_to.getTimezoneOffset() * 60);
	if (delta < 60) {
		return ' less&nbsp;than&nbsp;a&nbsp;minute&nbsp;ago';
	} else if(delta < 120) {
		return ' about&nbsp;a&nbsp;minute&nbsp;ago';
	} else if(delta < (45*60)) {
		return ' '+(parseInt(delta / 60)).toString() + '&nbsp;minutes&nbsp;ago';
	} else if(delta < (90*60)) {
		return ' about&nbsp;an&nbsp;hour&nbsp;ago';
	} else if(delta < (24*60*60)) {
		return ' about&nbsp;' + (parseInt(delta / 3600)).toString() + '&nbsp;hours&nbsp;ago';
	} else if(delta < (48*60*60)) {
		return ' 1&nbsp;day&nbsp;ago';
	} else {
		return ' '+(parseInt(delta / 86400)).toString() + '&nbsp;days&nbsp;ago';
	}
}
function twitterCallback(obj) {
	var id = obj[0].user.id;
	var i = 0;
	for(i=0;i<=2;i++) {
		
		if(document.getElementById('twitter_status_slider_'+i)) {
			document.getElementById('twitter_status_slider_'+i).innerHTML = obj[i].text;
			document.getElementById('twitter_status_time_slider_'+i).innerHTML = relative_time(obj[i].created_at);
		}
		
		if(document.getElementById('twitter_status_'+i)) {
			document.getElementById('twitter_status_'+i).innerHTML = obj[i].text;
			document.getElementById('twitter_status_time_'+i).innerHTML = relative_time(obj[i].created_at);
		}
	}
}

//removes all spaces in a string
function removespaces() 
{
	return this.replace(/.*\S/,'');
	
}	//end function

//trims leading and trailing spaces
function trim_spaces() 
{
	return this.replace(/^\s+/,'').replace(/\s+$/,'');
	
}	//end function

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function sliderOnload()
{
	Image1= new Image(20,20);
	Image1.src = "images/system/icon_slider_up.gif";
	Image2 = new Image(20,20);
	Image2.src = "images/system/icon_slider_down.gif";
	
	// Get Elements
	var box = $('slider');
	var link = $('slider_btn');
	var label = $('slider_label');
	
	var openBox = function(isLoad) {
		document.buttontoggle.src = Image1.src;
		Effect.SlideDown(box, {duration: !isLoad ? 1 : 0});
		if(!isLoad) createCookie('status', 'open');
	};
	
	var closeBox = function(isLoad) {
		document.buttontoggle.src = Image2.src;
		Effect.SlideUp(box, {duration: !isLoad ? 1 : 0});
		if(!isLoad) createCookie('status', 'closed');
	};
	
	// Init State
	if(readCookie('status') !== 'open') {
		closeBox(true);
	}
	else {
		openBox(true);
	}
	
	// Setup Event
	link.observe('click', function() {
		// Toggle State
		if(readCookie('status') !== 'open') {
			openBox();
		}
		else {
			closeBox();
		}
	});
	
	// Setup Event
	label.observe('click', function() {
		// Toggle State
		if(readCookie('status') !== 'open') {
			openBox();
		}
		else {
			closeBox();
		}
	});
	
	Event.observe(window, 'load', function() {
		$('slider').removeClassName('hidden');
	});
}

function validateRequiredFields(oForm)
{	
	if (document.getElementsByName('hdn_req_fields') && document.getElementsByName('hdn_req_fields').length==1)
	{
		var strTextBoxes = document.getElementsByName('hdn_req_fields')[0].value;
		
		//turn the comma separated list into an array
		var arrBoxes = strTextBoxes.split(",");
	
		error = 0;
	
		//loop thru each box and determine if the text value is empty
		for( var intCount = 0; intCount < arrBoxes.length; intCount++ )
		{
			arrBoxes[intCount] = arrBoxes[intCount].trim_spaces();
	
			var arrFields = document.getElementsByName(arrBoxes[intCount]);
						
			if (arrFields.length)
			{
				for( var i = 0; i < arrFields.length; i++ )
				{
					var strText = arrFields[i].value;
					if( strText != 'undefined' && strText.length == 0 )
					{
						alert( "Please enter all the required fields." );
						return false;			
					}	//end if
				}
			}
		}	//end for loop
		
	}
	
	for (var intCounter = 0; intCounter < oForm.length; intCounter++)  
	{ 
		var fieldName = oForm[intCounter].name.toLowerCase();
		var strText = oForm[intCounter].value;
		
		if (fieldName.match("phone") || fieldName.match("fax"))
		{	
			if (strText.length && is_phone(strText)==false)
			{
				alert( "Please enter a valid phone number." );
				return false;
			}
		}
		
		if (fieldName.match("email"))
		{
			if (strText.length && !is_email(strText))
			{
				alert( "Please enter a valid email address." );
				return false;
			}
		}		
	}
	
	
	return true;

}	//end function

function frmSubmit()
{
	if (document.forms['requestForm']) 
	{	
		if (validateRequiredFields(document.forms['requestForm']))
		{
			document.forms['requestForm'].action = "processform.php";
			return true;
		}
		else
		{
			return false;
		}
	}
	
	
	return true
	
}

function is_email(email){
	var result = email.search(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,3})+$/);
	if(result > -1){ return true; } else { return false; }
}

/**
 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

function is_phone(phone)
{
	if (checkInternationalPhone(phone)==false)
	{
		return false
	}
	else
	{
		return true;
	}
}
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}
/**********************************/

//assigns a new function to string types
String.prototype.removespaces = removespaces;
String.prototype.trim_spaces = trim_spaces;

