var language = null;
var MAPMODE = false;
var POINTMODE = false;
var icons = ['service_icon','poi_icon'];

/***************************************************************/
/* Page object                                                  \
/***************************************************************/
var page = {
	width:0,
	height:0,
	getDims:function(){
		this.width = window.innerWidth || document.body.clientWidth;
		this.height = pageHeight();		
	},
	setContainer:function(container){			
		this.getDims();	
		var that = this;							
	}
}

function pageHeight()
{
	return window.innerHeight != null ? window.innerHeight :
	document.documentElement && document.documentElement.clientHeight ?
	document.documentElement.clientHeight : document.body != null?
	document.body.clientHeight : null;
}
/***************************************************************/
/* Page object vége                                             \
/***************************************************************/


/***************************************************************/
/* Opener icons                                                 \
/***************************************************************/
function setOpener(opener_id, typeholder)
{
	var divs = $('searchHolder').getElementsByTagName('div');
	for(var i=0; i<divs.length; i++)
	{
		if(divs[i].id.match(opener_id))
		{						
			divs[i].onclick = function(e)
			{						
				if(!Utils.getEventSource(e).id.match(opener_id) || this.className.match('disabled')) return false;								
				var id = this.id.split('_')[2];
				var type = this.id.split('_')[0];
				if($(opener_id + '_' + id).className.match('closed'))
				{
					$(opener_id + '_' + id).className = $(opener_id + '_' + id).className.replace('closed','opened');
					$(typeholder + '_' + id).className = $(typeholder + '_' + id).className.replace(' hidden','');
				}
				else
				{
					$(opener_id + '_' + id).className = $(opener_id + '_' + id).className.replace('opened','closed');
					$(typeholder + '_' + id).className += ' hidden';
				}
			}
		}

		if(divs[i].id.match('type_opener'))
		{			
			divs[i].onclick = function(e)
			{						
				if(!Utils.getEventSource(e).id.match('type_opener')) return false;				
				var id = this.id.split('_')[2];
				if($('type_opener_' + id).className.match('closed'))
				{
					$('type_opener_' + id).className = $('type_opener_' + id).className.replace('closed','opened');
					$('option_holder_' + id).className = $('option_holder_' + id).className.replace(' hidden','');
				}
				else
				{
					$('type_opener_' + id).className = $('type_opener_' + id).className.replace('opened','closed');
					$('option_holder_' + id).className += ' hidden';
				}
			}
		}
	}
}
/***************************************************************/
/* Opener icons vége                                            \
/***************************************************************/


/***************************************************************/
/* Checkboxes                                                   \
/***************************************************************/
function setCheckBoxes()
{
	var cbs = $('searchHolder').getElementsByTagName('input');
	for(var i=0; i<cbs.length; i++)
	{
		if(cbs[i].type.match('checkbox'))
		{		
			cbs[i].checked = true;
			var cb_id = cbs[i].id.split('_')[1];
			var cb_type = cbs[i].id.split('_')[2];			
			
			cbs[i].onclick = function()
			{						
				var id = this.id.split('_')[1];				
				var type = this.id.split('_')[2];
				categsOnMap(id,type);				

				if(!$(type + '_type_holder_' + id)) return;
				var spans = $(type + '_type_holder_' + id).getElementsByTagName('span');
				for(var j=0; j<spans.length; j++)
				{
					var item_id = spans[j].id.split('_')[2];

					if(this.checked)
					{						
						spans[j].className = spans[j].className.replace(' disabled','');
					}
					else
					{						
						spans[j].className += ' disabled';
					}
				}								
			}

			if($(cb_type + '_type_holder_' + cb_id))
			{
				var spans = $(cb_type + '_type_holder_' + cb_id).getElementsByTagName('span');
				for(var j=0; j<spans.length; j++)
				{
					spans[j].onclick = function()
					{
						var item_id = this.id.split('_')[3];						
						if(!this.parentNode.className.match('disabled') && !this.className.match('disabled'))
						{		
							if(MAPMODE)
							{
								showMarker(item_id);
							}
							if(POINTMODE)
							{
								editMarker(item_id);
							}
						}	
					}			
				}			
			}
		}
	}
}

function resetCheckBoxes()
{
	var cbs = $('searchHolder').getElementsByTagName('input');
	for(var i=0; i<cbs.length; i++)
	{
		if(cbs[i].type.match('checkbox'))
		{		
			cbs[i].checked = true;
			var id = cbs[i].id.split('_')[1];
			var spans = $('type_holder_' + id).getElementsByTagName('span');
			for(var j=0; j<spans.length; j++)
			{									
				spans[j].className = spans[j].className.replace(' disabled','');		
			}			
		}
	}
}

function modeDisableCheckBoxes(flag)
{
	var cbs = $('searchHolder').getElementsByTagName('input');
	for(var i=0; i<cbs.length; i++)
	{
		if(cbs[i].type.match('checkbox'))
		{		
			cbs[i].disabled = flag;					
		}
	}
}

function setMainIcons(flag)
{
	for(var i=0; i<icons.length; i++)
	{
		if(flag)
			$(icons[i]).style.visibility = 'visible';
		else
			$(icons[i]).style.visibility = 'hidden';
	}
}
/***************************************************************/
/* Checkboxes vége                                              \
/***************************************************************/


/***************************************************************/
/* Pane icons                                                   \
/***************************************************************/
function setPaneIcons()
{
	var icons = ['service_icon','poi_icon'];
	for(var i=0; i<icons.length; i++)
	{
		if($(icons[i]))
		{
			$(icons[i]).onclick = function()
			{
				if(!MAPMODE) return;
				var id = this.id.split('_')[0];					
				if(this.className.match('unchecked'))
				{
					this.className = this.className.replace('unchecked','checked');
					disableCheckBoxes(id,false);
					disableLayers(id,'disable');
					setPane(id,true);
				}
				else
					{
					this.className = this.className.replace('checked','unchecked');
					disableCheckBoxes(id,true);
					disableLayers(id,'enable');
					setPane(id,false);
				}
			}
		}
	}
}

function setPaneIcon(id,flag)
{	
	if(flag)
	{		
		$(id + '_icon').className = 'listIcon checked';
		disableCheckBoxes(id,false);
		disableLayers(id,'disable');
	}
	else
	{
		$(id + '_icon').className = 'listIcon unchecked';
		disableCheckBoxes(id,true);
		disableLayers(id,'enable');	
	}
}

function disableCheckBoxes(id,checked)
{
	var cbs = $('searchHolder').getElementsByTagName('input');
	for(var i=0; i<cbs.length; i++)
	{
		if(cbs[i].type.match('checkbox') && cbs[i].id.match(id))
		{		
			cbs[i].disabled = checked;						
		}
	}
}

function disableLayers(id,flag)
{	
	var divs = $(id + 'Layer').getElementsByTagName('div');
	for(var i=0; i<divs.length; i++)
	{
		if(flag == 'enable')
		{
			divs[i].className = divs[i].className + ' disabled';
		}
		else
		{
			divs[i].className = divs[i].className.replace('disabled','');
		}
	}	
}
/***************************************************************/
/* Pane icons vége                                              \
/***************************************************************/


/***************************************************************/
/* Tags                                                         \
/***************************************************************/
function setTags()
{
	var spans_ = $('tags').getElementsByTagName('span');
	for(var i=0; i<spans_.length; i++)
	{
		spans_[i].onclick = function()
		{			
			searchByTag(this.id.split('_')[1]);
		}
	}
}
/***************************************************************/
/* Tags vége                                                    \
/***************************************************************/


/***************************************************************/
/* Comments                                                     \
/***************************************************************/
function setComments()
{
	var spans = $('searchHolder').getElementsByTagName('div');
	for(var i=0; i<spans.length; i++)
	{
		if(spans[i].className.match('comment'))
		{
			spans[i].onclick = function()
			{			
				showComment(this.id.split('_')[1]);
			}
		}
	}
}
/***************************************************************/
/* Comments vége                                                \
/***************************************************************/


/***************************************************************/
/* Flex függvények                                              \
/***************************************************************/

// Kategóriák rejtése, mutatása
function categsOnMap(id,type)
{
	if(typeof getSWF('inframap').categsOnMap == 'function')
	{
		getSWF('inframap').categsOnMap(id,type);
	}
}

// Adott markerhez tartozó adatok mutatása
function showMarker(id)
{	
	if(typeof getSWF('inframap').showMarker == 'function')
	{		
		getSWF('inframap').showMarker(id);
	}
}


// Adott markerhez tartozó adatok szerkesztése
function editMarker(id)
{	
	if(typeof getSWF('newpoint').editMarker == 'function')
	{		
		getSWF('newpoint').editMarker(id);
	}
}

// Kategóriákhoz tartozó panelek rejtése/mutatása
function setPane(id,visible)
{
	if(typeof getSWF('inframap').setPane == 'function')
	{
		getSWF('inframap').setPane(id,visible);
	}
}


// Keresés tag alapján
function searchByTag(tag)
{
	if(typeof getSWF('inframap').searchByTag == 'function')
	{
		getSWF('inframap').searchByTag(tag);
	}
}


// Kommentek mutatása
function showComment(id)
{
	if(typeof getSWF('inframap').showComment == 'function')
	{
		getSWF('inframap').showComment(id);
	}
}


function getSWF(movieName)
{
    if (navigator.appName.indexOf("Microsoft") != -1)
    {
        return window[movieName];
    }
    else
    {
        return document[movieName];
    }
}
/***************************************************************/
/* Flex függvények vége                                         \
/***************************************************************/



/***************************************************************/
/* Tab class                                                    \
/***************************************************************/
function tab(tabholder)
{
	this.tabholder = $(tabholder);	
	this.prefix = 'tab';
	this.tabs = null;
	this.init();
}

tab.prototype.init = function()
{
	var that = this;
	this.tabs = this.tabholder.getElementsByTagName('a');
	for(var i=0; i<this.tabs.length; i++)
	{
		this.tabs[i].onclick = function()
		{
			var splitter = this.href.split('#');
			var src = splitter[splitter.length-1].replace('#','');	
			if(src == 'mapx' || src == 'newpointx')
			{
				if(src == 'mapx')
				{
					MAPMODE = true;
					POINTMODE = false;
					modeDisableCheckBoxes(false);
					setMainIcons(MAPMODE);
				}
				if(src == 'newpointx')
				{
					POINTMODE = true;
					MAPMODE = false;
					modeDisableCheckBoxes(true);
					//setMainIcons(MAPMODE);
				}
			}
			else
			{
				MAPMODE = false;
				POINTMODE = false;
				modeDisableCheckBoxes(true);
				setMainIcons(MAPMODE);
			}
			var layer = that.prefix + '_' + splitter[1] ;
			that.hideLayers();
			that.showLayer(layer,this);
		}
	}
}

tab.prototype.hideLayers = function()
{	
	for(var i=0; i<this.tabs.length; i++)
	{		
		this.tabs[i].parentNode.className = this.tabs[i].parentNode.className.replace('selected','');
		var splitter = this.tabs[i].href.split('#');		
		var layer = this.prefix + '_' + splitter[1];
		$(layer).style.display = 'none';
	}
}

tab.prototype.showLayer = function(layer,tab)
{
	$(layer).style.display = 'block';
	tab.parentNode.className += ' selected';
}
/***************************************************************/
/* Tab class vége                                               \
/***************************************************************/


window.onload = function()
{  	
   var oXML = new FCKXml();
   oXML.LoadUrl(Utils.ROOT + '/data/language_hu.xml',function(xml){ 
	  language = xml;	  
	  setOpener('poi_opener','poi_type_holder');
	  setOpener('service_opener','service_type_holder');	 	  
	  new tab('tabHolder');		  
	  setCheckBoxes(); 
	  setPaneIcons();
	  setTags();
	  setComments();
	  modeDisableCheckBoxes(true);
	  setMainIcons(false);
	  
	  // map
	  var flashvars = {lang:LANG, address:encodeURIComponent('9400 Sopron') , domain:'http://www.inframap.hu'};							
	  var params = {wmode:'window',bgcolor:'#ffffff',allowFullscreen:true,allowScriptAccess:'sameDomain'};
	  var attributes = {id:'inframap'};
	  swfobject.embedSWF("../flex/inframap.swf", "flexbox", 650, 600, "9.0.0","../flex/expressInstall.swf", flashvars, params, attributes);
	  		
	  // contact
	  var params = {wmode:'window',bgcolor:'#ffffff',allowFullscreen:true,allowScriptAccess:'sameDomain'};
	  var attributes = {id:'contact'};
	  swfobject.embedSWF("../flex/contact.swf", "footercontact", 105, 20, "9.0.0","../flex/expressInstall.swf", flashvars, params, attributes);

	  // new point
	  var flashvars = {lang:LANG, address:encodeURIComponent('9400 Sopron'),domain:'http://www.inframap.hu'};							
	  var params = {wmode:'window',bgcolor:'#ffffff',allowFullscreen:true,allowScriptAccess:'sameDomain'};
	  var attributes = {id:'newpoint'};
	  swfobject.embedSWF("../flex/newpoint.swf", "newpointbox", 650, 600, "9.0.0","../flex/expressInstall.swf", flashvars, params, attributes);

   })
}

window.onresize = function()
{
}