POJOObject=function(component) {
	this.appName = appName;
	this.path = '/'+appName+'/' + component;
	this.suffix = component;	  	  
	this.objectname = component;
	this.filter = "";
	this.formtarget = "console_"+component;
	//this.tagtarget = "cloud_"+component;
	this.tagtarget = 'console_'+this.suffix;
	this.searchtarget = "console_"+component;
	this.orig_form_target = "console_"+component;
	this.formview = "";		
	this.defaultListServlet = "listAll.do";
}

POJOObject.prototype.setSearchTarget=function(target)
{
	this.searchtarget= target;
}
POJOObject.prototype.setTagTarget=function(target)
{
	this.tagtarget= target;
}

POJOObject.prototype.setObjectName=function(objectname)
{
	this.objectname = objectname;
}

POJOObject.prototype.setListServlet=function(listServlet)
{
	this.defaultListServlet = listServlet;
}
POJOObject.prototype.setAppName=function(appName)
{
	this.appName = appName;
	this.path = '/'+appName+'/' + this.objectname;
}
POJOObject.prototype.setFilter=function(filter)
{
	this.filter= filter;
}
POJOObject.prototype.setPath=function(path)
{
	this.path = '/'+appName+'/' + path;
}
POJOObject.prototype.setFormTarget=function(target)
{
	this.formtarget= target;
}

POJOObject.prototype.setFormView=function(formview)
{
	this.formview = formview;
}
POJOObject.prototype.toXml=function()
{
	var url = this.path + '/toXml.do';
	var ajax = new Ajax.Updater(
		{success: 'console_'+this.suffix}, url, {method: 'post', evalScripts: true
		}
	);			
}
POJOObject.prototype.loadXmlForm=function()
{
	var url = this.path + '/xmlForm.do';
	var ajax = new Ajax.Updater(
		{success: 'console_'+this.suffix}, url, {method: 'post', evalScripts: true
		}
	);			
}
POJOObject.prototype.saveXml=function(xmlString)
{
	var content = {xmlObject:xmlString};
	var url = this.path + '/saveXml.do';
	var ajax = new Ajax.Updater(
		{success: 'console_'+this.suffix}, url, {method: 'post', parameters: content, evalScripts: true
		}
	);			
}

POJOObject.prototype.save = function(frm,refreshList, refreshView, custFunctionCallback, formtarget){
	var content = Form.serialize(frm);
	var tmptarget = formtarget || this.formtarget;
	loadingAjax(tmptarget,"Saving...");
	var url = this.path + '/save.do';
	var func = function(e){window.scrollTo(0,0);};// $(tmptarget).scrollTo(); Change this to check if the item is OUTSIDE the viewport!!!!!!!!
	var p = this.path;
	var suf=this.suffix
	var filter= this.filter;
	if(refreshList)
	{
		func = function(e){_reloadListDelayed(p,suf,filter)};
		if(tmptarget != ('console_'+this.suffix))
		{
			document.getElementById(tmptarget).innerHTML="Saving...";
		}		
	}	
	if(refreshView)
	{
		func = function(e){_reloadView(p,suf)};
	}
	if(custFunctionCallback)
	{
		func = eval(custFunctionCallback)
	}
	
	var ajax = new Ajax.Updater(
		{success: tmptarget}, url, 
		{method: 'post', parameters: content, onComplete: func, evalScripts: true}
	);	
}

POJOObject.prototype.saveAsync = function(frm,refreshList, refreshView, custFunctionCallback, formtarget){
	var content = Form.serialize(frm);
	var tmptarget = formtarget || this.formtarget;
	loadingAjax(tmptarget,"Saving...");
	var url = this.path + '/save.do';
	var func = function(e){};
	var p = this.path;
	var suf=this.suffix
	var filter= this.filter;
	if(refreshList)
	{
		func = function(e){_reloadListDelayed(p,suf,filter)};
		if(tmptarget != ('console_'+this.suffix))
		{
			document.getElementById(tmptarget).innerHTML="Saving...";
		}		
	}	
	if(refreshView)
	{
		func = function(e){_reloadView(p,suf)};
	}
	if(custFunctionCallback)
	{
		func = eval(custFunctionCallback)
	}
	
	var ajax = new Ajax.Updater(
		{success: 'dummy'}, url, 
		{method: 'post', parameters: content, evalScripts: true}
	);	
	
	$(tmptarget).innerHTML="<span style='color:green'>Action Completed Successfully!</span>";
	Effect.Pulsate(tmptarget);
	//setTimeout("Effect.Fade('"+tmptarget+"')",5000);
	setTimeout(eval(func),1000);
	
}
_hideForm=function()
{
	alert(this.formtarget)
	$(this.formtarget).innerHTML = "Saved!";
}
_reloadList=function(p,suf,filter)
{
	loadingAjax('console_'+suf);
	var content = filter;
	var url = p + '/listAll.do';
	var ajax = new Ajax.Updater(
		{success: 'console_'+suf}, url, 
		{method: 'post', parameters: content, evalScripts: true}
	);
}
_reloadListDelayed=function(p,suf,filter)
{
	setTimeout("_reloadList('"+p+"','"+suf+"','"+filter+"')",500)
}
_reloadView=function(p,suf)
{
	var url = p + '/view.do';
	var ajax = new Ajax.Updater(
		{success: 'console_'+suf}, url, 
		{method: 'post',evalScripts: true
		}
	);
}

POJOObject.prototype.load=function(id,target,options)
{	
	var content = this.objectname + "id="+id + "&" + options;
	if(this.formview != '')
		content = content + "&view="+this.formview;// overwrite default form view
	
	content = content + this.filter;
	var url = this.path + '/load.do';
	var tmptarget = target || this.formtarget;
	loadingAjax(tmptarget,'Loading...'); 
	var ajax = new Ajax.Updater(
		{success: tmptarget}, url, {method: 'get', parameters: content, evalScripts: true
		}
	);			
}
POJOObject.prototype.cancelForm=function(target)
{
	var tmptarget = target || this.formtarget;	
	$(tmptarget).innerHTML="<span class='editingcancelled'>Editing Cancelled!</span>";
	Effect.Pulsate(tmptarget);
	setTimeout("_removeCancelInfo('"+tmptarget+"')",3000);					
}

_removeCancelInfo=function(tmptarget)
{
	// To ensure that someone has already loaded other content into the message div
	if($(tmptarget).innerHTML.indexOf('Editing Cancelled!')>0)
	{
		$(tmptarget).innerHTML="";
	}
}
POJOObject.prototype.view=function(id,target,options)
{
	var content = this.objectname + "id="+id + "&" + options;
	var url = this.path + '/view.do';
	var tmptarget = target || 'console_'+this.suffix;
	var ajax = new Ajax.Updater(
		{success: tmptarget}, url, 
		{method: 'get', parameters: content, evalScripts: true}
	);			
}
POJOObject.prototype.getTagCloud=function()
{
	var content = this.filter;
	var tmptarget = 'cloud_'+this.suffix;
	loadingAjax(tmptarget,'Loading tags...'); 
	var url = this.path + '/tagCloud.do';
	var ajax = new Ajax.Updater(
		{success: tmptarget}, url, {method: 'get', parameters: content, evalScripts: true
		}
	);			
}
POJOObject.prototype.listForTag=function(tagname)
{
	//var tmptarget = 'console_'+this.suffix;
	var tmptarget = this.tagtarget;
	loadingAjax(tmptarget,'Loading list for tag...'); 
	var content = "tagname="+tagname;
	content = content + "&" + this.filter;
	var url = this.path + '/listForTag.do';
	var ajax = new Ajax.Updater(
		{success: tmptarget}, url, {method: 'post', parameters: content, evalScripts: true
		}
	);			
}
POJOObject.prototype.listForStatus=function(status)
{
	var content = {status:status};
	content = content + this.filter;
	var url = this.path + '/listForStatus.do';
	var ajax = new Ajax.Updater(
		{success: 'console_'+this.suffix}, url, {method: 'post', parameters: content, evalScripts: true
		}
	);			
}

POJOObject.prototype.listCustom=function(listServlet, target, parameters)
{
	var tmptarget = target || 'console_'+this.suffix;
	var content = parameters || "";
	content = content + this.filter;
	var url = this.path + '/listAll.do';
	var tmpUrl = listServlet || url;
	var ajax = new Ajax.Updater(
		{success: tmptarget}, tmpUrl, {method: 'post', parameters: content, evalScripts: true
		}
	);			
}

POJOObject.prototype.list=function(target)
{
	var content = this.filter;
	var tmptarget = target || 'console_'+this.suffix;
	loadingAjax(tmptarget,'Loading list...'); 
	var url = this.path + '/listAll.do';
	var ajax = new Ajax.Updater(
		{success: tmptarget}, url, {method: 'post', parameters: content, evalScripts: true
		}
	);			
}

POJOObject.prototype.search=function(frm)
{
	var tmptarget = this.searchtarget;
	loadingAjax(tmptarget,'Searching...'); 
	var content = Form.serialize(frm);
	content = content + this.filter;
	var url = this.path + '/search.do';
	var ajax = new Ajax.Updater(
		{success: tmptarget}, url, {method: 'post', parameters: content, evalScripts: true
		}
	);			
}

POJOObject.prototype.del=function(id, refreshList)
{
	if(confirm("Delete selected item?"))
	{		
		var content = this.objectname + "id="+id;
		content = content + this.filter;
		var url = this.path + '/delete.do';
		var func = function(e){};
		var p = this.path;
		var suf=this.suffix
		var filter= this.filter;
		if(refreshList)
		{
			func = function(e){_reloadListDelayed(p,suf,filter)};
		}	
		var tmptarget = 'console_'+this.suffix;
		loadingAjax(tmptarget,'Deleting...'); 
		var ajax = new Ajax.Updater(
			{success: 'console_'+this.suffix}, url, 
			{method: 'post', parameters: content, onComplete: func, 
			onFailure: function(e){_errorDelete(e)}, evalScripts: true}
		);			
	}
}

_errorDelete=function(response)
{
	alert("File could not be delete. Most likely, this file is used by some other item in the system.\n\nTo delete this file, find item that is using it and remove it from that item.")
}
POJOObject.prototype.updateForm=function(frm,id)
{
	var content = this.objectname + "id="+id;
	var url = this.path + '/save.do';
	var ajax = new Ajax.Updater(
		{success: 'console_'+this.suffix}, url, {method: 'post', parameters: content, evalScripts: true
		}
	);			
}
