  var intervalID = 0;
        var progressBar;
        var fileUpload;
        var form;
        var token;
        
        function register(form, fileUpload, token){
            //  register the form
            this.form = form;
            this.fileUpload = fileUpload;
            this.token = token;
        }        
        
        function pageLoad(){
            $addHandler($get('upload'), 'click', onUploadClick);
            progressBar = $find('progress');    
        }
       function getfileextension(filename)
       {
          return typeof filename != "undefined" ? filename.substring(filename.lastIndexOf(".")+1, filename.length).toLowerCase() : false;  
       } 
       
       function ValideExtension(filename)
       {
        var extfile=getfileextension(filename);
        if (extfile=='wmv' || extfile=='mp4' || extfile=='3gb' || extfile=='mpeg' || extfile=='avi'|| extfile=='mov')
          return 1;
        else
          return 0;
       
       }
       
       function getsizeFile()
       { 
        
       }
        function onUploadClick(){
            
            //  todo: insert any regex to do any simple validation checks on
            //  the client.
            
            var vaild = fileUpload.value.length;  
            var isValiedExtension=ValideExtension(fileUpload.value);
            
            var sizefile=0;
            // Sizefile must be < 20 Mo = 20971520 Oct
            // To Test Use just 10 Mo = 10485760 Oct
       
            getsizeFile();
            if(vaild>0){
            
            if (isValiedExtension==1)
            {
             if (sizefile<10485760)
             {
                //  disable the upload button
                $get('upload').disabled = 'disabled';
                
                //  update the message
                updateMessage('info', 'En cours d&rsquo;envoi ...');
                
                //  submit the form containing the fileupload
                form.submit();
                
                //  hide the frame
                Sys.UI.DomElement.addCssClass($get('uploadFrame'), 'hidden');
                
                //  zero out the progressbar and show it
                progressBar.set_percentage(0);
                progressBar.show();                

                intervalID = window.setInterval(function(){
                    var request = new Sys.Net.WebRequest();
                    request.set_url('UploadProgress.ashx?DJUploadStatus=' + token + '&ts=' + new Date().getTime());
                    request.set_httpVerb('GET');                
                    request.add_completed(function(executor){
                    
                        var e = executor.get_xml().documentElement;                   
                        var empty = e.getAttribute('empty');
                    
                        if(!empty){
                            var percent = e.getAttribute('progress');
                            var file = e.getAttribute('file');
                            var kbs = Math.round(parseInt(e.getAttribute('bytes')) / 1024);    
                            var size = Math.round(parseInt(e.getAttribute('size')) / 1024);                        
                        
                            //  update the progressbar to the new value
                            progressBar.set_percentage(percent);
                            //  upadte the message
                            updateMessage('info', 'En cours d&rsquo;envoi ' + file + ' ... ' + kbs + ' of ' + size + ' KB');
                            
                            if(percent == 100){
                                //  clear the interval
                                window.clearInterval(intervalID);  
                                onComplete('error', 'Le fichier '+file+' a &eacute;t&eacute; trans&eacute;r&eacute; avec succ&egrave;s.');                      
                            }                        
                       }                    
                    });  
                    request.invoke();
                }, 500);
                }
                else
                {
                   document.getElementById("status").innerHTML='Taille de ce fichier:'+sizefile+'; erreur : Taille max = 20 Mo.';
                           
                }
                }else
                {
            
               document.getElementById("status").innerHTML='Erreur : types de fichiers autoris&eacute;s: mov, wmv, avi, 3gb, mp4, mpeg';
                }
            }
            else{
                //  todo: insert what ever error message makes sense for
                //  the validation that was done.
                onComplete('error', 'S&eacute;lectionner une vid&eacute;o.');
              
            }
        }
    
        function onComplete(type, msg){
            //  clear the interval
            window.clearInterval(intervalID);
            //  display the message
            updateMessage(type, msg);
            //  hide the progress bar
            progressBar.hide();
            progressBar.set_percentage('0');
            //  re-enable the button
            $get('upload').disabled = '';
            //  show the frame
            Sys.UI.DomElement.removeCssClass($get('uploadFrame'), 'hidden');
        }
        
        function updateMessage(type, value){
            var status = $get('status');
           // status.innerText = value;
           document.getElementById("status").innerHTML= value;
            //  remove all styles
            status.className = '';
            Sys.UI.DomElement.addCssClass(status, type);
        }
    