$(function(){
   $('li .box-all-right').hide();
   $('#error-login').hide();
   $('#forgot-email').hide();
   $('#forgot-password').hide();
   $('#change-password-error').hide();
   $('.close-errors').click(function(){
      $(this).parent().hide();
   });

   $('#auth div.technology').toggle(
      function(){
         $('#auth div.box-all-right').slideDown('slow');
         $(this).find('span').html('<img alt="" src="/template/img/6tpc4td.gif" style="width:13px; height:11px"/>');
      },
      function(){
         $('#auth div.box-all-right').slideUp('slow');
         $(this).find('span').html('<img alt="" src="/template/img/80mxwlz.gif" style="width:13px; height:11px"/>');
         $('#error-login').hide();
         $('#forgot-email').hide();
      }
   );
   $('#join div.technology').toggle(
      function(){
         $('#join div.box-all-right').slideDown('slow');
         $(this).find('span').html('<img alt="" src="/template/img/6tpc4td.gif" style="width:13px; height:11px"/>');
      },
      function(){
         $('#join div.box-all-right').slideUp('slow');
         $(this).find('span').html('<img alt="" src="/template/img/80mxwlz.gif" style="width:13px; height:11px"/>');
      }
   );
   $('#forgot-password-trigger').toggle(
      function(){
         $('#forgot-password').slideDown('slow');
      },
      function(){
         $('#forgot-password').slideUp('slow');
         
      }
   );

   $('#edit-account div.technology').toggle(
      function(){
         $('#edit-account div.box-all-right').slideDown('slow');
         $(this).find('span').html('<img alt="" src="/template/img/6tpc4td.gif" style="width:13px; height:11px"/>');
      },
      function(){
         $('#edit-account div.box-all-right').slideUp('slow');
         $(this).find('span').html('<img alt="" src="/template/img/80mxwlz.gif" style="width:13px; height:11px"/>');
      }
   );

   $('#change-pass div.technology').toggle(
      function(){
         $('#change-pass div.box-all-right').slideDown('slow');
         $(this).find('span').html('<img alt="" src="/template/img/6tpc4td.gif" style="width:13px; height:11px"/>');
      },
      function(){
         $('#change-pass div.box-all-right').slideUp('slow');
         $(this).find('span').html('<img alt="" src="/template/img/80mxwlz.gif" style="width:13px; height:11px"/>');
      }
   );

   $('#auth-form-go').click(function(e){
      e.preventDefault();

      $('#error-login').hide();

      var patt = /[^a-zA-Z_0-9]/;
      var user = $('#username').val();
      var pass = $('#password').val();
      var valid_user = patt.test(user);

      if(user.length < 3 || valid_user === true) {
         $('#auth-error-text').html('Completeaza numele utilizatorului corect.');
         $('#error-login').fadeIn('fast');
      } else if(pass.length < 6){
         $('#auth-error-text').html('Completeaza parola corect.');
         $('#error-login').fadeIn('fast');
      } else {

         $.post('/ajax/check_auth', {username: user, password: pass}, function(data) {
            if(data.status == 0 || data.status !== 1)
            {
               $('#auth-error-text').html('Autentificare esuata, incearca din nou. Verifica daca nu ai caps lock pornit. Ai grija sa completezi cu atentie campurile.');
               $('#error-login').fadeIn('fast');
            }
            else
            {
               $('#auth-form').submit();
            }
         }, 'json');
      }
   });

   $('#reset-password').submit(function(event){
      event.preventDefault();
      $('#forgot-email').hide();
      var email = $('#email');
      if(email.checklength(6, 33) && email.checkregexp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i))
      {
         $.post('/ajax/request_reset', {address: email.val()}, function(data) {
            if(data.status == 0)
            {
               $('#forgot-email-text').css('color', 'red');
               $('#forgot-email-text').html('Adresa de email introdusa nu exista in baza noastra de date.');
               $('#forgot-email').fadeIn('fast');
            }
            else if(data.status == 3)
            {
               $('#forgot-email-text').css('color', 'red');
               $('#forgot-email-text').html('Nu am putut sa-ti trimitem emailul, te rugam contacteaza un admin.');
               $('#forgot-email').fadeIn('fast');
            }
            else if(data.status == 6)
            {
               $('#forgot-email-text').css('color', 'red');
               $('#forgot-email-text').html('Ai mai cerut o resetare a parolei, aceasta este valabila 24 de ore, verifica-ti adresa de email pentru a o folosi. Nu poti cere decat o resetare pe zi.');
               $('#forgot-email').fadeIn('fast');
            }
            else
            {
               $('#forgot-email-text').css('color', '#96B016');
               $('#forgot-email-text').html('Ti-am trimis un link de resetare a parolei pe adresa <b>' + email.val() + '</b>.');
               $('#forgot-email').fadeIn('fast');
            }
         }, 'json');
      }
      else
      {
         $('#forgot-email-text').css('color', 'red');
         $('#forgot-email-text').html('Adresa introdusa nu este o adresa de email valida.');
         $('#forgot-email').fadeIn('fast');
      }
   });

   $('#change-password-form').submit(function(event){
      event.preventDefault();
      var current_p = $('#curr-password');
      var new_p = $('#new-password');
      var new_pc = $('#new-password-confirm');

      if( ! new_p.checklength(6, 21))
      {
         $('#wrong-new-password').dialog('open');
         return false;
      }
      else
      {
          new_p.removeClass("wrong-pass-dow");
          new_p.addClass("pass-dow");
      }

      if( new_p.val() !== new_pc.val() )
      {
         $('#wrong-match-password').dialog('open');
         return false
      }
      else
      {
          new_pc.removeClass("wrong-pass-dow");
          new_pc.addClass("pass-dow");
      }

      $.post('/ajax/change_password', {op: current_p.val(), np: new_p.val()}, function(return_data) {
         $('#change-password-dialog p span[class=ui-icon]').removeClass('ui-icon-circle-check');
         $('#change-password-dialog p span[class=ui-icon]').removeClass('ui-icon-alert');
         if(return_data.status == 1) {
            $('#change-password-dialog p span[class=ui-icon]').addClass('ui-icon-circle-check');
            $('#change-password-dialog p span[class=modal-msg]').html('Parola schimbata cu succes.');
            $('#change-password-dialog').dialog('open');
         } else {
            $('#change-password-dialog p span[class=ui-icon]').addClass('ui-icon-alert');
            $('#change-password-dialog p span[class=modal-msg]').html('Parola curenta incorecta.');
            $('#change-password-dialog').dialog('open');
         }
      }, 'json');
   });

   $('#register-form').submit(function(event){
      event.preventDefault();

      var r_username = $('#register-username');
      var r_email = $('#register-email');
      var r_password = $('#register-password');
      var r_password_c = $('#register-password-confirm');

      var terms_n = $("#register-form input:checked").length;
      var terms;

      if(terms_n == 1) {
         terms = "yes";
      } else {
         terms = "no";
      }

      $("#register-form button").hide();
      $("#register-form button").after('<img id="loader24-img" alt="loading" src="/template/img/ajax-loader24.gif" />');

      $.post('/ajax/register', {registerterms: terms, username: r_username.val(), email: r_email.val(), password: r_password.val(), cpassword: r_password_c.val()}, function(return_data) {
         if(return_data.status == 1) {
            $('#register-form').parent().html('<h2 style="padding: 12px 0px 12px 0px; color: #89A110">Contul este aproape gata. Verifica-ti casuta de email pentru a-ti activa contul si a-l putea folosi.</h2>');
         } else {
            $('#register ul').html("");
            $.each(return_data.messages, function(i, msg){
               $('#register ul').append('<li>'+ msg +'</li>');
            });
            $('#register').dialog('open');
         }
      }, 'json');
   });

   $('#edit-account-form').submit(function(event){
      event.preventDefault();
      var uploadpriv = $(".public input:radio:checked").val();
      var ownerpriv = $("#details-privacy:checked").length;
      var uemail = $("#details-email");
      $('#edit-account-modal p span:first').attr('class', 'ui-icon');
      if(uemail.checklength(6, 33) && uemail.checkregexp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i))
      {
         $.post('/ajax/modify_account', {new_nume : $("#details-nume").val(), new_prenume : $("#details-prenume").val(), new_email : $("#details-email").val(), new_website : $("#details-website").val(), new_details_upload : uploadpriv, new_details_privacy : ownerpriv}, function(data){
            if(data.status == 1) {
               $('#edit-account-modal p span:first').addClass('ui-icon-circle-check');
               $('#edit-account-message').html('Datele contului au fost modificate cu succes.');
               $("#edit-account-modal").dialog('open');
            } else {
               $('#edit-account-modal p span:first').addClass('ui-icon-alert');
               $('#edit-account-message').html('Datele contului nu au fost modificate, contactati un admin.');
               $("#edit-account-modal").dialog('open');
            }
         }, 'json');
      }
      else
      {
            $('#edit-account-modal p span:first').addClass('ui-icon-alert');
            $('#edit-account-message').html('Adresa de email invalida.');
            $("#edit-account-modal").dialog('open');
      }
   });

   $('#uplfrm button').click(function(e) {
      e.preventDefault();
      uemail = $('#sendtoemail');
      var uplt = $('#uplterms').attr('checked');
      if($('#sendtoemail').val() == "" || uemail.checkregexp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i)) {
         if($("input[type=file]").length < 2) {
            alert("Nu ai selectat niciun fisier.");
         } else if( ! uplt) {
            alert("Nu ai acceptat termenii si conditiile de upload.");
         } else {
            rndid = $('#rndid').val();
            mirror = $('#mirror').val();
            port = $('#port').val();
            $('#uplfrm').submit();
            statusinterval = setInterval("getStatus()", 1000);
            $("div .form-upload").remove();
            $("#mainh").css("text-align", "center");
            $("#mainh").html("Va rugam asteptati...");
            $("#currspeed").parent().prepend('<div style="text-align: center"><img src="/template/img/ajax-loader48.gif" alt="loading" id="loader48-img"></div>');
         }
      } else {
         alert("Adresa de email este invalida.");
      }

   });

   $("#youselected").hide();

   $("input[type=file]").change(function(){
      updateInputs(this, 100);
   });

});

var lastreceived = 0;
var inputscount = 0;
var rndid, mirror, port, statusinterval;

function updateInputs(elem, fileMax){
   var n = $("input[type=file]").length;
   n = n - 1;
   if(n < fileMax) {
      var rawfilename = $(elem).val();
      var filename = rawfilename.replace(/^.*\\/, '');
      $(elem).hide();
      $(elem).removeClass("uplod-file");
      $(elem).attr("name", "inputs_"+inputscount);
      $('#fileoutputs').prepend('<h3 id="outputs_'+inputscount+'"><img class="imglink" onclick="deleteUploadInput(this);" alt="Delete" src="/template/img/delete.png"/>'+filename+'</h3>');
      $("#fileinputs").append('<input type="file" name="defaultinput" class="uplod-file" />');

      $("input[type=file]").change(function(){
         updateInputs(this, 100);
      });

      $("#youselected").show();
      updateUploadCount();
      inputscount = inputscount + 1;
   } else {
      alert("Ai atins numarul maxim admis de fisiere, 100.");
   }
}

function deleteUploadInput(element) {
   $(element).parent().remove();
   var inputid = $(element).parent().attr("id");
   inputid = inputid.slice(8);
   $("input[name=inputs_"+inputid+"]").remove();
   updateUploadCount();
   inputscount = inputscount - 1;
}

function updateUploadCount() {
   var n = $("input[type=file]").length;
   n = n - 1;
   if(n == 0) {
      $("#youselected").hide();
      $("#countselected").html(n);
   } else {
      $("#countselected").html(n);
   }
}

function getStatus() {
   var speed = 0;
   $.ajax({
      type: "GET",
      url: "http://"+mirror+":"+port+"/status",
      data: "id="+rndid,
      dataType: "jsonp",
      success: function(msg) {
         $("#stopupload").html('<button type="button" onclick="javascript:location.reload();">STOP</button>');
         if(msg.status == "done") {
            clearInterval(statusinterval);
            $("#stopupload").hide();

            if($("#progressbar").html().length > 3) {
               $("#progressbar").progressbar("destroy");
            }
            
            $("#currfile").hide();
            $("#currspeed").hide();
            $("#currspeed2").hide();
            $("#currtransfer").hide();
            $("#currprogress").hide();
            $("#mainh").html("Va rugam asteptati...");
            $('#uf').remove();
            $.getJSON("/ajax/process_upload/"+rndid, function(resp){
               $("#loader48-img").parent().remove();
               $("#mainh").remove();
               var thediv = $("#currprogress").parent();
               var line;
               $(thediv).prepend('<ul style="list-style: none"></ul>');
               $.each(resp, function(index, value) {
                  line = '<li style="border-bottom: solid thin #666666; padding-bottom: 12px">'+
                     '<p><b>Nume fisier:</b> '+value.name+'.'+value.ext+' (<a href="/'+value.qs+'/'+value.seo+'-'+value.ext+'.html" title="'+value.name+'.'+value.ext+'">descarca acum</a>)</p>'+
                     '<p><b>Marime fisier:</b> '+value.size+'</p><br/>'+
                     '<p><b>Link descarcare:</b></p>'+
                     '<p><input style="width: 99%" onclick="this.focus();this.select();" type="text" id="link_dl" value="http://'+location.hostname+'/'+value.qs+'/'+value.seo+'-'+value.ext+'.html" /></p>'+
                     '<p><b>Link forum:</b></p>'+
                     '<p><input style="width: 99%" onclick="this.focus();this.select();" type="text" id="link_dl" value="[URL=http://'+location.hostname+'/'+value.qs+'/'+value.seo+'-'+value.ext+'.html]'+value.name+'.'+value.ext+'[/URL]" /></p>'+
                     '<p><b>Link stergere:</b></p>'+
                     '<p><input style="width: 99%" onclick="this.focus();this.select();" type="text" id="link_dl" value="http://'+location.hostname+'/del:'+value.nhash+'.html" /></p>'
                  +'</li><p>&nbsp;</p>';
                  $(thediv).find("ul").append(line);
               });
            });
         } else if(msg.status == "error") {
        	 clearInterval(statusinterval);
             $("#currfile").hide();
             $("#currspeed").hide();
             $("#currspeed2").hide();
             $("#currtransfer").hide();
             $("#currprogress").hide();
             $("#loader48-img").parent().remove();
             window.stop();
             $('#uf').remove();
             $("#mainh").html("Eroare");
             $("#stopupload");
             $("#currprogress").parent().prepend("<p style=\"text-align: center\">Marimea totala a fisierelor alese depaseste 1GB</p>");
         } else {
            speed = Math.round((msg.received - lastreceived) / 2);
            lastreceived = msg.received;
            $("#loader48-img").parent().remove();
            $("#mainh").html("Upload in curs...");
            $("#currprogress").html("<b>Progres:</b> "+msg.percent+"%");
            $("#progressbar").progressbar({value: Math.floor(msg.percent)});

            if(msg.size > 1024) {
               $("#currtransfer").html("<b>Megabiti trimisi:</b> "+(msg.received / 1024).toFixed(1)+" din "+(msg.size / 1024).toFixed(1));
            } else {
               $("#currtransfer").html("<b>Kilobiti trimisi:</b> "+Math.round(msg.received)+" din "+Math.round(msg.size));
            }

            $("#currfile").html("<b>Se trimite:</b> "+msg.filename);

            if(speed > 1024) {
               $('#currspeed').html("<b>Viteza (megabiti/s):</b> "+(speed / 1024).toFixed(1)+" <b>MBps</b>");
               $('#currspeed2').html("<b>Viteza: (megabaiti/s):</b> "+Math.round(((speed / 1024) * 8))+" <b>Mbps</b>");
            } else {
               $('#currspeed').html("<b>Viteza (kilobiti/s):</b> "+speed+" <b>KBps</b>");
               $('#currspeed2').html("<b>Viteza (kilobaiti/s):</b> "+Math.round(speed * 8)+" <b>Kbps</b>");
            }

         }
     },
     error:function (xhr, ajaxOptions, thrownError){
        alert(xhr.status);
        alert(thrownError);
     }
   });
};
