var accessed = new Array();
var opened = new Array();
var hidden = new Array();
var saveon = 0;
var menumove = 0;
var gmarkers = new Array();
var toloc = "";
var fromloc = "";
var map;
var searchcontrol;
var directions = "";
var accom;
var showgoog;
var type;
var noshow = 0;
var images = new Array();
var chosenimg;
var myCal;
var check;
var storedmsg;
var menubutton;
var cachedlink;
var gallmove;
var calon = 0;
var isready = 0;
var msgon = 0;

var IE6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) && (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1);

function hideel(el) {
	if(el == "floatbox") {
		calon = 0;
		msgon = 0;
	}
	if(el == "savebar" || el == "floatbox") {
		var myFader1 = new Fx.Tween(el);
		myFader1.set('opacity', 1);
		myFader1.start('opacity', 0);
		if(el == "floatbox") setTimeout(function() {
			$(el).style.display = "none";
		}, 600);
	}
	else {
		var mySlider = new Fx.Slide(el);
		mySlider.slideOut();
		setTimeout(function() { mySlider.hide(); $(el).style.display = "none"; }, 1000);
	}
}
function showel(el) {
	if($(el)) {
	$(el).style.display = "block";
	if(el == "savebar") {
		var myFader1 = new Fx.Tween(el);
		myFader1.set('opacity', 0);
		myFader1.start('opacity', 1);
	}
	else {
		var mySlider = new Fx.Slide(el);
		mySlider.hide();
		mySlider.slideIn();
	}
	}
}

function checkheight(el, init) {
	if(el) {
		if(el.type != "textarea" && el.type) el = this; // If we're running on startup, el is already set to the current element. Otherwise, we need to set it ourselves
	}
	else var el = this; // This does the same thing but for IE
	var textel = $("text_" + el.id);
	el.style.height = "1px"; // Shrink it first to force a scrollbar
	var int = el.scrollHeight;
	el.style.height = int + 5 + "px"; // +5 so that there's a little bit of space left under the last line; otherwise it looks overly tight
	if(init == '1') var mySlider2 = new Fx.Slide(el, { duration: 500 });
	else var mySlider2 = new Fx.Slide(el, { duration: 100 });
	mySlider2.slideIn();
	if(init == '1') setTimeout(function () { el.focus() }, 500);
	if(el.id == "message") {
		var form = $('comments_form');
		form.style.height = int + 150 + "px";
		var mySlider = new Fx.Slide(form, { duration: 100 });
		mySlider.slideIn();
	}
	if(el.id == "blog_message" || el.id == "blog_title") {
		var title = $('blog_title').style.height;
		var msg = $('blog_message').style.height;
		title = title.replace(/px/, "");
		msg = msg.replace(/px/, "");
		var form = $('blog_form');
		form.style.height = (title * 1) + (msg * 1) + 70 + "px";
		var mySlider = new Fx.Slide(form, { duration: 100 });
		mySlider.slideIn();
	}

}

function doajax(url, data, type) {
	if(isready != 1) setTimeout(function() { doajax(url, data, type); }, 1000);
	else {
	var req = new Request({
		url: url,
		method: type, 
		onRequest: showspinner(),
		onSuccess: function(response) { ajaxresponse(url, response); }
		});
	req.send(data);
	}
}
function showspinner() {
	$('loading').style.display = "block";
}
function ajaxresponse(url, response) {
	$('loading').style.display = "none";
	if(response.indexOf("VENU<><>") == 0 || response.indexOf("VENN<><>") == 0) {
		if(response.indexOf("VENN<><>") == 0) {
			doajax('includes/venuesupdate.php', 'type=' + type, 'post');
			if($('venuetype_new')) $('venuetype_new').selectedIndex = 0;
			$('venuename_new').selectedIndex = 0;
		}
		map.clearOverlays();
		var venuebits;
		var venues = response.split("<><>");
		for(var i = 1; i < venues.length; i++) {
			if(venues[i] != "") {
				venues[i] = venues[i].replace(/\\\"/g, "\"");
				venuebits = venues[i].split("<>");
				pushtomap('map', venuebits[0], venuebits[1], venuebits[2], venuebits[3], venuebits[4], venuebits[5], venuebits[6]);
			}
		}
		setTimeout("hotelsearch()", 3000);

	}
	else if(response.indexOf("VENL<><>") == 0) {
		var venues = response.split("<><>");
		$('chosenvenues').innerHTML = venues[1];
		setTimeout("hotelsearch()", 3000);
		var textareas = document.getElementsByTagName('textarea');
		for(var i = 0; i < textareas.length; i++) {
			if(textareas[i].id.indexOf("blurb_") != -1) {
				textareas[i].onfocus = checkheight;
				textareas[i].onchange = checkheight;
				textareas[i].onkeyup = checkheight;
				checkheight(textareas[i]);
			}
		}
	}
	else if(response.indexOf("VENA<><>") == 0) {
		var venues = response.split("<><>");
		$('venuesbox').innerHTML = venues[1];
		map.clearOverlays();
		var venuebits;
		for(var i = 2; i < venues.length; i++) {
			if(venues[i] != "") {
				venues[i] = venues[i].replace(/\\\"/g, "\"");
				venuebits = venues[i].split("<>");
				pushtomap('map', venuebits[0], venuebits[1], venuebits[2], venuebits[3], venuebits[4]);
			}
		}
		setTimeout("hotelsearch()", 3000);
		var textareas = document.getElementsByTagName('textarea');
		for(var i = 0; i < textareas.length; i++) {
			if(textareas[i].id.indexOf("blurb_") != -1) {
				textareas[i].onfocus = checkheight;
				textareas[i].onchange = checkheight;
				textareas[i].onkeyup = checkheight;
				checkheight(textareas[i]);
			}
		}
	}
	else if(response.indexOf("CONT<><>") == 0) {
		var contacts = response.split("<><>");
		$('contactsbox').innerHTML = contacts[1];
	}
	else if(response.indexOf("CONF<><>") == 0) {
		var contacts = response.split("<><>");
		var el = $('floatbox');
		el.innerHTML = contacts[1];
		var myFader1 = new Fx.Tween(el);
		myFader1.set('opacity', 0);
		el.style.display = "block";
		myFader1.start('opacity', 0.9);
		msgon = 0;
	}
	else if(response.indexOf("WEDL<><>") == 0) {
		var list = response.split("<><>");
		$('intlist').innerHTML = list[1];
		showmessage(list[2]);
	}
	else if(response.indexOf("PROD<><>") == 0) {
		var list = response.split("<><>");
		showmessage(list[1]);
		$('intlist').innerHTML = list[2];
	}
	else if(response.indexOf("WEDM<><>") == 0) {
		var message = response.split("<><>");
		$('listmessage').innerHTML = message[1];
	}
	else if(response.indexOf("WEDF<><>") == 0) {
		var list = response.split("<><>");
		var el = $('floatbox');
		el.innerHTML = list[1];
		if(list[2]) el.innerHTML += eval(list[2]);
		var myFader1 = new Fx.Tween(el);
		myFader1.set('opacity', 0);
		el.style.display = "block";
		myFader1.start('opacity', 0.9);
		if($('yourimg')) imgsel('u');
		calon = 0;
		msgon = 0;
	}
	else if(response.indexOf("WEDR<><>") == 0) {
		$('listmessage').innerHTML = "";
		response = response.replace(/Â/g, "");
		var list = response.split("<><>");
		if($('title').value == "") {
			var title = list[1].split("<>");
			$('title').value = title[1].replace(/</g, "&lt;");
		}
		images = list[2].split("<>");
		$('foundimlabel').style.display = "block";
		$('images').innerHTML = "";
		for(var i = 1; i < images.length; i++) {
			$('images').innerHTML += "<a href=\"#\" onclick=\"imgsel('" + i + "'); return false;\" id=\"link_" + i + "\" style=\"border: 2px solid transparent;\"><img src=\"" + images[i] + "\" id=\"img_" + i + "\" alt=\"Downloaded image\" title=\"Click to select this image\" width=\"85\"/> ";
		}
		if($('img_1')) imgsel('1');
		var prodid = $('productid').value;
		$('images').innerHTML = "<div id=\"imagelist\">" + $('images').innerHTML + "</div>";
		if($('desc').value == "") {
			var desc = list[3].split("<>");
			desc[1] = desc[1].replace(/<POUND>/g, "£");
			desc[1] = desc[1].replace(/<EURO>/g, "€");
			$('desc').value = desc[1].replace(/</g, "&lt;");
		}
		if($('price').value == "") {
			var price = list[4].split("<>");
			price[1] = price[1].replace(/<POUND>/g, "£");
			price[1] = price[1].replace(/<EURO>/g, "€");
			$('price').value = price[1].replace(/</g, "&lt;");
		}
	}
	else if(response.indexOf("LIST<><>") == 0) {
		var list = response.split("<><>");
		$('wedlists').innerHTML = list[1];
		showmessage(list[2]);
	}
	else if(response.indexOf("COMM<><>") == 0) {
		var comments = response.split("<><>");
		var el = $('comments_');
		var mySlider = new Fx.Slide(el);
		mySlider.slideOut();
		setTimeout(function() { el.innerHTML = comments[1];
mySlider.slideIn() }, 600);
		$('name').value = "";
		$('email').value = "";
		$('antispam').value = "";
		$('message').value = " ";
	}
	else if(response.indexOf("BLOG<><>") == 0) {
		if($('pageid')) {
			if($('pageid').innerHTML != "0") {
				window.location = "./";
			}
		}
		var blog = response.split("<><>");
		var el2 = $('blog_form');
		var mySlider2 = new Fx.Slide(el2);
		mySlider2.slideOut();
		setTimeout(function() { el2.style.display = "none"; }, 500);
		var el = $('blog_');
		var mySlider = new Fx.Slide(el);
		mySlider.slideOut();
		setTimeout(function() {	
			el.innerHTML = blog[1]; 
			mySlider.slideIn();
			$('blog_title').value = "Your entry title";
			$('blog_message').value = "Enter your message here.";
			}, 1000);
	}
	else if(response.indexOf("LIVE<><>") == 0) {
		var resp = response.split("<><>");
		var el = $(resp[1]);
		el.innerHTML = resp[2];
		var myFader1 = new Fx.Tween(el);
		myFader1.set('opacity', 0);
		el.style.display = "block";
		myFader1.start('opacity', 0.9);
	}
	else if(response.indexOf("MAIL<><>") == 0) {
		var bits = response.split("<><>");
		$('maillist').innerHTML = bits[1];
	}
	else {
		showmessage(response);
	}
}

function prep(text) {
	text = encodeURI(text);
	text = text.replace(/&/g, "%26");
	text = text.replace(/\+/g, "%2B");
	text = text.replace(/#/g, "%23");
	return text;
}

function noload() {
	noshow = 1;
	setTimeout(function() { noshow = 0; }, 1000);
}

function getels() {
	var elements = document.getElementsByTagName('textarea');
	for(var i = 0; i < elements.length; i++) {
		elements[i].onfocus = checkheight;
		elements[i].onchange = checkheight;
		elements[i].onkeyup = checkheight;
		checkheight(elements[i]);
	}
	if(typeof picsort == 'function') picsort();
	if($('floatbox').innerHTML != "") showmessage($('floatbox').innerHTML);
}

function loadmap(div) {
	isMozilla = (document.all) ? 0 : 1;

	if (GBrowserIsCompatible()) {
		var options = {
			resultList : google.maps.LocalSearch.RESULT_LIST_SUPPRESS,
			suppressInitialResultSelection : true,
			onGenerateMarkerHtmlCallback: markerOpen
		}
		map = new GMap2($(div));
		map.addControl(new GSmallZoomControl());
		var ov = new GOverviewMapControl();
		map.addControl(ov);
		map.addControl(new GMenuMapTypeControl());

		if(accom == 1) {

			searchcontrol = new google.maps.LocalSearch(options);
			map.addControl(searchcontrol);
			var checkloaded = setInterval(function() { 
				if(map.isLoaded()) {
					clearInterval(checkloaded);
					if(showgoog == 1) setTimeout("hotelsearch()", 3000);
				}
			}, 100);
		}
	}
}
function markerOpen(marker, html, result) {
	if(toloc != "") {
		fromhere(marker.getLatLng());
	}
	else if(fromloc != "") {
		tohere(marker.getLatLng());
	}
	html.innerHTML += '<br>Directions: <a href="javascript:tohere(\'' + marker.getLatLng() + '\')">To here<\/a> - <a href="javascript:fromhere(\'' + marker.getLatLng() + '\')">From here<\/a>';
	return html;
}

function hotelsearch() {
	if(accom == 1 && showgoog == 1) searchcontrol.execute('Hotels');
}
function hotelsremove() {
	map.clearOverlays();
	doajax('includes/venuechange.php', 'type=9', 'post');
}
function hotelgoog(set) {
	showgoog = set;
	var poststr = "set=" + set;
	doajax('includes/hotelshow.php', poststr, 'post');
	if(set == "0") hotelsremove();
	else hotelsearch();

}

function tohere(i) {
	map.closeInfoWindow();
	toloc = i;
	if(fromloc == "") dirsbox('Click on a marker for the location you\'re travelling from, or enter an address below:');
	else getdirs();
}
function fromhere(i) {
	map.closeInfoWindow();
	fromloc = i;
	if(toloc == "") dirsbox('Click on a marker for the location you\'re travelling to, or enter an address below:');
	else getdirs();
}

if(typeof GBrowserIsCompatible == 'function') var bounds = new GLatLngBounds();

function drawpoint(resultLat, resultLng, dragpt, myicon, html, locid) {
		function zoomfit() {
			var newzoom = map.getBoundsZoomLevel(bounds) - 1;
			var newcenter = bounds.getCenter();
			map.setCenter (newcenter,newzoom);
		}

	var point = new GLatLng(resultLat,resultLng);
	if(dragpt == 1) var options = {
		icon: myicon,
		draggable: true
	};
	else var options = {
		icon: myicon
	};
	var marker = new GMarker(point, options);
	map.addOverlay(marker);
	GEvent.addListener(marker, "dragend", function() {
		var newloc = marker.getPoint();
		updateloc(newloc, locid);
	});
	bounds.extend(point);
	zoomfit();
				
    html = html + '<br>Directions: <a href="javascript:tohere(\'' + point + '\')">To here<\/a> - <a href="javascript:fromhere(\'' + point + '\')">From here<\/a>';

    gmarkers.push(marker);
        		
	GEvent.addListener(marker, "click", function() {
		if(toloc != "") fromhere(point);
		else if(fromloc != "") tohere(point);
		else marker.openInfoWindowHtml(html);
	});
}

function pushtomap(div, loctype, html, location, dragpt, locid) {
	if(location) {
		var icpic = "";
		
		if(loctype == "2") icpic = "blue"; // Reception
		else if(loctype == "3") icpic = "red"; // Hotel
		else if(loctype == "4") icpic = "yellow"; // Unused for now
		else icpic = "green"; // Ceremony
		var myicon = new GIcon(G_DEFAULT_ICON, 'http://www.google.com/intl/en_ALL/mapfiles/ms/micons/' + icpic + '-dot.png');
		myicon.iconSize = new GSize(32, 32);

		if(location.split(/,/g).length - 1 == 1) {
			var coords = location.split(",");
			drawpoint(coords[0], coords[1], dragpt, myicon, html, locid);
		}
		else {
			function showAddress(address) {
				var localSearch = new GlocalSearch();
				localSearch.setSearchCompleteCallback(null, 
					function() {
			
						if (localSearch.results[0]) {		
							var resultLat = localSearch.results[0].lat;
							var resultLng = localSearch.results[0].lng;
							drawpoint(resultLat, resultLng, dragpt, myicon, html, locid);
						}
kno					});
					localSearch.execute(address);
				}
				
			showAddress(location);
		}
	}
}

function dirsbox(msg) {
	var mySlider = new Fx.Slide('dirsbox');
	mySlider.slideOut();
	setTimeout(function() {
		if(directions != "") directions.clear();
		$('dirsbox').innerHTML = msg + "<form method=\"post\" action=\"#\" onsubmit=\"addloc(); return false;\"><input type=\"text\" name=\"dirloc\" id=\"dirloc\"/> <input type=\"submit\" class=\"submit_hide\"/><a class=\"date_button\" href=\"#\" onclick=\"addloc(); return false;\" title=\"Search\"><img src=\"images/icons/search.gif\" alt=\"Search\"/> <span class=\"date_button_text\">Search</span><span class=\"date_button_right\"></span></a></form>";
		mySlider.slideIn(); 
	}, 600);
	setTimeout(function() {
		var el = $('dirsbox').parentNode;
		var curheight = el.style.height;
		curheight = curheight.replace(/px/, "");
		curheight = (curheight * 1) + 5;
		el.style.height = curheight + "px";
	}, 1150);
}
function getdirs() {
	var directionspanel = $('dirsbox');
	directionspanel.innerHTML = "";
	directions = new GDirections(map, directionspanel);
	directions.load("from: " + fromloc + " to: " + toloc);
	map.closeInfoWindow();
	var checkloaded = setInterval(function() { 
		if(directionspanel.innerHTML != "") {
			showel('dirsbox');
			clearInterval(checkloaded);
			setTimeout(function() {
				var el = $('dirsbox').parentNode;
				var curheight = el.style.height;
				curheight = curheight.replace(/px/, "");
				curheight = (curheight * 1) + 40;
				el.style.height = curheight + "px";
			}, 1000);
		}
	}, 100);
	fromloc = "";
	toloc = "";
}
function addloc() {
	var address = $('dirloc').value;
	var localSearch = new GlocalSearch();
	localSearch.setSearchCompleteCallback(null, 
		function() {
			
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				if(toloc == "") toloc = point;
				else fromloc = point;
				getdirs();
			}else{
				showmessage("Sorry, that address could not be found.");
			}
		});	
		
	localSearch.execute(address);
}
function updateloc(loc, id) {
	var poststr = "id=" + id + "&loc=" + loc;
	doajax('includes/venueloc.php', poststr, 'post');
}

function commentadd() {
	var el2 = $('comments_form');
	if(el2.style.display != "block") {
		checkheight($('message'), '1');
		var mySlider2 = new Fx.Slide(el2);
		mySlider2.hide();
		el2.style.display = "block";
		mySlider2.slideIn();
	}
}
function commentpost(type, id) {
	var poststr = "type=" + type + "&id=" + id + "&name=" + prep($('name').value) + "&message=" + prep($('message').value) + "&antispam=" + prep($('antispam').value) + "&email=" + prep($('email').value);
	var el2 = $('comments_form');
	var mySlider2 = new Fx.Slide(el2);
	mySlider2.slideOut();
	setTimeout(function() { el2.style.display = "none"; }, 500);
	doajax('includes/commentpost.php', poststr, 'post');
}
function upload(mode) {
	window.open('/upload/index.php?mode=' + mode,'','status=no,width=426,height=300,left=20,top=20,scrollbars=yes');
}

function passreset() {
	var poststr = "forgotuser=" + prep($('forgotuser').value) + "&forgotemail=" + prep($('forgotemail').value);
	doajax('includes/passreset.php', poststr, 'post');
}

function buyprod(id) {
	var poststr = "id=" + id;
	doajax('includes/buyform.php', poststr, 'post');
}
function maillist() {
	doajax('includes/maillist.php', '', 'post');
}
function boughtprod(id) {
	var poststr = "id=" + id;
	var quantity = prep($('quantity').value);
	var name = prep($('name').value);
	var email = prep($('email').value);
	var add1 = prep($('add1').value);
	var add2 = prep($('add2').value);
	var city = prep($('city').value);
	var message = prep($('message').value);
	if($('passcode')) var passcode = prep($('passcode').value);
	else var passcode = "";
	if(name == "" || email.indexOf("@") == -1 || add1 == "") {
		showmessage('You must enter at least your name, address and e-mail address.');
		return false;
	}
	else {
		poststr += "&quantity=" + quantity + "&name=" + name + "&email=" + email + "&add1=" + add1 + "&add2=" + add2 + "&city=" + city + "&message=" + message + "&passcode=" + passcode;
		doajax('includes/buyform.php', poststr, 'post');
	}
}
function showmessage(message) {
	if(isready != 1 || msgon == 1) setTimeout(function() { showmessage(message); }, 1000);
	else {
	if(message != "" && message != undefined) {
		var el = $('floatbox');
		var myFader1 = new Fx.Tween(el);
		myFader1.set('opacity', 0);
		el.style.display = "block";
		el.innerHTML = message;
		myFader1.start('opacity', 0.9);
		msgon = 1;
		setTimeout(function() { hidemessage(); }, 5000);
	}
	}
}
function hidemessage() {
	if($('floatbox').innerHTML.indexOf("<table") == -1) {
		var el = $('floatbox');
		var myFader1 = new Fx.Tween(el);
		myFader1.start('opacity', 0);
		setTimeout(function() {
			el.style.display = "none";
			msgon = 0;
		}, 1000);
	}
	else msgon = 0;
}

function linkcache(linkid, mode, type) {
	if(type == "menu") {
		var prefix = "link_";
		var checkatt = "text_menu";
	}
	else if(type == "gall") {
		var prefix = "pic_";
	} 	
	if(navigator.userAgent.indexOf("MSIE") != -1 && ((checkatt && $(checkatt).innerHTML == "") || type == "gall")) { // IE only
		if(mode == 1) {
			cachedlink = $(prefix + linkid).href;
			$(prefix + linkid).removeAttribute("href");
		}
		else {
			$(prefix + linkid).href = cachedlink;
		}
	}
}

window.addEvent("load", function() { isready = 1; });

