function validate_has_target()
{
     form = document.getElementById('upload_form');

     if (form.elements['files'] && form.elements['files'].value.length)
     {
          return true;
     }
     if (form.elements['ftp_http'] && form.elements['ftp_http'].value.length)
     {
          return true;
     }
     return false;
}

function validate_agree_checked()
{
     return document.getElementById('upload_form').elements['agree'].checked;
}

function check_form()
{
     if (!validate_has_target())
     {
          alert(msg_file_one_of);
          return false;
     }

     if (!validate_agree_checked())
     {
          alert(msg_agree_not_checked);
          return false;
     }

     generate_upload_id();

     begin_progress_bar(5);
     return true;
}

var generate_upload_id_allowed_chars = '1234567890qwertyuiopasdfghjklzxcvbnm';
var file_upload_id = '';
function generate_upload_id()
{
     var dt = new Date();
     var upload_id = Math.round(dt.getTime()/1000).toString();

     for(i=0;i<32;i++)
     {
          var idx = Math.round(Math.random() * generate_upload_id_allowed_chars.length);
          upload_id += generate_upload_id_allowed_chars.charAt(idx);
     }
     file_upload_id = upload_id;
     document.getElementById('upload_form').elements['UPLOAD_IDENTIFIER'].value = file_upload_id;
}

var every_timeout = 0;
var every_msec = 0;
var every_flag = true;

function hide_form()
{
     document.getElementById('upload_start_block').style.display = "none";
}

function show_form()
{
     document.getElementById('upload_start_block').style.display = "";
     if(document.getElementById('show_extendend_fields_link_block'))
          document.getElementById('show_extendend_fields_link_block').style.display = "";

     document.getElementById('upload_progress_block').style.display="none";
     document.getElementById('upload_done_block').style.display="none";
     document.getElementById('upload_abort_link').style.display="none";
     document.getElementById('upload_another_link').style.display="none";

     progress_bar_reset();
     every_flag = true;
     reset_iframe();
}

function show_bar()
{
     if(!every_flag) return;
     document.getElementById('upload_progress_block').style.display="";

     if(document.getElementById('show_extendend_fields_link_block'))
          document.getElementById('show_extendend_fields_link_block').style.display="none";

     document.getElementById('upload_abort_link').style.display='';
}

function reset_iframe()
{
     document.getElementById('uploadframe_span').innerHTML = '<iframe name="uploadframe" style="display:inline;margin:0;padding:0;height:0;width:0;" width="0" height="0" frameborder="0"></iframe>';
}

function every_func()
{
     if(!every_flag) return;
     cur = new Date();
     url = file_upload_check_dir+'/upt_'+file_upload_id+'.txt?time='+cur.getTime();
     req_send(url,
     function(text)
     {
          bar_data = progress_bar_parse_str(text);
          progress_bar_update(bar_data);
          req_clear();
     });
     every_timeout = setTimeout(every_func, every_msec);
}
function get_name_of_file()
{
     form = document.getElementById('upload_form');

     with (form.elements['files'])
     {
          if (value.length)
            {
                    return value;
            }
     }
     with (form.elements['ftp_http'])
     {
          if (value.length)
            {
                    return value;
            }
     }
      return 'Error!';
}

var speed_timer = null;
var speed_interval = 200;
var bar_data = null;
speed_updater_flag = true;
function speed_updater()
{
     if(!speed_updater_flag) return;
     if (!bar_data)
     {
          return;
     }
     new_bytes_uploaded= parseInt(bar_data.bytes_uploaded) + Math.round(bar_data.speed_average*speed_interval/1000.0);
     if (new_bytes_uploaded >= bar_data.bytes_total)
     {
          new_bytes_uploaded = bar_data.bytes_total;
          return;
     }
     bar_data.bytes_uploaded = new_bytes_uploaded;
     progress_bar_update(bar_data);
}
function speed_run()
{
     speed_timer = setInterval(speed_updater, speed_interval);
}
function speed_stop()
{
     speed_updater_flag = false;
     clearInterval(speed_timer);
}

function begin_progress_bar(sec)
{
     every_msec = sec*1000;
     clearTimeout(every_timeout);
     every_timeout = setTimeout(every_func, every_msec);
     speed_run();
     hide_form();
     show_bar();
}
function goto_gold()
{
     document.location.href=http_abs_path+'/gold.php';
}
function stop_progress_bar()
{
     every_flag=false;
     clearTimeout(every_timeout);
     document.getElementById('upload_progress_block').style.display = "none";
     document.getElementById('upload_abort_link').style.display= "none";

     document.getElementById('upload_another_link').style.display = "";
}
///////////////////////////////////////////////////////////////////////////
function upload_done()
{
     var max_url_length = 55;

     document.getElementById('upload_done_download_url_link').value=ud_download_url;
     document.getElementById('upload_done_download_url_forum_tag').value='[URL='+ud_download_url+']'+ud_download_url+'[/URL]';
     document.getElementById('upload_done_download_url_blog_tag').value='<a href="'+ud_download_url+'">'+ud_download_url+'</a>';

     document.getElementById('upload_done_delete_url_link').value=ud_delete_url

     stop_progress_bar();
     hide_form();

     document.getElementById('upload_done_block').style.display = "";
     reset_iframe();
}
var ue_fields = false;
function upload_error()
{
     stop_progress_bar();
     reset_form_errors();
     for(var i=0; i<ue_fields.length; i++)
     {
          if (ue_messages[ue_fields[i]])
          {
               if(document.getElementById('error_' + ue_fields[i]))
               {
                    document.getElementById('error_' + ue_fields[i]).innerHTML = ue_messages[ue_fields[i]];
                    document.getElementById('error_' + ue_fields[i]).style.display = "";
               }
               else
               {
                    alert(ue_fields[i] + ': ' + ue_messages[ue_fields[i]]);
               }
          }
     }
     show_form();
}
function upload_another_file()
{
     document.getElementById('upload_form').reset();
     reset_form_errors();
     show_form();
}
function reset_form_errors()
{
     if(!ue_fields)
     {
          return;
     }
     for(var i=0; i<ue_fields.length; i++)
     {
          if(document.getElementById('error_' + ue_fields[i]))
               document.getElementById('error_' + ue_fields[i]).style.display = "none";
     }
}
