function setCookie (name, value, expires, path, domain, secure) 
{
	  path="/";
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) 
{
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) 
	{
		offset = cookie.indexOf(search);
		if (offset != -1) 
		{
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) 
			{
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function delCookie( name, path, domain ) 
{
	if ( getCookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function hs_map()
		{
			var visible_linkm = document.getElementById("link_visible");
			var div_map = document.getElementById("map");
			var val_cookie = getCookie("visible_map");
			if (val_cookie == "hide")
			{
				div_map.style.display="";
				setCookie("visible_map","show");
				visible_linkm.innerHTML = "Hide map";
			}
			if (val_cookie == "show")
			{
				div_map.style.display="none";
				setCookie("visible_map","hide");
				visible_linkm.innerHTML = "Show map";
			}
		}
		
function setForInit()
{
   if (!getCookie("visible_map"))
   {	
   	//	alert("Cooka not create");
		setCookie("visible_map","show");
		document.getElementById("link_visible").innerHTML = "Hide map";
   }
   if (getCookie("visible_map") == "hide")
   {
	 //	alert(getCookie("visible_map"));
		document.getElementById("map").style.display="none";
		document.getElementById("link_visible").innerHTML = "Show map";
   }
   if (getCookie("visible_map") == "show")
   {
	 // alert(getCookie("visible_map"));
		document.getElementById("map").style.display="";
		document.getElementById("link_visible").innerHTML = "Hide map";
   }
   return getCookie("visible_map");
}

function p_val(a)
{
	return a.lat + "," + a.lon;
}

function onProgress()
{
	document.getElementById("status").style.display=""
}

function offProgress()
{
	document.getElementById("status").style.display="none";
}

function getFilters()
{
	/*var f_section = document.getElementById("hidden_filters");
	var list_inp = f_section.getElementsByTagName("input");
	var plus_url = "";
	for (var i = 0; i < list_inp.length; i++)
	{
		if (list_inp[i].type == "hidden" )
		{
			if (list_inp[i].value == 1) plus_url += "&" + list_inp[i].name + "=" + list_inp[i].value;
		}
	}
	return plus_url;*/
	var search_filter = document.getElementById('search_filter');
	return "&search_filter=" + search_filter.value;
}

function setSearchPoint(lat_val, lon_val)
{
	document.getElementById("coordLat_").value = lat_val;
	document.getElementById("coordLon_").value = lon_val;
}

function getSearchPoint()
{
	var lat = document.getElementById("coordLat_").value;
	var lon = document.getElementById("coordLon_").value;
	var plus_url = "";
	plus_url += "&coordLat=" + lat + "&coordLon=" + lon;
	return plus_url;
}

function visibleBlock(id_block, id_bt, b_text1, b_text2)
{
	var bl = document.getElementById(id_block);
	var button = document.getElementById(id_bt);
	
	if (bl.style.display == "none")
	{
		bl.style.display="";
		button.innerHTML = b_text1;
	}
	else
	{
		bl.style.display="none";
		button.innerHTML = b_text2;
	}

}
function getTags()
{
	/*var f_section = document.getElementById("hidden_tags");
	var list_inp = f_section.getElementsByTagName("input");
	var plus_url = "";
	for (var i = 0; i < list_inp.length; i++)
	{
		if (list_inp[i].type == "hidden" )
		{
			if (list_inp[i].value == 1) plus_url += "&" + list_inp[i].name + "=" + list_inp[i].value;
		}
	}
	return plus_url;*/
	return '';
}

function getSearchText(){
	var search_text = document.getElementById("search-text");
	return "&location="+search_text.value;
}

function unInArray(el, arr)
{
	var k = 0;
	for (i in arr)
	{ 
	//alert('plid=' + el.plid + ', ' + 'i=' + i);
		if (isNaN(k) != true)
			if (el.plid == i)
			{
				k++;
			}
	}
	if (k>0) return false
	else return true;
}

function walkProp(obj, k, id_div)
{
	var n=0;
	var d_div = document.getElementById(id_div);
	d_div.innerHTML = '';
	for (i in obj)
	{
		d_div.innerHTML += i + ' -   ' + obj[i] + '<br>';
		n++;
		if (n == k) return 0;
	}
}

 function show_hide_by_id(id, show)
 {
    var div_link = document.getElementById(id);
    if (show>0)
    {
        div_link.style.display = "";
        }
    else
    {
        div_link.style.display = "none";
    }
   }


function rBounds()
{
	//alert("Bounds = " + map.getBounds());
}

function shiftPic(img_ob)
{
	var mi = $('main_pic');
	var mi_location = mi.src;
	mi.src = img_ob.src;
	img_ob.src = mi_location;
}

function showWaitMessage()
{
	// dummy method to disable wait messages temporarily
}


function hideWaitMessage()
{
	// dummy method to disable wait messages temporarily
}

function showWaitMessage_HIDDEN()
{
	//return true;
	var h = Math.round(window.screen.height/4);
	var w = Math.round(window.screen.width/2);
	//alert('sh = '+ h +'\nw = ' + w);
	var message_div = document.getElementById('popup_div');
	//var all_page_content = document.getElementById('wrapper_id');
	//all_page_content.className = 'wrapper-wait';
	var cover_div = document.getElementById('cover_div');
	cover_div.style.display = '';
	message_div.style.top = (h - 25) + "px";
	message_div.style.left = (w - 150) + "px";
	message_div.className = "show-wait-message";
	message_div.style.display = "";
}

function hideWaitMessage_HIDDEN()
{
	var message_div = document.getElementById('popup_div');
	//var all_page_content = document.getElementById('wrapper_id');
	//all_page_content.className = 'wrapper';
	var cover_div = document.getElementById('cover_div');
	cover_div.style.display = 'none';
	message_div.style.display = "none";
}

function checkLoadStatus()
{
	if (map)
	{
		if (map.isLoaded()) hideWaitMessage();
		else setTimeout('checkLoadStatus', 300);
	}
	else if (map2) hideWaitMessage();
}

function watch(who)
{
	var start = new Date();
	who;
	var end = new Date();
	alert("Working time - " + (end - start));
}
//function jenabled()
	//{
		//var opt = document.getElementById('opt');	
		//opt.value = "1"	
	
	
	//if (document.getElementById('bt_sw_filters'))
	//{
	//	document.getElementById('bt_sw_filters').style.display='';
	//}
	//}

//var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;

//if (root){
//if (root.addEventListener) {
//		root.addEventListener("load",jenabled,false);
		//root.addEventListener("load",visibleBlock,false);
//						}
	
//else if (root.attachEvent) { 
//		root.attachEvent("onload", jenabled);
	//root.attachEvent("onload", visibleBlock);
//							}

//}
function previewMessage(mes)
{
	alert(mes);
	return false;
}

function addFreezeBlock(block_html)
{
	//add ('back to search results'  or  'back to place')  and 'disclaimer'
	var content = document.getElementById('content');
	var tmp_content_html = content.innerHTML;
	content.innerHTML = block_html + tmp_content_html;
}

function removeFreezeBlock()
{	//remove ('back to search results'  or  'back to place')  and 'disclaimer'
	var content = document.getElementById('content');
	var freeze_block = document.getElementById('freeze_' + Current_page);
	if (freeze_block)
	{
		content.removeChild(freeze_block);
	}
	resizeBlocks();
}

function disableFreezeBut(el)
{
	//disabel input element by id
	el.disabled = true;
}

function click_by_remb()
{
	var back_form = document.getElementById('back_form');
	back_form.remote_sub.click();
	return false;
}

function sub_form(f_id)
{
	document.getElementById(f_id).submit();
}

function add_has_js_input()
{
    document.write('<input id="hasjs" type="hidden" name="hasjs" value="1" />');
}

function add_link_to_page(curr_view_jsfunction,lpd)
{
    var link_to_page_div = lpd;
    document.writeln('<a id="send_to_friend_mailto" href="#" onclick="' + curr_view_jsfunction+ '">Send to a friend</a>');    
}

function generate_mailto_link()
{
   mailto_href = "mailto:?subject="+escape("BBC Breathing Places");
   link_to_this_page_url = escape(document.getElementById('Link_to_page_input').value);
   mailto_href = mailto_href+"&body="+link_to_this_page_url;
   document.getElementById('send_to_friend_mailto').href = mailto_href;
}

function closeBubble()
{//not used - canceled
//close bubble

    if (!close_bubble) return;
	
	if (map)
	{
		map.closeInfoWindow();
	}
	else if (map2)
	{	
		 for (var m in gmarkers)
		  {
			gmarkers[m].closeInfoBox();
		  }
	}
}

function m_over()
{//not used - canceled
//set flag for cancel close buuble
	return;
	close_bubble = false;
}

function m_out()
{//not used - canceled
//set flag for close bubble and run timeout close function
	return;
	close_bubble = true;
	setTimeout("closeBubble()", 3000);
}

function highlight_marker(marker_id)
{
//change marker icon  onmouse over by record in the place result list accord marker
	highlight_marker_id = marker_id;
	if (map)
	{
		
		if (MarkerId_PlaceId[marker_id])
		{
			var new_marker_id = MarkerId_PlaceId[marker_id];
			try
			{
				gmarkers[new_marker_id].setImage(AppConfig['marker_icons']['highlight_close']);
			}
			catch(er)
			{
				//was error
			}
		}
		else if (gmarkers[marker_id]) 
		{
			try
			{
				gmarkers[marker_id].setImage(AppConfig['marker_icons']['highlight_single']);
			}
			catch(er)
			{
				//was error
			}
		}
	}
	else if (map2)
	{
		if (MarkerId_PlaceId[marker_id])
		{
			var new_marker_id = MarkerId_PlaceId[marker_id];
			gmarkers[new_marker_id].getOption('icon').image = AppConfig['marker_icons']['highlight_close'];
			map2.removeOverlay(gmarkers[new_marker_id]);
			map2.addOverlay(gmarkers[new_marker_id]);
		}
		else if (gmarkers[marker_id])
		{
			gmarkers[marker_id].getOption('icon').image = AppConfig['marker_icons']['highlight_single'];
			map2.removeOverlay(gmarkers[marker_id]);
			map2.addOverlay(gmarkers[marker_id]);
		}
	}
}

function default_marker_color(marker_id)
{
//back default marker icon  onmouse out by record in the place result list accord marker
	if (map)
	{
		if (MarkerId_PlaceId[marker_id])
		{
			var new_marker_id = MarkerId_PlaceId[marker_id];
			try
			{
				gmarkers[new_marker_id].setImage(AppConfig['marker_icons']['close']);
			}
			catch(er)
			{
				//was error
			}
		}
		else if (typeof(gmarkers[marker_id]) != 'undefined')
		{
			try 
			{
				gmarkers[marker_id].setImage(AppConfig['marker_icons']['single']);
			}
			catch(er)
			{
				//was error
			}
		}
	}
	else if (map2)
	{
		if (MarkerId_PlaceId[marker_id])
		{
			var new_marker_id = MarkerId_PlaceId[marker_id];
			if (gmarkers[new_marker_id]) 
			{
				try
				{
					gmarkers[new_marker_id].getOption('icon').image = AppConfig['marker_icons']['close'];
					map2.removeOverlay(gmarkers[new_marker_id]);
					map2.addOverlay(gmarkers[new_marker_id]);
				}
				catch(er)
				{
					//was error
				}
			}
		}
		else if (typeof(gmarkers[marker_id]) != 'undefined')
		{
			try
			{
				gmarkers[marker_id].getOption('icon').image = AppConfig['marker_icons']['single'];
				map2.removeOverlay(gmarkers[marker_id]);
				map2.addOverlay(gmarkers[marker_id]);
			}
			catch(er)
			{
				//was error
			}
		}
	}
}

function change_map(map_provider)
{
	if (!map_provider) return;
	if (map_provider == 1)
	{
		removeZoomW();
		map2 = null; // disabling multi map
		if(!map) 
		{
			map_div.innerHTML = "";
			map = new GMap2(document.getElementById("map-cont"));
            add_map_control();
            GEvent.addListener(map, 'resize', function(){set_map_control_size();});
			if (onePlace == false) 
			{
				map.addControl(new GOverviewMapControl());
			}
			map.addControl(new GMapTypeControl());
			//map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
			//initiating map
		}
	}
	else if (map_provider == 2)
	{
        GUnload(); 
		map = null;
		if(!map2)
		{
			// initiating map
			map_div.innerHTML = "";
			map2 = new MultimapViewer( document.getElementById( "map-cont" ) );
			setOSPrefs();
			if (onePlace == false) 
			{
				//map2.addWidget (new MMPanZoomWidget ());
                add_map_control2();
                map2.addEventHandler("resize",set_map_control_size2);
			}
			map2.addWidget (new MMMapTypeWidget ());
/*			
			map2.addEventHandler("mouseover",function( type, target, point ) 
			{
				if (! point && target.plid) 
				{
					m_over();
					target.openInfoBox();
				}
			})
	
			map2.addEventHandler("mouseout",function( type, target, point ) 
			{
				if (! point && target.plid) 
				{
					m_out();
				}
			})
			*/
			// initiating map
		}
	}
}

function remove_disclaimer()
{
	var dom_disclaimer = document.getElementById('disclaimer-text');
	if (dom_disclaimer) 
	{
		var dom_parent = document.getElementById('freeze_search');
		if (dom_parent) dom_parent.removeChild(dom_disclaimer);
	}
}

function get_option_content_by_value(filter)
//get dropdown text for selected option
{
	var dropd = document.getElementById('dropdown_search_filter');
	var option_list = dropd.getElementsByTagName('option');
	var opt_val = filter.value;
	var find_value = ''
	var q_options = option_list.length;
	for (var i = 0; i < q_options; i++)
	{
		if (opt_val == option_list[i].value)
		{
			find_value = option_list[i].innerHTML;
			break;
		}
	}
	return find_value;
}

function add_search_header(return_value, without_br)
//add search header, content search location and filter
{		
		var search_location = document.getElementById('search-text').value;
		var search_filter = document.getElementById('search_filter');
		var search_filter_text = 'with this search option: ' + get_option_content_by_value(search_filter);
		
		var br = '<br />';
		if (typeof(without_br) != 'undefined' && without_br)  br = '';
		
		if (typeof(return_value) != 'undefined') return br + '<span style="color:#000000 !important;">You searched for: ' + search_location.escapeHTML() + '<br />' + search_filter_text.escapeHTML() + '</span>';
		
		document.getElementById("place_results_header").innerHTML = 'You searched for: ' + search_location.escapeHTML() + '<br />' + search_filter_text.escapeHTML();
}

function add_disclaimer()
{
	var disclaimer = document.getElementById("disclaimer-text");
	if (disclaimer)	disclaimer.innerHTML = AppConfig['text']['disclaimer'];
	else
	{
		document.getElementById('freeze_search').innerHTML += "<p id=\"disclaimer-text\" class=\"disclaimer\">" + AppConfig['text']['disclaimer'] + "</p>";
	}
}

function failure_response(error, list_obj)
//add error message in the result list if response is failure
{
	var ErrorMessage = FailureResponseMessage;
	if (map)
	{	
		map.clearOverlays();
	}
	else if (map2)
	{
		map2.removeAllOverlays();
	}
	list_obj.innerHTML = ErrorMessage;
	gmarkers = {};
	gclusters = {};
	tempMarkers = {};
	MarkerId_PlaceId = [];
}

function compareCountyBounds(cb)
{
//compare coords and select min & max - may be need carry out from client

	var c_bounds = []
	if (cb[0] < cb[2])
	{
		c_bounds[0] = cb[0] //min
		c_bounds[2] = cb[2] //max
	}
	else
	{
		c_bounds[0] = cb[2] //min
		c_bounds[2] = cb[0] //max
	}
	
	if (cb[3] < cb[1])
	{
		c_bounds[1] = cb[3] //min
		c_bounds[3] = cb[1] //max
	}
	else
	{
		c_bounds[1] = cb[1] //min
		c_bounds[3] = cb[3] //max
	}
	return c_bounds;
}

function setMeta(page, substitutional_text, dp_text)
//set meta for current page, meta text is situated in the config.yaml
{
	if (!dp_text) dp_text = '';
	
	var hash_key = page + "_description";
	var description = AppConfig['general'][hash_key].replace('%s', substitutional_text + dp_text);
	
	hash_key = page + "_keywords"
	var keywords = AppConfig['general'][hash_key].replace('%s', substitutional_text);
	
	var metas = document.getElementsByTagName('meta');
	var metas_len = metas.length;
	for (var i=0; i < metas_len; i++)
	{
		var content;
		if (metas[i].name == 'description') content = description;
		else if (metas[i].name == 'keywords') content = keywords;
		metas[i].content = content;
	}
}

function searchpage_title_and_meta(search_location, filter_name)
//set search page title,  set search page meta, used in getSearchResultsByAjax
{
	if (typeof(search_location) == 'undefined') search_location = '';
	if (typeof(filter_name) == 'undefined' && (!filter_name || filter_name == '')) filter_name = '';
	else filter_name = ", " + filter_name;
		
    top.document.title=AppConfig['general']['bbc_title'] + ' - ' + AppConfig['general']['search_title'].replace('%s', search_location + filter_name);
	filter_name = filter_name.replace(', ', ' + ')
	setMeta('search', search_location, filter_name);
}

function placepage_title_and_meta(place_name)
//set place page  title and meta: backToPlaceByAjax, getPlaceDetailByAjax
{
	if (typeof(place_name) == 'undefined') place_name = '';
	else
	{
		place_name = unescape(place_name)
	}	
	
    top.document.title = AppConfig['general']['bbc_title'] + ' - ' + AppConfig['general']['place_title'].replace('%s', place_name);
	setMeta('place', place_name);
}

function eventpage_title_and_meta(place_name)
//set event page title and meta: getEventDetailByAjax
{
	if (typeof(place_name) == 'undefined') place_name = '';
	else
	{
		place_name = unescape(place_name)
	}
		
    top.document.title=AppConfig['general']['bbc_title'] + ' - ' + AppConfig['general']['event_title'].replace('%s', place_name);
	setMeta('event', place_name);
}

function setHeader()
{
	if(document.getElementById("disclaimer-text"))
		clear_disclaimer();
	if(!inDB)
	{	
		document.getElementById("place_results_header").innerHTML = "<span class='no_results'>" + AppConfig['no_results']['header'] + "</span>" + add_search_header(true);
		document.getElementById("place_results_header").className = "attention";
		remove_disclaimer();
		
		var r_list = document.getElementById("resultlist");
		if (geographical_place_find) r_list.innerHTML = "<ul><li class='li-as-a'>" + AppConfig['no_results']['geographical_place_find'] + "</li></ul>";
		else r_list.innerHTML = "<ul><li class='li-as-a'>" + AppConfig['no_results']['text'] + "</li></ul>";
		
        set_atom_visible('none');
	}
	else
	{
		document.getElementById("place_results_header").innerHTML = '';
           //set_atom_visible('');
	}	
}

function remove_noresults_header()
//remove "no results header"
{
	var h4 = document.getElementById('place_results_header');
	if (h4.className == 'attention')
	{
		h4.className = '';
		h4.innerHTML = add_search_header(true, true);
	}
}


function place_name_for_url (place_name)
{
    if (place_name == null) {
        return '';
    }
    return place_name.replace(/\s/g, '_', 'g').replace(/\W/g, '', 'g').replace(/_+/g, '-', 'g');
}
