var Contact = {
	fields: null,
	form: null,
	
	init: function() {
		Contact.form = $('div.userForm');
		Contact.fields = Contact.form.find('input.text'); 		
		Contact.initForm();
		// THIS DOESNT SEEM TO WORK RIGHT IN IE...=> Contact.form.submit( Contact.onSubmit);
                Contact.form.find('input[name="submit"]').click(Contact.onSubmit);
	},
	initForm: function(){
		Contact.fields.each( function(index, value){
			$(this).bind('focus', {defaultValue: AppData.contact[this.name] }, General.onFocusTextElement)
				   .bind('blur', {defaultValue: AppData.contact[this.name]}, General.onBlurTextElement);
		});
	},
	onSubmit: function(){
		errors = '';
		//check all fields filled
		Contact.fields.each( function(index, value){
		if(value.value == AppData.contact[this.name] || value.value == '' )
				errors += value.value + ' ' + AppData.contact.isRequiredField + '.<br/> ';
		
		//extra check for email
		if(this.name == 'email'){
			if(value.value != '' && value.value != AppData.contact[this.name]){
				if(! isValidEmail(value.value) )
					errors += AppData.contact.enterValidEmail + ' '; 
			}
		}
		});
		if(errors) {
			errors = '<h3>' + AppData.contact.messageCouldNotBeSent + ':</h3><br/> ' + errors;
			General.flashMessage(errors,  'error');
			return false;
		}else{
			$.post('rpcProxy/sendContactMail', Contact.form.find('form').serializeArray() ,function(reply){
						General.flashMessage(reply, 'notice');
			});
			return false;
		}
	}
}
$(document).ready(function() {
	Contact.init();
});


function isValidEmail(email, required) {
    if (required==undefined) {   // if not specified, assume it's required
        required=true;
    }
    if (email==null) {
        if (required) {
            return false;
        }
        return true;
    }
    if (email.length==0) {
        if (required) {
            return false;
        }
        return true;
    }
    if (! allValidChars(email)) {  // check to make sure all characters are valid
        return false;
    }
    if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
        return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
        return false;
    } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
        return false;
    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	return false;
    } else if (email.indexOf(".") == email.length) {  // . must not be the last character
	return false;
    }
    return true;
}

function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}
