//Evitamos que se replique 
if (typeof _configConnect == 'undefined')
{

    /**
     * Objeto de configuracion
     */
    var _configConnect = 
    {
             fb : {
                 appId   : '108070199277130',
    //             channel : '',
                 scope   : 'email,user_education_history,user_groups,user_work_history,user_relationship_details,user_relationships,user_birthday,user_interests,user_activities,user_likes',
                 callback: 'http://connect.rollingstone.es/connect/facebook/rollingstone/'
                 },
             msn : {
                 appId   : '0000000040051D13',
    //             channel : '',
                 scope   : 'WL_Contacts.ViewFull,WL_Profiles.View',
                 callback: 'http://connect.rollingstone.es/connect/msn/rollingstone/'
                 },
             crm : {
                url              : 'http://rollingstone.es/users/addsocial',
                domain           : 'rollingstone.es',
                selector_btn_fb  : 'a.facebook',
                selector_btn_msn : 'a.messenger',
                fn_wait_layer    : 'getPopup'
                }
    };
    
    
    /**
    * Objeto controller para conectar con las distintas redes sociales
    *
    */
    var socialNetworksController = new function(){
    
    	/**
    	* Funciones privadas
    	*/
        this.win = null;
        var me = this;
        
        this.url = null;


        this.callWaitLayer = function() {
           var fn_name = _configConnect.crm.fn_wait_layer;
           var fn = function() {};
           try {
              eval(" if (typeof " + fn_name + " == 'function') fn = " + fn_name);
              fn();
           }
           catch (e){
           }
        }

    	/**
    	* Abre una ventana con la url especificada
    	*/
    	this.openWin = function(url, width, height)
    	{
            var winHeight = jQuery(window).height();
            var winWidth  = jQuery(window).width();
    
            
            var specs = "height="+height+",width="+width+",left="+((winWidth-width)/2)+",top="+((winHeight-height)/2)+",resizable=no";
            // Si la ventana esta abierta
    		if (this.win)
            {
                this.win.close();
                this.win = null;
            }
            document.domain = _configConnect.crm.domain;
            this.win = window.open(url, '', specs);
            this.win.focus();
    	}
    
    	/**
    	* Abre una ventana para Facebook
    	*/
    	this.openWinFb = function(href)
    	{
    	    this.url  = href; 
            var url   = "https://www.facebook.com/dialog/oauth?display=popup&client_id="+_configConnect.fb.appId+"&redirect_uri=" + escape(_configConnect.fb.callback) + "&scope="+_configConnect.fb.scope;
            this.openWin(url, 500, 350);
    	}
    	
        /**
        * Abre una ventana para Msn
        */
    	this.openWinMsn = function (href)
    	{  
    	    this.url  = href;
            var url   = "https://consent.live.com/Connect.aspx?wrap_client_id="+_configConnect.msn.appId+"&wrap_callback="+escape(_configConnect.msn.callback)+"&wrap_scope="+_configConnect.msn.scope;
            this.openWin(url, 475, 450);
    	}
    
        this.getUrl = function()
        {
           var url = this.url || "";
           var fn;
           if (url.substr(0, 11) == 'javascript:')
           {
               try {
                   url = url.substr(11);
                   fn = eval(url);
                   if (typeof fn == 'function')
                       url = fn();
                   else url = fn;
               }
               catch (err)
               {
                   url = '';
               }
           }
           url = url || "";
           // Nos avisa de que el js esta cargado. Solo para pruebas.
           if (url.substr(0, 4) != 'http'){
               url = _configConnect.crm.url;
           }
           return url;
        }
    
        /**
        * Se ejecuta cuando el usuario da permiso en la red social
        */
    	this.loginOk = function()
        {
           this.win.close();
           this.win = null;
           var url = this.getUrl();
           this.callWaitLayer();
    	   document.location.href = url;
    	}
    
        /**
        * Se ejecuta cuando el usuario se produce algo error en la accion de conectarse
        */
        this.loginError = function() 
        {
           this.win.close();
           this.win = null;
       
        }
    
        /**
        * API Funciones publicas
        */
    	return {
    		fb : { 
              handlerTakeProfile : function(e) {me.openWinFb(jQuery(this).attr('href'));return false;}
    		},
    	    msn :{
              handlerTakeProfile : function(e) {me.openWinMsn(jQuery(this).attr('href'));return false;}
    	    },
    	    loginOk: function() {me.loginOk()},
    	    loginError: function(){ me.loginError()}
    	}
    }
    
     
    /**
    * Objecto que asigna los eventos en los botones
    */
    var buttons = new function() 
    {
        /**
        * Funciones privadas
        */
    
         /**
         * Inicializacion
         */
         this.domButtonFb = {};
         this.domButtonMsn = {};
         
         me = this;
         jQuery(document).ready(function(){ 
             me.domButtonFb  = jQuery(_configConnect.crm.selector_btn_fb);
             me.domButtonMsn = jQuery(_configConnect.crm.selector_btn_msn);
             me.domButtonFb.click(socialNetworksController.fb.handlerTakeProfile);
             me.domButtonMsn.click(socialNetworksController.msn.handlerTakeProfile);
          });
    
         /**
         * API functiones publicas botones.
         * Posibilidad de estados
         */
         return {
    
         }
    }
}



