function trimAll(sString)
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function startShareFriends()
{
	share_friend_open = true;
	document.getElementById('fbEmail').style.visibility = 'visible';
}

function closeShareFriends()
{
	if(share_friend_open == true)
		setUpFade('fbEmail')
	share_friend_open = false;
}

function setUpFade(ename, callback) {
	lastRun = false
	fader(ename,2,50,300, callback);
}

// Fades an element
// elName - id of the element
// start - time in ms when the fading should start
// steps - number of fading steps
// time - the length of the fade in ms
var timer
function fader(elName,start,steps,time, callback) {
  setOpacity(elName,100); // To prevent flicker in Firefox
                          // The first time the opacity is set
                          // the element flickers in Firefox
  fadeStep = 100/steps;
  timeStep = time/steps;
  opacity = 100;
  time = start + 100;
  while (opacity >=0) {
   	window.setTimeout("setOpacity('"+elName+"',"+opacity+","+callback+")",time);
    opacity -= fadeStep;
    time += timeStep;
  }
}


function setOpacity(elName,opacity, callback) {
  opacity = (opacity == 100)?99:opacity;
  el = document.getElementById(elName);
  // IE
  el.style.filter = "alpha(opacity:"+opacity+")";
  // Safari < 1.2, Konqueror
  el.style.KHTMLOpacity = opacity/100;
  // Old Mozilla
  el.style.MozOpacity = opacity/100;
  // Safari >= 1.2, Firefox and Mozilla, CSS3
  el.style.opacity = opacity/100


  if(opacity <= 0)
  {

  	reg = new RegExp('^messagebar');
  	if(reg.test(elName) == true)
  	{
		messagebar--;
  	}

  	if (callback)
  	{
  		callback();
  	}

  	lastRun = true;
	document.getElementById(elName).style.visibility = 'hidden'
/*	document.getElementById(elName).style.display = 'none';*/
	setOpacity(elName, 100);
  }
}

function sentToFriend(url)
{
	errors = 0;
	success = 0;
	paramschar = '';


	regexp = new RegExp('^[A-Za-z0-9._-]{2,}@[A-Za-z0-9.-]{2,}[.][A-Za-z]{2,4}$');
	
	articleUrl = url;
	
	message = trimAll(document.getElementById('yourmessage').value);
	
	/*Validate senders email address*/
	senderemail = trimAll(document.getElementById('youremail').value);
	if(regexp.test(senderemail) == false)
	{
		document.getElementById('youremail_err').style.display= 'block';
		errors = errors + 1;
	}
	else
	{
		document.getElementById('youremail_err').style.display= 'none';
	}
	
	/*Validate friends email address*/
	friendmail = trimAll(document.getElementById('friendsemail').value);
	if(regexp.test(friendmail) == false)
	{
		document.getElementById('friendsemail_err').style.display= 'block';
		errors = errors + 1;
	}
	else
	{
		document.getElementById('friendsemail_err').style.display= 'none';
	}
	
	if(errors > 0)
	{
		return false;
	} else {
		document.getElementById('send_btn_div').style.visibility = "hidden";

		parameters = new Object();
		parameters['sender_email'] = senderemail;
		parameters['friend_email'] = friendmail;
		parameters['article_url'] = articleUrl;
		parameters['message'] = message;

		parseResponseFunction = returnedSendFriends;
		runAJAX('/front_website/fitbrit/email_server.php', 'send_email', parameters, 'post');
		return true;
	}
	
}

function returnedSendFriends(response)
{
	if(response == 1)
	{
		document.getElementById('fbEmail').innerHTML = '<div id="fbEmailThanks"><p>Your message was sent successfully</p></div>';
		share_friend_open = true;
		closeShareFriends()
	}
	else
	{
		//what to do if message was not sent
	}
}

function runAJAX(controller, action, parameters, form_method)
{
	controlerAction = action;
	controlerParameters = parameters;

	param_string = ''
	for(key in parameters)
	{
		param_string = param_string + '&'+key+'='+parameters[key];
	}

	xmlhttp = false;
	
	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{ // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!xmlhttp) {
		alert('Your browser is not AJAX compatible');
		return
	}
	
	xmlhttp.onreadystatechange = resultAJAXQuery; //response method

	if(form_method == 'get')
	{
		xmlhttp.open('GET', controller+'?action='+action+param_string, true);
		xmlhttp.send(null);
	}
	else if (form_method == 'post')
	{
		xmlhttp.open('POST', controller, true);
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xmlhttp.send('action='+action+param_string);
	}
}

function resultAJAXQuery()
{
	if (xmlhttp.readyState == 4)
	{
		if (xmlhttp.status == 200)
		{
			var func = function()
			{
				if (xmlhttp.responseText == -1) { // if a request returns API_ERROR_NOT_CONNECTED
					needstoLogin();
				}
				else {
					parseResponseFunction(xmlhttp.responseText);
				}
			}
			func()
		}
		else
		{
			alert('ajax error');
		}
	}
	else
	{
		// Still waiting for the answer
	}
}
