if (!Array.prototype.forEach) {

    Array.prototype.forEach = function(callback, thisArg) {

      var T, k;

      if (this == null) {
        throw new TypeError(' this is null or not defined');
      }

      // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
      var O = Object(this);

      // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
      // 3. Let len be ToUint32(lenValue).
      var len = O.length >>> 0;

      // 4. If IsCallable(callback) is false, throw a TypeError exception.
      // See: http://es5.github.com/#x9.11
      if (typeof callback !== "function") {
        throw new TypeError(callback + ' is not a function');
      }

      // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
      if (arguments.length > 1) {
        T = thisArg;
      }

      // 6. Let k be 0
      k = 0;

      // 7. Repeat, while k < len
      while (k < len) {

        var kValue;

        // a. Let Pk be ToString(k).
        //   This is implicit for LHS operands of the in operator
        // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
        //   This step can be combined with c
        // c. If kPresent is true, then
        if (k in O) {

          // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
          kValue = O[k];

          // ii. Call the Call internal method of callback with T as the this value and
          // argument list containing kValue, k, and O.
          callback.call(T, kValue, k, O);
        }
        // d. Increase k by 1.
        k++;
      }
      // 8. return undefined
    };
  }


  (function($) {
  $(window).load(function(){ 


    var file_frame;
    var file_ul = $('#qoq_ma_filelist');

    $(document).on("click", '#mediating', function( event ){

      console.log("click");
        event.preventDefault();
        var that = $(this);
        // If the media frame already exists, reopen it.
        if ( file_frame ) {
          file_frame.open();
          return;
        }

        

        // Create the media frame.
        file_frame = wp.media.frames.file_frame = wp.media({
          title: 'Assign Resources',
          button: {
            text: 'Assign Resources to this post'//$( this ).data( 'uploader_button_text' )
          },
          multiple: true
        });

        file_frame.on( 'select', function() {


          var attachments = file_frame.state().get('selection').toJSON();

          
          console.log(attachments);
          var csv = '';


          

          var ajaxData = {
              attachments: attachments,
              action: 'qoq_ma_add_attachment',
              parentid: file_ul.data('parentid')
          };
          
          $.post(ajaxurl, ajaxData, function(data) {
            resp = $.parseJSON(data);

            console.log(resp);

            if ( resp ) {

              


              resp.attachments.forEach( function( attachment, index ) {

                
                var $li = $("<li />").attr("id", 'qoq_ma_file_' + attachment.data.id);



                $li.append("<img src='" + attachment.thumb + "'>");

                
                var $div = $("<div class='qoq_ma_info' />");
                

                var divHTML =   attachment.title;
                    divHTML += "<span>";
                    divHTML += attachment.filename;
                    divHTML += "<BR>";
                    divHTML += "<a href='" + attachment.data.editLink + "'>Edit This Attachment</a>";
                    divHTML += "</span>";
                
                $div.html( divHTML );
                


                $div.append( "<a href='#' class='button unattach_qoq_ma_file' data-file='" + attachment.data.id + "'>Unattach this file</a>" );           

                $li.append( $div );
              
                file_ul.append( $li );
                
              });

            


            }

          });
        

          
         




        });

        // Finally, open the modal
        file_frame.open();
      }); // end click media open


      // removing attachments
      $(document).on("click", '.unattach_qoq_ma_file', function( event ){
          
          event.preventDefault();

         

          var fileID = $(this).data('file');

          var $li = $('#qoq_ma_file_' + fileID);

          console.log($li, fileID);

          var ajaxData = {
              fileID: fileID,
              action: 'qoq_ma_unattach_attachment',
              parentid: file_ul.data('parentid')
          };
          
          $.post(ajaxurl, ajaxData, function(data) {
            resp = $.parseJSON(data);

            console.log(resp);
            if ( resp.remove == fileID) {

                $li.remove();

            }

          }); // end ajax

      }); // end $(document).on("click", '.unattach_qoq_ma_file', function( event ){
  

  });
})(jQuery);