var Uploader={ seconds:0, minutes:0, hours:0, start_time:0, upload_id:null, total_upload_size:0, total_kbytes:0, toggle_upload_stats:0, file_label_highlight_on:'#FFFFE0', file_label_highlight_off:'#F9F9F9', CPB_loop:false, CPB_width:0, CPB_bytes:0, CPB_time_width:1000, CPB_time_bytes:15, CPB_hold:true, CPB_byte_timer:null, CPB_status_timer:null, BPB_width_inc:0, BPB_width_new:0, BPB_width_old:0, BPB_timer:null, UP_timer:null, progress_data:null, path_to_link_script:"link_upload.php?s=1", path_to_set_progress_script:"http:///set_progress.php", path_to_get_progress_script:"http:///get_progress.php", path_to_upload_script:"http://:88/cgi-bin/upload.cgi", check_allow_extensions_on_client:null, check_disallow_extensions_on_client:null, allow_extensions:null, disallow_extensions:null, check_file_name_format:null, check_file_name_regex:null, check_file_name_error_message:null, max_file_name_chars:null, min_file_name_chars:null, check_null_file_count:1, check_duplicate_file_count:1, max_upload_slots:null, cedric_progress_bar:0, cedric_hold_to_sync:0, bucket_progress_bar:1, progress_bar_width:400, block_ui_enabled:1, show_percent_complete:1, show_files_uploaded:null, show_current_position:null, show_current_file:null, show_elapsed_time:null, show_est_time_left:1, show_est_speed:null, IsStop:0, getFileName:function(slot_value){ var index_of_last_slash = slot_value.lastIndexOf("\\"); if(index_of_last_slash < 1){ index_of_last_slash = slot_value.lastIndexOf("/"); } var file_name = slot_value.slice(index_of_last_slash + 1, slot_value.length); return file_name; }, getFileExtension:function(slot_value){ var file_extension = slot_value.substring(slot_value.lastIndexOf(".") + 1, slot_value.length).toLowerCase(); return file_extension; }, highlightFileLabel:function(file_label, color){ JQ("#" + file_label).css({background:color}); }, clearFileLabels:function(){ JQ("#upload_form").find(":file").each(function(){ Uploader.highlightFileLabel(JQ(this).attr("id") + "_label", Uploader.file_label_highlight_off); }); }, // Check the file format before uploading checkFileNameFormat:function(){ if(!Uploader.check_file_name_format){ return false; } var found_error = false; JQ("#upload_form").find(":file").each(function(){ if(JQ(this).val() !== ""){ var file_name = Uploader.getFileName(JQ(this).val()); if(file_name.length > Uploader.max_file_name_chars){ Uploader.highlightFileLabel(JQ(this).attr("id") + "_label", Uploader.file_label_highlight_on); Uploader.showAlert("Error, file name cannot be more than " + Uploader.max_file_name_chars + " characters.", 500, 85, Uploader.block_ui_enabled); found_error = true; } if(file_name.length < Uploader.min_file_name_chars){ Uploader.highlightFileLabel(JQ(this).attr("id") + "_label", Uploader.file_label_highlight_on); Uploader.showAlert("Error, file name cannot be less than " + Uploader.min_file_name_chars + " characters.", 500, 85, Uploader.block_ui_enabled); found_error = true; } if(!Uploader.check_file_name_regex.test(file_name)){ Uploader.highlightFileLabel(JQ(this).attr("id") + "_label", Uploader.file_label_highlight_on); Uploader.showAlert(Uploader.check_file_name_error_message, 500, 85, Uploader.block_ui_enabled); found_error = true; } } }); return found_error; }, // Check for legal file extentions checkAllowFileExtensions:function(){ if(!Uploader.check_allow_extensions_on_client){ return false; } var found_error = false; JQ("#upload_form").find(":file").each(function(){ if(JQ(this).val() !== ""){ var file_extension = Uploader.getFileExtension(Uploader.getFileName(JQ(this).val())); if(!file_extension.match(Uploader.allow_extensions)){ Uploader.highlightFileLabel(JQ(this).attr("id") + "_label", Uploader.file_label_highlight_on); Uploader.showAlert('Sorry, uploading a file with the extension "' + file_extension + '" is not allowed.', 500, 85, Uploader.block_ui_enabled); found_error = true; } } }); return found_error; }, // Check for illegal file extentions checkDisallowFileExtensions:function(){ if(!Uploader.check_disallow_extensions_on_client){ return false; } var found_error = false; JQ("#upload_form").find(":file").each(function(){ if(JQ(this).val() !== ""){ var file_extension = Uploader.getFileExtension(Uploader.getFileName(JQ(this).val())); if(file_extension.match(Uploader.disallow_extensions)){ Uploader.highlightFileLabel(JQ(this).attr("id") + "_label", Uploader.file_label_highlight_on); Uploader.showAlert('Sorry, uploading a file with the extension "' + file_extension + '" is not allowed.', 500, 85, Uploader.block_ui_enabled); found_error = true; } } }); return found_error; }, // Make sure the user selected at least one file checkNullFileCount:function(){ if(!Uploader.check_null_file_count){ return false; } var found_file = false; JQ("#upload_form").find(':file').each(function(){ if(JQ(this).val() !== ""){ found_file = true; } }); if(!found_file){ Uploader.showAlert("Please Choose A File To Upload.", 400, 80, Uploader.block_ui_enabled); return true; } else{ return false; } }, // Make sure the user is not uploading duplicate files checkDuplicateFileCount:function(){ if(!Uploader.check_duplicate_file_count){ return false; } var found_duplicate = false; var file_count = 0; var file_name_array = []; JQ("#upload_form").find(":file").each(function(){ if(JQ(this).val() !== ""){ var obj = {}; obj.file_name = Uploader.getFileName(JQ(this).val()); obj.label_name = JQ(this).attr("id") + "_label"; file_name_array[file_count] = obj; file_count++; } }); for(var i = 0; i < file_name_array.length; i++){ var obj_1 = file_name_array[i]; for(var j = 0; j < file_name_array.length; j++){ var obj_2 = file_name_array[j]; if(obj_1.file_name === obj_2.file_name && obj_1.label_name !== obj_2.label_name){ found_duplicate = true; Uploader.highlightFileLabel(obj_1.label_name, Uploader.file_label_highlight_on); Uploader.highlightFileLabel(obj_2.label_name, Uploader.file_label_highlight_on); } } } if(found_duplicate){ Uploader.showAlert("Duplicate upload files detected.", 400, 80, Uploader.block_ui_enabled); return true; } else{ return false; } }, showAlert:function(alert_message, alert_width, alert_height, block_ui_enabled){ if(!block_ui_enabled){ alert(alert_message); } else{ alert_message = "
" + alert_message + "

"; JQ.blockUI({ message:alert_message, css:{ width:alert_width+'px', height:alert_height+'px', top:(JQ(window).height() / 3) - (alert_height / 2) + 'px', left:(JQ(window).width() / 2) - (alert_width / 2) + 'px', textAlign:'center', cursor:'default', backgroundColor:'#EDEDED', borderColor:'#D9D9D9', color:'black', font:'14px Arial', fontWeight:'bold', padding:'2px', opacity:'1', '-webkit-border-radius':'2px', '-moz-border-radius':'2px' }, overlayCSS:{ cursor:'default', applyPlatformOpacityRules:true } }); } }, showCGIOutput:function(CGI_message, reset_page){ Uploader.showAlert(CGI_message, 400, 80, Uploader.block_ui_enabled); if(reset_page){ Uploader.resetFileUploadPage(); } }, showDebugMessage:function(message){ JQ("#uploader_debug").append(message + "
"); }, showAlertMessage:function(message){ JQ("#uploader_alert").html(message); }, redirectAfterUpload:function(redirect_url, embedded_upload_results){ redirect_url = decodeURIComponent(redirect_url); if(embedded_upload_results){ JQ(document).ready(function(){ JQ('#upload_container').html('

'); JQ('#upload_container').load(redirect_url);}); Uploader.showEmbeddedUploadResults(); JQ("#upload_form").hide(); JQ("#choose").hide(); } else{ self.location.href = redirect_url; } }, showEmbeddedUploadResults:function(){ Uploader.stopDataLoop(); Uploader.resetProgressBar(); JQ("#uploader_alert").html(""); JQ("#upload_container").show(); JQ("#reset_button").attr({src:'templates/default/images/Flexshare-deletefiles.png'}); JQ(".upfile_ultimo").remove(); JQ(".upfile").remove(); JQ(".upfile_label").remove(); JQ("#upload_button").show(); JQ("#upload_slots_container").hide(); Uploader.addUploadSlot(); }, stopDataLoop:function(){ Uploader.CPB_loop = false; clearInterval(Uploader.UP_timer); clearInterval(Uploader.BPB_timer); //Uploader.resetUploadDiv(); //JQ("#upload_container").html(""); if(Uploader.cedric_progress_bar){ if(Uploader.show_current_position){ clearTimeout(Uploader.CPB_byte_timer); } clearTimeout(Uploader.CPB_status_timer); } }, // Reset the progress bar resetProgressBar:function(){ JQ("#progress_bar_container").hide(); JQ("#upload_stats_container").hide(); Uploader.seconds = 0; Uploader.minutes = 0; Uploader.hours = 0; Uploader.start_time = 0; Uploader.upload_id = ''; Uploader.progress_data = ''; Uploader.total_upload_size = 0; Uploader.total_kbytes = 0; Uploader.toggle_upload_stats = 0; Uploader.CPB_loop = false; Uploader.CPB_width = 0; Uploader.CPB_bytes = 0; Uploader.CPB_hold = true; Uploader.BPB_width_inc = 0; Uploader.BPB_width_new = 0; Uploader.BPB_width_old = 0; JQ("#progress_bar").css("width", "0px"); if(Uploader.show_files_uploaded || Uploader.show_current_position || Uploader.show_elapsed_time || Uploader.show_est_time_left || Uploader.show_est_speed){ JQ("#upload_stats_toggle").html("[+]"); //JQ("#upload_stats_toggle").css({ backgroundImage : "url(./images/toggle.png)" }); } if(Uploader.show_percent_complete){ JQ("#percent_complete").html("0%"); } if(Uploader.show_files_uploaded){ JQ("#files_uploaded").html("0"); } if(Uploader.show_files_uploaded){ JQ("#total_uploads").html("0"); } if(Uploader.show_current_position){ JQ("#current_position").html("0"); } if(Uploader.show_current_position){ JQ("#total_kbytes").html("0"); } if(Uploader.show_elapsed_time){ JQ("#elapsed_time").html("00:00:00"); } if(Uploader.show_est_time_left){ JQ("#est_time_left").html("00:00:00"); JQ("#est_time_left").hide(); } if(Uploader.show_est_speed){ JQ("#est_speed").html("0"); } }, resetUploadDiv:function(){ JQ("#upload_container").hide(); JQ("#upload_container").html(""); }, // Initialize the file upload page resetFileUploadPage:function(){ Uploader.stopDataLoop(); Uploader.resetProgressBar(); Uploader.resetUploadDiv(); JQ("#uploader_alert").html(""); JQ("#reset_button").attr({src:'templates/default/images/Flexshare-deletefiles.png'}); JQ(".upfile_ultimo").remove(); JQ(".upfile").remove(); JQ(".upfile_label").remove(); JQ("#upload_button").show(); JQ("#upload_slots_container").hide(); JQ("#upload_form_values_container").show(); JQ("#choose").show(); Uploader.addUploadSlot(); Uploader.IsStop=1; }, // Link the upload linkUpload:function(){ if(Uploader.check_file_name_format || Uploader.check_allow_extensions_on_client || Uploader.check_disallow_extensions_on_client || Uploader.check_duplicate_file_count){ Uploader.clearFileLabels(); } if(Uploader.checkFileNameFormat()){ return false; } if(Uploader.checkAllowFileExtensions()){ return false; } if(Uploader.checkDisallowFileExtensions()){ return false; } if(Uploader.checkNullFileCount()){ return false; } if(Uploader.checkDuplicateFileCount()){ return false; } JQ("#upload_button").hide(); JQ("#choose").hide(); if(Uploader.show_files_uploaded){ JQ("#total_uploads").html(JQ(".upfile").length - 1); } var form_data = JQ("#upload_form").serialize(); var file_data = Uploader.serializeFileNames(); var data = form_data + "&" + file_data; JQ.post(Uploader.path_to_link_script, data, function(){}, "script"); return false; }, // Add upload file names to serialized data // Based on jQuery.serializeAnything by Bramus! (Bram Van Damme) serializeFileNames:function(){ var toReturn = []; JQ("#upload_form").find(":file").each(function(){ if(JQ(this).val() !== ""){ var file_name = Uploader.getFileName(JQ(this).val()); toReturn.push("upload_file[]" + "=" + encodeURIComponent(file_name)); } }); return toReturn.join("&").replace(/%20/g, "+"); }, // Initialize progress bar initializeProgressBar:function(upload_id, debug_ajax){ if(debug_ajax){ Uploader.showDebugMessage("Initializing Progress Bar: " + Uploader.path_to_set_progress_script + '?upload_id=' + upload_id); } var data = "upload_id=" + upload_id; JQ.get(Uploader.path_to_set_progress_script, data, function(){}, "script"); }, //Submit the upload form startUpload:function(upload_id, debug_upload, debug_ajax){ Uploader.resetUploadDiv(); Uploader.IsStop=0; var iframe_name = "upload_iframe_" + upload_id; if(debug_ajax){ Uploader.showDebugMessage("Submitting Upload: "+Uploader.path_to_upload_script+"?upload_id=" + upload_id); } JQ("#upload_container").html(""); JQ("#upload_form").attr("target", iframe_name); JQ("#upload_form").attr("action", Uploader.path_to_upload_script + "?upload_id=" + upload_id); JQ("#upload_slots_container").fadeOut("fast"); JQ("#upload_form_values_container").fadeOut("fast"); JQ(".upfile_ultimo").fadeOut("fast"); JQ("#upload_form").submit(); JQ("#reset_button").attr({src:'templates/default/images/Flexshare-reset.png'}); if(!debug_upload){ Uploader.initializeProgressBar(upload_id, debug_ajax); } else{ Uploader.showAlertMessage("Debug Uploader Detected, Please Wait..."); } }, // Stop the upload stopUpload:function(){ try{ document.execCommand("Stop"); } catch(e){} try{ window.stop(); } catch(e){} JQ("#upload_slots_container").fadeIn("fast"); JQ("#upload_form_values_container").fadeIn("fast"); JQ("#upload_button").show(); JQ("#reset_button").attr({src:'templates/default/images/Flexshare-deletefiles.png'}); }, // Get the progress of the upload getProgressStatus:function(){ if(Uploader.CPB_loop){ JQ.get(Uploader.path_to_get_progress_script, Uploader.progress_data, function(){}, "script"); } }, // Make the progress bar smooth smoothCedricStatus:function(){ if(Uploader.CPB_width < Uploader.progress_bar_width && !Uploader.CPB_hold){ Uploader.CPB_width++; JQ("#progress_bar").css("width", Uploader.CPB_width + "px"); } if(Uploader.CPB_loop){ clearTimeout(Uploader.CPB_status_timer); Uploader.CPB_status_timer = setTimeout("Uploader.smoothCedricStatus()", Uploader.CPB_time_width); } }, // Make the bytes uploaded smooth smoothCedricBytes:function(){ if(Uploader.CPB_bytes < Uploader.total_kbytes && !Uploader.CPB_hold){ Uploader.CPB_bytes++; JQ("#current_position").html(Uploader.CPB_bytes); } if(Uploader.CPB_loop){ clearTimeout(Uploader.CPB_byte_timer); Uploader.CPB_byte_timer = setTimeout("Uploader.smoothCedricBytes()", Uploader.CPB_time_bytes); } }, //Start the progress bar startProgressBar:function(upload_id, upload_size, start_time){ Uploader.upload_id = upload_id; Uploader.total_upload_size = upload_size; Uploader.start_time = start_time; Uploader.progress_data = "upload_id=" + Uploader.upload_id + "&start_time=" + Uploader.start_time + "&total_upload_size=" + Uploader.total_upload_size; Uploader.total_kbytes = Math.round(Uploader.total_upload_size / 1024); Uploader.CPB_loop = true; JQ("#progress_bar_container").fadeIn("fast"); Uploader.showAlertMessage("Upload In Progress"); if(Uploader.show_current_position){ JQ("#total_kbytes").html(Uploader.total_kbytes + " "); } if(Uploader.show_elapsed_time){ Uploader.UP_timer = setInterval("Uploader.getElapsedTime()", 1000); } Uploader.getProgressStatus(); if(Uploader.cedric_progress_bar){ if(Uploader.show_current_position){ Uploader.smoothCedricBytes(); } Uploader.smoothCedricStatus(); } }, // Calculate and display upload information setProgressStatus:function(total_bytes_read, files_uploaded, current_file, bytes_read, lapsed_time){ var byte_speed = 0; var time_remaining = 0; if(lapsed_time > 0){ byte_speed = total_bytes_read / lapsed_time; } if(byte_speed > 0){ time_remaining = Math.round((Uploader.total_upload_size - total_bytes_read) / byte_speed); } if(Uploader.cedric_progress_bar === 1){ if(byte_speed !== 0){ var temp_CPB_time_width = Math.round(Uploader.total_upload_size * 1000 / (byte_speed * Uploader.progress_bar_width)); var temp_CPB_time_bytes = Math.round(1024000 / byte_speed); if(temp_CPB_time_width < 5001){ Uploader.CPB_time_width = temp_CPB_time_width; } if(temp_CPB_time_bytes < 5001){ Uploader.CPB_time_bytes = temp_CPB_time_bytes; } } else{ Uploader.CPB_time_width = 500; Uploader.CPB_time_bytes = 15; } } // Calculate percent_complete finished var percent_complete = Math.floor(100 * parseInt(total_bytes_read, 10) / parseInt(Uploader.total_upload_size, 10)); if(percent_complete === Infinity){ percent_complete = 0; } var progress_bar_status = Math.floor(Uploader.progress_bar_width * (parseInt(total_bytes_read, 10) / parseInt(Uploader.total_upload_size, 10))); // Calculate time remaining var remaining_sec = (time_remaining % 60); var remaining_min = (((time_remaining - remaining_sec) % 3600) / 60); var remaining_hours = ((((time_remaining - remaining_sec) - (remaining_min * 60)) % 86400) / 3600); if(remaining_sec < 10){ remaining_sec = "0" + remaining_sec; } if(remaining_min < 10){ remaining_min = "0" + remaining_min; } if(remaining_hours < 10){ remaining_hours = "0" + remaining_hours; } var est_time_left = remaining_hours + ":" + remaining_min + ":" + remaining_sec; var est_speed = Math.round(byte_speed / 1024); var current_position = Math.round(total_bytes_read / 1024); if(Uploader.cedric_progress_bar === 1){ if(Uploader.cedric_hold_to_sync){ if(progress_bar_status < Uploader.CPB_width){ Uploader.CPB_hold = true; } else{ Uploader.CPB_hold = false; Uploader.CPB_width = progress_bar_status; Uploader.CPB_bytes = current_position; } } else{ Uploader.CPB_hold = false; Uploader.CPB_width = progress_bar_status; Uploader.CPB_bytes = current_position; } JQ("#progress_bar").css("width", progress_bar_status + "px"); } else if(Uploader.bucket_progress_bar === 1){ Uploader.BPB_width_old = Uploader.BPB_width_new; Uploader.BPB_width_new = progress_bar_status; if((Uploader.BPB_width_inc < Uploader.BPB_width_old) && (Uploader.BPB_width_new > Uploader.BPB_width_old)){ Uploader.BPB_width_inc = Uploader.BPB_width_old; } clearInterval(Uploader.BPB_timer); Uploader.BPB_timer = setInterval("Uploader.incrementProgressBar()", 10); } else{ JQ("#progress_bar").css("width", progress_bar_status + "px"); } if(Uploader.show_current_position){ JQ("#current_position").html(current_position); } if(Uploader.show_current_file){ JQ("#current_file").html(current_file); } if(Uploader.show_percent_complete){ JQ("#percent_complete").html(percent_complete + "%"); } if(Uploader.show_files_uploaded){ if(files_uploaded > 0){ JQ("#files_uploaded").html(files_uploaded); } } if(Uploader.show_est_time_left){ JQ("#est_time_left").html('EST:' + est_time_left + ' Speed:' + est_speed + 'Kb/s');JQ("#est_time_left").show(); } if(Uploader.show_est_speed){ JQ("#est_speed").html(est_speed); } if(Uploader.IsStop==1) { Uploader.resetUploadDiv();Uploader.resetProgressBar(); } }, incrementProgressBar:function(){ if(Uploader.BPB_width_inc < Uploader.BPB_width_new){ Uploader.BPB_width_inc++; JQ("#progress_bar").css("width", Uploader.BPB_width_inc + "px"); } }, // Calculate the time spent uploading getElapsedTime:function(){ Uploader.seconds++; if(Uploader.seconds === 60){ Uploader.seconds = 0; Uploader.minutes++; } if(Uploader.minutes === 60){ Uploader.minutes = 0; Uploader.hours++; } var hr = "" + ((Uploader.hours < 10) ? "0" : "") + Uploader.hours; var min = "" + ((Uploader.minutes < 10) ? "0" : "") + Uploader.minutes; var sec = "" + ((Uploader.seconds < 10) ? "0" : "") + Uploader.seconds; JQ("#elapsed_time").html(hr + ":" + min + ":" + sec); }, // Add one upload slot addUploadSlot:function(){ if(JQ(".upfile_ultimo").val() !== ""){ if(JQ(".upfile").length < Uploader.max_upload_slots + 1){ if(JQ(".upfile").length > 0){ JQ(".upfile_ultimo").hide(); JQ("#upload_slots_container").show(); JQ("#upload_slots_container").append('
' + Uploader.getFileName(JQ(".upfile_ultimo").val()) + '
'); //JQ("#upload_slots_container").append('
' + Uploader.getFileName(JQ(".upfile_ultimo").val()) + '
'); } var id = new Date().getTime(); JQ(".upfile_ultimo").removeClass("upfile_ultimo"); JQ("#file_picker_container").prepend(''); JQ("#upfile_" + id).bind("keypress", function(e){ var code = (e.keyCode ? e.keyCode : e.which); if(code === 13){ return false; } }); JQ("#upfile_" + id).bind("change", function(e){ Uploader.addUploadSlot(); }); if(JQ(".upfile").length > Uploader.max_upload_slots){ JQ(".upfile_ultimo").fadeOut("fast"); } } } }, deleteUploadSlot:function(id){ JQ("#"+id).remove(); JQ("#"+id+'_label').remove(); if(JQ(".upfile").length <= Uploader.max_upload_slots){ JQ(".upfile_ultimo").fadeIn("fast"); } if(JQ(".upfile").length === 1){ JQ("#upload_slots_container").hide(); } }, toggleUploadStats:function(){ if(Uploader.toggle_upload_stats){ if(Uploader.show_files_uploaded || Uploader.show_current_position || Uploader.show_elapsed_time || Uploader.show_est_time_left || Uploader.show_est_speed){ JQ("#upload_stats_toggle").html("[+]"); //JQ("#upload_stats_toggle").css({ backgroundImage : "url(./images/toggle.png)" }); } JQ("#upload_stats_container").slideUp("fast"); Uploader.toggle_upload_stats = 0; } else{ if(Uploader.show_files_uploaded || Uploader.show_current_position || Uploader.show_elapsed_time || Uploader.show_est_time_left || Uploader.show_est_speed){ JQ("#upload_stats_toggle").html("[-]"); //JQ("#upload_stats_toggle").css({ backgroundImage : "url(./images/toggle_collapse.png)" }); } JQ("#upload_stats_container").slideDown("fast"); Uploader.toggle_upload_stats = 1; } } };