var processing = false;

function signin_oauth(provider) {
	var url = window.location.toString();
	var regex1 = /signin(-widget)/i;
	var regex2 = /http:\/\/([^/]+)\//i;
    var domain = regex2.exec(url)[1];

	if( regex1.test(url) ) {
		redirect_url = 'http://' + domain + '/account/signin-done-widget';
	} else {
		redirect_url = 'http://' + domain + '/account/signin-done';
	}

	Ext.Ajax.request({
		url: '/ajax',
		method: 'post',
		params: {'method': 'getOAuth',
				 'provider': provider,
				 'redirect_url': redirect_url
				},
		success: function(response, opts) {
			var obj = Ext.decode(response.responseText);
			if(obj.success) {
				if( obj.data && obj.data.redirect_url ) {
					document.location.href = obj.data.redirect_url;
				}
			}
		},
		failure: function(response, opts) {

		}
	});
		

}

function init() {
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'under';

	var signinForm = new Ext.FormPanel({
		renderTo: Ext.get('signin_form'),
		labelWidth: 100,
		labelAlign: 'right',
		frame: false,
		border: false,
		monitorValid: true,
		defaults: {
			width: 200
		},
		defaultType: 'textfield',
		items: [{
				fieldLabel: 'Email / Username',
				name: 'username',
				allowBlank: false
			},{
				fieldLabel: 'Password',
				name: 'password',
				inputType: 'password',
				allowBlank: false
			},{
				name: 'method',
				value: 'getAuth',
				xtype: 'hidden'
			}
		],
		buttonAlign: 'left',
		buttons: [{
			text: 'Sign In',
			formBind: true,
			handler: function() {
				if (processing == false) {
					processing = true;
					signinForm.form.submit({
						url: '/ajax',
						method: 'post',
						success: function(form, action) {
							processing = false;
							pageTracker._trackPageview('/dynamic/signin');
							var redirect = Ext.util.Cookies.get('SignInRedirect');
							var expireRedirect = new Date();
							expireRedirect.setDate(expireRedirect.getDate() - 365);
							Ext.util.Cookies.set('SignInRedirect', '', expireRedirect, '/', '.sharethis.com');
							
							var expireToken = new Date();
							expireToken.setDate(expireToken.getDate() + 3650);
							Ext.util.Cookies.set('ShareUT', action.result.data.token, expireToken, '/', '.sharethis.com');
							
							if (redirect !== null) {
								document.location.href = redirect;
							} else if (document.referrer != '') {
								if (document.referrer.indexOf('sharethis.com') != -1) {
									document.location.href = document.referrer;
								} else {
									document.location.href = '/';
								}
							} else {
								document.location.href = '/';
							}
						},
						failure: function(form, action) {
							processing = false;
							var message = !Ext.isEmpty(action.result.statusMessage) ? action.result.statusMessage : 'An unknown error was encountered.';
							Ext.MessageBox.alert('Error', message);
						}
					});
				}	
			}
		}],
		keys: {
			key: Ext.EventObject.ENTER,
			fn: function() { Ext.DomQuery.selectNode('#signin_form button:first').click(); }
		}
	});
	Ext.DomQuery.selectNode('#signin_form input:first').focus();
	
	Ext.fly('signin_btn_yahoo').on('click', function(e, t) {
		signin_oauth('yahoo');
	});

	
}
