/**
 * @author LatecomerX
 * @copyright 2007
 */

var $j = jQuery.noConflict();
var lightboxNotLoaded = true;
var $member = false;
var $timer = 0;
var $urlPrefix = 'http://www.ticosland.com/';
var lineNumLength = 8;
var faxNumLength = 8;
var faxNumPattern = /2|2/;
var phoneNumLength = 8;
var phoneNumPattern = /8|8/;
var memberFunctions = new Array();
var $showColon = true;
var $unixTime = null;
var $msDifference = null;

$j(function() {
	loadMemberInfo();
	setUnixTime();
	updateTimeDisplay();
	$j('#searchForm').submit(searchFormHandler);
	filterInput('#user', /[^a-z0-9]+/gi);
});

// toProperCase method - http://www.andyfowler.com/journal/2005/07/javascript-ucwords-replacement/
String.prototype.toProperCase = function() {
	//**/[\w\u00C0-\u00FF]+/g
	return this.toLowerCase().replace(/[\w\u00C0-\u00FF]+/g, function(s) {
		return s.charAt(0).toUpperCase() + s.substr(1);
	});
}

function callMemberFunctions() {
	for (var i = 0, l = memberFunctions.length; i < l; i++) { memberFunctions[i](); }
}

function addMemberFunction(fn) { memberFunctions[memberFunctions.length] = fn; }

function showLoadingIcon(id, message) {
	if (typeof(message) == 'undefined') message = 'Loading...';
	var html = '<div class="loading"><img class="loadingPic" src="' + $urlPrefix + 'images/loading.gif" /><p>' + message + '</p></div>';
	$j('#' + id).html(html);
}

function loadMemberInfo() {
	showLoadingIcon('memberStatus', lxMainMessages['loadingMemberInfo']);
	loadMemberStatus();
}

function memberSignIn() {
	$j('#memberSignInForm').css("display", "none");
	showLoadingIcon('memberStatus', lxMainMessages['signingIn']);
	var url = $urlPrefix + 'inc/member.php?user=' + $j('#user').val() + '&pass=' + $j('#pass').val();
	$j.get(url, loadMemberStatus);
	
	return false;
}

function memberSignOut() {
	showLoadingIcon('memberStatus', lxMainMessages['signingOut']);
	$j.get($urlPrefix + 'inc/member.php?signout=1', loadMemberStatus);
	
	return false;
}

function loadMemberStatus() {
	hidePasswordPanel();
	$j('#memberInfo').load($urlPrefix + 'inc/data.php');
	$j.get($urlPrefix + 'inc/member.php', function(data) {
		if (data == 'You are not signed in.' || data == 'Incorrect username/password.') {
			$member = false;
			$j('#memberSignInForm').css("display", "block");
			$j('#memberStatus').html('');
			if (data == 'Incorrect username/password.') { memberCredentialMismatchAlert(); }
		} else {
			$member = true;
			$j('#memberSignInForm').css("display", "none");
			$j('#memberStatus').html(data);
		}
		callMemberFunctions();
	});
}

function memberCredentialMismatchAlert() {
	var error = lxMainMessages['credentialMismatch'];
	alert(error);
}

function Contar(entrada,salida,texto,caracteres) {
  var entradaObj=getObject(entrada);
  var salidaObj=getObject(salida);
  var linebreaks = entradaObj.value.split("\r\n").length - 1;
  var longitud=caracteres - entradaObj.value.length + linebreaks;
  if(longitud <= 0) {
    longitud=0;
    texto='<span class="disable"> '+texto+' </span>';
    entradaObj.value=entradaObj.value.substr(0,caracteres);
  }
  
  //salidaObj.innerHTML = texto.replace("{CHAR}",longitud);
  $j('#' + salida).html(texto.replace("{CHAR}",longitud));
}

function trimLinebreaks(object) {
	text = object.value;
	while (object.value.search(/(\r\n\r\n)|(\n\n)/) != -1) {
		object.value = object.value.replace(/\r\n\r\n/g, "\r\n");
		object.value = object.value.replace(/\n\n/g, "\n");
	}
}

function isEmpty(v) {
	if (typeof(v) == 'undefined' || v == null || v == '' || v == 0) { return true; }
	else { return false; }
}

function v(id) { return $j('#' + id).val(); }

function initLightbox2() {
	if (lightboxNotLoaded) {
		myLightbox = new Lightbox();
		//alert('Lightbox2 loaded.');
		lightboxNotLoaded = false;
	} else {
		myLightbox.updateImageList();
		//alert('Unable to load Lightbox2.');
	}
}

function loadCaptcha(form, captcha, input, bg, info) {
	if (isEmpty(form)) { form = 'form1'; }
	if (isEmpty(captcha)) { captcha = 'captcha'; }
	if (isEmpty(input)) { input = 'captchaText'; }
	if (isEmpty(bg)) { bg = 'FFF'; }
	if (isEmpty(info)) { info = 'captchaInfo'; }
	
	var r = Math.ceil(Math.random() * 1000000);
	$j('#' + captcha).attr('src', $urlPrefix + 'inc/captcha.php?random=' + r);
	$j('#' + input).val('');
	$j('#' + input).css('background-color', '#' + bg);
	$j('#' + form + ' input[type="submit"]').attr('disabled', true);
	$j('#' + form + ' input[type="image"]').attr('disabled', true);
	$j('#' + info).slideDown('fast');
}

function checkCaptchaText(form, input, info) {
	if (isEmpty(form)) { form = 'form1'; }
	if (isEmpty(input)) { input = 'captchaText'; }
	if (isEmpty(info)) { info = 'captchaInfo'; }
	
	$j.get($urlPrefix + 'inc/checkCaptchaText.php?text=' + $j('#' + input).val(), '', function(data) {
		if (data == 'pass') {
			$j('#' + input).css('background-color', '#6FF770');
			$j('#' + form + ' input[type="submit"]').attr('disabled', false);
			$j('#' + form + ' input[type="image"]').attr('disabled', false);
			$j('#' + info).slideUp('fast');
		}
		else {
			$j('#' + input).css('background-color', '#F65B50');
			$j('#' + form + ' input[type="submit"]').attr('disabled', true);
			$j('#' + form + ' input[type="image"]').attr('disabled', true);
			$j('#' + info).slideDown('fast');
		}
	});
}

function filterCaptchaInput(input) {
	if (isEmpty(input)) { input = 'captchaText'; }
	
	$j('#' + input).val($j('#' + input).val().replace(/[^a-z]/i, ''));
}

function isEmail(email) { return /^[a-z0-9_\-\.]+@([a-z0-9\-]+\.)+[a-z]{2,4}$/i.test(email); }

function isPhoneNumber(number) {
	if (isEmpty(number) || number.length != phoneNumLength) { return false; }
	var numArray = number.split('');
	var firstNum = numArray[0];
	if (firstNum.search(phoneNumPattern) != -1) { return true; }
	else { return false; }
}

function cleanNumberField() { this.value = (this.value.replace(/[^\d]+/g, '')).substr(0, 8); }

function isFax(number) {
	if (isEmpty(number) || number.length != faxNumLength) { return false; }
	var numArray = number.split('');
	var firstNum = numArray[0];
	
	if (firstNum.search(faxNumPattern) != -1) { return true; }
	else { return false; }
}

function isLineNumber(number) {
	if (isNumber(number) && number.length == lineNumLength) { return true; }
	else { return false; }
}

// isUrl function (modified) - source: http://regexlib.com/REDetails.aspx?regexp_id=96
function isUrl(url) {
	if (isEmpty(url)) { return false; }
	
	return /^((http|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?$/.test(url);
}

function filterInput(selector, regex) {
	$j(selector).keyup(function() { $j(this).val($j(this).val().replace(regex, '')); });
}

function isNumber(v) { return (!(isEmpty(v) || isNaN(v))); }

/*

^(http|ftp|https):\/\/[a-zA-Z_0-9\-_]+(\.[a-zA-Z_0-9\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?$
^(http|ftp|https):\/\/[_\w\-]+(\.[_\w\-]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?$

*/

function sendPassword() {
	$j('#passwordPanel').slideUp('fast');
	$j('#passwordPanel').load($urlPrefix + 'inc/send.password.php', function() {
		loadCaptcha('sendPasswordForm', 'sendPasswordCaptcha', 'sendPasswordCaptchaText');
		$j('#sendPasswordCaptchaText').keyup(function() {
			clearTimeout($timer);
			$timer = setTimeout("checkCaptchaText('sendPasswordForm', 'sendPasswordCaptchaText')", 500);
		});
		var options = {
			url: $urlPrefix + 'inc/send.password.php',
			target: '#passwordPanel',
			beforeSubmit: function() {
				if (isEmpty(v('sendPasswordEmail'))) {
					alert(lxMainMessages['missingEmail']);
					return false;
				}
				return true;
			}
		};
		$j('#sendPasswordForm').ajaxForm(options);
		$j('#passwordPanel').slideDown('fast');
	});
}

function changePassword() {
	$j('#passwordPanel').slideUp('fast');
	$j('#passwordPanel').load($urlPrefix + 'inc/change.password.php', function() {
		loadCaptcha('changePasswordForm', 'changePasswordCaptcha', 'changePasswordCaptchaText');
		$j('#changePasswordCaptchaText').keyup(function() {
			clearTimeout($timer);
			$timer = setTimeout("checkCaptchaText('changePasswordForm', 'changePasswordCaptchaText')", 500);
		});
		var options = {
			url: $urlPrefix + 'inc/change.password.php',
			target: '#passwordPanel',
			beforeSubmit: function() {
				if (isEmpty(v('currentPassword'))) {
					alert(lxMainMessages['missingCurrentPassword']);
					return false;
				}
				if (isEmpty(v('newPassword'))) {
					alert(lxMainMessages['missingNewPassword']);
					return false;
				}
				if (isEmpty(v('confirmPassword'))) {
					alert('Por favor confirme su nueva contraseņa.');
					return false;
				}
				if (v('newPassword') != v('confirmPassword')) {
					alert(lxMainMessages['passwordMismatch']);
					return false;
				}
				return true;
			}
		};
		$j('#changePasswordForm').ajaxForm(options);
		$j('#passwordPanel').slideDown('fast');
	});
}

function hidePasswordPanel(delay) {
	if (isEmpty(delay)) { delay = 0; }
	setTimeout("$j('#passwordPanel').slideUp('fast');", delay);
}

function updateTimeDisplay() {
	if (isEmpty($msDifference)) {
		setTimeout('updateTimeDisplay();', 1000);
		return;
	}
	
	var now = new Date();
	now.setTime(now.getTime() - $msDifference);
	
	var nday = now.getUTCDay();
	switch (nday) {
	case 0:
		var day = lxMainMessages['Sunday'];
		break;
	case 1:
		var day = lxMainMessages['Monday'];
		break;
	case 2:
		var day = lxMainMessages['Tuesday'];
		break;
	case 3:
		var day = lxMainMessages['Wednesday'];
		break;
	case 4:
		var day = lxMainMessages['Thursday'];
		break;
	case 5:
		var day = lxMainMessages['Friday'];
		break;
	case 6:
		var day = lxMainMessages['Saturday'];
		break;
	}
	
	var dayOfMonth = now.getUTCDate();
	dayOfMonth = zeroPad(dayOfMonth, 2);
	var month = now.getUTCMonth() + 1;
	month = zeroPad(month, 2);
	var year = now.getUTCFullYear();
	if (lang == 'en') var date = month + '/' + dayOfMonth + '/' + year;
	else var date = dayOfMonth + '/' + month + '/' + year;
	
	var hour = now.getUTCHours();
	if (hour < 12) {
		var suffix = 'AM';
	} else {
		var suffix = 'PM';
		hour -= 12;
	}
	if (hour == 0) { hour = 12; }
	hour = zeroPad(hour, 2);
	var minutes = now.getUTCMinutes();
	minutes = zeroPad(minutes, 2);
	if ($showColon) {
		var time = hour + ':' + minutes + ' ' + suffix;
		$showColon = false;
	} else {
		var time = hour + ' ' + minutes + ' ' + suffix;
		$showColon = true;
	}
	$j('#timeDisplay .day').text(day);
	$j('#timeDisplay .date').text(date);
	$j('#timeDisplay .time').text(time);
	
	setTimeout('updateTimeDisplay();', 1000);
}

function setUnixTime() {
	$j.get('/inc/time.php', function(data) {
		$unixTime = data * 1;
		var d = new Date();
		$msDifference = d.getTime() - $unixTime * 1000;
	});
}

function zeroPad(string, finalLength, right) {
	string = string.toString();
	
	var padLength = finalLength - string.length;
	if (padLength < 0) { return string; }
	var pad = '';
	
	while (padLength--) { pad += '0'; }
	
	if (right) { string += pad; }
	else { string = pad + string; }
	
	return string;
}

function searchFormHandler() {
	var keyword = $j('#searchKeyword').val();
	if ($lang == 'en') location.href = '/search/' + keyword + '/index.html';
	else location.href = '/buscador/' + keyword + '/index.html';
	
	return false;
}
