var cArticle; // save article for refresh
function getMMItem(item) {
  var itemID = item.attr('id').substr(4);
  var mmList;
  var bMultimediaItem = item.hasClass('multimedia');
  if(bMultimediaItem) {
    mmList = cArticle.multimedia;
  }
  else {
    mmList = cArticle.document;
  }
  var i, iResult = -1;
  for(i = 0; i < mmList.length; i++) {
    if(mmList[i].item === itemID) {
      iResult = i;
    }
  }
  return {bMultimedia: bMultimediaItem, index: iResult};
}

function updateMMItem(item, mmItem) {
  var imgSrc;
  if(mmItem.doctype === 'image') {
    imgSrc = 'image.php?var=thumb&item=' + mmItem.item;
  }
  else {
    imgSrc = 'css/standard/images/' + mmItem.mime.substr(mmItem.mime.indexOf('/') + 1) + '.png';
  }
  var img = $('<img />').attr('src', imgSrc).attr('title', mmItem.info).attr('alt', mmItem.caption);
  item.find('.contPic').empty().append(img);
  if(mmItem.doctype !== 'image') {
    img.wrap($('<a href="' + 'image.php?dl=1&item=' + mmItem.item + '" />'));
  }
  img.removeAttr('width').removeAttr('height');
  item.attr('id', 'item' + mmItem.item);
  item.find('.namePicture').val(mmItem.caption);
  item.find('.descPicture').val(mmItem.description);
}

function refreshMMItem(item) {
  var mmFindItem = getMMItem(item);
  if(mmFindItem.index !== -1) {
    if(mmFindItem.bMultimedia) {
      updateMMItem(item, cArticle.multimedia[mmFindItem.index]);
    }
    else {
      updateMMItem(item, cArticle.document[mmFindItem.index]);
    }
  }
  else {
    dlgAlert('not found');
  }
}

function testUploadFile(file) {
  var strMsg;
  var regexp = /\.(png)|(jpg)|(gif)|(pdf)|(doc)|(rtf)|(txt)|(zip)|(ppt)|(pptx)$/i;
  var sizeLimit = 30; // MB
  if(file.size > (sizeLimit * 1024 * 1024)) {
    strMsg = 'Prevelika datoteka (najviše dopušteno ' + sizeLimit + 'MB)';
  }
  else if(!regexp.test(file.name)) {
    strMsg = 'Dopuštene su slike (jpg, png, gif) i<br />dokumenti (doc, rtf, txt, pdf, zip, ppt, pptx)';
  }

  return strMsg;
}

function writeMultimediaList(contList, mmList, strClass) {
  var t = $('#templateMM li:first');
  var i, item, mmItem;
  for(i = 0; i < mmList.length; i++) {
    mmItem = mmList[i];
    item = t.clone();
    item.addClass(strClass);
    contList.append(item);
    updateMMItem(item, mmItem);
  }
}

function writeMultimediaArticle(article) {
  var contList = $('#sortableMM');
  contList.empty();
  cArticle = article;
  writeMultimediaList(contList, article.multimedia, 'multimedia');
  writeMultimediaList(contList, article.document, 'doc');
}

function getMMItems(articleData) {
  var i, item, aItem, items = $('#sortableMM li'), mmItems = [], docItems = [];
  for(i = 0; i < items.length; i++) {
    item = items.eq(i);
    aItem = {item: item.attr('id').substr(4), caption: item.find('.namePicture').val(), description: item.find('.descPicture').val()};
    if(item.hasClass('doc')) {
      docItems.push(aItem);
    }
    else {
      mmItems.push(aItem);
    }
  }
  articleData.multimedia = mmItems;
  articleData.document = docItems;
  return articleData;
}

function initEditorMM() {
  
  $("#sortableMM").sortable({
    distance: 5,
    revert: true,
    ahandle: ".namePicture, .contPic",
    cancel: ".namePicture, .descPicture",
    update: function(event, ui) {
      //alert('refresh ordernum');
    }
  });
  
  //$( "ul, li" ).disableSelection();
  
  $('.upload').fileUploadUI({
      uploadTable: $('.upload_files'),
      downloadTable: $('#sortableMM'),
      beforeSend: function (event, files, index, xhr, handler, callBack) {
        var file = files[index], testResult = testUploadFile(file), bCancel = false;
        if(testResult) {
          handler.uploadRow.find('.file_upload_progress').html(testResult);
          bCancel = true;
        }
        var bReplaceImage = $('.replace-image').length;
        if(bReplaceImage && (index > 0)) {
          dlgAlert('Jedna stavka može imati samo jedan dokument');
          bCancel = true;
        }
        if(bCancel) {
          setTimeout(function () {
            handler.removeNode(handler.uploadRow);
          }, 3000);
          return;
        }
        else {
          callBack();
        }
      },
      aformData: function () {
        var articleID = $('#article').val();
        return [{name: 'article', value: articleID}];
      },
      buildUploadRow: function (files, index) {
        var file = files[index];
        return $(
          '<tr style="display:none">' +
          //'<td class="file_upload_name">' + file.name + '<\/td>' +
          //'<td class="file_upload_progress"><div><\/div><\/td>' +
          '<td class="file_upload_progress"><span class="file_upload_name">' + file.name + '<\/span><div><\/div><\/td>' +
          '<td class="file_upload_cancel">' +
          '<div class="ui-state-default ui-corner-all ui-state-hover" title="Cancel">' +
          '<span class="ui-icon ui-icon-cancel">Cancel<\/span>' +
          '<\/div>' +
          '<\/td>' +
          '<\/tr>'
        );
      },
      buildDownloadRow: function (file) {
        if(file.error) {
          dlgAlert(file.error.message);
          return;
        }
        var item, replaceImage = $('.replace-image');
        if(replaceImage.length) {
          item = replaceImage.parents('li');
          var mmFindItem = getMMItem(item);
          if(mmFindItem.bMultimedia) {
            cArticle.multimedia[mmFindItem.index] = file;
          }
          else {
            cArticle.document[mmFindItem.index] = file;
          }
          updateMMItem(item, file);
          return false;
        }
        else {
          item = $('#templateMM li:first').clone();
          updateMMItem(item, file); // &var=grayscale, &var=grayscalethumb40
          return item;
        }
      }
  });
  
  $('.dragHandle span').live('mouseover', function() {
    $(this).addClass('ui-state-highlight');
  }).live('mouseout', function() {
    var $this = $(this);
    if(!$this.hasClass('replace-image')) {
      $(this).removeClass('ui-state-highlight');
    }
  });
  
  $('.dragHandle .ui-icon-closethick').live('click', function() {
    var item = $(this).parents('li');
    item.remove();
  });
  
  $('#tabs-multimedia .dragHandle .ui-icon-refresh').live('click', function() {
    var item = $(this).parents('li');
    refreshMMItem(item);
  });
  
  $('.dragHandle .ui-icon-image').live('click', function() {
    var $this = $(this);
    var bToggle = $this.hasClass('replace-image');
    $('.replace-image').removeClass('replace-image').removeClass('ui-state-highlight');
    if(bToggle) {
      $this.removeClass('replace-image');
    }
    else {
      $this.addClass('replace-image');
    }
    $this.addClass('ui-state-highlight');
  });
  
  $('#save').live('click', function() {
    var articleID = $('#article').val();
    if(!articleID.length) {
      dlgAlert('nije unesen broj članka');
      return;
    }
    
    var articleData = cArticle;
    articleData.id = articleID;
    articleData.view = 'editor';
    articleData.method = 'save';
    articleData = getMMItems(articleData);

    $.ajax({
      type: 'POST',
      url: 'article.php',
      //async: false,
      dataType: 'json',
      data: articleData,
      success: function(json) {
        if(json.error) {
          dlgAlert(json.error.message);
        }
        else {
          writeMultimediaArticle(json.article);
          dlgAlert('zapisano');
        }
      }
    });
    return false;
  });
  
  $('#read').live('click', function() {
    var articleID = $('#article').val();
    if(!articleID.length) {
      dlgAlert('nije unesen broj članka');
      return;
    }
    $.ajax({
      url: 'article.php',
      //async: false,
      dataType: 'json',
      data: {
        id: articleID,
        view: 'editor',
        method: 'read'
      },
      success: function(json) {
        writeMultimediaArticle(json.article);
      }
    });
  });

}

