// vim: tabstop=4 softtabstop=4 shiftwidth=4 noexpandtab nowrap
var MyAccountDialog = function(){
	var dialog;
	var form_myaccount;

	return {
		show: function () {
			dialog = this.dialog;
			if(!dialog){
				dialog = new Ext.BasicDialog("myaccount-dlg", { 
					modal: false, width:550, height:330, shadow:false, draggable: true, resizable: false, collapsible: false, autoTabs:true, shadow: false
				});
				dialog.addKeyListener(27, dialog.hide, dialog);
				MyAccountDialog.initDialog(dialog);
			}
			//dialog.show(ChatLayout.myAccountBtn.getEl().dom);
			dialog.show();
			this.dialog = dialog;
		},
		
		initDialog: function (dialog) {
			// Form Login
			form_myaccount = new Ext.form.Form({labelAlign: 'top', buttonAlign: 'left', url: '/pages/channel/_json.myaccount.php', fileUpload: true});
			Ext.form.Field.prototype.msgTarget = 'side';
			//var field_email = new Ext.form.TextField({emptyText: "Enter", allowBlank:false, vtype: 'email', fieldLabel: 'E-Mail', name: 'email',   width:190, required: true});
			
			var field_nick = new Ext.form.TextField({allowBlank:false, value: CurrentUser.Nick, fieldLabel: locStrings["nick"], name: 'nick',   width:190, required: true});
			var field_fullname = new Ext.form.TextField({value: CurrentUser.Row.FullName, fieldLabel: locStrings["full_name"], name: 'full_name',   width:190, required: true});
			var field_birthdate = new Ext.form.DateField({fieldLabel: locStrings["birth_date"], value: CurrentUser.Row.BirthDate, name: 'birth_date',   width:90, format: "m/d/Y",  required: true});
			var field_avatar = new Ext.form.TextField({fieldLabel: locStrings["photo"], name: 'photo',  inputType: "file", width:160, required: false });
			var field_city = new Ext.form.TextField({value: CurrentUser.Row.City, fieldLabel: locStrings["city"], name: 'city', width:160, required: false });
			var field_gender = new Ext.form.ComboBox({
				fieldLabel: locStrings.gender,
				hiddenName:'gender',
				store: new Ext.data.SimpleStore({
					fields: ['gender', 'label'],
					data : [['Male', locStrings.gender_male], ['Female', locStrings.gender_female]]
				}),
				valueField: 'gender',
				displayField:'label',
				typeAhead: true,
				mode: 'local',
				triggerAction: 'all',
				emptyText:locStrings.select_gender,
				selectOnFocus:true,
				width:160,
				value: CurrentUser.Row.Gender
			});
				
			//var field_password = new Ext.form.TextField({fieldLabel: 'Password', allowBlank:false, name: 'password',   width:190, required: true, inputType: "password"});
			//var field_password = new Ext.form.TextField({fieldLabel: 'Password', allowBlank:false, name: 'password',   width:190, required: true, inputType: "password"});
			
			form_myaccount.column({width:230, labelWidth:75, clear:true}); // open column, without auto close
			form_myaccount.add(field_nick, field_fullname, field_birthdate);
			form_myaccount.end();
			form_myaccount.column({width:200, style:'margin-left:0px', clear:true});
			form_myaccount.container({id:'photo', style: 'margin-top: 0px ;'});
			form_myaccount.add(field_city, field_gender, field_avatar);
			form_myaccount.end();
			
			
			//var field_shortdesc = new Ext.form.TextArea({fieldLabel: locStrings["about_me"], name: 'short_desc', width: 380});
			//form_myaccount.container({clear: true}, field_shortdesc);
			//form_myaccount.end ();
			
			form_myaccount.addButton({text: locStrings["savechanges_btn"], type : "submit"}, MyAccountDialog.trySave, form_myaccount);
			form_myaccount.addButton(locStrings["cancel_btn"], dialog.hide, dialog);
			form_myaccount.addButton(locStrings["myaccount_enter_btn"], function() {location.href=ChatApp.MainUrl + "my/index.html"}, dialog);
			
			form_myaccount.render ("form-myaccount");
			
			var photo = Ext.get('photo');
			var c = photo.createChild({tag:'span'});
			var imgTag = c.createChild({tag:'img',
				src: '/data/userimage.php?type=t', 
				style: 'margin-bottom: 5px; margin-top: -7px'});
			
			this.photoTag = imgTag;
			//new Ext.Button(c, {text: locStrings["changephoto_btn"]});
		},
			
		updateImage: function () {
			this.photoTag.dom.src = "/data/userimage.php?type=t&rnd=" + (Math.random() * 100);
			ChatApp.myPicSuffix = "&rnd=" + (Math.random() * 100);
			ChatApp.needReloadUserlist = true;
			ChatApp.loadMessages ();
		},
			
		trySave: function () {
			if (form_myaccount.isValid()) {
				form_myaccount.submit({
					params: {action: 'submit', channelId: ChatApp.getCurrentChat().id},
					success: function (form, action) {
						MyAccountDialog.updateImage ();
						if (!action.result) {
							dialog.hide ();
							return;
						}
						if(action.result.user.IsLogined) {
							Ext.MessageBox.alert("Result","You'r params saved");
							ChatApp.myUser = action.result.user;
							dialog.hide ();
						} else {
							Ext.MessageBox.alert(locStrings["error_title"], "Sorry, unknown error");
						}
					},
					failure: function (form, action) {
						ChatApp.showErrors(action.result.errors);
					}
				});
			} else {
				Ext.MessageBox.alert(locStrings["error_title"], locStrings["error_need_fields"]);
			}
		}
	}
}();

