
  /**
   *
   * SZENE1 USER ACTIONS
   *
   * --------------------------------------------------------------------------
   *
   * @author    Thomas Pillmayr <t.pillmayr@szene1.at>
   * @version   1.0.0
   * @since     10.10.2007
   *
   * --------------------------------------------------------------------------
   *
   */

var UserActions = {
	
	translateObj : null,
	
	translate : function(transKey)
	{
		if(UserActions.translateObj==null)
		{
			
		}
	},
	
	editUser : function(id, name)
	{
		if(id<1 || !name)
		{
			alert(Szene1Translator.translate('errorWhileEditingFriend',null));
			return;
		}
		/*
		 *	ONLY SHOW FORM (!!!) -> POST WORK DONE BY FRIENDLIST CONTROLLER
		 */
		
		new Ajax.Request('/ajax/user/friendslist/geteditform', {
			method: 'post',
			parameters: 'friendid='+id+'&user='+name,
			onSuccess: function(t){
				UserActions.generatePopUpWindow(t.responseText);
			},
			onFailure: function(){
				alert(Szene1Translator.translate('errorLoadingForm',null));
			}
		});
	},
	
	deleteUser : function(id, name, htmlObj)
	{
		if(id<1 || !name)
		{
			alert(Szene1Translator.translate('errorDeletingFriend',null));
		}
		
		if(!confirm(Szene1Translator.translate('doYouReallyWantToDeleteUserX',name)))
		{
			return;
		}
		
		new Ajax.Request('/ajax/user/friendslist/deletefriend', {
			method: 'post',
			postBody: 'mode=1&friend='+id,
			onSuccess: function(t){
				alert(Szene1Translator.translate('userXWasRemovedFromTheFriendlist',name));
				if(htmlObj!=null)
				{
					$(htmlObj).remove();
				}
				else
				{
					window.location.reload();
				}
			},
			onFailure: function(){
				alert(Szene1Translator.translate('errorRemovingConnectionToX',name));
			}
		});
	},
	
	deleteme : function(id, name, htmlObj)
	{
		if(id<1 || !name)
		{
			alert(Szene1Translator.translate('errorRemovingConnection',null));
		}
		
		if(!confirm(Szene1Translator.translate('doYouReallyWantToBeRemovedFromUserXFriendlist',name)))
		{
			return false;
		}
		
		new Ajax.Request('/ajax/user/friendslist/deletefriend', {
			method: 'post',
			postBody: 'mode=2&friend='+id,
			onSuccess: function(t){
				alert(Szene1Translator.translate('youWereRemovedFromUserXFriendlist',name));
				if(htmlObj!=null)
				{
					$(htmlObj).remove();
				}
				else
				{
					window.location.reload();
				}
			},
			onFailure: function(){
				alert(Szene1Translator.translate('errorRemovingConnectionToX',name));
			}
		});
	},
	
	generatePopUpWindow : function(content)
	{
		if($('notificationbox_container'))
		{
			$('notificationbox_container').remove();
		}
		
		var textbox = '';
		textbox += '<div class="szene1_quickinfo" id="notificationbox_container" ';
		textbox += '      style="position: absolute; width:300px; display:none;">';
		textbox += content;
		textbox += '</div>';
		
		new Insertion.Bottom('szene1AdditionalWindows',textbox);
		Position.center($('notificationbox_container'));
		Effect.Appear($('notificationbox_container'), {duration:1.0});
		new Draggable($('notificationbox_container'));
	},
	
	generateAlertWindow : function(content, contentId, duration)
	{
		var boxCon = '';
		boxCon += '  <div class="edge_top"><div><div>&nbsp;</div></div></div>';
		boxCon += '  <div class="body" style="padding:8px; ';
		boxCon += '    font-size: 11px; text-align: center;" ';
		boxCon += '       id="' + contentId + '">';
		boxCon += '      ' + content + "\n";
		boxCon += '  </div>';
		boxCon += '  <div class="edge_bottom"><div><div>&nbsp;</div></div></div>';
		
		UserActions.generatePopUpWindow(boxCon);
		
		if(duration!=null)
		{
			window.setTimeout('Effect.Fade($(\'notificationbox_container\'), {duration:.5});', duration);
		}
	},
	
	addUserTag : function(element, action, type)
	{
		
		var isError	= false;
		
		if(action=='clickadd')
		{
			element = $(element);
			var newElm = element.innerHTML;
		}
		else if(action=='add')
		{
			element = $(element);
			var newElm = $F('input_'+type);
		}
		else if(action=='directadd')
		{
			var newElm = element;
		}
		
		newElm = newElm.strip();
		
		if(type && newElm && newElm.length >= 3)
		{
			var tagName = $('box_'+type).getElementsByClassName('tag_name');
			$A(tagName).each(
				function(elm){
					if(elm.innerHTML.toLowerCase()==newElm.toLowerCase())
					{
						isError = true;
					}
				}
			);
		}
		else
		{
			isError = true;
		}
		
		if(!isError)
		{
			UserActions.buildUserTagElement(newElm, type);
			
			if(action=='add')
			{
				$('input_'+type).clear();
			}
		}
		else if(action=='clickadd' || action=='add')
		{
			UserActions.generateAlertWindow(
				'<b>' + Szene1Translator.translate('anErrorOccurred',null) + '</b><br /><br />'
				+ Szene1Translator.translate('elementExistsOrShorterThan3Char',null),
				'userTaggingNotify',
				3000
			);
		}
	},
	
	removeUserTag : function(element)
	{
		element = $(element);
		
		element.up('.tag_element').remove();
	},
	
	deleteAllCharacters : function()
	{
		if(confirm(Szene1Translator.translate('doYouReallyWantToDeleteAllElements',null)))
		{
			UserActions.generateAlertWindow(
				'<img src="/images/icons/ajax-loader-white.gif" border="0"> '
				+ Szene1Translator.translate('updateInProgress',null) + '...',
				'userTaggingNotify',
				null
			);
			
			new Ajax.Request('/ajax/user/delete/interests', {
				onSuccess:
					function(t)
					{
						window.location.reload();
					},
				onFailure:
					function(t)
					{
						$('userTaggingNotify').innerHTML =
							Szene1Translator.translate('errorSavingPreferences',null)
							+ '<br />'
							+ Szene1Translator.translate('pleaseTryAgain',null);
							
						window.setTimeout("Effect.Fade($(\'notificationbox_container\'), {duration:.5});", 4000);
					}
			});
		}
	},
	
	saveUserTag : function(types)
	{
		charObj = Object();
		
		types.each(function(sgType){
			
			var newElm = $F('input_'+sgType);
			
			UserActions.addUserTag(newElm, 'directadd', sgType);
			
			charObj[sgType] = Array();
			
			var tagName = $('box_'+sgType).getElementsByClassName('tag_name');
			$A(tagName).each(
				function(elm){
					charObj[sgType].push(elm.innerHTML);
				}
			);
		});
		
		UserActions.generateAlertWindow(
			'<img src="/images/icons/ajax-loader-white.gif" border="0"> '
			+ Szene1Translator.translate('updateInProgress',null) + '...',
			'userTaggingNotify',
			null
		);
		
		new Ajax.Request('/ajax/user/update/interests', {
			method: 'post',
			postBody: 'char='+encodeURIComponent(Object.toJSON(charObj)),
			onSuccess:
				function(t)
				{
					$('userTaggingNotify').innerHTML = t.responseText;
					window.setTimeout("Effect.Fade($(\'notificationbox_container\'), {duration:.5});", 4000);
				},
			onFailure:
				function(t)
				{
					$('userTaggingNotify').innerHTML =
						Szene1Translator.translate('errorSavingPreferences',null)
						+ '<br />'
						+ Szene1Translator.translate('pleaseTryAgain',null);
					
					window.setTimeout("Effect.Fade($(\'notificationbox_container\'), {duration:.5});", 4000);
				}
		});
	},
	
	buildUserTagElement : function(name, type)
	{
		var divElm;
		
		divElm  = '  <div class="tag_element">';
		divElm += '    <div class="ICON16_BW_LISTARROW" style="float:left;">&nbsp;</div>';
		divElm += '    <div style="float:left;width:140px; overflow: hidden;" ';
		divElm += '         class="tag_name">'+name+'</div>';
		divElm += '    <a href="javascript:void(0);" ';
		divElm += '       id="remove#'+encodeURIComponent(name)+'" ';
		divElm += '       class="ICON16_BW_DELETE" ';
		divElm += '       onclick="UserActions.removeUserTag(this);"';
		divElm += '       style="float:left;">&nbsp;</a>';
		divElm += '    <br class="clearme" />';
		divElm += '  </div>';
		
		new Insertion.Bottom('box_'+type, divElm);
	},
	
	toogleCheckBoxes : function(checkItems, formElement)
	{
		$(formElement).getElements('checkbox').each(function(item){
			item.checked = ((checkItems) ? true : false)
		});
	},
	
	/**
	 * ------------------------------------------------------------------------
	 *
	 * REGISTER FORM VALIDATION
	 *
	 * ------------------------------------------------------------------------
	 */
	
	validatePassword : function(pwd1Element, pwd2Element)
	{
		pwd1Element = $(pwd1Element);
		pwd2Element = $(pwd2Element);
		
		lenPwd1 = pwd1Element.value.length;
		lenPwd2 = pwd2Element.value.length;
		
		if(lenPwd1 < 6)
		{
			UserActions.outputValidationNotify(
				Szene1Translator.translate('passwordToShort')
			);
		}
		else if(lenPwd1 > 0 &&
			lenPwd2 > 0 &&
			pwd1Element.value != pwd2Element.value)
		{
			UserActions.outputValidationNotify(
				Szene1Translator.translate('passwordsDontMatch')
			);
		}
		else
		{
			UserActions.clearNotifies();
		}
	},
	
	validateEmail : function(emailElement)
	{
		emailElement = $(emailElement);
		
		if(emailElement.value.empty() ||
			!/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(emailElement.value))
		{
			UserActions.outputValidationNotify(
				Szene1Translator.translate('pleaseProvideAValidEmailAddress')
			);
		}
		else
		{
			new Ajax.Request(
				'/ajax/user/validate',
				{
					method: 'post',
					postBody: 'check=email&name=' + emailElement.value + '&field=' + emailElement.id,
					onSuccess: function(t)
					{
						var json = unescape(t.responseText);
						
						if(json.substring(0,1)!='{')
						{
							UserActions.outputValidationNotify(
								Szene1Translator.translate('Ajax error while loading...')
							);
							return false;
						}
						
						var srvObj = eval("(" + json + ")");
						
						if((srvObj instanceof Object) &&
							!srvObj['valid'])
						{
							UserActions.outputValidationNotify(
								Szene1Translator.translate('emailAddressAlreadyInUse')
							);
						}
					}
				}
			);
			
			UserActions.clearNotifies();
		}
	},
	
	validateUsername : function(usernameElement)
	{
		usernameElement = $(usernameElement);
		
		if(usernameElement.value.empty() ||
			!/^[a-zA-Z0-9_-]{3,}$/.test(usernameElement.value))
		{
			UserActions.outputValidationNotify(
				Szene1Translator.translate('pleaseEnterAValidUserName')
			);
		}
		else
		{
			new Ajax.Request(
				'/ajax/user/validate',
				{
					method: 'post',
					postBody: 'check=username&name=' + usernameElement.value + '&field=' + usernameElement.id,
					onSuccess: function(t)
					{
						var json = unescape(t.responseText);
						
						if(json.substring(0,1)!='{')
						{
							UserActions.outputValidationNotify(
								Szene1Translator.translate('Ajax error while loading...')
							);
							return false;
						}
						
						var srvObj = eval("(" + json + ")");
						
						if((srvObj instanceof Object) &&
							!srvObj['valid'])
						{
							UserActions.userNameSuggestion(
								srvObj['suggestions'],
								srvObj['field']
							)
						}
					}
				}
			);
			
			UserActions.clearNotifies();
		}
	},
	
	userNameSuggestion : function(suggestions, field)
	{
		var sugg =
			'<b style="color:#ff0000">'
			+ Szene1Translator.translate('usernameAlreadyInUse')
			+ '</b><br /><br /><b>'
			+ Szene1Translator.translate('otherSamples')
			+ '</b>:<br />';
		
		for (count=0;count<suggestions.length;count+=1)
		{
			sugg +=
				'<a href="javascript:void(0);" onclick="$(\''
				+ field
				+ '\').value = \''
				+ suggestions[count]
				+ '\';UserActions.clearNotifies();">'
				+ suggestions[count]
				+ '</a><br />';
		}
			
		
		UserActions.outputValidationNotify(sugg);
	},
	
	outputValidationNotify : function(msg)
	{
		if((typeof SimpleWindowManager) == 'object')
		{
			SimpleWindowManager.generateCloseableWindow(
				Szene1Translator.translate('anErrorOccurred'),
				msg
			);
		}
		else
		{
			alert(msg);
		}
	},
	
	clearNotifies : function()
	{
		if((typeof SimpleWindowManager) == 'object')
		{
			SimpleWindowManager.clearWindow();
		}
		return;
	}
}