/*
 * 
 * Common functions
 */
function validateEmail(email)
{
	var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$/;
	return regex.test(email);
	//return email.match(regex)	?	true	:	false;
}

function validateUsername(username) 
{
	var regex = /^([a-zA-Z])+([a-zA-Z0-9_\-\.])+$/; 
    return regex.test(username);
}

function validatePassword(password)
{
	var regex = /^([a-zA-Z0-9_\-*&%$#@!])+$/; 
    return regex.test(password);
}

function removeMessage(div)
{
	$('#' + div).slideUp();
}

function displayHelpPopup(div)
{
	$('#' + div).css('display', 'block');
}

function hideHelpPopup(div)
{
	$('#' + div).css('display', 'none');
}

/* Form terms fancybox window */
jQuery(document).ready(function(){	
	if(typeof jQuery.fancybox == 'function') { 
		$("a.fancybox").fancybox( {
			'transitionIn' : 'elastic',
			' transitionOut' : 'elastic',
			'overlayOpacity' : 0.5,
			'overlayColor' : '#003467'
		});
	}
});

function sendActivationLink()
{
	var email = $('#email').val();
	var referal = $('#referal').val();
	if (email.length == 0 || !validateEmail(email)) {
		$('#email').addClass('js_error')
		return false;
	} else {
		$('#email').removeClass('js_error')
	}	
	var ajax_options = {
		beforeSend: function()
		{
			$('#registration_throbber').html('<img src="/ifc/ajax-loader.gif" alt="Loading" />');
			$('#registration_button').attr('disabled', 'disabled');
		},
		complete: function()
		{
			$('#registration_throbber').html('');
			$('#registration_button').attr('disabled', '');
		},
		error: function(XMLHttpRequest, textStatus, errorThrown)
		{
			alert('There was an error durring request. Please try again later!');
		},
		success: function(html, textStatus)
		{
			$('#regsiter_box').css('display', 'none');
			$('#response_container').removeClass('display-none');
			$('#response_container').html(html);
			return false;
		},
		timeout: '100000',
		type: 'POST',
		dataType: 'HTML',
		data: 'ajax=1&email=' + email + '&r=' + referal,
		url: '/register/send/'
	};
	$.ajax(ajax_options);
	return false;
}

function sendLostPassword()
{
	var email = $('#email').val();
	if (email.length == 0 || !validateEmail(email)) {
		$('#email').addClass('js_error');
		return false;
	}
	
	var ajax_options = {
		beforeSend: function()
		{
			$('#forget_password_throbber').html('<img src="/ifc/ajax-loader.gif" alt="Loading" />');
			$('#forget_password_button').attr('disabled', 'disabled');
		},
		complete: function()
		{
			$('#forget_password_throbber').html('');
			$('#forget_password_button').attr('disabled', '');
		},
		error: function(XMLHttpRequest, textStatus, errorThrown)
		{
			alert('There was an error durring request. Please try again later!');
		},
		success: function(html, textStatus)
		{
			$('#forget_password_box').css('display', 'none');
			$('#response_container').removeClass('display-none');
			$('#response_container').html(html);
			return false;
		},
		timeout: '100000',
		type: 'POST',
		dataType: 'HTML',
		data: 'ajax=1&email=' + email,
		url: '/lostpassword/send/'
	};
	$.ajax(ajax_options);
	return false;
}
/*
 * Validate input fields for login form.
 * If everything is ok return true, otherwise mark invalid fields and return false
 * NO AJAX LOGIN
 */
function checkLoginForm()
{
	var error = false;
	var email = $('#email').val();
	var password = $('#password').val();
	var remember_me = $('#remember_me').val();
	
	if (email.length == 0 || !validateEmail(email)) {
		$('#email').addClass('js_error');
		error = true;
	}else{
		$('#email').removeClass('js_error');
	}
	
	if (password.length == 0) {
		$('#password').addClass('js_error');
		error = true;
	}else{
		$('#password').removeClass('js_error');
	}
	
	if (error) {
		return false;
	}
	return true;
	/**
	 * All checkings are ok, proceed to the ajax call
	 */
	var ajax_options = {
			beforeSend: function()
			{
				$('#ajax_throbber_container').html('<img src="/ifc/ajax-loader.gif" alt="Loading" />');
				$('#submit_button').attr('disabled', 'disabled');
			},
			complete: function()
			{
				$('#ajax_throbber_container').html('');
				$('#submit_button').attr('disabled', '');
			},
			error: function(XMLHttpRequest, textStatus, errorThrown)
			{
				alert('There was an error durring request. Please try again later!');
			},
			success: function(xml, textStatus)
			{
				var code = $(xml).find('code').text()
				var message = $(xml).find('message').text();
				var color = parseInt(code) === 12	?	'green'	:	'red'; 
				/*$('#contact_ajax_message_container').css('color', color);
				$('#contact_ajax_message_container').text(message);*/
				if (parseInt(code) === 12) {
					document.location="/";
				}else{
					$('#login_ajax_response').slideDown();
					setTimeout('removeMessage("login_ajax_response")', 3000);
				}
			},
			timeout: '100000',
			type: 'POST',
			dataType: 'XML',
			data: 	'ajax=1' + 
					'&email=' + email +
					'&password=' + password +
					'&remember_me=' + remember_me
			,
			url: '/login/submit/'
	};
	$.ajax(ajax_options);
	return false;
}

function toggleProfileImageEditor()
{
	$('#image_change_editor').slideToggle();
	return false;
}

function unlockChangePassword()
{
	if ($('#password').attr('disabled')) {
		$('#password').attr('disabled', '');
		$('#repeat_password').attr('disabled', '');
	} else {
		$('#password').attr('disabled', 'disabled');
		$('#repeat_password').attr('disabled', 'disabled');
	}
}

function checkCommentForm()
{
	var com = $('#comment').val();
	if (com.length > 4) {
		return true;
	}
	alert('Min 5 chars please!');
	return false;
}

function checkIfUseranemExists()
{
	var username = $('#username').val();
	if (username.length < 4 || username.length > 10 || !validateUsername(username)) {
		$('#username').addClass('js_error');
		return false;
	}else{
		$('#username').removeClass('js_error');
	}
	
	/**
	 * All checkings are ok, proceed to the ajax call
	 */
	var ajax_options = {
			beforeSend: function()
			{
				$('#username_throbber').css('display', 'inline');
				$('#check_username_button').css('display', 'none');
			},
			complete: function()
			{
				$('#username_throbber').css('display', 'none');
				$('#check_username_button').css('display', 'inline');
			},
			error: function(XMLHttpRequest, textStatus, errorThrown)
			{
				alert('There was an error durring request. Please try again later!');
			},
			success: function(xml, textStatus)
			{
				var code = $(xml).find('code').text()
				var message = $(xml).find('message').text(); 
				if (parseInt(code) === 12) {
					$('#username').css('background', '#ADFF9F');
				}
				else if (parseInt(code) === 5) {
					$('#username').css('background', '#FFC4BF');
				}else{
					$('#username').css('background', '#FFC4BF');
					alert('Username already exists. Please choose another one');
				}
				return false;
			},
			timeout: '100000',
			type: 'POST',
			dataType: 'XML',
			data: 	'ajax=1' + 
					'&username=' + username,
			url: '/register/checkusername/'
	};
	$.ajax(ajax_options);
	return false;
}

function checkSignupForm()
{
	var error = false;
	var username = $('#username').val();
	var first_name = $('#first_name').val();
	var last_name = $('#last_name').val();
	
	if (username.length < 4 || username.length > 10 || !validateUsername(username)) {
		$('#username').addClass('js_error');
		error = true;
	}else{
		$('#username').removeClass('js_error');
	}
	
	if (first_name.length < 2 || username.length > 100) {
		$('#first_name').addClass('js_error');
		error = true;
	}else{
		$('#first_name').removeClass('js_error');
	}
	
	if (last_name.length < 2 || last.length > 100) {
		$('#last_name').addClass('js_error');
		error = true;
	}else{
		$('#last_name').removeClass('js_error');
	}
	
	var password 			= $('#password').val();
	var repeat_password		= $('#repeat_password').val();
	
	if (password.length < 5 || password.length > 10 || !validatePassword(password)) {
		$('#password').addClass('js_error');
		error = true;
	}
	else if (repeat_password.lenght == 0 || password != repeat_password) {
		$('#repeat_password').addClass('js_error');
		error = true;
	} else {
		$('#password').removeClass('js_error');
		$('#repeat_password').removeClass('js_error');
	}
	
	var sex = $("input[@name='sex']:checked").val();
	if (sex == 'M' || sex == 'F') {
		$('span.sex-error-message').css('display', 'none');
	} else {
		$('span.sex-error-message').css('display', 'block');
		error = true;
	}
	

//	if ($('#terms').attr('checked') == false) {
//		$('span.terms-error-message').css('display', 'inline');
//		error = true;
//	} else {
//		$('span.terms-error-message').css('display', 'none');
//	}
	
	var secure_code = $('#secure_code').val();
	if (secure_code.length != 5) {
		$('#secure_code').addClass('js_error');
		error = true;
	} else {
		$('#secure_code').removeClass('js_error');
	}
	return !error;
}

function sendReportForLink()
{
	var id		= $('#rp_campaign_id').val();
	var email	= $('#email').val();
	var comment = $('#rpl_comment').val();
	if (!validateEmail(email)) {
		alert('Email is not in valid format!');
		return false;
	}
	var ajax_options = {
			beforeSend: function()
			{
				$.fancybox.showActivity();
				$('#report_button').attr('disabled', 'disabled');
			},
			complete: function()
			{
				$.fancybox.close();
				$('#report_button').attr('disabled', '');
			},
			error: function(XMLHttpRequest, textStatus, errorThrown)
			{
				$.fancybox.close();
				alert('There was an error durring request. Please try again later!');
			},
			success: function(xml, textStatus)
			{
				var code = $(xml).find('code').text()
				var message = $(xml).find('message').text(); 
				$.fancybox.close();
				alert(message);
				return false;
			},
			timeout: '100000',
			type: 'POST',
			dataType: 'XML',
			data: 	'ajax=1' + 
					'&campaign_id=' + id +
					'&email=' + email +
					'&rpl_comment=' + comment,
			url: '/campaign/report/'
	};
	$.ajax(ajax_options);
	return false;
}

function closeFancybox()
{
	$.fancybox.close();
}

function sendTellFriend()
{
	var email			= $('#tf_email').val();
	var friend_email	= $('#tf_friend_email').val();
	var subject			= $('#tf_subject').val();
	var comment			= $('#tf_comment').val();
	var errors = new Array;
	
	if (!validateEmail(email)) {
		errors[errors.length] = 'Your email is not in valid format';
	}
	if (!validateEmail(friend_email)) {
		errors[errors.length] = 'Your friend email is not in valid format';
	}
	if (subject.length < 1) {
		errors[errors.length] = 'Please enter subject';
	}
	if (comment.length < 10) {
		errors[errors.length] = 'Please enter message';
	}
	if (errors.length == 0) {
		var ajax_options = {
				beforeSend: function()
				{
					$.fancybox.showActivity();
					$('#tf_button').attr('disabled', 'disabled');
				},
				complete: function()
				{
					$.fancybox.close();
					$('#tf_button').attr('disabled', '');
				},
				error: function(XMLHttpRequest, textStatus, errorThrown)
				{
					$.fancybox.close();
					alert('There was an error durring request. Please try again later!');
				},
				success: function(xml, textStatus)
				{
					var code = $(xml).find('code').text()
					var message = $(xml).find('message').text(); 
					alert(message);
					return false;
				},
				timeout: '100000',
				type: 'POST',
				dataType: 'XML',
				data: 	'ajax=1' + 
						'&email=' + email +
						'&friend_email=' + friend_email +
						'&subject=' + subject +
						'&comment=' + comment,
				url: '/campaign/tellfriend/'
		};
		$.ajax(ajax_options);
		return false;
	}
	var for_displaying = '';
	for (var i = 0; i < errors.length; i++)
	{
		for_displaying += errors[i] + "\n";
	}
	alert(for_displaying);
	return false;
	
}

function saveThumb(id, direction)
{
	if (readCookie('thumbs-' + id) !== null) {
		//alert('Your vote alredy recorded!');
		//return false;
	}
	var ajax_options = {
			beforeSend: function()
			{
				//$('#tf_button').attr('disabled', 'disabled');
			},
			complete: function()
			{
				//$('#tf_button').attr('disabled', '');
			},
			error: function(XMLHttpRequest, textStatus, errorThrown)
			{
				alert('There was an error durring request. Please try again later!');
			},
			success: function(html, textStatus)
			{
				if (html != 'none') {
					if (direction == 'up') {
						$('a.up span').text('(' + html + ')');
						createCookie('thumbs-' + id, direction , 365);
					}
					else if (direction == 'down') {
						$('a.down span').text('(' + html + ')');
						createCookie('thumbs-' + id, direction, 365);
					}
					
				}
			},
			timeout: '100000',
			type: 'POST',
			dataType: 'HTML',
			data: 	'ajax=1' + 
					'&id=' + id +
					'&direction=' + direction,
			url: '/campaign/thumbsajax/'
	};
	$.ajax(ajax_options);
	return false;
}

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);
}

/* Following three function are f
 * or pop up window when unregistered 
 * user click on premium campaign 
 */
function showNotificationPopUp()
{
	$("#reg_notification").fancybox().trigger('click');
	return false;
}

function proceedToCampaign()
{
	$.fancybox.close();
	window.location= $('#direct_link_to_the_c').attr('href');	
}

function goToLoginPage()
{
	$.fancybox.close();
	window.location="/login/?redirectTo=" + location.href;
}

function goToRegisterPage()
{
	$.fancybox.close();
	window.location="/register/?redirectTo=" + location.href;
}
