var MediaBox_load = 
{
    mediaMaxWidth : 427,
    mediaMaxHeight : 317,
    media_loaded : new Object(),
    galaxyUrl : null,
    rules : {
      /*'input#answer_title_switcher' : function(element)
      {
          element.onclick = function()
          {
             element.checked == true ? $('first_answer_title_box').show() : $('first_answer_title_box').hide();
          };
      }*/
    },
    initialize : function()
    {
        document.observe("dom:loaded", 
            function() {
                EventSelectors.start(MediaBox_load.rules);
                
                if($('mediaLink') && $('mediaLink').value != '')
                    MediaBox_load.showPreview($('mediaLink').value);
            }
        );
    },
    switchTab : function(type, host)
    {
        if($('answer_title_box'))
            $('answer_title_box').show();
        if($('answer_title_mask'))
            $('answer_title_mask').show();
        
        MediaBox_load.switchStep(false, 'second_step');
        
        switch(type)
        {
            case 'link':
                if($('mediaLink'))
                {
                    $('mediaLink').value = '';
                
                    $('media_link_box').show();
                    $('media_info_load').innerHTML = '';
                    
                    if($('mediaLink').value == '')
                    {
                        $('media_link_row').show();
                        MediaBox_load.switchStep(true, 'first_step', type);
                        MediaBox_load.showGalaxy();
                    }
                    else
                    {
                        $('media_link_row').hide();
                        MediaBox_load.switchStep(false, 'first_step');
                        MediaBox_load.switchStep(true, 'second_step', type);
                        MediaBox_load.showPreview($('mediaLink').value, type);
                    }
                }
            break;
            
            case 'picture':
                $('media_link_box').hide();
                MediaBox_load.switchStep(true, 'first_step', type);
                MediaBox_load.showFotomaton(host);
            break;
            
            case 'webcam':
                $('media_link_box').hide();
                MediaBox_load.switchStep(true, 'first_step', type);
                MediaBox_load.showWebcamRecorder();
            break;
        }
    },
    switchStep : function(visible, name, type)
    {
        if($(name + '_context'))
        {
            if(visible == true) // on
            {
                $(name + '_context').show();

                if($(name + '_' + type + '_context'))
                {
                    $(name + '_' + type + '_context').show();
                    
                    var siblingsContext = $(name + '_' + type + '_context').siblings();
                    siblingsContext.each(function(siblingContext)
                    {
                       siblingContext.hide();
                    });
                }
            }
            else // off
            {
                $(name + '_context').hide();
            }
        }
    },
    switchGalaxy : function(type)
    {
        if($('galaxy_box').visible() == false) // on
        {
            MediaBox_load.showGalaxy();
        }
        else // off
        {
            if($('mediaLink').value != '')
            {
                MediaBox_load.showPreview($('mediaLink').value, type);
            }
            else
            {
                MediaBox_load.hideGalaxy();
            }
        }
    },
    showGalaxy : function()
    {
        // hide
        MediaBox_load.hideWebcamRecorder();
        MediaBox_load.hideFotomaton();
        MediaBox_load.hidePreview();
        MediaBox_load.hideAnswers();
        
        $('media_preview_box').show();
    
        if($('galaxy_box'))
        {
	        // show
	        $('galaxy_box').show();
	        
	        // hide answer box
	        if($$('div.answer_box'))
	        {
	            $$('div.answer_box').each(function(answer_box)
	            {
	               answer_box.addClassName('hide');
	            });
	        }
	        
	        if($('galaxy').src != undefined) // iframe
	        {
	            $('galaxy').src = MediaBox_load.galaxyUrl;
	        }
	        else // object html
	        {
	            $('galaxy').data = MediaBox_load.galaxyUrl;
	        }
	    }
    },
    hideGalaxy : function()
    {
        if($('galaxy_box') && $('galaxy_box').visible() == true)
        {
            if($('media_type_load_link'))
            {
                $('media_type_load_link').checked = false;
                $('tab_media_load_link').removeClassName('select');
            }
            
	        $('galaxy_box').hide();
	    
	        if($('galaxy').src) // iframe
	        {
	            $('galaxy').src = 'galaxy';
	        }
	        else // object html
	        {
	            $('galaxy').data = '';
	        }
        }
    },
    showFotomaton : function(host)
    {
        // hide
        MediaBox_load.hideWebcamRecorder();
        MediaBox_load.hideGalaxy();
        MediaBox_load.hidePreview();
        MediaBox_load.hideAnswers();
    
        // show
        $('media_preview_box').show();
        $('fotomaton_box').show();
        
        var params = 
        {
          quality: 'high',
          allowScriptAccess: 'always'
        };
      
        var flashvars = 
        {
          host: host,
          type: 'media',
          code: ''
        };
        
        swfobject.embedSWF('/flash/fotomaton/fotomaton.swf', 'fotomaton', '100%', '100%', '9.0.28', '/js/lib/swfobject/expressInstall.swf', flashvars, params);
    },
    hideFotomaton : function()
    {
        if($('fotomaton_box') && $('fotomaton_box').visible() == true)
        {
            if($('media_type_load_picture'))
            {
                $('media_type_load_picture').checked = false;
                $('tab_media_load_picture').removeClassName('select');
            }
            
            $('fotomaton_box').hide();
            $('fotomaton_box').innerHTML = '<div id="fotomaton"><\/div>';
        }
    },
    showWebcamRecorder : function()
    {
        // hide
        MediaBox_load.hideGalaxy();
        MediaBox_load.hideFotomaton();
        MediaBox_load.hidePreview();
        MediaBox_load.hideAnswers();
        
        // show
        $('media_preview_box').show();
        $('uploader_webcam_box').show();
        
        var params = 
        {
          quality: 'high',
          allowScriptAccess: 'always'
        };
      
        var flashvars = 
        {
          version: 'recorder',
          allowAnonymous: 1,
          blog_name: 'tKaap'
        };
        
        swfobject.embedSWF('http://seesmic.com/embeds/wrapper.swf', 'uploader_webcam', '100%', '100%', '9.0.28', '/js/lib/swfobject/expressInstall.swf', flashvars, params);
    },
    hideWebcamRecorder : function()
    {
        if($('uploader_webcam_box') && $('uploader_webcam_box').visible() == true)
        {
            if($('media_type_load_webcam'))
            {
                $('media_type_load_webcam').checked = false;
                $('tab_media_load_webcam').removeClassName('select');
            }
            
            $('uploader_webcam_box').hide();
            $('uploader_webcam_box').innerHTML = '<div id="uploader_webcam"><\/div>';
        }
    },
    showTitle : function(title)
    {
        $('media_preview_title').innerHTML = title;
        
        if(title == '')
        {
            $('media_preview_title').hide();
        }
        else
        {
            $('media_preview_title').show();
        }
    },
    showPreview : function(url, type)
    {
        if($('answer_title_box'))
            $('answer_title_box').show();
        $('media_preview_title').hide();
        
        MediaBox_load.hideWebcamRecorder();
        MediaBox_load.hideGalaxy();
        MediaBox_load.hideFotomaton();

        type = type == undefined ? 'all' : type;
    
        if($('mediaLink').value == '')
        {
            MediaBox_load.switchStep(true, 'first_step');
            MediaBox_load.switchStep(false, 'second_step');

            if($('media_preview_box').visible() == true)
                MediaBox_load.showGalaxy();
            
            MediaBox_load.hidePreview();
        }
        else
        {
            var patterns = new Array();
            var media = null;
            
            patterns.push({source : 'dailymotion', type : 'video', regexp : '^http://(?:www\.|)dailymotion\.com/(?:.*)video/([a-zA-Z0-9]{1,18})(?:.*?)'});
            patterns.push({source : 'youtube', type : 'video', regexp : '^http://(?:.*\.|)youtube\.com/watch\\?v=([a-zA-Z0-9\-_]{1,11})(?:.*?)'});
            patterns.push({source : 'vimeo', type : 'video', regexp : '^http://(?:.*\.|)vimeo\.com/([a-zA-Z0-9\-_]{1,11})(?:.*?)'});
            patterns.push({source : 'seesmic', type : 'video', regexp : '^http://(?:.*\.|)seesmic\.com/(?:.*)(?:video|videos|v)/([a-zA-Z0-9]{1,10})(?:.*?)'});
            //patterns.push({source : 'koreus', type : 'video', regexp : '^http://(?:www\.|)koreus\.com/(?:.*)video/([a-zA-Z0-9\-]{1,256})(?:.*?).html'});
            //patterns.push({source : 'deezer', type : 'sound', regexp : '^http://www.deezer\.com/track/([0-9]{1,10})(?:.*?)', width : '220', height : '55'});
            //patterns.push({source : 'jiwa', type : 'sound', regexp : '^http://www.jiwa\.(?:fr|fm)/track/(?:.*)-([0-9]{1,10}).html', width : '315', height : '40'});
            patterns.push({source : 'tkaap', type : 'picture', regexp : '/uploads/media/tkaap/480x360/([a-zA-Z0-9]{1,10}).jpg$'});

            patterns.each(function(pattern, index)
            {
                if(type == 'all' || pattern.type == type)
                {
                    var regexp = new RegExp(pattern.regexp);
                    var matches = regexp.exec(url);
                    
                    if(matches != null && matches[0] != undefined)
                    {
                        media = new Object();
                        media.source = pattern.source;
                        media.sourceId = matches[1];
                        media.type = pattern.type;
                        media.width = pattern.width != undefined ? pattern.width : undefined;
                        media.height = pattern.height != undefined ? pattern.height : undefined;
                        
                        throw $break;
                    }
                }
            });

            if(media != null)
            {
                var yourContent = '';
                var yourMediaType = '';
                switch(media.type)
                {
                    case 'video':
                    yourMediaType = 'ta vidéo';
                    
                    break;
                    
                    /*case 'sound':
                    yourMediaType = 'ta musique';
                    break;*/
                    
                    case 'picture':
                    yourMediaType = 'ton image';
                    break;
                    
                    default:
                    yourMediaType = 'ton contenu';
                }
                yourContent = media.source == 'tkaap' ? yourMediaType : yourMediaType + ' ' + media.source.capitalize();
                
                $('media_link_row').hide();
                
                if($('answer_title_mask'))
                    $('answer_title_mask').hide();
                MediaBox_load.switchStep(false, 'first_step');
                MediaBox_load.switchStep(true, 'second_step', 'success');
                
                var confirmMsg = '';
                if(media.type == 'picture')
                    confirmMsg = 'Ça y est, nous avons développé <strong>' + yourContent + '</strong> !';
                else
                    confirmMsg = 'Cool, nous avons récupéré <strong>' + yourContent + '</strong> !';
                
                $('second_step_success_context').innerHTML = confirmMsg + $('second_step_success_context').innerHTML;
                
                if($('answer_title_row'))
                    $('second_step_success_context').innerHTML += ' Ajoute un titre et participe :';
            
                /*if(media.width != undefined && media.height != undefined)
                {
                    $('media_box_load').setStyle(
                    {
                      width: media.width + 'px',
                      height: media.height + 'px'
                    });
                }*/

                $('media_box_load').show();

                if(media.type == 'picture')
                {
                   $('media_load').innerHTML = '<img src="/uploads/media/tkaap/480x360/' + media.sourceId + '.jpg" />';
                   new Effect.Fade($('media_load'), {duration:3, from:0, to:1});
                }
                else
                {
                   MediaBox_play.loadSWF(media, 0, 'media_load');
                }
                
                $('media_data').innerHTML =
                '<input type="hidden" value="' + media.source + '" id="mediaLink_source" name="mediaLink_source"/>' + 
                '<input type="hidden" value="' + media.sourceId + '" id="mediaLink_sourceId" name="mediaLink_sourceId"/>' + 
                '<input type="hidden" value="' + media.type + '" id="mediaLink_type" name="mediaLink_type"/>';
                
                MediaBox_load.media_loaded = media;
                
                // enable button
            }
            else
            {
                $('media_link_row').show();
                
                if($('answer_title_box'))
                    $('answer_title_box').hide();
                MediaBox_load.switchStep(true, 'first_step');
                MediaBox_load.switchStep(true, 'second_step', 'error');
                $('second_step_error').innerHTML = 'Aie, il n\'y a aucun lecteur disponible pour ton contenu.';
                
                MediaBox_load.hidePreview();
                
                $('media_data').innerHTML = '';
            }

            MediaBox_load.hideAnswers();

            // show media preview box
            $('media_preview_box').show();
        }
    },
    hidePreview : function()
    {
        if($('media_info_load'))
            $('media_info_load').hide();
        
        if($('media_box_load'))
        {
            $('media_box_load').hide();
            $('media_box_load').setStyle(
            {
              width: MediaBox_load.mediaMaxWidth + 'px',
              height: MediaBox_load.mediaMaxHeight + 'px'
            });
    
            $('media_box_load').innerHTML = '<div id="media_load"><\/div>';
        }
    },
    showAnswers : function()
    {
        if($$('div.answer_player_box'))
        {
            $$('div.answer_player_box').each(function(answer_box)
            {
               answer_box.removeClassName('hide');
            });
        }
    },
    hideAnswers : function()
    {
        if($$('div.answer_player_box'))
        {
            if($('answer_list_box'))
            {
	            var answerBoxes = $('answer_list_box').select('li');
	            answerBoxes.each(function(answerBox)
	            {
	                 answerBox.removeClassName('play');
	            });
	        }
        
            $$('div.answer_player_box').each(function(answer_box)
            {
               answer_box.removeClassName('play');
               answer_box.addClassName('hide');
               
               MediaBox_play.unloadSWF(answer_box.id.replace(/answer_player_box_/g, ''), $(answer_box.id));
            });
        }
    }
};
MediaBox_load.initialize();

function videoFromRecorder(videoUri, title, url_thumbnail, recState, hasTitle) // seesmic callback
{
    $('mediaLink').value = videoUri;
    $('mediaLink_thumbUrl').value = url_thumbnail;
    
    return 'posted';
}

function fotomatonCallback(code)
{
    var pictureUrl = '/uploads/media/tkaap/480x360/' + code + '.jpg';
    $('mediaLink').value = pictureUrl;
}