// 
//  gallery-suggest.js
//  Suggest Form for HH Party Gallery
//  
//  Created by Victor Nguyen on 2009-03-01.
//  Copyright 2009 igloo. All rights reserved.
// 

window.addEvent('domready', function() { gallerySuggest.init(); });

var gallerySuggest = {

	settings: {
		recipient: 'stuff@thehothits.com',
		emailSubject: 'The%20Hot%20Hits%20Party%20Gallery%20Venue%20Suggestion'
	},
	
	activeRequest: null,
	
	ids: {
		wrap: 'suggest-wrap',
		form: 'suggest-form',
		loading: 'suggest-loading',
		complete: 'suggest-complete',
		resetlink: 'suggest-again'
	},
	
	init: function() {
		$(gallerySuggest.ids.form).addEvent('submit', function(e) {
			e = new Event(e).stop();
			gallerySuggest.submit();
		});
		
		$(gallerySuggest.ids.resetlink).addEvent('click', function(e) {
			e = new Event(e).stop();
			gallerySuggest.reset();
		});
	},
	
	submit: function() {
		// define form vars
		var suggestform = $(gallerySuggest.ids.form);
		var name = $(suggestform.fromName);
		var email = $(suggestform.fromEmail);
		var suggestion = $(suggestform.body);
		var formfields = [name, email, suggestion];
		
		// if valid, submit form
		if (gallerySuggest.validate([[name,'req'], [email,'email'], [suggestion,'req']])) {
			// console.log('form is valid!!!!');
			var compaction = suggestform.getProperty('action');
			var url = 'http://'+servername+compaction+'?subject='+gallerySuggest.settings.emailSubject+'&friendEmail='+gallerySuggest.settings.recipient+'&yourName='+name.value+'&yourEmail='+email.value+'&message='+suggestion.value;
			// url = 'http://'+servername+'/gallery/vote';
			console.log(url);
			
			if (gallerySuggest.activeRequest) gallerySuggest.activeRequest.cancel();
			
			gallerySuggest.activeRequest = new Ajax (url, {
				method: 'get',
				onRequest: _displayLoading,
				onComplete: function() {
					gallerySuggest.activeRequest = null;
					_displayThanks.delay(500);
				}
			});
			
			gallerySuggest.activeRequest.request();
			
		} else { // else validate on keyup
			// console.log('FORM IS NOT VALID BIATCH');
			for (var i=0; i < formfields.length; i++) {
				formfields[i].addEvent('keyup', function() {
					gallerySuggest.validate([[name,'req'], [email,'email'], [suggestion,'req']]);
				});
			};
		
		}
		
		function _displayLoading() {
			// console.log('sending comp entry');
			$(gallerySuggest.ids.wrap).style.display = 'none';
			$(gallerySuggest.ids.loading).style.display = 'block';
		}
		
		function _displayThanks() {
			// console.log('display thanks msg!');
			$(gallerySuggest.ids.loading).style.display = 'none';
			$(gallerySuggest.ids.complete).style.display = 'block';
		}
		
	},
	
	validate: function(field) {
		var isitvalid = true; // valid until proven false
		
		for (var i=0; i < field.length; i++) {
			var value = field[i][0].value;
			var validation = field[i][1];
			
			if (validation == 'req') {
				if (!_validRequired(value)) {
					isitvalid = false;
					_displayError(field[i][0]);
				} else {
					_removeError(field[i][0]);
				}
			} else if (validation == 'email') {
				if (!_validEmail(value)) {
					isitvalid = false;
					_displayError(field[i][0]);
				} else {
					_removeError(field[i][0]);
				}
			}
			
		};
		
		function _validEmail(fielddata) {
			if (fielddata.test(/^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i)) return true;
		}
		
		function _validRequired(fielddata) {
			if (fielddata.test(/[^.*]/)) return true;
		}
		
		function _displayError(field) {
			field.addClass('error');
			var errorimg = field.getPrevious();
			var label = errorimg.getPrevious();
			errorimg.addClass('on');
			label.addClass('error');
		}
		
		function _removeError(field) {
			field.removeClass('error');
			var errorimg = field.getPrevious();
			var label = errorimg.getPrevious();
			errorimg.removeClass('on');
			label.removeClass('error');
		}
		
		if (isitvalid == true) {
			return true;
		} else {
			return false;
		}
	},
	
	reset: function() {
		$(gallerySuggest.ids.loading).style.display = 'none';
		$(gallerySuggest.ids.complete).style.display = 'none';
		$(gallerySuggest.ids.wrap).style.display = 'block';
		$(gallerySuggest.ids.form).body.value = '';
		$(gallerySuggest.ids.form).body.focus();
	}
	
	
};