function checkSubmitComplaint()
{
	var done = false;
	
	if(!document.complain1.recipientname.value.length)
	{
		document.complain1.recipientname.focus();
		alert('You need to enter a company name!');
		return false;
	}
	
	if(!document.complain1.recipientemail.value.length)
	{
		document.complain1.recipientemail.focus();
		alert('You need to enter a company email address!');
		return false;
	}
	
	for(var i = 0;i<document.complain1['dimension[]'].length;i++)
	{
		if(document.complain1['dimension[]'][i].checked)
			done = true;
	}
	if(!done)
	{
		alert("You must select an issue to complain about");
		return false;
	}
	
	if(document.complain1.complaint.value.length<=1)
	{
		document.complain1.complaint.focus();
		alert("You must enter your complaint");
		return false;
	
	} else {
	}
	
		$('complainform').submit();
	//	var args = {url: , load: loadfn, formNode: document.getElementById(formid)};
	//	dojo.io.bind(args);
		return false;
}

function submitComplaint(text) {
	if(text.error==0) {
		$('previewcomplainform').submit();
	} else {
		alert('Incorrect Captcha entered - please try again');
	}
	return false;
}

function checkSubmitReply()
{
	if(!$('reply').value.length)
	{
		$('reply').focus();
		alert('You need to write a reply!');
		return false;
	}
	document.complainreply.submit();
	return false;
}

function checkPreviewReply()
{
	if(!$('terms').checked)
	{
		$('terms').focus();
		alert('You must agree to the terms and conditions to send a complaint');
		return false;
	}
	document.complainreply.submit();

	return false;
}

function checkPreviewComplaint()
{
	

	if(!$('terms').checked)
	{
		$('terms').focus();
		alert('You must agree to the terms and conditions to send a complaint');
		return false;
	}

	checkcaptcha('previewcomplainform',submitComplaint);
	return false;
}

function getJson(url)
{

}

var trialAjaxTable = Class.create( {
							  
	
							  
	getOptions: function(){
		return {
			overCls: false,
			onClick: false,
			sortOn: 0,
			sortBy: 'DESC',
			getAction: 'all',
			startPage: 0,
			perPage:5
			};
	},
	tableId:'',
	dataSource:'',
	
	initialize: function(table, dataUrl, options){
		this.setOptions(this.getOptions(), options);
		this.tableId = table;
		this.table = $(table);
		
		this.tHead = this.table.select('thead').first();
		this.tBody = this.table.select('tbody').first();
		this.tFoot = this.table.select('tfoot').first();
		this.tableCols = new Array();
		var i = 0;
		myself=this;
		this.tHead.select('th').each(function(el){
			if(el.readAttribute('data')){
				if(myself.options.get('sortOn')==el.readAttribute('data'))
				{
					el.addClassName('sorted'+myself.options.get('sortBy'));
				}
				myself.tableCols[i] = el.readAttribute('data');
			} else {
				myself.tableCols[i] = null;
			}
			
			
			if(el.readAttribute('axis')){
				el.observe('click', myself.sort.bind(myself,i));
				el.observe('mouseover', function(){
					el.toggleClassName('tableHeaderOver');
				});
				el.observe('mouseout', function(){
					el.toggleClassName('tableHeaderOver');
				});
			}
			
			i++;
		},myself);
		this.dataSource = dataUrl;
		this.loadData(this.options.get('getAction'));
		
		
	},
	
	sort: function(index){
		if(this.options.get('onStart')){
			this.fireEvent('onStart');
		}
		//
		var header = this.tHead.select('th');
		var el = header[index];
		this.options.set('sortOn',el.getAttribute('data'));
		this.options.set('startPage',0);

		header.each(function(e,i){
			if(i != index){
				e.removeClassName('sortedASC');
				e.removeClassName('sortedDESC');
			}
		});
		
		if(el.hasClassName('sortedASC')){
			el.removeClassName('sortedASC');
			el.addClassName('sortedDESC');
			el.sortBy = 'DESC';
		}else if(el.hasClassName('sortedDESC')){
			el.removeClassName('sortedDESC');
			el.addClassName('sortedASC');
			el.sortBy = 'ASC';
		}else{
			if(this.options.get('sortBy') == 'ASC'){
				el.addClassName('sortedASC');
				el.sortBy = 'ASC';
			}else if(this.options.get('sortBy') == 'DESC'){
				el.addClassName('sortedDESC');
				el.sortBy = 'DESC';
			}
		}
//		alert(this.options.get('sortOn') + " : " + this.options.get('sortBy'));
		this.options.set('sortBy',el.sortBy);
		this.loadData('all');
		if(this.options.get('onComplete')){
			this.fireEvent('onComplete');
		}
	},
	
	setOptions: function(defaults, options){
		this.options = $H(defaults).update(options);
	},
	
	loadData: function(action)
	{
//		alert('orderby=' + myself.options.get('sortOn') + '&orderdir=' + myself.options.get('sortBy') + '&start=' + myself.options.get('startPage') + '&limit=' + myself.options.get('perPage'));
		this.tBody.insert({top: '<tr><td colspan=100 align="center"><img style="padding:10px;" src="/lifeline/thirdparty/modalbox/spinner.gif" alt="loading"><br><b>Loading Data</b></td></tr>'});
		myself = this;

		new Ajax.Request(this.dataSource + 'list/' + action, {
			method: 'post',
			onSuccess: function(obj,json) {
				var data = eval(obj.responseText);
				myself.updateTable(data,json);
			},
			postBody:'orderby=' + myself.options.get('sortOn') + '&orderdir=' + myself.options.get('sortBy') + '&start=' + myself.options.get('startPage') + '&limit=' + myself.options.get('perPage')
		});
	},
	
	updateTable: function(json,text)
	{
		this.tBody.select('tr').each(function(e){e.remove()});
		myself=this;
//		alert(json.totnum);
		json.rows.each(function(e){

			e['more']='<span class="readmore">Read more</span>';
			e['text']=e['text'].substr(0,30)+'...';

			var tr = new Element('tr',{'id':e.id});
			myself.tableCols.each(function(j) {
				if(e[j])
				{
					var td = new Element('td').update(e[j]);
					tr.insert(td);
				} else {
				}
			},myself);
			myself.tBody.insert(tr);
			
			options = myself.options;
			if(options.get('overCls')){
				Event.observe(e.id,'mouseover', function(){
					$(e.id).toggleClassName(options.get('overCls'));
				}, myself);
				Event.observe(e.id,'mouseout', function(){
					$(e.id).toggleClassName(options.get('overCls'));
				});
			}
			if(options.get('onClick')){
				$(e.id).observe('click', options.get('onClick'));
			}
		});
		var tr1 = new Element('tr');
		var td1 = new Element('td',{'colspan':99,id:'pageNumRow'});
		td1.update('Show Page: ');
		var x = json.totnum;
		var i = 1;
		var maxpages=30;
		while(x>0 && i<maxpages)
		{
				if(i==((this.options.get('startPage')/this.options.get('perPage'))+1))
					var cn = 'selectedpage';
				else
					var cn = '';
			td1.insert(
				new Element('a',{className: cn, 'pagenum':(i-1)}).update(i)
			);
			x = x-myself.options.get('perPage');
			i++;
		}
		tr1.insert(td1);
		myself.tBody.insert(tr1);
		$('pageNumRow').select('a').each(function(el) {
			el.observe('click', myself.page.bind(myself,el.getAttribute('pageNum')));
		});

		var caption=$$('#theComplaints caption')[0];
		if(caption)
		{
			var startPage=this.options.get('startPage');
			var perPage=this.options.get('perPage');
			caption.update('Showing: '+(startPage+1)+'-'+Math.min(startPage+perPage,json.totnum)+' of '+json.totnum+' Complaints');
		};
	},
	
	loadItemData: function(id, loadFunction)
	{
		myself = this;
		new Ajax.Request(this.dataSource + 'item/get/?id='+id, {
			method: 'get',
			onSuccess: function(obj,json) {
//				alert(obj.responseText);
				var data = eval(obj.responseText);
				loadFunction(data,obj.responseText);
			}
		});
	},
	
	page: function(p) {
		this.options.set('startPage',(this.options.get('perPage')*p));
		this.loadData('all');
	},
	
	deleteObject: function(type, data, callback, failCallback) {
		myself = this;
		new Ajax.Request(this.dataSource + 'item/delete/?type='+type, {
			method: 'post',
			postBody: data,
			onSuccess: function(obj,json) {
				var data = eval(obj.responseText);
				callback(data,obj.responseText);
			},
			onFailure: function(obj,json) {
				var data = eval(obj.responseText);
				failCallback(data,obj.responseText);
			}
		});
	
	},
	
	sendObject: function(type, data, callback, failCallback) {
		myself = this;
		new Ajax.Request(this.dataSource + 'item/update/?type='+type, {
			method: 'post',
			postBody: data,
			onSuccess: function(obj,json) {
				var data = eval(obj.responseText);
				callback(data,obj.responseText);
			},
			onFailure: function(obj,json) {
				var data = eval(obj.responseText);
				failCallback(data,obj.responseText);
			}
		});
	
	}

});
function editMyReply()
{
	document.complainreply.action = document.complainreply.action.replace(/send/,'');
	document.complainreply.submit();
	return false;
}