/* SIG kept in memory */
var SIG;

/* For the fadeout */
var lastRun;

/* Defaulting this var */
var hasVoted = 0;

/* Is vote in progress or not */
var isVoting = false;

/* Fullscreen popup */
var full_popup;

/* Type of errors to display (alert/div) */
var error_type = 'div';

/* For the rating */
var is_note = false;

/* Avoids having many redirects */
var being_redirected = false;

/* Items content in the current channel */
var channel_items = null;

/* Function that is supposed to execute commands after the AJAX execution */
var parseResponseFunction;

var tempImage;
var hasVoted = 0;

/*var xmlhttp
	
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	 try {
	  xmlhttp = new XMLHttpRequest();
	 } catch (e) {
	  xmlhttp=false
	 }
	}
	function myXMLHttpRequest() {
	  var xmlhttplocal;
	  try {
	    xmlhttplocal= new ActiveXObject("Msxml2.XMLHTTP")
	 } catch (e) {
	  try {
	    xmlhttplocal= new ActiveXObject("Microsoft.XMLHTTP")
	  } catch (E) {
	    xmlhttplocal=false;
	  }
	 }

	if (!xmlhttplocal && typeof XMLHttpRequest!='undefined') {
	 try {
	  var xmlhttplocal = new XMLHttpRequest();
	 } catch (e) {
	  var xmlhttplocal=false;
	  alert('couldn\'t create xmlhttp object');
	 }
	}
	return(xmlhttplocal);
}*/

function videoRate(params)
{
	if (getCookie('loginToken') == null) {
		document.getElementById('ratings_login').style.display = 'block';
		document.getElementById('social_items_containerUl').style.display = 'none';
		return false;
	}
	
	// Patch, hidden by other layer
	document.getElementById('video_rating_stars').style.display = 'none';
	document.getElementById('video_rating_waiting').style.visibility = 'visible';
	
	exploded = params.split(',');
	sig = trimAll(exploded[0]);
	note = trimAll(exploded[1]);
	token = trimAll(exploded[2]);

	hasVoted = note;

	parameters = new Object();
	parameters['rate'] = note;
	parameters['sig'] = sig;
	parameters['token'] = token;
	parseResponseFunction = returnedVideoRate;
	runAJAX('/front_website/ajax_server.php', 'video_rate', parameters, 'post');
}

function returnedVideoRate(response)
{
	if(response <= 0)
	{
//		alert('rating failed');
		document.getElementById('video_rating_stars').style.display = 'block';
		document.getElementById('video_rating_waiting').style.visibility = 'hidden';
		overStar(hasVoted)
		timeout(setUpFade, 'video_rating_waiting', 900);
		/* implement rating could not be saved here */
	}
	else
	{
//		alert('rating succesful');
		exploded = response.split('|')
		if(exploded.length != 2)
		{
			returnedVideoRate(-1)
			return
		}
		
		document.getElementById('video_rating_span').innerHTML = '<img src="/images/stars/'+exploded[0]+'_stars.gif"/>' //refresh average rating
		//document.getElementById('video_rating_count_span').innerHTML = exploded[1]; //refresh comment count

		document.getElementById('video_rating_stars').style.display = 'block';
		document.getElementById('video_rating_waiting').style.visibility = 'hidden';
		overStar(hasVoted)
		timeout(setUpFade, 'video_rating_waiting', 900);
	}
}

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


	regexp = new RegExp('^[A-Za-z0-9._-]{2,}@[A-Za-z0-9.-]{2,}[.][A-Za-z]{2,4}$');
	
	articleUrl = trimAll(document.getElementById('article_url').value);
	message = trimAll(document.getElementById('share_message').value);
	
	/*Validate senders email address*/
	senderemail = trimAll(document.getElementById('sender_email').value);
	if(regexp.test(senderemail) == false)
	{
		document.getElementById('sender_email').style.backgroundColor= 'red';
		document.getElementById('sender_email').style.color= '#FFF';
		errors = errors + 1;
	}
	else
	{
		document.getElementById('sender_email').style.backgroundColor= '#FFF';
		document.getElementById('sender_email').style.color= '#000';
	}
	
	/*Validate friends email address*/
	friendmail = trimAll(document.getElementById('friend_email').value);
	if(regexp.test(friendmail) == false)
	{
		document.getElementById('friend_email').style.backgroundColor= 'red';
		document.getElementById('friend_email').style.color= '#FFF';
		errors = errors + 1;
	}
	else
	{
		document.getElementById('sender_email').style.backgroundColor= '#FFF';
		document.getElementById('sender_email').style.color= '#000';
	}
	
	if(errors > 0)
	{
		return false;
	} else {
		//	  saveContact();
		document.getElementById('send_btn_div').style.display = "none";

		document.getElementById('share_friends_btn').disabled = true;
		parameters = new Object();
		parameters['sender_email'] = senderemail;
		parameters['friend_email'] = friendmail;
		parameters['article_url'] = articleUrl;
		parameters['message'] = message;

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

function returnedSendFriends(response)
{
	document.getElementById('share_friends_btn').disabled = false;
	if(response == 1)
	{
		displayMessage('Message succesfully sent');
		setUpFade('send_link_box')
	}
	else
	{
		displayError('Message not sent')
	}
	document.getElementById('send_btn_div').style.display = "block";
}

function userLogin(email, psswd)
{
	parameters = new Object();
	parameters['email'] = email;
	parameters['password'] = psswd;
	
	parseResponseFunction = returnedLogin;
	runAJAX('/front_website/ajax_server.php', 'user_login', parameters, 'post');
}

function returnedLogin(response) 
{
	if(response <= 0)
	{
//		alert('rating failed');
		document.getElementById('login_error').style.display = 'block';
	}
	else
	{
		exploded = response.split('|')
		loginToken = exploded[0];
		
		//setcookie here
		setCookie('loginToken', loginToken, '', '/');		
		closeLoginBox();
		document.getElementById('login_out_button').innerHTML = '<input type="button" id="login_out" value="LOGOUT" class="button" onload="removeFocus()" onclick="userLogout()"/>';
		document.getElementById('comments_login').style.display = 'none';
		document.getElementById('ratings_login').style.display = 'none';
		
		//
		document.getElementById('social_items_containerUl').style.display = 'block';
	}
}

function userLogout()
{
	if (getCookie('loginToken') != null) {
		loginToken = getCookie('loginToken');
		parameters = new Object();
		parameters['userToken'] = loginToken;
		
		parseResponseFunction = returnedLogout;
		runAJAX('/front_website/ajax_server.php', 'user_logout', parameters, 'post');
	}
}

function returnedLogout(response)
{
	if (response <= 0) {
		//failed to logout
	} else {
		deleteCookie('loginToken', '/');
		document.getElementById('login_out_button').innerHTML =	'<input type="button" id="login_out" value="LOGIN" class="button" onload="removeFocus()" onclick="openLoginBox()"/>';	
	}
}

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

	/* If an instance is already running */
	/*if (token == true) {
		return;
	}*/

	token = true;

	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.overrideMimeType('text/html; charset=utf-8');
		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)
		{
			//alert(http_request.responseText)
			var func = function()
			{
				if (xmlhttp.responseText == -1) { // if a request returns API_ERROR_NOT_CONNECTED
					needstoLogin();
				}
				else {

					// If an AJAX query produces an error
					// Just uncomment the following line
					// You'll have the full response of the query
					// And you'll know what is going wrong
					//alert(http_request.responseText)

					parseResponseFunction(xmlhttp.responseText);
					}
			}
			func()
		}
		else
		{
			alert('ajax error');
			//alert(JST_AJAX_ERROR);
		}
	}
	else
	{
		// Still waiting for the answer
	}

	/* Frees the token */
	token = false;
}