var HelpPage = Class.create();
HelpPage.prototype = {
	initialize : function(){
		this.helpCookies = new Cookies();
		this.helpCookies.setCookieName('/support/');
		this.flashError = false;
		
		if(DetectFlashVer(9, 0, 115) == false){
			this.flashError = true;
		}		
		
		if (!this.checkFlashError() && navigator.appVersion.indexOf("Mac")!=-1) {
			this.isMac = true;
			this.toggleOS();
		}
	},
	
	toggleOS : function(){
		if(this.isMac && $('VideoWin') != null ){
			$('VideoWin', 'VideoMac').invoke('toggle');			
		}
	},
	
	checkFlashError : function() {
		if(this.flashError && $('VideoError') != null){
			$('VideoError').show();
			
			if ($('VideoWin') != null){
				$('VideoWin').hide();
			}
			 
			if($('VideoMac') != null) {
				$('VideoMac').hide();				
			}
		}
		
		return this.flashError;
	},
	
	load : function(helpItemID){
		
		this.helpCookies.read();
		
		var helpItems = $$('a.helpItem');
		for (var i=0; i < helpItems.length; i++) {
			if (this.helpCookies.data.indexOf(helpItems[i].identify()) > -1){
				if (!helpItems[i].hasClassName('visited')) {
					helpItems[i].addClassName('visited');
				}
			} 
		};
		
		if (helpItemID != null && helpItemID != '') {
			this.helpCookies.set(helpItemID);
			$(helpItemID).addClassName('selected');
			if (!$(helpItemID).hasClassName('visited')) {
				$(helpItemID).removeClassName('visited');
			}
		};				
	},
	
	showPage : function(category, item, isVideo){
		if(category != null && item != null){
			this.helpCookies.set(item);
			if (!BrowserDetect.isBuggyBrowser() && !$(item).hasClassName('visited')){
				$(item).addClassName('visited');
			}
			
			var selectedHelpItems = $$('.helpTopics a.selected');
			for (var i=0; i < selectedHelpItems.length; i++) {
				selectedHelpItems[i].removeClassName('selected');
			};
			$(item).addClassName('selected');
			
			if(category == 'faq'){
				if (isVideo) {
					new Ajax.Updater({ success: 'FAQItem' }, '/support/faqpart/' + item + '-video', { method: 'get', onComplete: function(transport) {
					    if(!document.help.checkFlashError()){
							document.help.toggleOS();
						}
						document.help.updateTitle('#FAQItem');
					} });
				}
				else {
					new Ajax.Updater({ success: 'FAQItem' }, '/support/faqpart/' + item,  { method: 'get', onComplete: function(transport) {
						document.help.updateTitle('#FAQItem');
						} });
				}
			}
			else{
				if (isVideo) {
					new Ajax.Updater({ success: 'HelpItem' }, '/support/helppart/' + item + '-video', { method: 'get', evalJS: 'false', onComplete: function(transport) {
					    if(!document.help.checkFlashError()){
							document.help.toggleOS();
						}
						document.help.updateTitle('#HelpItem');
					} });
				}
				else {
					new Ajax.Updater({ success: 'HelpItem' }, '/support/helppart/' + item , { method: 'get', onComplete: function(transport) {
						document.help.updateTitle('#HelpItem');
						} });
				}
			}
			
			
			new Effect.ScrollTo('Title');
		}
	},  
	
	updateTitle : function(itemID){
		var itemTitles = $$(itemID + ' h4');
		if (itemTitles.length > 0) {
			document.title = itemTitles[0].innerHTML + ' - Wizzgo';
		};
	}
}


var FormChecker = Class.create();
FormChecker.prototype = {
	initialize : function(){
		this.timeout = null;
		this.sendTimeout = null;
		this.mailError = false;
	},

 	emailCheckFailed : function () {
		if (this.timeout != null) {
			clearTimeout(this.timeout);
		}
		
		$('ContactFormMailLoading').hide();
		
	},

	emailCheckSuccess : function (t) {
		if (this.timeout != null) {
			clearTimeout(this.timeout);
		}
		$('ContactFormMailLoading').hide();
		
		if (t.responseText !== '') {
			this.mailError = true;
			this.showEmailError();
		}
		else {
			this.mailError = false;
		}	
	},
	
	showEmailError : function(){
		$('ContactFormMailLoading').hide();
		new Effect.Highlight('ContactFormMail', {startcolor: '#e90a11', queue: { position: 'end', scope: 'showEmailError', limit:1 }});
		$('ContactFormMailMessage').addClassName('errorMessage');
		$('ContactFormMailMessage').update('E-mail non valide');
	},

	checkEmailValue : function(){
		
		$('ContactFormMailMessage').update('');
		$('ContactFormMailMessage').removeClassName('errorMessage');
		$('ContactFormMailMessage').removeClassName('successMessage');
		var email = $F($('ContactFormMail'));
		if (!email.empty()) {
			this.timeout = setTimeout(function(){$('ContactFormMailLoading').show();}, 100);
			new Ajax.Request('/checkEmail.php?email=' + email, { method:'get', onFailure: this.emailCheckFailed.bind(this), onSuccess : this.emailCheckSuccess.bind(this)});
		}
	},
	
	resetMessages : function(){
		$('ContactFormMailMessage', 'ContactFormNameMessage', 'ContactFormMessageMessage', 'ContactFormSendMessage').invoke('update', '').invoke('removeClassName', 'errorMessage').invoke('removeClassName', 'successMessage');
	},
	
	sendMessage : function(){
	
		this.resetMessages();

		var name = $F($('ContactFormName'));
		var email = $F($('ContactFormMail'));
		var message = $F($('ContactFormMessage'));
		var media = '';

		var error = false;
		
		if ($('ContactFormMedia') != null) {
			media = $F($('ContactFormMedia'));
			if (media.length < 2) {
				new Effect.Highlight('ContactFormMedia', {startcolor: '#e90a11', queue: { position: 'end', scope: 'ContactFormMediaError', limit:1 }});
				error = true;
			}
		}
		
		if (name.length < 2) {
			new Effect.Highlight('ContactFormName', {startcolor: '#e90a11', queue: { position: 'end', scope: 'ContactFormNameError', limit:1 }});
			$('ContactFormNameMessage').addClassName('errorMessage');
			$('ContactFormNameMessage').update('Nom trop court');
			error = true;
		}
		
		if (message.length < 5) {
			new Effect.Highlight('ContactFormMessage', {startcolor: '#e90a11', queue: { position: 'end', scope: 'ContactFormMessageError', limit:1 }});
			$('ContactFormMessageMessage').addClassName('errorMessage');
			error = true;
		}
		
		if (email.length < 7) {
			this.showEmailError();
			error = true;
		}
		
		if (this.mailError) {error = true;}
		
		if(!error){
			$('ContactFormSend').disabled = true;
			var sendParameters = new Hash();
			sendParameters.set('email', email); 
			sendParameters.set('name', name); 
			sendParameters.set('msg', message); 
			if ($('ContactFormSubject') != null) {
				sendParameters.set('subject', $F($('ContactFormSubject')) + ' - ' + $F($('ContactFormObject'))); 
			}
			else{
				sendParameters.set('subject', $F($('ContactFormObject'))); 
			}
			
			if ($('ContactFormMediaMessage')  != null) {
				sendParameters.set('press', '1'); 
				sendParameters.set('media', media);
			};
			
			new Ajax.Request('/sendMessage.php', { method:'post', parameters: sendParameters, onFailure: this.sendEmailFailed.bind(this), onSuccess : this.sendEmailSuccess.bind(this)});
		}
	},
	
	sendEmailFailed : function () {
		if (this.sendTimeout != null) {
			clearTimeout(this.sendTimeout);
		}
		
		$('ContactFormSendLoading').hide();
		this.showSendError();
	},

	sendEmailSuccess : function (t) {
		if (this.sendTimeout != null) {
			clearTimeout(this.sendTimeout);
		}
		
		$('ContactFormSendLoading').hide();
		$('ContactFormSend').disabled = false;
		
		if (t.responseText !== '') {
			this.mailError = true;
			this.showSendError();
		}
		else {
			$('ContactFormSend').hide();
			$('ContactFormSendMessage').addClassName('informationMessage');
			$('ContactFormSendMessage').update('Message envoy&eacute; ! Nous vous remercions.');
		}	
	},

	showSendError : function(){
		$('ContactFormSendLoading').hide();
		new Effect.Highlight('ContactFormSendMessage', {startcolor: '#e90a11', queue: { position: 'end', scope: 'showSendError', limit:1 }});
		$('ContactFormSendMessage').addClassName('errorMessage');
		$('ContactFormSendMessage').update('Une erreur est survenue lors de l\'envoi du message. Veuillez r&eacute;essayez dans un instant.');
	}
}


Init = function() {
	document.help = new HelpPage();
	document.formChecker = new FormChecker();
	
};
Event.onDOMReady(Init);