var COOKIE_REMEMBER = 'remember';
var COOKIE_USERNAME = 'username';
var COOKIE_PASSWORD = 'password';

var MAX_PHOTOS = 10;

var PAGE_INDEX = '/index.php';
var PAGE_VIEW_ARTICLE = '/article.php';
var PAGE_MY_ARTICLES = '/myArticles.php';
var PAGE_FORM_ARTICLE = '/formArticle.php';
var PAGE_SEARCH = '/search.php';
var PAGE_MY_ALERTS = '/myAlerts.php';
var PAGE_FORM_ALERT = '/formAlert.php';
var PAGE_MY_ADS = '/myAds.php';
var PAGE_FORM_AD = '/formAd.php';
var PAGE_COMPARE = '/compare.php';
var PAGE_PAYMENT = '/payment.php';
var PAGE_PRINT = '/print.php';
var PAGE_TO_FRIEND = '/toFriend.php';

var AJAX_PATH = '/ajax/';

var menuItemObject = 0;
var menuItemObject2 = 0;

function resizeFrame(){
    var h = $(document).height();
	
	var headerH = 0;
	if($('#mainHeader').length > 0){
		headerH = parseInt($('#mainHeader').outerHeight());
	}

	var bannerH = 0;
	if($('#mainBanner').length > 0){
		bannerH = parseInt($('#mainBanner').outerHeight());
	}
	
	var menuH = 0;
	if($('#mainMenu').length > 0){
		menuH = parseInt($('#mainMenu').outerHeight());
	}
	
	var languageH = 0;
	if($('#mainLanguages').length > 0){
		languageH = parseInt($('#mainLanguages').outerHeight());
	}
	
	var footerH = 0;
	if($('#mainFooter').length > 0){
		footerH = parseInt($('#mainFooter').outerHeight());
	}

	var newH = h - headerH - bannerH - menuH - languageH - footerH;
	if($("#mainContent").height() < newH){
		$("#mainContent").css('min-height', newH + "px");
	}
}

	/* ================================================================ 
This copyright notice must be kept untouched in the stylesheet at 
all times.

The original version of this script and the associated (x)html
is available at http://www.stunicholls.com/menu/pro_drop_1.html
Copyright (c) 2005-2007 Stu Nicholls. All rights reserved.
This script and the associated (x)html may be modified in any 
way to fit your requirements.
=================================================================== */
stuHover = function() {
	var cssRule;
	var newSelector;
	for (var i = 0; i < document.styleSheets.length; i++)
		for (var x = 0; x < document.styleSheets[i].rules.length ; x++)
		{
			cssRule = document.styleSheets[i].rules[x];
			if (cssRule.selectorText.indexOf("LI:hover") != -1)
			{
				 newSelector = cssRule.selectorText.replace(/LI:hover/gi, "LI.iehover");
				document.styleSheets[i].addRule(newSelector , cssRule.style.cssText);
			}
		}
	var getElm = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<getElm.length; i++) {
		getElm[i].onmouseover=function() {
			this.className+=" iehover";
		}
		getElm[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}

stuHover2 = function() {
	var cssRule;
	var newSelector;
	for (var i = 0; i < document.styleSheets.length; i++)
		for (var x = 0; x < document.styleSheets[i].rules.length ; x++)
		{
			cssRule = document.styleSheets[i].rules[x];
			if (cssRule.selectorText.indexOf("LI:hover") != -1)
			{
				 newSelector = cssRule.selectorText.replace(/LI:hover/gi, "LI.iehover");
				document.styleSheets[i].addRule(newSelector , cssRule.style.cssText);
			}
		}
	var getElm = document.getElementById("conceptNewNavigation").getElementsByTagName("LI");
	for (var i=0; i<getElm.length; i++) {
		getElm[i].onmouseover=function() {
			this.className+=" iehover";
		}
		getElm[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}

function setEvents(){
	$.event.add(window, "load", resizeFrame);
	$.event.add(window, "resize", resizeFrame);

	$(document).ajaxComplete(function(event,request, settings){
		resizeFrame;
	}); 
	
	if (window.attachEvent) window.attachEvent("onload", stuHover);
	
	if (window.attachEvent) window.attachEvent("onload", stuHover2);
	
	$('#nav').mouseover(function(){
		$('#txtSearch').blur();
	});
	$('#nav').mouseout(function(){
		$('#txtSearch').focus();
	});
	
	$('.changeLanguage').click(function(){
		var infos = $(this).attr('id').split('-');
		$.ajax({
			url: AJAX_PATH+"changeLanguage.php",
			data: {uid:infos[1]},
			async: false,
			type: "POST"
		});
	});
	
	$('#btnLogin').click(function(){
		login();
	});
	
	$('#btnRegister').click(function(){
		register();
	});
	
	$('#logout').click(function(){
		logout();
		return false;
	});
	
	$('#txtUsernameLogin, #txtPasswordLogin').keypress(function(e){
		var code;
		if(!e){
			var e = window.event;
		}
		if(e.keyCode){
			code = e.keyCode;
		}
		else if(e.which){
			code = e.which;
		}
		if(code==13){
			login();
		}
	});
}

function checkLogin(){
	var value = false;
	$.ajax({
		url: AJAX_PATH+"login/checkLogin.php",
		async: false,
		type: "POST",
		success: function(data){
			if(data == 0){
				logout();
			}
			else{
				value = true;
			}
		}
	});
	return value;
}

function login(){
	clearFormRegister();
	if(validateFormLogin()){
		var username = $('#txtUsernameLogin').attr('value');
		var password = $('#txtPasswordLogin').attr('value');
		
		var remember = 0;
		if($('#chkRemember').is(':checked')){
			remember = 1;
		}
		
		$.ajax({
			url: AJAX_PATH+"login/login.php",
			data: ({
				username:username,
				password:password
			}),
			async: false,
			type: "POST",
			success: function(data){
				$('.message').hide();
				var infos = data.split("|");
				switch(parseInt(infos[0])){
					case 0:
						$.cookie(COOKIE_REMEMBER, remember, { path: '/', expires: 30 });
						if(remember){
							$.cookie(COOKIE_USERNAME, username, { path: '/', expires: 30 });
							$.cookie(COOKIE_PASSWORD, password, { path: '/', expires: 30 });
						}
						window.location.reload();
						break;
					case 1: 
						$('#messageLoginError').show();
						break;
					case 2: 
						$('#messageLoginErrorActivate').show();
						break;	
					case 3: 
						$('#messageLoginErrorDisable').show();
						break;	
				}
			}
		});
	}
}

function validateFormLogin(){
	var username = $('#txtUsernameLogin').attr('value');
	var password = $('#txtPasswordLogin').attr('value');
	var valid = true;
	
	$('.message').hide();
	
	if(username == '' || password == ''){
		valid = false;
		$('#messageLoginError').show();
	}
	
	return valid;
}

function clearFormLogin(){
	$('#txtUsernameLogin').attr('value','');
	$('#txtPasswordLogin').attr('value','');
}

function register(){
	clearFormLogin();
	if(validateFormRegister()){
		var username = $('#txtUsernameRegister').attr('value');
		var password = $('#txtPasswordRegister').attr('value');
		var email = $('#txtEmailRegister').attr('value');
		
		var terms = false;
		if($('#chkTerms').is(':checked')){
			terms = true;
		}
		
		if(terms){
			$.ajax({
				url: AJAX_PATH+"register/register.php",
				data: {
					username:username,
					password:password,
					email:email
				},
				async: false,
				type: "POST",
				success: function(data){
					$('.message').hide();
					var infos = data.split('|');
					switch(parseInt(infos[0])){
						case 0:
							$('#messageRegisterSuccess').show();
							clearFormRegister();
							break;
						case 1:
							$('#messageRegisterError').show();
							break;
						case 2:
							$('#errorRegisterExistUsername').show();
							break;	
						case 3:
							$('#errorRegisterExistEmail').show();
							break;	
					}
				}
			});
		}
		else{
			$('#messageRegisterVerifyTerms').show();
		}
	}
}

function validateFormRegister(){
	var username = $('#txtUsernameRegister').attr('value');
	var password = $('#txtPasswordRegister').attr('value');
	var email = $('#txtEmailRegister').attr('value');
	var valid = true;
	
	$('.message').hide();
	
	if(username==''){
		valid = false;
		$('#errorRegisterEmptyUsername').show();
	}
	else if(!isValidUsername(username)){
		valid = false;
		$('.message').hide();
		$('#errorRegisterInvalidUsername').show();
		return valid;
	}
	
	if(password==''){
		valid = false;
		$('#errorRegisterEmptyPassword').show();
	}
	else if(!isValidPassword(password)){
		valid = false;
		$('.message').hide();
		$('#errorRegisterInvalidPassword').show();
		return valid;
	}
	
	if(email==''){
		valid = false;
		$('#errorRegisterEmptyEmail').show();
	}
	else if(!isEmail(email)){
		valid = false;
		$('#errorRegisterNotEmail').show();
	}
	
	if(valid == false){
		$('#messageError').show();
	}

	return valid;
}

function clearFormRegister(){
	$('#txtUsernameRegister').attr('value','');
	$('#txtPasswordRegister').attr('value','');
	$('#txtEmailRegister').attr('value','');
	$('#chkTerms').removeAttr('checked');
}

function logout(){
	$.ajax({
		url: AJAX_PATH+"login/logout.php",
		async: false,
		type: "POST",
		success: function(data){
			//window.location.reload(); 
			document.location.href = PAGE_INDEX;
		}
	});
}

function showLogin(){
	$('#dialogNotConnected').dialog({
		resizable: false,
		draggable: false,
		autoOpen: true,
		height:"auto",
		width:350,
		modal: true,
		close: function(ev, ui) {
			$(this).dialog("destroy");
		},
		buttons: {
			"Non": function(){
				$(this).dialog('destroy');
			},
			"Oui": function(){
				$(this).dialog('destroy');
				$.scrollTo($('#toppanel'),800);
				$('#open').click();
			}
		}
	});
}

function showMessage(id){
	$('#'+id).dialog({
		resizable: false,
		draggable: false,
		autoOpen: true,
		height:"auto",
		width:350,
		modal: true,
		close: function(ev, ui) {
			$(this).dialog("destroy");
		},
		buttons: {
			"Ok": function(){
				$(this).dialog('destroy');
			}
		}
	});
}

//ARTICLE -> SEND TO A FRIEND
function sendToFriend(element){
	var infos = element.attr('id').split('-');
	document.location.href = PAGE_TO_FRIEND + '?uid=' + infos[1];
}

function printThisArticle(element){	
	var infos = element.attr('id').split('-');
	document.location.href = PAGE_PRINT + '?uid=' + infos[1];
}

//FAVORITES AND COMPARATOR FUNCTIONS
function addFavorite(element){
	var infos = element.attr('id').split('-');
	$.ajax({
		url: AJAX_PATH+'favorite/addFavorite.php',
		async: false,
		type: 'POST',
		data: {
			uid:infos[1]
		},
		success: function(data){
			switch(parseInt(data)){
				case 0:
					changeStatusFavorite($('#favorite-'+infos[1]));
					showMessage('dialogAddFavoriteSuccess');
					break;
				case 1:
					showLogin();
					break;
				case 2:
					showMessage('dialogFavoriteExist');
					break;
				case 3:
					showMessage('dialogFavoriteError');
					break;
			}
		}
	});
}

function removeFavorite(element){
	var infos = element.attr('id').split('-');
	$.ajax({
		url: AJAX_PATH+'favorite/deleteFavorite.php',
		async: false,
		type: 'POST',
		data: {
			uid:infos[1]
		},
		success: function(data){
			switch(parseInt(data)){
				case 0:
					changeStatusFavorite($('#favorite-'+infos[1]));
					showMessage('dialogRemoveFavoriteSuccess');
					break;
				case 1:
					showLogin();
					break;
				case 2:
					showMessage('dialogFavoriteNotExist');
					break;
				case 3:
					showMessage('dialogFavoriteError');
					break;
			}
		}
	});
}

function changeStatusFavorite(element){
	element.unbind('click');
	if(element.hasClass('addFavorite')){
		element.removeClass('addFavorite');
		element.addClass('removeFavorite');
		element.html($('#removeFavoriteContent').html());
		element.click(function(){
			removeFavorite(element);
		});
	}
	else if(element.hasClass('removeFavorite')){
		element.removeClass('removeFavorite');
		element.addClass('addFavorite');
		element.html($('#addFavoriteContent').html());
		element.click(function(){
			addFavorite(element);
		});
	}
}


function addComparator(element){
	var infos = element.attr('id').split('-');
	changeStatusArticle(infos[1],false);
}

function removeComparator(element){
	var infos = element.attr('id').split('-');
	changeStatusArticle(infos[1],false);
}

function changeStatusComparator(element){
	element.unbind('click');
	if(element.hasClass('addComparator')){
		element.removeClass('addComparator');
		element.addClass('removeComparator');
		element.html($('#removeComparatorContent').html());
		element.click(function(){
			removeComparator(element);
		});
	}
	else if(element.hasClass('removeComparator')){
		element.removeClass('removeComparator');
		element.addClass('addComparator');
		element.html($('#addComparatorContent').html());
		element.click(function(){
			addComparator(element);
		});
	}
}

function changeStatusArticle(uid,clear){
	if(clear){
		clearComparator();
	}

	changeStatusComparator($('#compare-'+uid));
	if($.cookie('goonzy_comparator') && !clear){
		var items = $.cookie('goonzy_comparator').split('|');
		if(in_array(uid,items)){
			removeItem(uid,items);
			showMessage('dialogRemoveComparatorSuccess');
		}
		else{
			addItem(uid,items);
			showMessage('dialogAddComparatorSuccess');
		}
		$.cookie('goonzy_comparator',items.join('|'),{path:'/',expires:3600});
	}
	else{
		showMessage('dialogAddComparatorSuccess');
		$.cookie('goonzy_comparator',uid,{path:'/',expires:3600});
	}
	
	var result = sizeComparator();
	$('#comparatorValue').html(result);
}

function sizeComparator(){
	if($.cookie('goonzy_comparator') && $.cookie('goonzy_comparator').length > 0){
		return $.cookie('goonzy_comparator').split('|').length;
	}
	else{
		return 0;
	}
}

function clearComparator(){
	$('.removeComparator').each(function(){
		changeStatusComparator($(this));
	});
	
	$.cookie('goonzy_comparator','',{path:'/',expires:3600});
	
	var result = sizeComparator();
	$('#comparatorValue').html(result);
}
//END

function in_array(p_val,array){
	for(var i = 0, l = array.length; i < l; i++){
		if(array[i] == p_val){
			return true;
		}
	}
	return false;
}

function removeItem(p_val,array){
	for(var i = 0, l = array.length; i < l; i++){
		if(array[i] == p_val){
			array.splice(i, 1);
			break;
		}
	}
}

function addItem(p_val,array){
	array[array.length] = p_val;
} 