(function(){ 
	
		// TELL A FRIEND ADDRESS FIELDS HANDLER
		var friendAddresses = $('friendAddresses');
		var addAnotherFriend = $('addAnotherFriend');

		getFriendFields = function(){
        return $A(friendAddresses.getElementsByTagName('input')).inject({},function(friends,input){
		var name = input.getAttribute('name');
		var fn = name.replace(/friendsName|friendsEmail/,'');
		 var field = name.replace(/\d+$/,'');
		 if (typeof friends[fn] == 'undefined') friends[fn]={};
		 friends[fn][field] = input;
		 if (fn >= Globals.maxNumberOfFriendAddressFields) addAnotherFriend.hide();
		 return friends;
		 });
		 };
		
		createNewFriendFields = function(){
			var n = $H(getFriendFields()).keys().length + 1;
			if (n > 5) return;
			var div = document.createElement('div');
			div.innerHTML = friendAddressesTamplate.evaluate({number:n})
			friendAddresses.appendChild(div);

			var newInputs = getFriendFields()[n];
			new TextInput(newInputs.friendsName);
			new TextInput(newInputs.friendsEmail);
			//window.FormFocusArrow.bindTo(newInputs.friendsName);
			//window.FormFocusArrow.bindToFor(newInputs.friendsName,newInputs.friendsEmail);
		}


		addAnotherFriend.cancelClick().observe('click', createNewFriendFields);
		
		
		
		Event.observe(window, 'load', function() {
			setTimeout(function() {
				
				//$H(getFriendFields()).values().each(function(fields){
				//	window.FormFocusArrow.unBindFrom(fields.friendsEmail).bindToFor(fields.friendsName,fields.friendsEmail);
				//})


				//window.FormFocusArrow.unBindFrom($('humanVerificationInput')).bindToFor($('captchaImage'),$('humanVerificationInput'));

				
				var msg = $('message');
				var fromName = $('name');

				msg.changedByUser = true;
				
				var msgi = msg.innerHTML+'';
				if (msgi.match(/%fromName%/)){
					msg.changedByUser = false;
					msg.originalValue = msg.value;
					msg.newValue = function() { 
						return this.originalValue.replace(/\s*%fromName%/g, ((fromName.value)?' '+fromName.value:'')) 
					}
					
					msg.value = msg.newValue();

					fromName.observe('keyup', function(e) {
						if (msg.changedByUser) return;
						msg.value = msg.newValue()
					});

					msg.observe('keyup', function(e) {
						msg.changedByUser = (msg.value != msg.newValue());
					});
					
					$(msg.form).observe('submit', function() {
						if (msg.value == msg.newValue()) msg.value = msg.originalValue;
					});
				
				}
				
			},1)
		});
		

})();
