///////////////////////////////////
//         ajax im 3.41          //
//    AJAX Instant Messenger     //
//   Copyright (c) 2006-2008     //
//    http://www.ajaxim.com/     //
//   Do not remove this notice   //
///////////////////////////////////


/**
* Dialog and windows class
*
* @author Joshua Gross
**/
var Dialogs = {
	
	/**
	* Display login modal
	*
	* @author Joshua Gross
	**/
	
	login: function() {
		
		$('defaultusername').value = '';
		
		$('default_login_welcome_msg').innerHTML = Languages.get('defaultLoginWelcomeMsg');
	    
		$('default_login_error_msg').innerHTML = Languages.get('chooseAUserName');
		
		this.mainDialogShow('loginDefault');
		
		this.currentMainDialog = 'loginDefault';
		
		setTimeout("try { $('defaultusername').focus(); } catch(e) { }", 1000);
		
	},

	
	userIsAnonymous: function(){
		
		$('anonymous_login_welcome_msg').innerHTML = Languages.get('anonymousNotice');
		
		$('anonymous_login_error_msg').innerHTML = '';
		
		$('anonLoginSignOn').innerHTML = Languages.get('signOnBtn');
		
		$('anonLoginCancel').innerHTML = Languages.get('cancelBtn');
		
		this.mainDialogShow('loginAnonymous');
		
		this.currentMainDialog = 'loginAnonymous';
		
		//loading captcha
		
		AjaxIMCaptchaForm.showRecaptcha('recaptchaRegisterFieldAnonymous','red');
		
		
	},
	
	userIsRegistered: function(){
		
		$('registered_login_welcome_msg').innerHTML = Languages.get('userIsRegistered');
		
		$('registered_please_type_a_password').innerHTML = Languages.get('userRegisteredPasswordNotice');
		
		$('registeredpassword').value = '';
		
		$('registeredSignOn').innerHTML = Languages.get('signOnBtn');
		
		$('registeredCancel').innerHTML = Languages.get('cancelBtn');
		
		this.mainDialogShow('loginUserIsRegistered');
		
		this.currentMainDialog = 'loginUserIsRegistered';
		
		setTimeout("try { $('registeredpassword').focus(); } catch(e) { }", 1125);
		
	},
	
	specialLink: function(){
		
		$('SpecialRegisteredSignOn').innerHTML = Languages.get('signOnBtn');
		
		$('SpecialAnonymousSignOn').innerHTML = Languages.get('signOnBtn');
		
		this.mainDialogShow('specialLink');
		
		this.currentMainDialog = 'specialLink';
		
		setTimeout("try { $('specialpassword').focus(); } catch(e) { }", 1125);
		
	},
	
	/**
	* Display profile question modal
	**/
	
	profile_question: function() {
		clearInputs();
		$('register_error_msg').innerHTML = '';
		Dialogs.mainDialogShow('profileQuestion');
		this.currentMainDialog = 'profileQuestion';
	},

	/**
	* Display forgot password modal
	*
	* @author Joshua Gross
	**/
	forgotPass: function() {
		clearInputs();
		$('forgotpass_error_msg').innerHTML = '';
		Dialogs.mainDialogShow('forgotPass');
		this.currentMainDialog = 'forgotPass';
		setTimeout("try { $('resetto').focus(); } catch(e) { }", 505);
	},

	/**
	* Display main dialog
	*
	* @author Joshua Gross
	**/
	mainDialogShow: function(dialog) {
		if(this.currentMainDialog) Element.setStyle(this.currentMainDialog + 'Dialog', {'display': 'none'});
		Element.setStyle(dialog + 'Dialog', {'display': 'block'});
	},

	/**
	* New IM window, or IM Anyone. Displays a window to enter a
	* username in attempt to message a new friend.
	*
	* @author Joshua Gross
	**/
	newIM: function() {
		var newIMWin;
		if($('newIM')) {
			Windows.getWindow('newIM').toFront();
			return;
		}

		newIMWin = new Window({id: 'newIM', className: "dialog", width: 240, height: 120, resizable: false, title: Languages.get('newIM'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight: 120, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		newIMWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		newIMWin.getContent().innerHTML = '<div class="dialog_info lang-newIMPlease langinsert-clear" style="padding:3px;">' + Languages.get('newIMPlease') + '</div> \
                                         <span id="newim_error_msg" class="errorMsg">&nbsp;</span> \
                                         <div id="newim_box" style="padding-left:30px;width:100%;"> \
                                         <div style="display:block;float:left;margin-right:5px;padding-top:4px;">' + Languages.get('username') + ':</div><input type="text" style="width:120px;" id="sendto" name="sendto" onkeypress="handleInput(event, function() { IM.newIMWindow(); })" /> \
                                         </div> \
                                         <div id="newim_buttons">' +
		ButtonCtl.create(Languages.get('openIM'), 'IM.newIMWindow();') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'newIM\');') +
		'</div>';

		$('newim_buttons').setStyle({position: 'absolute', top: '110px', left: '25px'});
		newIMWin.setDestroyOnClose();
		newIMWin.showCenter();
		setTimeout("$('sendto').focus();", 125);
		
	},

	/**
	* Display a window that will allow the user
	* to enter a name for a chat room to be created.
	*
	* @author Joshua Gross
	**/
	newRoom: function() {
		
		/*
		disabled by now - Augusto
		var newRoomWin;
		if($('newRoom')) {
			Windows.getWindow('newRoom').toFront();
			return;
		}

		newRoomWin = new Window({id: 'newRoom', className: "dialog", width: 240, height: 300, resizable: false, title: Languages.get('newRoom'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight: 120, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		newRoomWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		newRoomWin.getContent().innerHTML = '<div class="dialog_info lang-newRoomPlease langinsert-clear" style="padding:3px;">' + Languages.get('newRoomPlease') + '</div> \
                                           <span id="newroom_error_msg" class="errorMsg">&nbsp;</span> \
                                           <div id="newroom_box" style="padding-left:25px;width:100%;"> \
                                           <div style="display:block;margin-right:5px;padding-top:4px;" class="lang-roomname langinsert-replace">' + Languages.get('roomname') + ':</div><input type="text" style="width:187px;margin-left:0px;" id="roomname" name="roomname" onkeypress="handleInput(event, function() {Chatroom.join($(\'roomname\').value); }, function(){$(\'roomname\').value = $(\'roomname\').value.toLowerCase();})" /> \
                                           <div id="newroom_room_list"></div> \
                                           </div> \
                                           <div id="newroom_buttons">' +
		ButtonCtl.create(Languages.get('joinRoom'), 'Chatroom.join($(\'roomname\').value);') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'newRoom\');') +
		'</div>';

		$('newroom_buttons').setStyle({position: 'absolute', top: '290px', left: '25px'});

		ChatroomList.get($('newroom_room_list'));

		newRoomWin.setDestroyOnClose();
		newRoomWin.showCenter();
		setTimeout("$('roomname').focus();", 125);*/
	},

	/**
	* Display a window to allow the user to enter another
	* buddy's username and a group name to have the user added
	* to the user's buddylist.
	*
	* @author Joshua Gross
	**/
	
	newBuddy: function() {
		var newBuddyWin;
		if($('newBuddy')) {
			Windows.getWindow('newBuddy').toFront();
			return;
		}

		newBuddyWin = new Window({id: 'newBuddy', className: "dialog", width: 240, height: 160, resizable: false, title: Languages.get('newBuddy'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight: 120, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		newBuddyWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		newBuddyWin.getContent().innerHTML = '<div class="dialog_info" style="padding:3px;">' + Languages.get('newBuddyPlease') + '</div> \
                                            <span id="newbuddy_error_msg" class="errorMsg">&nbsp;</span> \
                                            <div id="newbuddy_box" style="padding-left:22px;width:100%;"> \
                                            <div style="display:block;float:left;margin-right:24px;padding-top:4px;">' + Languages.get('username') + ':</div><input type="text" style="width:110px;" id="newBuddyUsername" name="newBuddyUsername" onkeypress="handleInput(event, function() { Buddylist.addNewBuddy($(\'newBuddyUsername\').value, $(\'newBuddyGroup\').value); })" /><br /> \
                                            <div style="display:block;float:left;margin-right:5px;padding-top:4px;">' + Languages.get('addtogroup') + ':</div><input type="text" style="width:110px;" id="newBuddyGroup" name="newBuddyGroup" value="'+Languages.get('group-Friends-Translated')+'" onfocus="this.select();" onkeypress="handleInput(event, function() { Buddylist.addNewBuddy($(\'newBuddyUsername\').value, $(\'newBuddyGroup\').value); })" /> \
                                            </div> \
                                            <div id="newbuddy_buttons">' +
		ButtonCtl.create(Languages.get('add'), 'Buddylist.addNewBuddy($(\'newBuddyUsername\').value, $(\'newBuddyGroup\').value);') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'newBuddy\');') +
		'</div>';

		$('newbuddy_buttons').setStyle({position: 'absolute', top: '150px', left: '25px'});

		newBuddyWin.setDestroyOnClose();
		newBuddyWin.showCenter();
		setTimeout("$('newBuddyUsername').focus();", 125);
	},

	/**
	* Display a window to confirm the removal of a buddy.
	*
	* @author Joshua Gross
	* @update Benjamin Hutchins
	**/
	removeBuddy: function(username) {
		var delBuddyWin;

		if (typeof username == 'undefined')
		var username = curSelected;

		if(username == '' || username.length == 0)
		return;

		if($('delBuddy')) {
			Windows.getWindow('delBuddy').toFront();
			return;
		}

		delBuddyWin = new Window({id: 'delBuddy', className: "dialog", width: 240, height: 70, resizable: false, title: Languages.get('removeBuddy'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight:70, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		delBuddyWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		delBuddyWin.getContent().innerHTML = '<div class="dialog_info" style="padding:3px;">' + Languages.get('removeBuddyAreYouSure').replace('%1', username) + '</div> \
                                            <div id="delbuddy_buttons">' +
		ButtonCtl.create(Languages.get('ok'), 'Buddylist.deleteBuddy(\'' + username + '\');Windows.close(\'delBuddy\');') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'delBuddy\');') +
		'</div>';

		$('delbuddy_buttons').setStyle({position: 'absolute', top: '60px', left: '25px'});

		delBuddyWin.setDestroyOnClose();
		delBuddyWin.showCenter();
	},
	
	/**
	* Display a window to confirm the removal of a buddy.
	*
	* @author Joshua Gross
	* @update Benjamin Hutchins
	**/
	profileQuestion: function() {
		var profileQuestionWin;

		if($('profQuestion')) {
			Windows.getWindow('profQuestion').toFront();
			return;
		}

		profileQuestionWin = new Window({id: 'profQuestion', className: "dialog", width: 240, height: 70, resizable: false, title: Languages.get('profileTitle'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight:70, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		profileQuestionWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		profileQuestionWin.getContent().innerHTML = 	'<div class="dialog_info" style="padding:3px;">' + Languages.get('profileQuestion') + '</div> \
                                            			<div id="profQuestion_buttons">' +
														ButtonCtl.create(Languages.get('ok'), 'System.save_profile(); Windows.close(\'profQuestion\');') +
														ButtonCtl.create(Languages.get('cancel'), '$(\'return_to_gg\').hide(); Windows.close(\'profQuestion\');') +
														'</div>';

		$('profQuestion_buttons').setStyle({position: 'absolute', top: '60px', left: '25px'});

		profileQuestionWin.setDestroyOnClose();
		profileQuestionWin.showCenter();
	},

	/**
	* Display a window to confirm the blocking/unblocking
	* of a buddy.
	*
	* @author Joshua Gross
	**/
	blockBuddy: function(buddy) {
		var blockBuddyWin;

		if($('blockBuddy')) {
			Windows.getWindow('blockBuddy').toFront();
			return;
		}

		blockBuddyWin = new Window({id: 'blockBuddy', className: "dialog", width: 240, height: 70, resizable: false, title: Languages.get('blockBuddy'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight:70, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		blockBuddyWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		blockBuddyWin.getContent().innerHTML = '<div class="dialog_info" style="padding:3px;">' + (Buddylist.blocked.inArray(buddy) ? Languages.get('unblockBuddyAreYouSure').replace('%1', buddy) : Languages.get('blockBuddyAreYouSure').replace('%1', buddy)) + '</div> \
                                            <div id="blockbuddy_buttons">' +
		ButtonCtl.create(Languages.get('ok'), 'Buddylist.blockBuddy(\'' + buddy + '\');Windows.close(\'blockBuddy\');') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'blockBuddy\');') +
		'</div>';

		$('blockbuddy_buttons').setStyle({position: 'absolute', top: '60px', left: '25px'});

		blockBuddyWin.setDestroyOnClose();
		blockBuddyWin.showCenter();
	},

	/**
	* Display a window to confirm the removal of an
	* entire buddy group.
	*
	* @author Joshua Gross
	**/
	removeGroup: function(group) {
		var delGroupWin;
		if($('delGroup')) {
			Windows.getWindow('delGroup').toFront();
			return;
		}

		delGroupWin = new Window({id: 'delGroup', className: "dialog", width: 240, height: 70, resizable: false, title: Languages.get('removeGroup'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight:70, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		delGroupWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		delGroupWin.getContent().innerHTML = '<div class="dialog_info" style="padding:3px;">' + Languages.get('removeGroupAreYouSure').replace('%1', group) + '</div> \
                                            <div id="delgroup_buttons">' +
		ButtonCtl.create(Languages.get('ok'), 'Buddylist.deleteGroup(\'' + group + '\');Windows.close(\'delGroup\');') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'delGroup\');') +
		'</div>';

		$('delgroup_buttons').setStyle({position: 'absolute', top: '60px', left: '25px'});

		delGroupWin.setDestroyOnClose();
		delGroupWin.showCenter();
	},

	/**
	* Display a window to show the available settings
	* that the user can change.
	*
	* @author Benjamin Hutchins
	**/
	changeSettings: function() {
		var changeSettings;
		if($('changeSettings')) {
			Windows.getWindow('changeSettings').toFront();
			return;
		}

		changeSettings = new Window({id: 'changeSettings', className: "dialog", width: 300, height: 160, resizable: false, title: Languages.get('changeSettings'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight: 150, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		changeSettings.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		changeSettings.getContent().innerHTML = '<div class="dialog_info lang-changeSettingsInstructions langinsert-clear" style="padding:3px;">' + Languages.get('changeSettingsInstructions') + '</div> \
                                               <div id="changesettings_buttons">' +
		ButtonCtl.create(Languages.get('changeSettingsPassword'), 'Dialogs.changePass();if($(\'changeSettings\')){Windows.close(\'changeSettings\');}') +
		ButtonCtl.create(Languages.get('changeSettingsEmail'), 'Dialogs.changeEmail();if($(\'changeSettings\')){Windows.close(\'changeSettings\');}') +
		(useIcons ? ButtonCtl.create(Languages.get('changeSettingsBuddyicon'), 'Dialogs.changeIcon();if($(\'changeSettings\')){Windows.close(\'changeSettings\');}') : '') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'changeSettings\');') +
		'</div>';

		$('changesettings_buttons').setStyle({position: 'absolute', top: '60px', left: '85px'});

		changeSettings.setDestroyOnClose();
		changeSettings.showCenter();
	},

	/**
	* Display a window to allow the user to change
	* their email
	*
	* @author Benjamin Hutchins
	**/
	changeEmail: function() {
		var changeEmailWin;
		if($('changeEmail')) {
			Windows.getWindow('changeEmail').toFront();
			return;
		}

		changeEmailWin = new Window({id: 'changeEmail', className: "dialog", width: 300, height: 80, resizable: false, title: Languages.get('changeEmail'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight: 240, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});
		changeEmailWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});
		changeEmailWin.getContent().innerHTML = '<div class="dialog_info lang-changeEmailInstructions langinsert-clear" style="padding:3px;">' + Languages.get('changeEmailInstructions') + '</div> \
                                            <span id="changeemail_error_msg" class="errorMsg">&nbsp;</span> \
                                            <input type="text" style="width:97%;" id="changeemail_textarea" /> \
                                            <div id="changeemail_buttons">' +
		ButtonCtl.create(Languages.get('change'), 'System.changeEmail();') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'changeEmail\');') +
		'</div>';

		$('changeemail_buttons').setStyle({position: 'absolute', top: '245px', left: '55px'});

		var xhConn = new XHConn();
		xhConn.connect(pingTo, "POST", "call=getemail&user="+user,
		function(xh) {
			$('changeemail_textarea').value = xh.responseText;
		}
		);

		changeEmailWin.setDestroyOnClose();
		changeEmailWin.showCenter();
	},

	/**
	* Display a window to allow the user to upload
	* a new buddy icon.
	*
	* @author Benjamin Hutchins
	**/
	changeIcon: function () {
		if(!useIcons) return;

		var changeIconWin;
		if($('changeIcon')) {
			Windows.getWindow('changeIcon').toFront();
			return;
		}

		changeIconWin = new Window({id: 'changeIcon', className: "dialog", width: 300, height: 160, resizable: false, title: Languages.get('changeBuddyicon'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight: 120, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		changeIconWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		changeIconWin.getContent().innerHTML = '<div class="dialog_info lang-changeBuddyiconInstructions langinsert-clear" style="padding:3px;">' + Languages.get('changeBuddyiconInstructions') + '</div> \
                                            <span id="changeicon_error_msg" class="errorMsg">&nbsp;</span> \
                                            <div class="errorMsg">This feature is not available yet.</div> \
                                            <form target="changeicon_iframe" id="changeicon_form" enctype="multipart/form-data" method="post" action="' + pingTo + '"> \
                                            <input type="hidden" name="call" value="changeicon" style="display:none;" /> \
                                            <input id="changeicon_input_file" type="file" name="icon" disabled="disabled" /> \
                                            <div id="changeicon_buttons">' +
		ButtonCtl.createSubmit(Languages.get('change')) +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'changeIcon\');') +
		'</form>' +
		'<iframe src="about:blank" onload="System.changeIcon()" style="display:none" id="changeicon_iframe" name="changeicon_iframe"></iframe>' +
		'</div>';

		$('changeicon_buttons').setStyle({position: 'absolute', top: '150px', left: '55px'});

		changeIconWin.setDestroyOnClose();
		changeIconWin.showCenter();
	},

	/**
	* Display a window to allow the user to change
	* their password.
	*
	* @author Joshua Gross
	**/
	changePass: function() {
		var changePassWin;
		if($('changePass')) {
			Windows.getWindow('changePass').toFront();
			return;
		}

		changePassWin = new Window({id: 'changePass', className: "dialog", width: 300, height: 160, resizable: false, title: Languages.get('changePassword'), draggable: true, closable: true, maximizable: false, minimizable: false, detachable: false, minWidth: 240, minHeight: 120, showEffectOptions: {duration: 0}, hideEffectOptions: {duration: 0}});

		changePassWin.setConstraint(true, {left: 0, right: 0, top: 0, bottom: 0});

		changePassWin.getContent().innerHTML = '<div class="dialog_info lang-changePasswordInstructions langinsert-clear" style="padding:3px;">' + Languages.get('changePasswordInstructions') + '</div> \
                                            <span id="changepass_error_msg" class="errorMsg">&nbsp;</span> \
                                            <div id="changepass_box" style="padding-left:12px;width:100%;"> \
                                            <div style="display:block;float:left;margin-right:5px;padding-top:4px;" class="lang-currentPassword langinsert-replace">' + Languages.get('currentPassword') + ':</div><input type="password" style="width:110px;" id="currentpw" name="currentpw" onkeypress="handleInput(event, function() { System.changePass(); })" /><br /> \
                                            <div style="display:block;float:left;margin-right:20px;padding-top:4px;" class="lang-currentPassword langinsert-replace">' + Languages.get('newPassword') + ':</div><input type="password" style="width:110px;" id="newpw" name="newpw" onkeypress="handleInput(event, function() { changePass(); })" /> \
                                            <div style="display:block;float:left;margin-right:4px;padding-top:4px;" class="lang-currentPassword langinsert-replace">' + Languages.get('confirmPassword') + ':</div><input type="password" style="width:110px;" id="confirmpw" name="confirmpw" onkeypress="handleInput(event, function() { System.changePass(); })" /> \
                                            </div> \
                                            <div id="changepass_buttons">' +
		ButtonCtl.create(Languages.get('change'), 'System.changePass();') +
		ButtonCtl.create(Languages.get('cancel'), 'Windows.close(\'changePass\');') +
		'</div>';

		$('changepass_buttons').setStyle({position: 'absolute', top: '150px', left: '55px'});

		changePassWin.setDestroyOnClose();
		changePassWin.showCenter();
		setTimeout("$('currentpw').focus();", 125);
	}
};

function reloadCaptcha(){
	
	
	if(!isNull(Recaptcha)){
		
		Recaptcha.reload();
		
	}
	
}