var map, marker;
var fields = ['type','county','city','street','lat','lng','size','etage','heating','price','link'];

function setPartnerFormHelps()
{
	var spans = $('partnerform').getElementsByTagName('span');
	for(var i=0; i<spans.length; i++)
	{
		if(spans[i].className.match('helpSpan'))
		{
			spans[i].onmouseover = function()
			{
				var id = this.id.replace('form','partner');				
				$(id).className = $(id).className.replace(' hidden','');
			}
			spans[i].onmouseout = function()
			{
				var id = this.id.replace('form','partner');						
				$(id).className += ' hidden';
			}
		}
	}
}

function setMap()
{
	if (GBrowserIsCompatible()) 
	{
		$('partner_map').style.width = '285px';
		$('partner_map').style.height = '285px';
		map = new GMap2(document.getElementById("partner_map"));		
		geocoder = new GClientGeocoder();							

		if( $('partner_ad_lat').value != '' && $('partner_ad_lng').value != '' && $('partner_ad_lat').value != '0' && $('partner_ad_lng').value != '0')
		{
			map.setCenter(new GLatLng(parseFloat($('partner_ad_lat').value), parseFloat($('partner_ad_lng').value)), 11); 
		}			
		else
		{
			map.setCenter(new GLatLng(47.498822,19.055507), 11);
		}		
		
		GEvent.addListener(map, "click", function(overlay, point)
		{
			try
			{
				if(marker)
				{
					map.removeOverlay(marker);
					marker = null;
				}
				marker = new GMarker(point);    
				map.addOverlay(marker);					
				$('partner_ad_lat').value = point.y;
				$('partner_ad_lng').value = point.x;					
			}
			catch(e){alert(e.message)}			
		});	

		if($('partner_ad_lat').value != '' && $('partner_ad_lat').value != '0')
		{
			try
			{
				var lat = parseFloat($('partner_ad_lat').value);
				var lng = parseFloat($('partner_ad_lng').value);					
				marker = new GMarker(new GLatLng(lat, lng));
				map.addOverlay(marker);					
			}
			catch(e){alert(e.message)}
		}								
	}	
}

function cityLoader(that,city)
{	
   if(that.value == '0') return;  
   var select = $('partner_ad_city');			
   var option_text = that.options[that.selectedIndex].innerHTML;
   var opt_text =  select.options[0].text;			
   select.options[0].text = $lang('city.selectLoad');
   var oXML = new FCKXml();
   oXML.LoadUrl(Utils.ROOT + '/getcities.php?todo=city&id=' + that.value, function(xml){
	   var cities = xml.SelectNodes('doc/city');
	   if(cities.length)
	   {			    													
			var opt = select.options[0];
			opt.text = opt_text;
			select.options.length = 0;					
			select.options[0] = opt;					
			var length = cities.length;				
			for(var i=0; i<cities.length; i++)
			{
				name = cities[i].getElementsByTagName('name')[0].firstChild.nodeValue;					
				city_id = cities[i].getElementsByTagName('id')[0].firstChild.nodeValue;				
				select.options[i+1] = new Option(name,city_id);	
				select.options[i+1].selected = (city_id == city)? true : false;				
			}			
	   }
	   else
	   {
		   var opt = select.options[0];
		   opt.text = opt_text;
		   select.options.length = 0;					
		   select.options[0] = opt;	
	   }	
   });	
}

function setCounty()
{
	$('partner_ad_county').onchange = setCity;
}

function setCity()
{
	var index = $('partner_ad_county').selectedIndex;	
	var county = $('partner_ad_county').options[index].text;
	setAddress(county + ' Magyarország',11);
	var that = this;
	cityLoader(that,'');
}

function showAddress(address, zoom) 
{  
	geocoder.getLatLng(address, function(point)
	{      
		if (!point) 
		{        
			alert(address + ' - ' + $lang('map.notFound'));      
		} 
		else 
		{ 
			map.setCenter(point, zoom);		   
		}    
	});
}

function setAddAddress()
{	
	$('partner_ad_city').onchange = function()
	{
		var index = $('partner_ad_city').selectedIndex;	
		var city = $('partner_ad_city').options[index].text;
		setAddress(city + ' Magyarország',13);
	}

	$('ad_street').onclick = function()
	{
		var address = '';
		var index = $('partner_ad_city').selectedIndex;	
		var city = $('partner_ad_city').options[index].text;
		city = ($('partner_ad_county').value == 5) ? city.split('-')[0] : city;
		address += city + '  ' + $('partner_ad_street').value;
		if($('partner_ad_city').value == '#' || $('partner_ad_county').value == '#') 
		{
			alert($lang('partner.addressFault'));
			return;
		}
		setAddress(address,15);
	}
	
	$('ad_showmap').onclick = function()
	{
		if($('partner_map').style.display == 'block' || $('partner_map').style.display == '')
		{
			$('partner_map').style.display = 'none';
			this.style.backgroundImage = 'url(../css/arrow_up.gif)';
		}
		else
		{
			$('partner_map').style.display = 'block';
			this.style.backgroundImage = 'url(../css/arrow_down.gif)';
		}
	}	
}

function showAddress(address, zoom) 
{  	
	geocoder.getLatLng(address, function(point)
	{      
		if (!point) 
		{        
			alert(address + ' - ' + $lang('address.notFound'));      
		} 
		else 
		{ 
			map.setCenter(point, zoom);		
			if(marker)
			{
				map.removeOverlay(marker);
				marker = null;
			}
			marker = new GMarker(point);    
			map.addOverlay(marker);					
			$('partner_ad_lat').value = point.y;
			$('partner_ad_lng').value = point.x;			
		}    
	});	
}

function setAddress(address, zoom) 
{  	
	geocoder.getLatLng(address, function(point)
	{      
		if (!point) 
		{        
			alert(address + ' - ' + $lang('address.notFound'));      
		} 
		else 
		{ 
			map.setCenter(point, zoom);								
		}    
	});	
}

function setType()
{
	$('partner_ad_type').onchange = function()
	{
		if(!this.value.match('k'))
		{
			$('priceDim').innerHTML = $lang('partner.MFT');
		}
		else
		{
			$('priceDim').innerHTML = $lang('partner.EFT');
		}
		var value = this.value;
		setHeating(value,'');
	}
}

function setHeating(value, heating_value)
{
	var select = $('partner_ad_heating');
	select.disabled = true;
    var oXML = new FCKXml();
    oXML.LoadUrl(Utils.ROOT + '/partner.php?todo=setheating&type=' + value, function(xml)
	{		   
	   var opt_text =  select.options[0].text;
	   var heatings = xml.SelectNodes('doc/heating');
	   if(heatings.length)
	   {			    													
			var opt = select.options[0];
			opt.text = opt_text;
			select.options.length = 0;					
			select.options[0] = opt;					
			var length = heatings.length;				
			for(var i=0; i<heatings.length; i++)
			{
				name = heatings[i].getElementsByTagName('name')[0].firstChild.nodeValue;					
				heating_id = heatings[i].getElementsByTagName('id')[0].firstChild.nodeValue;				
				select.options[i+1] = new Option(name,heating_id);	
				select.options[i+1].selected = (heating_id == heating_value)? true : false;				
			}
			select.disabled = false;
	   }
	   else
	   {
		   var opt = select.options[0];
		   opt.text = opt_text;
		   select.options.length = 0;					
		   select.options[0] = opt;	
	   }				
    });			
}

function showListTable(fragment)
{
	$('listHolder_loader').style.visibility = 'hidden';
	var page = $('listHolder');	
	page.innerHTML = fragment;
	page.style.display = 'block';
	setDelete();
	setPrice();
	setOrder();
	setActivate();
	adEdit();
}

function showOrderTable(fragment)
{
	$('orderHolder_loader').style.visibility = 'hidden';
	var page = $('orderHolder');	
	page.innerHTML = fragment;
	page.style.display = 'block';
	setOrderDelete()
}

function setDelete()
{
	var tds = $('listHolder').getElementsByTagName('td');
	for(var i=0; i<tds.length; i++)
	{
		if(!tds[i].id.match('_A_') && tds[i].id.match('delete'))
		{
			tds[i].onclick = function()
			{
				if(!confirm($lang('partner.adlist.deleteWarning'))) return;
				var that = this;
				var id = this.id.split('_')[3];
			    var oXML = new FCKXml();
			    oXML.LoadUrl(Utils.ROOT + '/partner.php?todo=delete&id=' + id, function(xml){
					var error = xml.SelectNodes('doc/error');
					if(error.length)
					{
						alert($lang('partner.adlist.deleteFailure'));
					}
					else
					{
					   adlist();
					   orderlist();
					   alert($lang('partner.adlist.deleteSuccess'));
					}
				});
			}
		}
		else
		{
			if(tds[i].id.match('delete'))
			{
				tds[i].onclick = function()
				{
					alert($lang('partner.ad.noDelete'));
				}
			}
		}
	}
}

function setPrice()
{
	$('adlist_prices').innerHTML = $lang('partner.adlist.defaultPrice');
	var boxes = $('listTable').getElementsByTagName('input');
	for(var i=0; i<boxes.length; i++)
	{
		if(boxes[i].id.match('box'))
		{
			boxes[i].onclick = function()
			{
				var counter = 0;
				var price = 0;
				var boxes = $('listTable').getElementsByTagName('input');
				for(var j=0; j<boxes.length; j++)
				{
					if(boxes[j].id.match('box'))
					{
						if(boxes[j].checked)
						{
							counter++;
						}
					}
				}
				for(var num in prices)
				{
					if(counter < num)
					{
						price = counter * parseInt(prices[num]);
						$('adlist_prices').innerHTML = price + ' ' + $lang('partner.adlist.money');
						break;
					}
				}
			}
		}
	}	
}

function setOrder()
{
	$('adlist_orderSelected').onclick = function()
	{
		var ids = '';
		var boxes = $('listTable').getElementsByTagName('input');
		for(var i=0; i<boxes.length; i++)
		{
			if(boxes[i].id.match('box'))
			{
				if(boxes[i].checked)
				{
					var id = boxes[i].id.split('_')[2];
					ids += id + '_';
				}
			}
		}
		if(ids == '') return;		
		ids = ids.substring(0,ids.length-1);
	    var oXML = new FCKXml();
	    oXML.PostUrl(Utils.ROOT + '/orders.php', 'todo=insert&ids=' + ids, function(xml){
			var errors = xml.SelectNodes('doc/error');
			if(errors.length)
			{
				alert($lang(errors[0].firstChild.nodeValue));
			}
			else
			{
			   // Hirdetéslista frissítése
			   adlist();

			   // Rendeléslista frissítése
			   orderlist();
			}
	    });		
	}
}

function setOrderDelete()
{
	var tds = $('orderHolder').getElementsByTagName('td');
	for(var i=0; i<tds.length; i++)
	{
		if(!tds[i].id.match('_A_') && tds[i].id.match('delete'))
		{
			tds[i].onclick = function()
			{
				if(!confirm($lang('partner.order.deleteWarning'))) return;
				var that = this;
				var id = this.id.split('_')[3];
			    var oXML = new FCKXml();
			    oXML.LoadUrl(Utils.ROOT + '/orders.php?todo=delete&id=' + id, function(xml){
					var error = xml.SelectNodes('doc/error');
					if(error.length)
					{
						alert('partner.order.error'.$lang(error[0].firstChild.nodeValue));
					}
					else
					{
					   orderlist();	
					   adlist();
					   alert($lang('partner.order.error.deleteSuccess'));
					}
				});
			}
		}
		else
		{
			if(tds[i].id.match('delete'))
			{
				tds[i].onclick = function()
				{
					alert($lang('partner.order.noDelete'));
				}
			}
		}
	}
}

function setActivate()
{	
	var tds = $('listTable').getElementsByTagName('td');
	for(var i=0; i<tds.length; i++)
	{		
		if(tds[i].className.match('activate'))
		{
			tds[i].onclick = function()
			{
				var id = this.id.split('_')[2];
				var oXML = new FCKXml();
			    oXML.LoadUrl(Utils.ROOT + '/partner.php?todo=setstate&id=' + id, function(xml)
				{
					var errors = xml.SelectNodes('doc/error');
					if(errors.length)
					{
						alert($lang('partner.adlist.error.' + errors[0].firstChild.nodeValue));
					}
					else
					{						
						alert($lang('partner.adlist.' + xml.SelectNodes('doc/success')[0].firstChild.nodeValue));
						// Hirdetéslista frissítése
						adlist();				  
					}			
			    });									
			}
		}
	}
}

function setRefresh()
{
	$('adlist_refresh').onclick = function()
	{
		try
		{
			adlist();
		}
		catch(e){}
	}

	$('orderlist_refresh').onclick = function()
	{
		try
		{
			orderlist();
		}
		catch(e){}
	}
}

function adEdit()
{
	var tds = $('listTable').getElementsByTagName('td');
	for(var i=0; i<tds.length; i++)
	{
		if(tds[i].id.match('edit'))
		{
			tds[i].onclick = function()
			{
				var id = this.id.split('_')[2];
				loadForm(id)
			}
		}
	}	
}

function loadForm(id)
{
   var oXML = new FCKXml();
   oXML.LoadUrl(Utils.ROOT + '/partner.php?todo=load&id=' + id, function(xml){	 
	  if(xml.SelectSingleNode('doc/type').firstChild)
	      $('partner_ad_type').value = xml.SelectSingleNode('doc/type').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/county').firstChild)
		  $('partner_ad_county').value = xml.SelectSingleNode('doc/county').firstChild.nodeValue;	
	  if(xml.SelectSingleNode('doc/street').firstChild)
		  $('partner_ad_street').value = xml.SelectSingleNode('doc/street').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/lat').firstChild)
		  $('partner_ad_lat').value = xml.SelectSingleNode('doc/lat').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/lng').firstChild)
		  $('partner_ad_lng').value = xml.SelectSingleNode('doc/lng').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/size').firstChild)
		  $('partner_ad_size').value = xml.SelectSingleNode('doc/size').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/etage').firstChild)
		  $('partner_ad_etage').value = xml.SelectSingleNode('doc/etage').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/heating').firstChild)
	  {
		  var value = xml.SelectSingleNode('doc/type').firstChild.nodeValue;
		  var heating_value = xml.SelectSingleNode('doc/heating').firstChild.nodeValue;
		  setHeating(value, heating_value)		  
	  }
	  if(xml.SelectSingleNode('doc/price').firstChild)
		  $('partner_ad_price').value = xml.SelectSingleNode('doc/price').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/link').firstChild)
		  $('partner_ad_link').value = xml.SelectSingleNode('doc/link').firstChild.nodeValue;
	  if(xml.SelectSingleNode('doc/photo').firstChild)
	  {
		  $('partner_ad_photo').src = xml.SelectSingleNode('doc/photo').firstChild.nodeValue;
		  $('partner_ad_photosrc').value = xml.SelectSingleNode('doc/photo').firstChild.nodeValue;
	  }
	  else
	  {
		  $('partner_ad_photo').src = '../css/photospacer.gif';
		  $('partner_ad_photosrc').value = '';
	  }

	  var city = xml.SelectSingleNode('doc/city').firstChild.nodeValue;

	  cityLoader($('partner_ad_county'), city);

	  $('partner_map').style.display = "block";
	  if(marker) map.removeOverlay(marker);	  
	  var lat = parseFloat($('partner_ad_lat').value);
	  var lng = parseFloat($('partner_ad_lng').value);	
	  map.setCenter(new GLatLng(lat,lng),13);
	  marker = new GMarker(new GLatLng(lat, lng));
	  map.addOverlay(marker);
	  $('ad_id').value = id;
	  $('partner_ad_send').value = $lang('partner.ad.modify');
   });	
}

function setReset()
{
	$('partner_ad_cancel').onclick = resetForm
}

function resetForm()
{
	$('partner_adform').reset();
	$('ad_id').value = '';
	$('partner_ad_send').value = $lang('partner.ad.send');
	if(marker) map.removeOverlay(marker);
	if(map) map.setCenter(new GLatLng(47.498822,19.055507), 11);
	$('partner_ad_lat').value = '';
	$('partner_ad_lng').value = '';	
	$('partner_ad_photosrc').value = '';
	$('partner_ad_photo').src = '../css/photospacer.gif';
}

function adlist()
{
   $('listHolder_loader').style.visibility = 'visible';
   var tableLoader = new listLoader(Utils.ROOT + '/partner.php?todo=list', Utils.ROOT + '/templates/adlist.xsl', 'listHolder', showListTable);
   tableLoader.load('listHolder_loader');
}

function orderlist()
{
   $('orderHolder_loader').style.visibility = 'visible';	 
   var orderLoader = new listLoader(Utils.ROOT + '/orders.php?todo=list', Utils.ROOT + '/templates/orderlist.xsl', 'orderHolder', showOrderTable);
   orderLoader.load('orderHolder_loader');
}

window.onload = function()
{
   var oXML = new FCKXml();
   oXML.LoadUrl(Utils.ROOT + '/data/language_hu.xml',function(xml){
       language = xml;	
	   setTabs('mainlinks');

	   // Adatmódosítás
       var partnerFormSubmitter = new formSubmitter('partnerform','partner_form_loader', Utils.ROOT + '/partner.php');
	   partnerFormSubmitter.setLangPrefix('partner.error.');	
	   partnerFormSubmitter.method = 'set';	


	   // Hirdetés hozzáadása
       var adFormSubmitter = new formSubmitter('partner_adform','partner_adform_loader', Utils.ROOT + '/partner.php');
	   adFormSubmitter.setLangPrefix('partner.error.');	
	   adFormSubmitter.method = 'insert';
	   adFormSubmitter.doAtSuccess = function()
	   {
		   map.clearOverlays(marker);
		   marker = null;	
		   if(map) map.setCenter(new GLatLng(47.498822,19.055507), 11);
		   $('partner_ad_lat').value = '';
		   $('partner_ad_lng').value = '';		   
		   $('ad_id').value = '';
		   $('partner_ad_send').value = $lang('partner.ad.send');
		   $('partner_ad_photosrc').value = '';
		   $('partner_ad_photo').src = '../css/photospacer.gif';
		   adlist();
	   }

	   setPartnerFormHelps();    
	   setCounty();	
	   setAddAddress();
	   setType();
	   setRefresh();
	   setReset();
	   resetForm();

	   // Hirdetéslista
	   adlist();

	   // Rendeléslista
	   orderlist();
   })
}
