var ajaxDefaults = {
   dataType: 'json',
   type: 'post',
   success: function(data){
      if(!data) {
         return false;
      }
      if( data.Action ) {
         switch (data.Action) {
         case 'Goto':
            if(data.Data) {
               window.location = data.Data;
            } else {
               window.location.reload();
            }
         }         
      }
      if( data.Message ) {
         data.ErrorMsg = data.Message;
      }
      if( data.changeVal ) {
         for( var i in data.changeVal ) {
            if( data.changeVal[i] != undefined ) {
               $("#" + i).val(data.changeVal[i]);
            }
         }
      }
      if( data.ErrorMsg ) {
         alert(data.ErrorMsg);
      }
      if( data.Display ) {
         for( var i in data.Display ) {
            if( data.Display[i] != undefined ) {
               $('#' + i).empty();
               $('#' + i).append(data.Display[i]);
            } // end if (data.display[i] != undefined )
         } // end for()
      } // end if( data.display )
      if( data.validationPrompts ) {
         if( typeof $.validationEngine.buildPrompt === 'function') {
            for( var i in data.validationPrompts ) {
               if( data.validationPrompts[i] != undefined ) {

                  $.validationEngine.closePrompt("#" + i);
                  $.validationEngine.buildPrompt("#" + i, data.validationPrompts[i], "error");
               } // end if (data.display[i] != undefined )
            } // end for()
         }
      }
   }, // End $.ajax(success(){})
   async: false
}; //End ajaxDefaults {}

function mPlatAjax(params){

   $.extend(params, ajaxDefaults);

   $.ajax(params);

} // end mPlatAjax()


function postForm(theForm, action) {
   var theData = $(theForm).serialize();
   if(action !== undefined) {
      theData += "&action=" + action;
   } 
   mPlatAjax({
      url: $(theForm).attr('action'),
      data: $(theForm).serialize()
   });
}

// Take an image and do stuff to it
// Expects JSON params:
//    rotate: <angle integer>,   (valid values: 90, 180, 270)
//    cropStart:  {x: <start X>, y: <start Y>},
//    cropEnd:  {x: <end X>, y: <end Y>},
//    inFile: '<image filename to start with>',
//    outFile: '<image filename to output to>'

function imageOps(params) {
   params.action = 'ImageOperations';
   mPlatAjax({
      url: '/manage/asset-manager/actions.html',
      data: params
   });
}
