var processing = false;
var isDialogOpen = false;

function signin_oauth(provider, closeWindow) {

	closeWindow = typeof(closeWindow) != 'undefined' ? closeWindow : false;
	var url = window.location.toString();
	var regex1 = /signin(-widget)/i;
	var regex2 = /http:\/\/([^/]+)\//i;
	var regex3 = /import(-widget)/i;
    var domain = regex2.exec(url)[1];

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

	$.ajax({
		  type: 'POST',
		url: '/ajax',
		  data:"method=getOAuth&provider="+provider+"&redirect_url="+redirect_url+"&close="+closeWindow,
		  success: function(data){
				var obj = jQuery.parseJSON(data);
			if(obj.success) {
				if( obj.data && obj.data.redirect_url ) {
					document.location.href = obj.data.redirect_url;
				}
				if(obj.data.token){
					var expireToken = new Date();
					expireToken.setDate(expireToken.getDate() + 3650);
							
							$.cookie('ShareUT', obj.data.token, { expires: expireToken , path: '/', domain: '.sharethis.com' });
					if(window.name=="LoginWindow"){
						self.close();
					}
				    setTimeout("document.location.href = '/stream'",100);
				}
			}
		},
		  error:function() {

		}
	});
}

function showLightBox(val){
	var pScroll = [0,0,0,0];
	var scX=0;
	var scY=0;
	var winX=0;
	var winY=0;
       if (typeof(window.pageYOffset) == 'number') {
           //Netscape compliant
           scX=window.pageXOffset;
		scY=window.pageYOffset;
       } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
           //DOM compliant
		scX=document.body.scrollLeft;
		scY=document.body.scrollTop;
       } else if (document.documentElement
         && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
           //IE6 standards compliant mode
		scX=document.documentElement.scrollLeft;
		scY=document.documentElement.scrollTop;
       }
 	   if (window.innerWidth) {
   		winX=window.innerWidth;
      	winY=window.innerHeight;
   }
   else if (document.documentElement.offsetWidth) {
   		winX= document.documentElement.offsetWidth;
        winY=document.documentElement.offsetHeight;
   }
	pScroll={scrX:scX,scrY:scY,width:winX,height:winY};
	var pginfo=pScroll;
	var effectiveH=pginfo.height+pginfo.scrY;
	var effectiveW=pginfo.width+pginfo.scrX;
	var widgetH=100;
	var widgetW=300;
	var newH=effectiveH/2;
	newH=newH-50;
	var newW=effectiveW/2;
	newW=newW-200;
	document.getElementById("lightboxText").innerHTML=val;
	var overlay=document.getElementById("overlay");
	overlay.style.display="block";
	var lightbox=document.getElementById("lightbox");
	lightbox.style.top=newH+"px";
	lightbox.style.left=newW+"px";
	lightbox.style.display="block";	
}

function hideLightBox(){
	var overlay=document.getElementById("overlay");
	overlay.style.display="none";
	var lightbox=document.getElementById("lightbox");
	lightbox.style.display="none";
	setTracking('facebook');
}

function setTracking(service) {
	try {
		pageTracker._trackPageview('/dynamic/signin/' + service);
	} catch (err) {
	}
}

/* Display text box validation message. */
function testMsg(itemId,errorId) {
	if($('#'+itemId).val().length) {
			$('#'+errorId).css({visibility: "hidden"});
	} else
	{
		$('#'+errorId).css({visibility: "visible"});
	}
}

/* Display login failure messages. */
function displayMsg(msgTitle, msg) {
	$("#dialog").html(msg);
	$("#dialog").dialog({
		title: msgTitle,
		modal:true,
		minHeight: 100,
		dialogClass : "ui-dialog-OK-button",
		buttons: {
			OK: function() {
				$(this).dialog( "close" );
				isDialogOpen = false;
			}
		}
	});
}

$(document).ready(function() {
 	 $("form#signin_form").submit(function() {
		if (processing == false) {
					processing = true;
					$.ajax({  
						 type: "POST",  
						 url: "/ajax",  
						 data: "username="+$("#username").val()+"&password="+$("#password").val()+"&method="+$("#method").val(),
						 success: function(data){  
						 
						 	 var obj = jQuery.parseJSON(data);
							 processing = false;
							 
							 if(obj.success) {
								 /* On successful login. */
								 pageTracker._trackPageview('/dynamic/signin');
								 var redirect = $.cookie("SignInRedirect");
								 var expireRedirect = new Date();
								 expireRedirect.setDate(expireRedirect.getDate() - 365);
								 $.cookie('SignInRedirect', '', { expires: expireRedirect , path: '/', domain: '.sharethis.com' });
								 
								 var expireToken = new Date();
								 expireToken.setDate(expireToken.getDate() + 3650);
								 $.cookie('ShareUT', obj.data.token , { expires: expireToken , path: '/', domain: '.sharethis.com' });
								 
								 if(window.name=="LoginWindow"){
											self.close();
								 }
											
								 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 = '/account/signin-redirect.php';
									 }
								 } else {
												document.location.href = '/account/signin-redirect.php';
								 }
							}
							else
							{
								/* On error display message. */
								var errorCode = obj.statusMessage;
								switch (errorCode) {
								case "EMAIL_NOT_REGISTERED":
									displayMsg("Email Not Found", "There is no ShareThis account registered with this email address. Please click" +
									" on the Register link below to create an account.");
									break;
								case "EMAIL_OAUTHED":
									displayMsg("OAuth Account", "There is no ShareThis account registered with this email address. However," +
											" you logged in earlier with this email using \""+obj.oauthService+"\". So please login using \"" +
											obj.oauthService+"\".");
									break;
								case "INVALID_USERNAME_OR_PASSWORD":
									displayMsg("Invalid Username/Password", "Username and Password combination you entered does not match our records.");
									break;
								default:
									displayMsg("Error", "An Unkown error occurred. Please try again. Error Code: "+errorCode);
								}
							}
						}
			 }); 
		return false;		 
	}});  
		
	function validateSubmitForm() {
	
		/* Validate username is blank */
		if(($('#username').val().length)==0) 
			$('#usermsg').css({visibility: "visible"});
		else 
			$('#usermsg').css({visibility: "hidden"});
		
		/* Validate password is blank */
		if(($('#password').val().length==0)) 
			$('#pwdmsg').css({visibility: "visible"});
		else
			$('#pwdmsg').css({visibility: "hidden"});
		
		if(($('#usermsg').css('visibility')=='hidden') && ($('#pwdmsg').css('visibility')=='hidden')) 
		 $('#signin_form').submit();
	}
	
	$('#SignInBtn').live('click',function(e,t){
		validateSubmitForm();
	});
	
	/* Google oAuth */
	$('#signin_btn_google').live('click',function(e,t) {
		showLightBox("Connecting you to Google");
		signin_oauth('google', true);
	});
	
	/* Yahoo oAuth */
	$('#signin_btn_yahoo').live('click',function(e,t) {
		showLightBox("Connecting you to Yahoo");
		signin_oauth('yahoo', true);
	});
	
	/* Twitter oAuth */
	$('#signin_btn_twitter').live('click',function(e,t) {
		showLightBox("Connecting you to Twitter");
		signin_oauth('twitter', true);
	});
	
	/* Facebook oAuth */
	$('#signin_btn_facebook').live('click',function(e,t) {
		showLightBox("Connecting you to Facebook");
		signin_oauth('facebook', true);
	});
	
	/* Linked-In oAuth */
	$('#signin_btn_linkedin').live('click',function(e,t) {
		showLightBox("Connecting you to LinkedIn");
		signin_oauth('linkedin',true);
	});
	
	/* On 'Enter' Key press submit login form */
	$(document).keypress(function(e) {
		if(e.keyCode == 13) {
			if(isDialogOpen == false)
				validateSubmitForm();				
		}
	});
	
	$("#mail").hover( function () {
			$("#mail").css({"text-decoration":"none"})
	});
	
	$("#pass").hover( function () {
			$("#pass").css({"text-decoration":"none"})
	});
	
	$("#SignInBtn").hover( function () {
			$("#SignInBtn").css({"text-decoration":"none","color":"white"})
	 
	});
});	

