<?php
  require_once "../lib/viewer_functions.php";

  // NOTE: This form is meant to be INCLUDED by other pages like this:
  /*
    <iframe src='uploadForm2_iframe.php?table=<?php echo $tableName ?>&amp;field=uploads&amp;num=<?php echo $recordNum ?>&amp;preSaveTempId=<?php echo $preSaveTempId ?>'
            height='100' width='600' frameborder='0' scrolling='no'>
    </iframe><br/>
  */

  //
  $table           = @$_REQUEST['table'];
  $field           = @$_REQUEST['field'];
  $recordNum       = intval( @$_REQUEST['num'] );
  $preSaveTempId   = @$_REQUEST['preSaveTempId'];
  $submittedForm   = @$_REQUEST['REQUEST_METHOD'] == 'POST' || @$_REQUEST['submitForm'];
  $errorsAndAlerts = '';

  // SECURITY WARNING: BE SURE TO ADD SECURITY CHECKS BELOW TO ENSURE USERS CAN'T
  // ADD OR MODIFY UPLOADS FROM ANY RECORDS THEY ARE NOT SUPPOSE TO.
  $allowedTables   = array('news');
  $allowedFields   = array('uploads');

  if ($recordNum) {  // if a $recordNum was supplied, ensure that the user owns it before doing anything!
    if (!@$CURRENT_USER) { die("You must login to modify a record!"); }
    $record = mysql_query_fetch_row_assoc("SELECT * FROM {$TABLE_PREFIX}$table WHERE num = '$recordNum'");
    if (!$record || $record['createdByUserNum'] != $CURRENT_USER['num']) { die("Invalid recordNum"); }
  }

  // error checking
  if     (!$table)                           { die("No 'tablename' value specified in url!"); }
  elseif (!in_array($table, $allowedTables)) { die("Tablename '" .htmlencode($table). "' isn't in list of allowed tablenames!"); }
  if     (!$field)                           { die("No 'fieldname' value specified in url!"); }
  elseif (!in_array($field, $allowedFields)) { die("Fieldname '" .htmlencode($field). "' isn't in list of allowed fieldnames!"); }
  if (!$recordNum && !$preSaveTempId)        { die("No 'recordNum' or 'preSaveTempId' value was specified!"); }

  if ($submittedForm && !preg_match("/multipart\/form-data/", @$_SERVER['CONTENT_TYPE'])) {
    die("Upload Error: &lt;form&gt; tag must have enctype=\"multipart/form-data\"");
  }


  // save uploads
  foreach (getUploadInfoArrays() as $uploadInfo) { // add uploads
    $errorsAndAlerts .= saveUpload($table, $field, $recordNum, $preSaveTempId, $uploadInfo, $newUploadNums);
    //die("$recordNum  $field  $table");
    if($preSaveTempId || ($recordNum  && $field && $table)) {
      $infoQuerySet = "";
      if(@$_REQUEST['info1']) {
         $infoQuerySet .= " info1 = '" . $_REQUEST['info1'] . "' ";
      }
      if(@$_REQUEST['info2']) {
        if($infoQuerySet) {
          $infoQuerySet .= ",";
        }
        $infoQuerySet .= " info2 = '" . $_REQUEST['info2'] . "' ";
      }
      if($infoQuerySet) {
        $infoQuery = "  UPDATE " . $GLOBALS['TABLE_PREFIX'] . "uploads
                        SET $infoQuerySet
                        WHERE ";
        if($recordNum && $field && $table) {
          //We need to get the most recent record for the recordNum, fieldName and tableName
          //MySQL can not select from same table as update in one query
          $numQuery = "
                          SELECT num
                          FROM " . $GLOBALS['TABLE_PREFIX'] . "uploads
                          WHERE recordNum = '$recordNum'
                              AND fieldName = '$field'
                              AND tableName = '$table'
                          ORDER BY createdTime DESC
                          LIMIT 1";
          $numResult = mysql_query_fetch_row_assoc($numQuery);
          if(@$numResult['num']) {

            $infoQuery .=  " num=" . $numResult['num'];
          }
          else {
            continue;
          }
        }
        else {
          $infoQuery .= " preSaveTempId = '$preSaveTempId'";
        }
       // die($infoQuery);
        mysql_query($infoQuery);
      }
    }
  }

  // remove uploads
  if (@$_REQUEST['removeUpload']) { // delete upload
    $uploadNum = @$_REQUEST['removeUpload'];
    removeUpload($uploadNum, $recordNum, $preSaveTempId);
  }

  // load uploads
  $uploads = getUploadRecords($table, $field, $recordNum, $preSaveTempId);

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=8" /><?php // Force IE to not use quirks-mode ?>
<title></title>
<style type="text/css">
  body, td { font-family: arial }
</style>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">

  function submitUploadForm(message) {
    if (message == undefined) { message = "Submitting form..."; }
    document.getElementById('uploadField').style.display = 'none'; // hide upload field
    document.getElementById('uploadMessage').innerHTML = message;  // display message
    document.uploadForm.submit();
  }

  function eraseUploadNum(uploadNum) {
    document.uploadForm.removeUpload.value = uploadNum;
    submitUploadForm();
  }

  // resize iframe on load
  $(document).ready(function() { autosizeIframe(); }); // resize on page load
  //$(window).load(function()    { autosizeIframe(); }); // resize after all images loaded

  function autosizeIframe() {
  var padding         = 0;
  var contentHeight   = $(document.body).outerHeight(true) + padding;
  //var contentHeight   = $(document).height();
    $(window.frameElement).animate({ height: contentHeight + 'px' }, '100');
  }

  // style upload fields
  $(document).ready(function() {
    var replaceUploadFields = true;
    if (!replaceUploadFields) { return; }
    var uploadTriggerHTML   = "<input type='button' name='null' value='Upload File'/>";
    // NOTE: This works around common browser quirks:
    //       Firefox : Resizing upload fields isn't supported (css width or size="xxx")
    //       IE8     : Clicking on input field gives it focus rather than opening upload dialog and attemps to call onfocus, etc cause security "access denied" errors on upload submit in XP SP2.

    // make upload field transparent, and move off screeen
    var jUploadField = $('input[type=file]');
    jUploadField.css({'background'   : 'transparent',
                      'filter'       : 'alpha(opacity: 0)',
                      '-moz-opacity' : '0.0',
                      'opacity'      : '0.0',      // for debugging set to 0.5
                      'position'     : 'absolute', // allow us to put elements below/on top of field
                      'cursor'       : 'pointer',
                      'top'          : -1000,
                      'left'         : -1000,
                      'z-index'      : '2',        // put this field on top of other fields (even though it's invisible now)
                      'visibility'   : 'visible'   // hide upload field until we style it with style="visiblity: hidden"
                      });

    // add fake upload element
    var jUploadTriggerHTML = $("<span style='border: solid 0px #C00'></span>").html( uploadTriggerHTML ); // add 0px border so IE8 returns height on span instead of 0
    jUploadField.after(jUploadTriggerHTML); // add fake element _below_ upload field

    // on mouse over trigger html put upload button/field under mouse cursor (or off-screen)
    var triggerOffsets = jUploadTriggerHTML.offset();
    var triggerY1 = triggerOffsets.top;
    var triggerY2 = triggerOffsets.top + jUploadTriggerHTML.height();
    var triggerX1 = triggerOffsets.left;
    var triggerX2 = triggerOffsets.left + jUploadTriggerHTML.width();
    $(document).mousemove(function(event) {
      var mouseX          = event.pageX;
      var mouseY          = event.pageY;
      var inTriggerRegion = (triggerX1 <= mouseX && mouseX <= triggerX2) && (triggerY1 <= mouseY && mouseY <= triggerY2);

      // debug
      //document.getElementById('uploadMessage').innerHTML = "MouseX: "+mouseX+", MouseY: "+mouseY+ "<br/>\n"+"TriggerX: "+triggerX1+" to "+triggerX2+ ", TriggerY: "+triggerY1+" to "+triggerY2+ "<br/>\n"+", inTriggerRegion: " +inTriggerRegion+ ",";  // display message

      var offsetTop       = !inTriggerRegion ? -1000 : mouseY - 8;
      var offsetLeft      = !inTriggerRegion ? -1000 : mouseX - jUploadField.width() + 8;
      jUploadField.css({'top': offsetTop, 'left': offsetLeft});
    });

  });
  // END: style upload fields

</script>
</head>
<body style="margin: 0px; padding: 0px;">

<form method="post" name="uploadForm" action="?" enctype="multipart/form-data">
<input type="hidden" name="submitForm"    value="1" />
<input type="hidden" name="table"         value="<?php echo $table ?>" />
<input type="hidden" name="field"         value="<?php echo $field ?>" />
<input type="hidden" name="num"           value="<?php echo $recordNum ?>" />
<input type="hidden" name="preSaveTempId" value="<?php echo $preSaveTempId ?>" />
<input type="hidden" name="removeUpload" id="removeUpload" value="0" />

<div>
    <br>Title: <input type="text" name="info1" size="50"/>
    <br>Caption: <input type="text" name="info2" size="50"/>
    <br/><input type="file" name="<?php echo $field ?>[]" name="<?php echo $field ?>[]" id="uploadField" onchange="submitUploadForm();" size="10"/>
    <span id="uploadMessage" style="clear: both"></span>
</div>

    <?php if (@$errorsAndAlerts): ?>
      <div style="color: #C00; font-weight: bold; font-size: 13px;">
        <?php echo $errorsAndAlerts; ?>
      </div>
    <?php endif ?>

    <hr/>

    <?php foreach ($uploads as $upload): ?>
      <?php if ($upload['hasThumbnail']): ?>
        <img src="<?php echo $upload['thumbUrlPath'] ?>" width="<?php echo $upload['thumbWidth'] ?>" height="<?php echo $upload['thumbHeight'] ?>" alt=""/><br/>
      <?php endif ?>

      <?php echo $upload['filename'] . "<br>" . $upload['info1'] . " " . $upload['info2'] ?>
      <a href="#" onclick="eraseUploadNum('<?php echo $upload['num'] ?>');">remove</a><br/><br/>
    <?php endforeach ?>

    <?php if (!$uploads): ?>
      There are no uploads yet.<br/>
    <?php endif ?>

</form>
</body>
</html>
