
function gen_image_edit_object(requestparams)
{
 $(document).ready(function(){ 
  var objectid  = getarraykey(requestparams,'objectid');
  var obj       = new image_edit_object();
  obj.objectid  = objectid;
  sys_javavars["objects"][objectid]=obj;
  obj.init(requestparams);
  return obj;
 });
}

function call_image_edit_object(requestparams)
{
 var objectid = getarraykey(requestparams,'objectid');
 var obj      = sys_javavars["objects"][objectid];
 return obj.execute(requestparams);
}



image_edit_object = function()
{
 this.overlayupload=false;
 this.objectid=false;
 this.mydiv   =false;
 this.requestparams={};
 this.overlayobjs=[];
 
 this.init=function(requestparams)
 {
  if (is_defined(requestparams))
   this.requestparams=requestparams;
  this.mydiv=$('#'+this.objectid);
  //this.init_upload();
 }
 
 this.init_upload=function ()
 {
  var div=$('#overlayupload');
  var cmd=$('a',div).attr('onclick_data');
  var myobj=this;
  var temp=sys_javavars["temppath"];
  this.overlayupload = new AjaxUpload('overlayupload', 
  {
   action: '../global_sys/upload-handler.php?uploadpath='+temp,
   data : {},
   onSubmit : function(file , ext)
   {
   // Allow only images. You should add security check on the server-side.
    if (ext && /^(jpg|png|jpeg|gif)$/.test(ext)){
	 this.setData({});					
				} else {					
					// extension is not allowed
					alert('Error: only images are allowed');
					// cancel upload
					return false;				
				}		
	 },
	onComplete : function(file){
               var img=sys_javavars["temppath"]+'/'+file;
			   cmd=myreplace('$overlay_image',img,cmd);
			   eval(cmd);
			}		
  });
  this.overlayupload.enable();	
}

 this.execute=function(params)
 {
  switch(getarraykey(params,'cmd'))
  {
   case 'overlay'  : return this.load_overlay(params);
   case 'loadoverlay' : return this.loadoverlay(params);
   case 'move'     : return this.move_overlay(params);
   case 'size'     : return this.size_overlay(params);
   case 'del'      : return this.del_overlay(params);
   case 'set'      : return this.set_overlay(params);
   case 'save'     : return this.save_overlay(params);
   case 'abort'    : return this.abort_overlay(params);
  }
  return false;
 }
 
 this.loadoverlay=function(params)
 {
  var id=this.objectid+'_'+this.overlayobjs.length;
  var img=getarraykey(params,'overlayimage',false); 
  if(!img) return false;
  var imghtml='';
  imghtml +='<div> <img class="overlay_image_img" src="'+img+'"  /></div>'; 
  imghtml = '<div id="'+id+'" class="overlay_image_cont">'+imghtml+'</div>'; 
  $('.imgcont', this.mydiv).append(imghtml);
  this.overlayobjs.push(id);
  $('#'+id+' ').addClass('overlay_image_cont_selected');
 }
 this.load_overlay=function(params)
 {
  var id=this.objectid+'_'+this.overlayobjs.length;
  var img=getarraykey(params,'overlay_image',
					  getarraykey(this.requestparams,'overlay_image',false)); 
  if(!img) return false;
  var imghtml='';
  imghtml +='<div> <img class="overlay_image_img" src="'+img+'"  /></div>'; 
  imghtml = '<div id="'+id+'" class="overlay_image_cont">'+imghtml+'</div>'; 
  $('.imgcont', this.mydiv).append(imghtml);
  this.overlayobjs.push(id);
  $('#'+id+' ').addClass('overlay_image_cont_selected');
 }
 
 this.move_overlay=function(params)
 {
  if(this.overlayobjs.length==0) return;
  var id=this.overlayobjs[this.overlayobjs.length-1];
  $('#'+id+' .overlay_image_text').remove();
  $('#'+id).append('<div class="overlay_image_text">Move</div>'); 
  $('#'+id).Drags({
    handler: '.overlay_image_text',
    onDrop: function(e) {
     $('#'+id+' .overlay_image_text').remove();
    }
  });
 }
 this.size_overlay=function(params)
 {
  if(this.overlayobjs.length==0) return;
  var id=this.overlayobjs[this.overlayobjs.length-1];
  $('#'+id+' .overlay_image_text').remove();
  $('#'+id).append('<div class="overlay_image_text">Size</div>'); 
  $('#'+id).resizable({
    handler: '.overlay_image_text',
    onStop: function(e) {
     $('#'+id+' .overlay_image_text').remove();
    }
  });
 }
 this.del_overlay=function(params)
 {
  if(this.overlayobjs.length==0) return;
  var id=this.overlayobjs.pop();
  if(!id) return;
  $('#'+id+' .overlay_image_text').remove();
  $('#'+id).remove();
 }
 this.set_overlay=function(params)
 {
  if(this.overlayobjs.length==0) return;
  var id=this.overlayobjs[this.overlayobjs.length-1];
  $('#'+id+' .overlay_image_text').remove();
  $('#'+id+' ').removeClass('overlay_image_cont_selected');
 }
 this.save_overlay=function(params)
 {
  var  overlays=[];
  for(var i=0;i<this.overlayobjs.length;i++)
  {
   var id=this.overlayobjs[i];
   var ol={};
   ol.id=id;
   ol.posx=parseInt($('#'+id).css('left'));
   ol.posy=parseInt($('#'+id).css('top'));
   ol.width=$('#'+id).width();
   ol.height=$('#'+id).height();
   ol.image=$('#'+id+' >div >img ').attr('src');
   overlays.push(ol);
  }
  var requestparams=this.requestparams;
  requestparams.overlays=overlays;
  var exec_onsave=getarraykey(requestparams,'exec_onsave');
  if (exec_onsave)
   {eval(exec_onsave);}
  else
   restore_stack();
 }
 
 this.abort_overlay=function(params)
 { 
  var requestparams=this.requestparams;
  var exec_onabort=getarraykey(requestparams,'exec_onabort');
  if (exec_onabort)
   {eval(exec_onabort);}
  else
   restore_stack();
 }
}
 

