// Last Updated: 11/12/2007
// Updated By:   PC
// Version No:   2
// Changes Made: added retirement_homes

var PropertyType = {
	// TO DO: change this ID val dep on DATABASE !!
	EQUESTRIAN: 174,
	COMMERCIAL: 204,
	RETIREMENT: 211
}

var Connect = {
	addFeatureHandlers: function() {
		var fl = document.getElementById('featurelist');
		if( !fl ) return false;
		
		var a = fl.getElementsByTagName('a');
		for( var i=0; i<a.length; i++ ) {
			a[i].onclick=Connect.onFeature;
		}
	},
	
	onFeature: function(ev) {
		ev         = ev || window.event;
		var target = ev.target || ev.srcElement;
		
		var fe = document.getElementsByAttribute('name',JForm.obj,'features','textarea')[0];
		if( !fe ) return Event.Cancel(ev);
		
		var v = fe.value;
		if( v=='' ) {
			fe.value = target.innerHTML; 
			return Event.Cancel(ev);
		}
		
		var ss = v.split(';');
		
		var s = '';
		for( var i=0; i<ss.length; i++ )
			s += ss[i] + ';';
		
		fe.value = s + '\n' + target.innerHTML;
		JForm.onModify(false,fe);

		return Event.Cancel(ev);
	},

	InitAgentForm: function() {
 		var i=getRequest('id');
 		if(i>0) {
 			JForm.loadObject(i);
 		}
 		else {
	 		var v=getRequest('page');
	 		switch( v ) {
	 			case 'myagent':
	 				var im = document.getElementsByAttribute('aid',undefined,undefined,'img')[0];
	 				if( im ) {
	 					JForm.loadObject(im.getAttribute('aid'));
	 				}
		 			break;
			}
		}
	},
	
	onClientLoaded: function() {
		var params = new Array();
		params['action'] = 'getsize';
		params['source'] = 'agent';
		params['id'] = JForm.obj_id;
		
		Query.request('image-get.php',Connect.onClientLoaded_Callback,params);
	},
	
	onClientLoaded_Callback: function(response) {

		var d = Data.check( response, 'ocl:1' );
		if( !d ) return false;

		var w = d[0].getAttribute('w');
		Connect.showClientLogo(w>0);
	},
	
	showClientLogo: function(bShow)
	{
		var im = document.getElementById('clogo');
		if( !im ) return false;

		if( bShow )
		{
			im.style.display='block';
			im.src = Session.vdir+'/query/file-get.php?source=agent&id='+JForm.obj_id+'&r='+Math.floor(Math.random()*65536);
		}
		else {
			im.style.display='none';
		}
	},
	
	InitPropertyForm: function() {
 		var i=getRequest('id');
 		if(i>0) {
 			JForm.loadObject(i);
 			ImageList.load(i,'images');
 			ImageList.load(i,'floorplans');
 			ImageList.load(i,'epc');
 			ImageList.load(i,'brochure');
 		}
 		else {
	 		var v=getRequest('group');
	 		switch( v ) {
	 			case 'new_homes':
	 			case 'new_homes_to_rent':
		 			JForm.setSelectedID('new_build',1);
					JForm.setModified('new_build');
		 			break;
	 			case 'equestrian_properties':
	 			case 'equestrian_properties_to_rent':
		 			JForm.setSelectedID('property_type',PropertyType.EQUESTRIAN);
					JForm.setModified('property_type');
		 			break;
	 			case 'retirement_homes':
	 			case 'retirement_homes_to_rent':
		 			JForm.setSelectedID('property_type',PropertyType.RETIREMENT);
					JForm.setModified('property_type');
		 			break;
	 			case 'commercial_properties':
	 			case 'commercial_properties_to_rent':
		 			JForm.setSelectedID('property_type',PropertyType.COMMERCIAL);
					JForm.setModified('property_type');
		 			break;
			}
			
			var save = document.getElementsByAttribute('class',JForm.obj,'save','a')[0];
			if( save ) {
				save.innerHTML = 'save &amp; add images';
			}

			var sp = document.getElementsByAttribute('name',JForm.obj,'images','span')[0];
			if( sp ) {
				sp.style.width="400px";
				sp.innerHTML = 'please save the property to move on to add images';
			}

			var fp = document.getElementsByAttribute('name',JForm.obj,'floorplans','span')[0];
			if( fp ) {
				fp.style.width="400px";
				fp.innerHTML = 'please save the property to move on to add floorplans';
			}
	 	}
 		
 		Connect.addFeatureHandlers();
 
 		// alter save handler for new object
		if( !(i>0) && JForm.obj ) {
			var os = JForm.obj.getAttribute('onsave');
			if( os ) {

				var reg = /href='(.*?)'/i;
				var r = os.match(reg);

				if( r )
				{
					var l = r[1];
					l += '&action=images&id=\'+JForm.obj_id+\'';
					os = os.replace(r[1],l);
					JForm.obj.setAttribute('onsave', os);
				}

			}
		}
	},

	IsSalesPropertyDataOk: function() {
		if( !Connect.CleanPrice('price') ) return false;
		return true;
	},

	IsRentalPropertyDataOk: function() {
		if( !Connect.CleanPrice('price') ) return false;
		if( !Connect.CleanPrice('deposit') ) return false;
		return true;
	},
	
	CleanPrice: function(name) {
		var price = document.getElementsByAttribute('name',JForm.obj,name,'input')[0];
		if( !price ) return Connect.Warn( name, price );
		var val = price.value;
		if( val=='' ) return true;
		val = val.replace(/[^0-9]+/g,'');
		if( val=='' ) return Connect.Warn( name, price );
		val = parseFloat(val);
		if( isNaN(val) ) return Connect.Warn( name, price );
		price.value = val;
		return true;
	},
	
	Warn: function( name, elt ) {
		elt.focus();
		elt.scrollIntoView(true);
		Messages.mbOk('Please enter a valid '+name,'warn');
		return false;
	},

	SwitchForm: function(cls,show) {
		var left = document.getElementById('content');
		var f = document.getElementsByClassName(cls,left,'dl');

		for( var i=0; i<f.length; i++ ) {
			if( f[i].getAttribute('name')==show ) {
				f[i].style.display='block';
			}
			else {
				f[i].style.display='none';
			}
		}
	}


}

var DataList = {
	OnSelectAll: function() {
		var inp = DataList.GetInputs();
		if( !inp ) return false;
		
		var b = inp[0].checked;
		
		for( var i=1; i<inp.length; i++ ) {
			inp[i].checked = b;
		}
	},
	
	GetInputs: function() {
		var dl = document.getElementsByClassName('datalist',document.documentElement,'table')[0];
		if( !dl ) return false;
		var inp = dl.getElementsByTagName('input');
		return inp;	// [0] is select all
	},
	
	GetChecked: function() {
		var inp = DataList.GetInputs();
		if( !inp ) return false;
		
		var a = new Array();
		
		for( i=1; i<inp.length; i++ )
			if( inp[i].checked )
				a.push( inp[i] );

		return a;
	}
}

var PropList = {
	ToggleVisibility: function() {
		var inp = DataList.GetChecked();
		if( !inp || inp.length==0 ) return false;

		var params=new Array();
		params['action'] = 'vis';
		
		for( i=0; i<inp.length; i++ ) {
			params[inp[i].getAttribute('name')]=1;
		}		

		Messages.notice('Please wait...',true);

		Query.request('proplist.php', PropList.UpdateItem_Callback,params);
	},
	
	UpdateItem_Callback: function(response) {
		var data = Data.check( response, 'vis:1' );
		if( !data ) return false;

		var dl = document.getElementsByClassName('datalist',document.documentElement,'table')[0];
		if( !dl ) return false;

		var tr;
		var items = data[0].getElementsByTagName('item');
		for( var i=0; i<items.length; i++ ) {
			tr = document.getElementsByAttribute('name', dl, items[i].getAttribute('key'), 'tr' )[0];
			if( tr ) {
				switch( items[i].getAttribute('val') ) {
					case '0':
						tr.className = 'r'+tr.getAttribute('even') + ' hidden';
						break;
					case '1':
						tr.className = 'r'+tr.getAttribute('even');
						break;
					case '2':
						tr.className = 'r'+tr.getAttribute('even') + ' deleted';
						break;
				}
			}
		}

		var inp = DataList.GetInputs();
		if( !inp ) return false;
		
		for( var i=0; i<inp.length; i++ ) {
			inp[i].checked = false;
		}				

		Messages.hide();
	},

	Delete: function() {
		var inp = DataList.GetChecked();
		if( !inp || inp.length==0 ) return false;

		Messages.mbOkCancel('Ok to delete selected items?<br />\nThis action cannot be reversed','warn',PropList.Delete_onOk,true)
	},
	
	Delete_onOk: function(ev) {
		var inp = DataList.GetChecked();
		if( !inp || inp.length==0 ) return false;

		var params=new Array();
		params['action'] = 'del';
		
		for( i=0; i<inp.length; i++ ) {
			params[inp[i].getAttribute('name')]=1;
		}		

		Messages.hideOkCancel(ev);
		Messages.notice('Please wait...',true);

		Query.request('proplist.php', PropList.UpdateItem_Callback,params);
	}
}

var Event = {
	Cancel: function(ev) {
		ev.cancelBubble=true;
		ev.returnValue=false;
		return false;
	}
}

var Admin = {
	OnSelect: function(o) {
		var page = getRequest('page');
		var group = getRequest('group');
		var band = o.selectedIndex;
		var type = getRequest('type');
		document.location.href = '?page='+page+'&group='+group+'&band='+band+'&type='+type;
	},
	
	OnSelect2: function(o) {
		var page = getRequest('page');
		var group = getRequest('group');
		var band = o.selectedIndex;
		var type = getRequest('type');
		document.location.href = '?page='+page+'&group='+group+'&band2='+band+'&type='+type;
	},
	
	OnSelectAgent: function(o) {
		var page = getRequest('page');
		var group = getRequest('group');
		var agent = o.options[o.selectedIndex].value;
		var type = getRequest('type');
		document.location.href = '?page='+page+'&group='+group+'&agent='+agent+'&type='+type;
	},
	
	OnSelectShow: function(o) {
		var page = getRequest('page');
		var group = getRequest('group');
		var show = o.options[o.selectedIndex].value;
		var type = getRequest('type');
		document.location.href = '?page='+page+'&group='+group+'&show='+show+'&type='+type;
	}
}

var Data = {
	check: function(response,dbg,errors)
	{
		if( !response )
		{
			Debug.add('no response in '+dbg);
			Messages.hide();
			return false;
		}
		var d = response.getElementsByTagName('data');
		if(d.length==0)
		{
//			Debug.add('no data in '+dbg);
//			Messages.hide();
			return false;
		}
		if( d[0].getAttribute('error') )
		{
			var e = d[0].getAttribute('error');
			var de=true;
			if( errors ) {
				e = errors[e]?errors[e]:e;
				de=false;
			}
			if( d[0].getAttribute('nodebug') ) de=false;
			if( dbg )
				str = "<h1>An error occurred in "+dbg+"</h1>"+'<div class="error">'+e+'</div>';
			else
				str = "<h1>An error occurred:</h1>"+'<div class="error">'+e+'</div>';
			Messages.mbOk(str,'error');
			if(de)Debug.add(str);
			JForm.saveError = true;
			return false;
		}
		if( d[0].getAttribute('msg') )
		{
			Messages.mbOk(d[0].getAttribute('msg'),'warn');
			return d;
		}
		return d;
	},
	
	get: function( d, n )
	{
		var reg = /jc\('([^']+)',([,a-z_0-9]+)\)/i;
		var r = n.match(reg);

		if( r )
		{
			var del = r[1];
			if( del=="\\n" ) del = "\n";
			var res ='', tmp;
			var list = r[2].split(',');
			for( var i=0; i<list.length; i++ )
			{
				tmp = Data.get( d, list[i] );
				if( tmp!=undefined && tmp!='' )
				{
					if( res!='' ) res += del;
					res += tmp;
				}
			}
			return res;
		}

		reg = /time\(([a-z_0-9]+)\)/i;
		r = n.match(reg);

		if( r )
		{
			var src = r[1];
			var tmp = Data.get( d, src );
			return tmp;
		}

		for( var i=0; i<d.childNodes.length; i++ )
			if( d.childNodes[i].getAttribute('name')==n )
				return d.childNodes[i].getAttribute('value');
	},
	
	getDataId: function( d, n )
	{
		for( var i=0; i<d.childNodes.length; i++ )
			if( d.childNodes[i].getAttribute('name')==n )
				return d.childNodes[i].getAttribute('data_id');
	}
};
