var Sexy = null;
var webpath = '/';
var webdirectory = '';

// - Homepage - Liste des conseillers -
var page = 1;
var display = '';
var search_name = '';
var orderby = 'status';
var filterby = '';

var hide_element = new Array();
var show_element = new Array();

var reloadListFunction = null;
var reloadList = function() {
	$('loading').setStyle('visibility', 'visible');
	var jsonRequest = new Request.JSON({
		url: webpath + 'index.php/page/listing/',
		onComplete: function(result) {
			if($('listing')) $('listing').set('html', result.listing);
			if($('pages-top')) $('pages-top').set('html', result.pagination_top);
			if($('pages-btm')) $('pages-btm').set('html', result.pagination_btm);
			
			TB_init(); //Réinitialise l'effet Smoothbox sur les formulaires d'alerte e-mail
			reloadListFunction = $clear(reloadListFunction);
			Site.pagination();
			Site.refreshList();
			Site.toolTips();
			$('loading').setStyle('visibility', 'hidden');
		}
	}).get({
		'l': 'fr',
		'page': page,
		'order': orderby,
		'filter': filterby,
		'display': display,
		'search_name': search_name,
		'category_id': $("category-id").value
	});
}
// - Homepage -

// - Remaining time - Sidebox -
var myRemainingTime = null;
// - Remaining time -

// - Detail - Update status -
var myReloadDetail = null;
var myReloadTime = null;
// - Detail -

// - Detail - Slideshow menu -
var move = false;
var speed = 10;
// - Detail -

var Site = {
    start: function() {
		if($('webpath')) webpath = $('webpath').value;
		if($('webdirectory')) webdirectory = $('webdirectory').value;
		
		if ($('form_login')){
			Site.initLogin();
		}
		if ($('homepage')) {
			Site.refreshList();
			Site.displayList();
			Site.filterList();
			Site.pagination();
			Site.searchForm();
		}
		if ($('conseiller-detail')){
			Site.refreshDetail();
			Site.refreshTime();
			Site.bookmark();
		}
		if ($('calls')){
			Site.feedback();
		}
		if ($('review')){
			myCal = new Calendar({ date: 'd-m-Y' }, { direction: -1, tweak: { x: 6, y: 0 }});
		}
		if ($('report')){
			myCal = new Calendar({ date: 'd-m-Y' }, { direction: -1, tweak: { x: 6, y: 0 }});
		}
		if ($('gateway')){
			Site.paymentOptions();
		}
		if ($('slide-wrapper')) Site.slideMenu();
		Site.spinner();
		
		if ($('sidebox-account')){
			Site.refreshRemainingTime();
			Site.initRemainingTimeRefresh();
		}
		
		if($('anchor')){
			var myFx = new Fx.Scroll(window, {
				duration: 2000,
				x: 0
			}).toElement($('anchor'), 'y');
		}
		
		Site.toolTips();
	},

	spinner: function(){
		$$('.spinner').each(function(el) {
			el.addEvent('click', function(event) {
				$(el.getProperty('id') + '-spinner').setStyle('visibility', 'visible');
			});
		});
	},

	filterList: function(){
		$$('.orderby').each(function(el) {
			el.addEvent('click', function(event) {
				orderby = el.getProperty('id').substring(6);
				reloadList();
				
				$('display-order').set('html', el.get('html'));
				
				Site.clearActive('orderby');
				el.addClass('active');
			});
		});
		
		$$('.filterby').each(function(el) {
			el.addEvent('click', function(event) {
				page = 1;
				filterby = el.getProperty('id').substring(7);
				reloadList();
				
				$('display-filter').set('html', el.get('html'));
				
				Site.clearActive('filterby');
				el.addClass('active');
			});
		});
		
		$$('.sort-action').each (function(el) {
			if(el.hasClass('sort-selection')) var tag = el.getProperty('id').substring(10);
			else var tag = el.getProperty('id').substring(5);
			var list = $('list-' + tag);
			
			el.addEvent('mouseenter', function(event) {
				if(el.getProperty('id') == 'list-' + tag){
					$clear(hide_element[tag]);
					list.setStyle('visibility', 'visible');
				} else {
					show_element[tag] = (
						function() {
							$clear(hide_element[el.getProperty('el')]);
							list.setStyle('visibility', 'visible');
						}
					).delay(200);
				}
			});
			el.addEvent('mouseleave', function(event) {
				$clear(show_element[tag]);
				if(el.getProperty('id') == 'list-' + tag){
					hide_element[tag] = (
						function(){
							list.setStyle('visibility', 'hidden');
						}
					).delay(400);
				}else{
					list.setStyle('visibility', 'hidden');
				}
			});
		});
	},
	
	clearActive: function(tag){
		$$('.' + tag).each(function(el) {
			el.removeClass('active');
		});
	},
	
	searchForm: function(){
		$('search-submit').addEvent('click', function(event) {
			page = 1;
			Site.setPage(page);
			search_name = $('search-name').value;
			reloadList();
		});
		$('search-name').addEvent('keydown', function(event) {
			if (event.key=="enter") { 
				page = 1;
				Site.setPage(page);
				search_name = $('search-name').value;
				reloadList();
			}
		});
		$$('.refresh').each(function(el) {
			el.addEvent('click', function(event) {
				reloadList();
			});
		});
	},
	
	displayList: function(){
		$$('.display').each(function(el) {
			el.addEvent('click', function(event) {
				Site.clearActive('display');
				el.addClass('active');
				display = el.getProperty('id').substring(8);
				reloadList();
      		});
		});
	},
	
	pagination: function(){
		if($('page-top-' + page)) $('page-top-' + page).addClass('active');
		if($('page-btm-' + page)) $('page-btm-' + page).addClass('active');
		
		$$('.pages').each(function(el) {
			el.addEvent('click', function(event) {
				page = el.getProperty('id').substring(9);
				reloadList();
				Site.setPage(page);
      		});
		});
	},
	
	setPage: function (page) {
		$$('.pages').each(function(el) {
			if(el.getProperty('id').substring(9) != page) el.removeClass('active');
			else el.addClass('active');
		});
	},
	
	refreshList: function () {
		//reloadListFunction = reloadList.pass(myvar).periodical(60000);
		reloadListFunction = reloadList.periodical(60000);
	},

	//Affichage du statut
    updateDetail: function(){
		var conseiller_id = $('conseiller-id').value;
		var jsonRequest = new Request.JSON({
			url: webpath + 'index.php/page/status/',
			onComplete: function(result) {
				$('conseiller-status').set('html', result.status);
				$('conseiller-back').set('html', result.back);
			}
		}).get({'id': conseiller_id});
    },
	//Affichage du temps de consultation
    updateTime: function(){
		var conseiller_id = $('conseiller-id').value;
		var jsonRequest = new Request.JSON({
			url: webpath + 'index.php/page/time/',
			onComplete: function(result) {
				$('conseiller-time').set('html', result.time);
			}
		}).get({'id': conseiller_id});
    },
	//Affichage du slide
    updateSlide: function(){
		var jsonRequest = new Request.JSON({
			url: webpath + 'index.php/page/slide/',
			onComplete: function(result) {
				$('slide').set('html', result.html);
			}
		}).get();
    },
	//Affichage des propositions
    updateProposal: function(){
		if($('proposals')) {
			var conseiller_id = $('conseiller-id').value;
			var jsonRequest = new Request.JSON({
				url: webpath + 'index.php/page/proposals/',
				onComplete: function(result) {
					$('proposals-container').set('html', result.html);
				}
			}).get({'id': conseiller_id});
		}
    },
	//Affichage du temps de consultation restant du membre
    updateRemainingTime: function(){
		var jsonRequest = new Request.JSON({
			url: webpath + 'index.php/page/remaining_time/',
			onComplete: function(result) {
				$$('.remaining-time-container').each(function(el) {
					el.set('html', result.html);
					el.morph({'opacity': '1'});
				});
				Site.initRemainingTimeRefresh();
			}
		}).get();
    },
	//Initialisation des boutons de rafraichissement du temps de consultation restant
    initRemainingTimeRefresh: function(){
		$$('.remaining-time-refresh').each(function(el) {
			el.addEvent('click', function(event) {
				$$('.remaining-time-container').each(function(el) {
					el.set({'opacity': '0'});
				});
				Site.reloadRemainingTime();
			});
		});
    },
	
	//Affichage periodique du détail
	reloadDetail: function() {
		myReloadDetail = $clear(myReloadDetail);
		myReloadTime = $clear(myReloadTime);
		Site.updateDetail();
		Site.updateTime();
		Site.updateSlide();
		Site.updateProposal();
		Site.refreshDetail();
		Site.refreshTime();
	},
	refreshDetail: function () {
		myReloadDetail = Site.reloadDetail.periodical(60000);
	},
	
	//Mise à jour du temps de consultation
	updateChrono: function(){
		var hours = $('conseiller-hours').get('html').toInt();
		var minutes = $('conseiller-minutes').get('html').toInt();
		var seconds = $('conseiller-seconds').get('html').toInt();
		
		seconds++;
		if(seconds > 59){
			seconds -= 60;
			minutes++;
			if(minutes > 59){
				minutes -= 60;
				hours++;
			}
		}
		
		hours = hours.toString();
		minutes = minutes.toString();
		seconds = seconds.toString();
		
		$('conseiller-hours').set('html', ((hours.length <= 1) ? "0"+hours : hours));
		$('conseiller-minutes').set('html', ((minutes.length <= 1) ? "0"+minutes : minutes));
		$('conseiller-seconds').set('html', ((seconds.length <= 1) ? "0"+seconds : seconds));
	},
	//Affichage periodique du temps de consultation
	reloadTime: function(){
		myReloadTime = $clear(myReloadTime);
		if($('conseiller-hours')){
			Site.updateChrono();
			Site.refreshTime();
		}
	},
	refreshTime: function(){
		myReloadTime = Site.reloadTime.periodical(1000);
	},
	
	//Mise à jour du temps de consultation restant
	reloadRemainingTime: function(){
		myReloadRemainingTime = $clear(myReloadRemainingTime);
		Site.updateRemainingTime();
		Site.initRemainingTimeRefresh();
		Site.refreshRemainingTime();
	},
	refreshRemainingTime: function () {
		myReloadRemainingTime = Site.reloadRemainingTime.periodical(60000);
	},
	
	//Lien d'ajout aux favoris
	bookmark: function(){
		if($('bookmark')){
			$('bookmark').addEvent('click', function(event) {
				bookmarkurl = location.href;
				bookmarktitle = document.title;
				if (document.all) window.external.AddFavorite(bookmarkurl,bookmarktitle); //All
				else if (window.sidebar) window.sidebar.addPanel(bookmarktitle, bookmarkurl, ""); //Firefox
			});
		}
	},
	
    //Slide - scroll
    slideMenu: function (){
		//Positionne le menu au centre
		//var position = ($('slide-container').getCoordinates().width / 2) - ($('slide').getCoordinates().width / 2);
		var position = 0;
		$('slide').setStyle('left', position + "px");
		
		$('slide-right').addEvent('mouseover', function(event) {
			move = true;
			Site.slideRight('slide');
		});
		$('slide-right').addEvent('mouseout', function(event) {Site.slideStop();});
		$('slide-left').addEvent('mouseover', function(event) {
			move = true;
			Site.slideLeft('slide');
		});
		$('slide-left').addEvent('mouseout', function(event) {Site.slideStop();});
    },
    
    slideRight: function(obj) {
		var z = $(obj);
		var left = z.getStyle('left').toInt() - speed;
		var tolerance = 0;
		
		if(left < -(z.getCoordinates().width-$('slide-container').getCoordinates().width + tolerance)) left = -(z.getCoordinates().width-$('slide-container').getCoordinates().width + tolerance);
        z.setStyle('left', left + "px");
		
		if(move) setTimeout("Site.slideRight('"+obj+"')", 20); 
    },
    slideLeft: function(obj) {
        var z = $(obj);
		var left = z.getStyle('left').toInt() + speed;
		var tolerance = 0;
		
		if(left > tolerance) left = tolerance;
		z.setStyle('left', left + "px");
      	
		if(move) setTimeout ("Site.slideLeft('"+obj+"')", 20); 
    },
    slideSpeed: function() {speed = speed * 2;},
    slideStop: function(){
    	move = false;
    	speed = 10;
    },
	
	initAlert: function() {
		var alertForm = new AjaxForm ({
			form: $('form-alert'),		//Form element
			log: $('form-alert-error')	//Log element (Texte et image de retour)
		});
		
		alertForm.addEvent('responseSuccess', function(response) {
			//Ferme le formulaire dans Smoothbox
			TB_remove();
			//Affiche le message
			Sexy.info(response.message);
		});
	},
	
	initReview: function() {
		var reviewForm = new AjaxForm ({
			form: $('form-review'),		//Form element
			log: $('form-review-error') 		//Log element (Texte et image de retour)
		});
		
		reviewForm.addEvent('responseSuccess', function(response) {
			//Ferme le formulaire dans Smoothbox
			TB_remove();
			//Affiche le message
			Sexy.info(response.message, {
				onComplete: function(returnvalue){
					//Redirection sur la page des appels
					document.location.href = webpath + 'index.php/page/calls';
				}
			});
		});
	},
	
	initLogin: function(){
		$('form_login').addEvent('submit', function(evt) {
			new Event(evt).stop();
			Site.login();
		});
		$('login-submit').addEvent('click', function(evt){
			new Event(evt).stop();
			Site.login();
		});
	},
	
	login: function(){
		$('form_login').set('send', {
			onComplete: function(response) { 
				obj_response = JSON.decode(response);
				if (obj_response.success) {
					document.location.href = webpath + "index.php/page/account";
				} else {
					Sexy.error(obj_response.errors);
				}
			}.bind(this),
			method: 'post'
		});
		$('form_login').send();
	},
	
	feedback: function(){
		var title = $('label').value;
		$$('.feedback').each(function(el) {
			el.addEvent('click', function(event) {
				Sexy.confirm(title, {
					onComplete: function(returnvalue){
						if(returnvalue) {
							var container = el.getParent('.calls_feedback');
							var call_id = container.getProperty('id');
							var status = 0;
							if(el.hasClass('yes')) status = 1;
							var jsonRequest = new Request.JSON({
								url: webpath + 'index.php/page/feedback/',
								onComplete: function(result) {
									container.set('html', result.feedback);
								}
							}).get({'id': call_id, 'status': status});
						}
					}
				});
			});
		});
	},
	
	// Gateway functions
	paymentOptions: function(){
		Site.setPaymentMethod();
		$$('.payment_options').each(function(el) {
			el.addEvent('click', function(event) {
				method = el.getProperty('id').substring(7);
				$('method').value = method;
				
				//Contrôle la saisie de carte pour le methode Ogone
				if($('method').value != 'ogone' || $('brand').value != ''){
					$('form-gateway').submit();
				} else {
					Sexy.error($('message-error').get('html'));
				}
			});
		});
	},
	setPaymentMethod: function(){
		$$('.cb_type').each(function(el) {
			el.addEvent('click', function(event) {
				Site.resetMethodSelection();
				$('pm').value = el.getProperty('pm');
				$('brand').value = el.getProperty('brand');
				el.addClass('active');
			});
		});
	},
	resetMethodSelection: function(){
		$$('.cb_type').each(function(el) {
			el.removeClass('active');
		});
	},
	
	// General functions
	toolTips: function(){
		//store titles and text
		$$('.tips').each(function(element,index) {  
			var content = element.get('title');
			/*element.store('tip:title', '');  
			element.store('tip:text', content);*/
		});
		
		//create the tooltips
		var tipz = new Tips('.tips',{
			className: 'tool-tip',
			offsets: {'x': 10, 'y': -10},
			fixed: false,
			hideDelay: 50,
			showDelay: 50
		});
	}
	
	/*isValidEmail: function(strEmail){
        return /^([\w-+=_]+(?:\.[\w-+=_]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(strEmail) ? true : false;
    }*/
};

window.addEvent('domready', Site.start);
