/**
 * visionneuse
 *
 * http://www.naaow.org
 *
 * Copyright (c) 2008 Jeremy Clerc
 *
 *
 */

jQuery.visionneuse = {

  sizes : null,
  file : null,
  
	/**
	 * Builds the visionneuse
	*/
	build: function(options) {
	
	options = jQuery.extend({
     width: 1024,
     height: 768,
     url_page: "visu_creation.php",
     format: "img",
     image: "img_player_default.jpg",
     activ_inscr: false
  }, options);
  
		// Save original size
		jQuery.visionneuse.sizes = {
			width_crea : options.width,
			height_crea : options.height,
			width_visio : options.width,
			height_visio : options.height
		};
		
		//Save object info
		jQuery.visionneuse.file = {
			url_page : options.url_page,
			format : options.file_format,
			image : options.image,
			activ_inscr : options.activ_inscr
		};
		
		//alert("build jQuery.visionneuse.sizes.width_crea > "+jQuery.visionneuse.sizes.width_crea+" jQuery.visionneuse.sizes.height_crea > "+jQuery.visionneuse.sizes.height_crea);
    jQuery.visionneuse.get_dim_to_show();
    jQuery.visionneuse.get_file();
	},

	/**
	 * Get file who contain the media to display
	*/
	get_file : function() {
    var url_visu_creation = jQuery.visionneuse.file.url_page;
    jQuery.ajax({
      type: "GET",
      url: url_visu_creation,
      beforeSend : function() {
        jQuery.blockUI({ message: "<h4>"+cst_traitement+"</h4>"}); 
      },
      success: function(data)  {
      
        jQuery.visionneuse.show_media(data);
        
      }
    }); //fin ajax
  },
  
	/**
	 * Get dimension of client to show media biger as possible 
	*/
	get_dim_to_show : function() {
  	var li = jQuery.visionneuse.sizes.width_crea;
  	var hi = jQuery.visionneuse.sizes.height_crea;
  	
    //Si on a un lien d'inscription à afficher
    if(jQuery.visionneuse.file.activ_inscr) {
    	var ls = jQuery("body").width()-40;
    	var hs = jQuery("body").height()-80;
    }
    else {
      var ls = jQuery("body").width()-40;
      var hs = jQuery("body").height()-40;
    }
 
  	//Si largeur image est plus grande que largeur fenetre ou que hauteur image plus grande que hauteur fenetre
  	if (li>ls || hi>hs) {
  		if (li>hi) {
  			sens = "paysage";
  		}
  		else {
        sens = "portrait";
      }
  		
  		//Selon le sens on redimensionne    
  		switch (sens) {
  			case "paysage" :
  				//ratio 
  				var ratio_img = li/hi;
  				var ratio_screen = ls/hs;
  				
  				if (ratio_screen<ratio_img) {
  					
  					var w_container = Math.min(ls, li);
  					var h_container = Math.min(ls, li)/ratio_img;
  				} 
          else {
  					
  					var h_container = hs;
  					var w_container = Math.min(hs, hi)*ratio_img;
  				}
  				break;
  
  			case "portrait" :
  				//ratio 
  				var ratio_img = hi/li;
  				var ratio_screen = hs/ls;
  				
  				if (ratio_screen<ratio_img) {
  					var h_container = hs;
  					var w_container = hs/ratio_img;
  				} 
          else {
  					var w_container = ls;
  					var h_container = ls*ratio_img;
  				}
  				break;
  		}
  		//On attribue les nouvelles valeurs pour la visionneuse
			jQuery.visionneuse.sizes.width_visio =  Math.round(w_container);
			jQuery.visionneuse.sizes.height_visio = Math.round(h_container);
		
  	}
  	else {
      return true;
    }
    
  },
  
	/**
	 * Show the media in BlockUI
	 */
	show_media : function(data) {
	 
    var w_visio = w_media = jQuery.visionneuse.sizes.width_visio;
    var h_visio = h_media = jQuery.visionneuse.sizes.height_visio;
    
    //Si on a un lien d'inscription à afficher
    if(jQuery.visionneuse.file.activ_inscr) {
      h_visio = parseInt(h_visio)+parseInt(30);
      $("#recepteur_vide").html('<div id="boite_dialogue">'+data+'<a class="lien_interne picto_flb" href="index.php?p=13" title="'+cst_inscris_now_titre+'" >'+cst_inscris_now+'</a></div>');
    }
    else {
      $("#recepteur_vide").html('<div id="boite_dialogue">'+data+'</div>');
    }
    
    
    //var question = $("#boite_dialogue")[0]; 
    //$.extend($.blockUI.defaults.pageMessageCSS, { backgroundColor: '#272727', borderWidth: '0px', width : w_visio+'px', height : h_visio+'px', top:'50%', left:'50%', marginTop : -(h_visio/2)+'px', marginLeft : -(w_visio/2)+'px'});
    
    //Block de la page
    $.blockUI({ message: $("#boite_dialogue"), 
                css : { backgroundColor: '#272727', borderWidth: '0px', width : w_visio+'px', height : h_visio+'px', top:'50%', left:'50%', marginTop : -(h_visio/2)+'px', marginLeft : -(w_visio/2)+'px'}
             }); 
    
    //Initialise les interactions du média blocké
    jQuery.visionneuse.init_interaction();
    
    //Selon le format du média à afficher on appel le bon objet média
    switch(jQuery.visionneuse.file.format)  {
      
      case "img" :
      
         $("a.media").media({width: w_media
                             ,height: h_media
                            // ,params: { wmode: 'transparent'}
                            });
                              
      break;
       
      case "html" :
      case "pdf" :
      
        $("a.media").media( { width: w_media, height: h_media } );
        
      break;
      
      case "son" :
      
        $("a.media").media( { width: w_media, height: h_media,                   
          flashvars: {autostart: 'true', lightcolor: '0xe20074',backcolor: '0x000000',frontcolor: '0xCCCCCC', image : jQuery.visionneuse.file.image} 
        });
        
      break;
      
      case "flv" :
      
        $("a.media").media({width: w_media, 
                            height: h_media, 
                            autoplay: true,
                            params: { allowFullScreen: 'true'} ,
                            flashvars: {autostart: 'true', lightcolor: '0xe20074',backcolor: '0x000000',frontcolor: '0xCCCCCC' } 
                          }); 
      break;
      case "mov" :
        
        var h_media = parseInt(h_media)+parseInt(16);
        
        $("a.media").media({width: w_media, height: h_media});
        
      break;
      default :
      
        $("a.media").media({width: w_media, height: h_media});
        
      break;
      
    }
	},
  
  
	/**
	 * Init media interaction
	 */
	init_interaction : function() {

	  $("body").keypress(function(event) {
        
      var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;

      switch(key) {
      
        case 27 :
          jQuery.visionneuse.destroy();
        break;
      }
    });

    //-- X Fermer la fenetre
    $("a.fermer_crea").click(function() {
       jQuery.visionneuse.destroy();
    });
  },
  
	/**
	 * Destroys the visionneuse
	 */
	destroy: function() {
	 $("#boite_dialogue").empty();
	 $.unblockUI({ fadeOut:false });
	
	}
};


jQuery.fn.extend ({
		
		visionneuse : jQuery.visionneuse.build,

		visionneuseDestroy: jQuery.visionneuse.destroy
	});
