document.observe("dom:loaded", function() {
	FB.init({
	    appId  : '145073305535193',
	    status : false, 
	    cookie : true, // enable cookies to allow the server to access the session
	    xfbml  : true  // parse XFBML
	});
});
var Facebook = Class.create({
	do_facebook_logout: function()
	{
		FB.getLoginStatus(function (response){
			if(response.status == 'connected')
			{
				FB.logout(
					function (response2)
					{
						window.location='/signin/logout';
					}
				);
			}
		});
	},
	do_facebook_login: function()
	{
		this.do_fb_session_connect(this.complete_facebook_login,this);
	},
	do_fb_session_connect: function(target,target_object,extra_perms)
	{
		this.target = target;
		this.target_object = target_object;
		FB.login(
			this.handle_response.bind(this),
			{scope:'publish_stream,email'+(extra_perms!=null?','+extra_perms:'')}
		);
	},
	check_session: function(response,required_perms)
	{
		if (response.authResponse) {
		
			if(required_perms != null)
			{
				for(var i = 0; i < required_perms.length; i++)
				{
					if(required_perms[i] == 'friends_work_history')
					{
						if(response.scope.friends_work_history != 1)
						{
							return false;
						}
					}
					//add more as needed
				}			
			}
			return true;
		}
		return false;
	},
	generate_facebook_form: function(response)
	{
		var perms = response.scope;
		var session = response.authResponse;
		
		var login_form = $('uvisor_header_convenience_form').clone(true);
	    login_form.method='post';
	    
	    var facebook_id_field = document.createElement('input');
	    var facebook_token_field = document.createElement('input');
	    var facebook_permission_field = document.createElement('input');
	    
	    facebook_permission_field.type = 'hidden';
	    facebook_permission_field.name='facebook_permitted_publish';
	    facebook_permission_field.value = perms.publish_stream==1?'1':'0';
	    
	    facebook_id_field.type = 'hidden';
	    facebook_id_field.name = 'facebook_user_id';
	    facebook_id_field.value = session.userID;
	    
	    facebook_token_field.type = 'hidden';
	    facebook_token_field.name = 'facebook_authorization_token';
	    facebook_token_field.value = session.accessToken;

	    login_form.appendChild(facebook_permission_field);
	    login_form.appendChild(facebook_id_field);
	    login_form.appendChild(facebook_token_field);
	    
	    document.body.appendChild(login_form);
	    
	    return login_form;
	},
	handle_response: function(response)
	{
		this.response = response;
		if(response.authResponse)
		{
			FB.api('/me/permissions',
				this.handle_perms.bind(this)
			);
		}
	},
	handle_perms: function(response)
	{
		this.response.scope = response.data[0];
		this.target(this.response);
	},
	complete_facebook_login: function(response)
	{
		if(this.check_session(response))
		{
			var login_form = this.generate_facebook_form(response);
			login_form.action = '/signin/facebook_login';
		    login_form.submit();
		}
	}
});
var Facebook_employee_company_finder = Class.create({
	initialize: function(company,target_div,hide_div,show_div,target_url,loading_div)
	{
		this.company = company;
		this.target_div = target_div;
		this.hide_div = hide_div;
		this.show_div = show_div;
		this.target_url = target_url;
		this.loading_div = loading_div;

		/*if(this.hide_div != null)
		{
			this.hide_div.hide();
		}
		if(this.loading_div != null)
		{
			this.loading_div.show();
		}*/
		facebook.do_fb_session_connect(this.response,this,'friends_work_history,friends_education_history,friends_location');
	},
	response: function(response)
	{
		if(facebook.check_session(response,Array('friends_work_history')))
		{
			var windowname;
			window.open('', windowname, 
					'height=400,width=400,scrollbars=yes');
			var login_form = facebook.generate_facebook_form(response);
			login_form.target = windowname;
			login_form.action = this.target_url+'?company='+this.company;
			login_form.method = 'post';
			login_form.submit();
			this.ajax_on_success();
		}
	},
	ajax_on_success: function()
	{
		/*if(this.hide_div != null)
		{
			this.hide_div.hide();
		}
		if(this.loading_div != null)
		{
			this.loading_div.hide();
		}
		if(this.show_div != null)
		{
			this.show_div.show();
		}*/
		reload_login_header();
	}
});
var LinkedIn = Class.create({
	do_linkedin_login: function()
	{
		this.do_linkedin_session_connect('signin/linkedin_login');
	},
	do_linkedin_session_connect: function(callback_url,new_window)
	{
		var login_form = $('uvisor_header_convenience_form').clone(true);
	    login_form.id='linkedin_login_form';
	    
	    var url = '/oauth_connect/request_access';
	    var baseURL = location.href;
		baseURL = baseURL.substring(0, baseURL.indexOf('/', 14));
		
		if(url.indexOf('/') == 0)
		{
			url = baseURL + url;
		}
		url = url.replace('http://','https://');
	    
	    
	    login_form.action = url;
	    login_form.method='post';
	    
	    if(new_window != undefined && new_window == true)
	    {
	    	var windowname;
	    	window.open('', windowname, 'height=200,width=400,scrollbars=yes');
	    	login_form.target=windowname;
	    }
	    
	    var linkedin_api_field = document.createElement('input');
	    var linkedin_callback_field = document.createElement('input');
	    
	    linkedin_api_field.type = 'hidden';
	    linkedin_api_field.name = 'api';
	    linkedin_api_field.value = 'linkedin';

	    linkedin_callback_field.type = 'hidden';
	    linkedin_callback_field.name = 'callback_url';
	    linkedin_callback_field.value = callback_url;
	    
	    login_form.appendChild(linkedin_api_field);
	    login_form.appendChild(linkedin_callback_field);
	    
	    document.body.appendChild(login_form);
	    login_form.submit();
	}
});

var Linkedin_employee_company_finder = Class.create({
	initialize: function(instance_name,company,target_div,hide_div,show_div,target_url,loading_div)
	{
		this.instance_name = instance_name;
		this.company = company;
		this.target_div = target_div;
		this.hide_div = hide_div;
		this.show_div = show_div;
		this.target_url = target_url;
		this.loading_div = loading_div;

		/*if(this.hide_div != null)
		{
			this.hide_div.hide();
		}
		if(this.loading_div != null)
		{
			this.loading_div.show();
		}*/
		
		
		
		var url = this.target_url+'?company='+this.company;
		
		linkedin.do_linkedin_session_connect(url,true);
	},
	response: function(response)
	{
		var windowname;
		window.open(this.target_url+'?company='+this.company, windowname, 
				'height=400,width=400,scrollbars=yes');
		this.ajax_on_success();
		
	},
	ajax_on_success: function()
	{
		/*if(this.hide_div != null)
		{
			this.hide_div.hide();
		}
		if(this.loading_div != null)
		{
			this.loading_div.hide();
		}
		if(this.show_div != null)
		{
			this.show_div.show();
		}*/
		reload_login_header();
	}
});

facebook = new Facebook();
linkedin = new LinkedIn();

reload_login_header = function()
{
	new Ajax.Updater('uvisor_header_login_status','/signin/header_login_status',{evalScripts:true});
}
