cms.RootPath = '';
/* WebFilter 0x1010006400000014 */
local.google = {};
local.google.maps = {};



local.google.maps.loadMap = function(selector,itemType,itemTag,bCentreLoc){
	//Lookup any new addresses
	local.google.maps.codeAddress();
	//Create Map
	local.google.maps.itemType = itemType;
	local.google.maps.itemTag = itemTag;
	
	local.google.maps.googlePendingInterval = setInterval(function() {
		if (local.google.maps.googlePendingCount <= 0) {
			clearInterval(local.google.maps.googlePendingInterval);
			local.google.maps.InitializeMap(selector);
			if (bCentreLoc === true) {
				if (navigator && navigator.geolocation) {
					navigator.geolocation.getCurrentPosition(function (position) {
						initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
						local.google.maps.map.setCenter(initialLocation);
					});
				}
			}
		}
	},100);
};

local.google.maps.googlePendingInterval = null;
local.google.maps.zoomDelayInterval = null;
local.google.maps.googlePendingCount = 0;
local.google.maps.map = null;
local.google.maps.addressArray = [];
local.google.maps.encodedAddrArray = [];
local.google.maps.overQueryLimit = false;

local.google.maps.InitializeMap = function(selector) {
	mapType = google.maps.MapTypeId.ROADMAP;
	
	switch(local.google.maps.mapType)
	{
		case 'k':
			mapType = google.maps.MapTypeId.SATELLITE;
			break;
		case 'h':
			mapType = google.maps.MapTypeId.HYBRID;
			break;
		case 'p':
			mapType = google.maps.MapTypeId.TERRAIN;
			break;
	}

	google.maps.MapTypeId.ROADMAP
	var myOptions = {		
		mapTypeId: mapType,
		zoom: local.google.maps.zoomLevel
	}
	local.google.maps.map = new google.maps.Map(document.getElementById(selector), myOptions);
	local.google.maps.addMarkers();
	local.google.maps.addOverlays();

	local.google.maps.zoomDelayInterval = setInterval(function()
							  {
								  clearInterval(local.google.maps.zoomDelayInterval);
								  local.google.maps.map.setZoom(local.google.maps.zoomLevel);
							  },500);
};

local.google.maps.codeAddress = function() {   
	$.each(
		local.google.maps.addressArray,
		function( intIndex, objValue ){	
			if(local.google.maps.overQueryLimit != true){
				local.google.maps.googlePendingCount++;			
				var geocoder = new google.maps.Geocoder();			
				geocoder.geocode( { 'address': objValue.address}, function(results, status) {
					local.google.maps.googlePendingCount--;
					if (status == google.maps.GeocoderStatus.OK) {
						local.google.maps.encodedAddrArray.push({'position' : results[0].geometry.location, 'title' : objValue.title, 'content': objValue.content});
						var pos = {'lat':results[0].geometry.location.lat(), 'long':results[0].geometry.location.lng()};
						local.google.maps.saveLocationData(objValue.marker_id, pos);
					} else {
						console.log("Geocode was not successful for the following reason: " + status);
						if(status == 'OVER_QUERY_LIMIT'){
							local.google.maps.overQueryLimit = true;
						}
					}
				});
			}
		}
	);
};



local.google.maps.addOverlays = function(){
	google.maps.event.addListener(local.google.maps.map, "rightclick", function(e) {
		var lat = e.latLng.lat();
		var lng = e.latLng.lng();
		// populate yor box/field with lat, lng
		//alert("Lat=" + lat + "; Lng=" + lng);
	});
};

local.google.maps.addMarkers = function(){
	var infowindow;
	$.each(
		local.google.maps.encodedAddrArray,
		function(intIndex, objValue){
			
			var marker = new google.maps.Marker({
				map: local.google.maps.map, 
				position: objValue.position,
				title: objValue.title
			});
			
			if (objValue.content) {
				var iw = new google.maps.InfoWindow({content:objValue.content});
				google.maps.event.addListener(marker,'click',function(){
					iw.open(local.google.maps.map,marker);
				});
			}
			
			/*
			google.maps.event.addListener(marker, 'click', function() {
				if (infowindow) infowindow.close();
				infowindow = new google.maps.InfoWindow({				
					content: objValue.content
				});
				infowindow.open(local.google.maps.map, marker);
			});
*/
			if (intIndex == local.google.maps.encodedAddrArray.length - 1 && local.google.maps.centerTimeout == null) { local.google.maps.centerTimeout = setTimeout(local.google.maps.centerMap,500); }
		}
	);
};

local.google.maps.centerTimeout = null;
local.google.maps.centerMap = function(){
	
	local.google.maps.centerTimeout = null;
	//  Create a new viewpoint bound	
	var bounds = new google.maps.LatLngBounds ();
	
	//  Go through each...	
	for (var i = 0, LtLgLen = local.google.maps.encodedAddrArray.length; i < LtLgLen; i++) {
		//  And increase the bounds to take this point
		bounds.extend (local.google.maps.encodedAddrArray[i].position);
	}
	//  Fit these bounds to the map
	
	google.maps.event.addListener(local.google.maps.map, 'zoom_changed', function() {
		zoomChangeBoundsListener = 
			google.maps.event.addListener(local.google.maps.map, 'bounds_changed', function(event) {
				if (this.getZoom() > 15 && this.initialZoom == true) {
					// Change max/min zoom here
					this.setZoom(15);
					this.f = false;
				}				
				google.maps.event.removeListener(zoomChangeBoundsListener);
			});
	});
	local.google.maps.map.initialZoom = true;	
	local.google.maps.map.fitBounds (bounds);
	
}


local.google.maps.addAddress = function(id, address, title, content) {
	local.google.maps.addressArray.push({'address' : address, 'marker_id' : id, 'title' : title, 'content' : content});	
};
local.google.maps.saveLocationData = function(object, data) {
	var objData = data;
	var obj = object;
	//console.log(objData);
	$.getJSON(cms.RootPath + '/wf.ashx/access.json/getkey/'+local.google.maps.itemTag+'/-1?u=' + Math.random(), function (data) {
		var ah = data['a.h'];
		var as = data['a.s'];
		var at = data['a.t'];
		if (ah == null || as == null || at == null) {
			//alert('Failed to authorise.');
		} else {
			var jsonData = [];
			var thisData = {};
			thisData.d = obj;
			thisData.t = local.google.maps.itemType;
			thisData.f = {};
			thisData.f['latitude'] = objData.lat;			
			thisData.f['longitude'] = objData.long;
			jsonData.push(thisData);
			var postData = JSON.stringify(jsonData);
			
			var url = cms.RootPath + '/wf.ashx/access.json/put/'+local.google.maps.itemTag+'/-1?a.h=' + encodeURIComponent(ah) + '&a.s=' + encodeURIComponent(as) + '&a.t=' + encodeURIComponent(at) + '&u=' + Math.random();
			$.post(url, postData, function (data, textStatus, jqXhr) {				
				
			});
		}
	});
};
/* WebFilter 0x101000640000003F */
local.pagePickerSearch = function(oText) {
	if (oText._searchTimeout) { clearTimeout(oText._searchTimeout); }
	oText._searchTimeout = setTimeout(function() {
		oText._searchTimeout = null;
		var ot = $(oText);
		if (oText._lower == null) oText._lower = ot.closest('.cms-page-search').find('.cms-page-search-lower');
		var lwr = oText._lower;
		if (lwr._oldHtml == null) { lwr._oldHtml = $(lwr).html(); }
		if (oText._searchXhr != null) {
			// Request already in progress
			oText._searchQueued = true;
		} else if (oText.value == '' && lwr._oldHtml != null) {
			lwr.html(lwr._oldHtml);
		} else if (oText._lastSearch != oText.value) {
			// Nothing queued
			oText._searchQueued = false;
			ot.closest('div').addClass('active');
			oText._lastSearch = oText.value;
			oText._searchXhr = $.getJSON(cms.RootPath + '/wf.ashx?f=search.json&t=269484034&q=' + encodeURIComponent(oText.value),
				function(sData) {
					$(lwr).empty();
					var h = $(lwr).closest('.ui-dialog-content').height();
					ot.closest('div').removeClass('active');
					ot.closest('.cms-page-search').find('.cms-page-search-lower').scrollTop(0);
					if(sData.length == 0) {
						var outer = $('<div />').addClass('cms-info');
						var inner = $('<div />').addClass('cms-info-inner').addClass('cms-info-info').html('<p>No results found.</p>').appendTo(outer);
						outer.appendTo(lwr);
					} else {
						for (var idx = 0; idx < sData.length; idx++) {
							var sObj = sData[idx];
							var item = $('<div/>').addClass('cms-page-search-result').addClass(idx % 2 == 0 ? 'list-even':'list-odd');
							var hdr = $('<div/>').addClass('cms-page-search-result-title');
							var link = $('<a/>');
							link[0]._type_id = sObj['type_id'];
							link[0]._object_id = sObj['object_id'];
							link.click(function(){storeCmsLink('{{'+this._type_id+':'+this._object_id+'}}');return false;});
							if(sObj['hl_title'])
								link.html(sObj['hl_title']);
							else
								link.text(sObj['title']);
							link.attr('href',sObj['link']).appendTo(hdr);
							hdr.appendTo(item);
							$('<div/>').addClass('cms-page-search-result-url').text(sObj['link']).appendTo(item);
							if(sObj['summary']) $('<div/>').addClass('cms-page-search-result-body').html(sObj['summary']).appendTo(item);
							item.appendTo(lwr);
							var l = $(lwr);
							l.height(h - l.position().top + 24);
						}
					}
					oText._searchXhr = null;
					if (oText._searchQueued == true) {
						oText._searchQueued = false;
						local.pagePickerSearch(oText);
					}
				});
		}
	}, 300);
};
/* WebFilter 0x1010006400000040 */
local.filePickerSearch = function(oText,iFolder) {
	if (oText._searchTimeout) { clearTimeout(oText._searchTimeout); }
	oText._searchTimeout = setTimeout(function() {
		oText._searchTimeout = null;
		var ot = $(oText);
		if (oText._lower == null) oText._lower = ot.closest('.cms-page-search').find('.cms-page-search-lower');
		var lwr = oText._lower;
		if (lwr._oldHtml == null) { lwr._oldHtml = $(lwr).html(); }
		if (oText._searchXhr != null) {
			// Request already in progress
			oText._searchQueued = true;
		} else if (oText.value == '' && lwr._oldHtml != null) {
			lwr.html(lwr._oldHtml);
		} else if (oText._lastSearch != oText.value) {
			// Nothing queued
			oText._searchQueued = false;
			ot.closest('div').addClass('active');
			oText._lastSearch = oText.value;
			oText._searchXhr = $.getJSON(cms.RootPath + '/wf.ashx?f=search.json&t=268566529&q=' + encodeURIComponent(oText.value) + '&file.folder=' + parseInt(iFolder,10),
				function(sData) {
					$(lwr).empty();
					var h = $(lwr).closest('.ui-dialog-content').height();
					ot.closest('div').removeClass('active');
					ot.closest('.cms-page-search').find('.cms-page-search-lower').scrollTop(0);
					var result = false;
					if (sData.length > 0) {
						for (var idx = 0; idx < sData.length; idx++) {
							var sObj = sData[idx];
							var size = parseInt(sObj['size'],10);
							if (size > 0) {
								var item = $('<div/>').addClass('cms-page-search-result').addClass('cms-file-search-result').addClass(idx % 2 == 0 ? 'list-even':'list-odd');
								var thm = parseInt(sObj['thumbnail'],10);
								if (thm != 0) {
									var imgLink = $('<a/>')
										.click(function(){storeFileChoice(this._object_id);return false;})
										.attr('href',sObj['link'])
										.appendTo($('<div/>')
										.addClass('cms-file-search-image')
										.appendTo(item));
									imgLink[0]._type_id = sObj['type_id'];
									imgLink[0]._object_id = sObj['object_id'];
									$('<img/>').attr('src',cms.RootPath + '/f.ashx?v=' + thm).appendTo(imgLink);
								}
								var hdr = $('<div/>').addClass('cms-page-search-result-title');
								var link = $('<a/>');
								link[0]._type_id = sObj['type_id'];
								link[0]._object_id = sObj['object_id'];
								link.click(function(){storeFileChoice(this._object_id);return false;});
								if(sObj['hl_title'])
									link.html(sObj['hl_title']);
								else
									link.text(sObj['title']);
								link.attr('href',sObj['link']).appendTo(hdr);
								hdr.appendTo(item);
								$('<div/>').addClass('cms-page-search-result-right').text(((Math.round(parseFloat(sObj['size']) / 1024) * 100) / 100) + ' kB').appendTo(item);
								$('<div/>').addClass('cms-page-search-result-url').text(sObj['path']).appendTo(item);
								$('<a/>').attr('href',sObj['download']).attr('target','_blank').text('download')
									.appendTo($('<div/>').addClass('cms-page-search-result-right').appendTo(item));
								$('<div/>').addClass('cms-page-search-result-url').text(sObj['mime']).appendTo(item);
								$('<div/>').addClass('cms-page-search-result-end').appendTo(item);
								if(sObj['summary']) $('<div/>').addClass('cms-page-search-result-body').html(sObj['summary']).appendTo(item);
								item.appendTo(lwr);
								var l = $(lwr);
								l.height(h - l.position().top + 24);
								result = true;
							}
						}
					}
					if (result == false) {
						var outer = $('<div />').addClass('cms-info');
						var inner = $('<div />').addClass('cms-info-inner').addClass('cms-info-info').html('<p>No results found.</p>').appendTo(outer);
						outer.appendTo(lwr);
					}
					oText._searchXhr = null;
					if (oText._searchQueued == true) {
						oText._searchQueued = false;
						local.pagePickerSearch(oText);
					}
				});
		}
	}, 300);
};
/* WebFilter 0x1010006400000041 */
local.fileLinkPickerSearch = function(oText,iFolder) {
	if (oText._searchTimeout) { clearTimeout(oText._searchTimeout); }
	oText._searchTimeout = setTimeout(function() {
		oText._searchTimeout = null;
		var ot = $(oText);
		if (oText._lower == null) oText._lower = ot.closest('.cms-page-search').find('.cms-page-search-lower');
		var lwr = oText._lower;
		if (lwr._oldHtml == null) { lwr._oldHtml = $(lwr).html(); }
		if (oText._searchXhr != null) {
			// Request already in progress
			oText._searchQueued = true;
		} else if (oText.value == '' && lwr._oldHtml != null) {
			lwr.html(lwr._oldHtml);
		} else if (oText._lastSearch != oText.value) {
			// Nothing queued
			oText._searchQueued = false;
			ot.closest('div').addClass('active');
			oText._lastSearch = oText.value;
			oText._searchXhr = $.getJSON(cms.RootPath + '/wf.ashx?f=search.json&t=268566529&q=' + encodeURIComponent(oText.value) + '&file.folder=' + parseInt(iFolder,10),
				function(sData) {
					$(lwr).empty();
					var h = $(lwr).closest('.ui-dialog-content').height();
					ot.closest('div').removeClass('active');
					ot.closest('.cms-page-search').find('.cms-page-search-lower').scrollTop(0);
					var result = false;
					if (sData.length > 0) {
						for (var idx = 0; idx < sData.length; idx++) {
							var sObj = sData[idx];
							var size = parseInt(sObj['size'],10);
							if (size > 0) {
								var item = $('<div/>').addClass('cms-page-search-result').addClass('cms-file-search-result').addClass(idx % 2 == 0 ? 'list-even':'list-odd');
								var thm = parseInt(sObj['thumbnail'],10);
								if (thm != 0) {
									var imgLink = $('<a/>')
										.click(function(){storeFileChoice(this._object_id);return false;})
										.attr('href',sObj['link'])
										.appendTo($('<div/>')
										.addClass('cms-file-search-image')
										.appendTo(item));
									imgLink[0]._type_id = sObj['type_id'];
									imgLink[0]._object_id = sObj['object_id'];
									$('<img/>').attr('src',cms.RootPath + '/f.ashx?v=' + thm).appendTo(imgLink);
								}
								var hdr = $('<div/>').addClass('cms-page-search-result-title');
								var link = $('<a/>');
								link[0]._type_id = sObj['type_id'];
								link[0]._object_id = sObj['object_id'];
								link.click(function(){storeCmsLink('{{268566529:' + this._object_id + ';File.LinkType=Download}}');return false;});
								if(sObj['hl_title'])
									link.html(sObj['hl_title']);
								else
									link.text(sObj['title']);
								link.attr('href',sObj['link']).appendTo(hdr);
								hdr.appendTo(item);
								$('<div/>').addClass('cms-page-search-result-right').text(((Math.round(parseFloat(sObj['size']) / 1024) * 100) / 100) + ' kB').appendTo(item);
								$('<div/>').addClass('cms-page-search-result-url').text(sObj['path']).appendTo(item);
								$('<a/>').attr('href',sObj['download']).attr('target','_blank').text('download')
									.appendTo($('<div/>').addClass('cms-page-search-result-right').appendTo(item));
								$('<div/>').addClass('cms-page-search-result-url').text(sObj['mime']).appendTo(item);
								$('<div/>').addClass('cms-page-search-result-end').appendTo(item);
								if(sObj['summary']) $('<div/>').addClass('cms-page-search-result-body').html(sObj['summary']).appendTo(item);
								item.appendTo(lwr);
								var l = $(lwr);
								l.height(h - l.position().top + 24);
								result = true;
							}
						}
					}
					if (result == false) {
						var outer = $('<div />').addClass('cms-info');
						var inner = $('<div />').addClass('cms-info-inner').addClass('cms-info-info').html('<p>No results found.</p>').appendTo(outer);
						outer.appendTo(lwr);
					}
					oText._searchXhr = null;
					if (oText._searchQueued == true) {
						oText._searchQueued = false;
						local.pagePickerSearch(oText);
					}
				});
		}
	}, 300);
};
/* TemplateFilter 0x10C80FA000000007 */
local.StartSlideshow = function(g,data,startId,settings) {
	var s = new slideShow();
	s.g = g;
	g.addClass('i001-gallery-slideshow-parent');
	s.ID = Math.floor(Math.random() * 100000);
	local.slideShowTable[s.ID] = s;
	s.SlideshowData = data;
	if (settings) {	for (var x in settings) { s.SlideshowSettings[x] = settings[x]; } }

	// Width fix
	var tWrap = g.find('.i001-gallery-thumbs');
	var tRow = tWrap.find('.i001-gallery-thumb_row');
	tRow.width(tWrap.width() - (2 * parseInt(s.SlideshowSettings.navPadding,10)));

	s.SlideshowStartId = startId;
	g.data('g',s);
	s.SlideshowPrepareThumbnails();
	s.UnpauseSlideshow();
	s.SlideshowTimeout = setTimeout("local.slideShowTable['" + s.ID + "'].SlideshowExecute()",s.SlideshowSettings.interval);
}

local.slideShowTable = { };

function slideShow() { }
slideShow.prototype.ID = 0;
slideShow.prototype.g = null;
slideShow.prototype.SlideshowIndex = -1;
slideShow.prototype.SlideshowCurrent = null;
slideShow.prototype.SlideshowData = null;
slideShow.prototype.SlideshowTimeout = -1;
slideShow.prototype.SlideshowPaused = false;
slideShow.prototype.SlideshowSettings = {
	interval: 5000,
	transitionInterval: 500,
	thumbSpacing: 120,
	navPadding: 66
};
local.PauseSlideshow = function(oLink) { return $(oLink).closest('.i001-gallery-slideshow-parent').data('g').PauseSlideshow(); }
slideShow.prototype.PauseSlideshow = function() {
	var g;
	if (this.SlideshowData) {
		g = this;
	} else if (g == null) {
		g = $(this).closest('.i001-gallery-slideshow-parent').data('g');
	}
	g.SlideshowPaused = true;
	g.g.find('.i001-gallery-slideshow-state .play').removeClass('active');
	g.g.find('.i001-gallery-slideshow-state .pause').addClass('active');
	return false;
};
local.UnpauseSlideshow = function(oLink) { return $(oLink).closest('.i001-gallery-slideshow-parent').data('g').UnpauseSlideshow(); }
slideShow.prototype.UnpauseSlideshow = function() {
	var g;
	if (this.SlideshowData) {
		g = this;
	} else if (g == null) {
		g = $(this).closest('.i001-gallery-slideshow-parent').data('g');
	}
	g.SlideshowPaused = false;
	g.g.find('.i001-gallery-slideshow-state .pause').removeClass('active');
	g.g.find('.i001-gallery-slideshow-state .play').addClass('active');
	return false;
};
slideShow.prototype.SlideshowExecute = function() {
	if (this.SlideshowPaused == true) {
		clearTimeout(this.SlideshowTimeout);
		this.SetTimeout(2);
	} else {
		this.UnpauseSlideshow();
		if (this.SlideshowIndex == -1) this.SlideshowPrepare(this.SlideshowData);
		this.SlideshowChangeTo(this.SlideshowIndex + 1,this.SlideshowData);
	}
};
slideShow.prototype.SlideshowPrepare = function(data) {
	this.SlideshowData = data;
	this.g.find('.i001-gallery-slideshow-img-standby').data('g',this).load(this.SlideshowStandbyLoad).parent().css('z-index',90);
	this.g.find('.i001-gallery-slideshow-img-main').data('g',this).load(this.SlideshowStandbyReset).parent().css('z-index',89);
	for(var i=0; i < data.length; i++) {
		if (parseInt(data[i].ss_id) == this.SlideshowStartId) {
			this.SlideshowIndex = i;
		}
		if (data[i].ss_id > 0) {
			data[i].cacheImg = new Image();
			data[i].cacheImg.src = '/f.ashx?v=' + parseInt(data[i].img_tgt,10);
		}
	}
};
slideShow.prototype.SlideshowChangeTo = function(newIdx,data) {
	if (this.SlideshowIndex == -1) this.SlideshowPrepare(data);
	clearTimeout(this.SlideshowTimeout);
	var oldIdx = this.SlideshowIndex;
	this.SlideshowIndex = newIdx;
	if (this.SlideshowIndex >= data.length - 1) this.SlideshowIndex = 0;
	if (this.SlideshowIndex < 0) this.SlideshowIndex = data.length - 2;

	var t = data[this.SlideshowIndex];
	this.SlideshowCurrent = t;
	this.g.find('.i001-gallery-slideshow-img-standby').attr('src',t.cacheImg.src);
};
slideShow.prototype.SlideshowStandbyReset = function() {
	$(this).css('opacity',1);
	$(this).closest('.i001-gallery-slideshow-parent').find('.i001-gallery-slideshow-img-standby').parent().css('top','-20000px');
};
slideShow.prototype.SlideshowStandbyLoad = function() {
	var g = $(this).data('g');
	if (g == null) return;
	var t = g.SlideshowCurrent;
	if (t == null) return;

	var wrap = g.g.find('.i001-gallery-slideshow-wrap');
	var standby = g.g.find('.i001-gallery-slideshow-img-standby');
	var main = g.g.find('.i001-gallery-slideshow-img-main');

	standby.css('opacity',0).parent().css('top','0');
	main.stop(true).css('opacity',1);
	
	var trans = g.SlideshowSettings.transitionInterval;

	main.stop(true).animate({opacity:0},trans);
	standby.stop(true).animate({opacity: 1},trans,function() {
		main.attr('src',standby.attr('src'));
	});
	wrap.stop(true).animate({height: standby.height()}, trans);

	g.g.find('.i001-gallery-slideshow-title').text(cms.UnescapeHtml(t.title));

	var cap = g.g.find('.i001-gallery-slideshow-caption');
	var sbCap = g.g.find('.i001-gallery-slideshow-caption-standby');
	sbCap.text(cms.UnescapeHtml(t.caption));
	if (t.caption == '' || t.caption == null) {
		cap.parent().stop(true).animate({height: 0},trans,function() { cap.text(''); cap.parent().css('display','none'); });
	} else {
		cap.parent().css('display','block').stop(true).animate({height: sbCap.parent().height()},trans,function() { cap.text(cms.UnescapeHtml(t.caption)); });
	}

	g.SlideshowActivateThumbnail(g,t.ss_id);
	g.SetTimeout();
};
slideShow.prototype.SetTimeout = function(divisor) {
	if (divisor > 1) { } else { divisor = 1; }
	this.SlideshowTimeout = setTimeout("local.slideShowTable['" + this.ID + "'].SlideshowExecute()", this.SlideshowSettings.interval / divisor);
}

slideShow.prototype.ThumbOffset = -1;
slideShow.prototype.ThumbListWidth = -1;
slideShow.prototype.ThumbBoxWidth = -1;
slideShow.prototype.ThumbMinPos = 0;
slideShow.prototype.SlideshowPrepareThumbnails = function() {
	var row = this.g.find('.i001-gallery-slideshow-thumbs').data('g',this);
	var inner = row.find('.i001-gallery-thumb_row_inner');

	row.css('overflow','hidden');
	this.ThumbBoxWidth = row.width();

	inner.css('position','absolute').css('left','0');

	var curPos = 0;
	var curIdx = 0;
	var parent = this;
	inner.find('div div').each(function() {
		var t = $(this);
		t.css('position','absolute').css('left',curPos).css('float','none');
		this._position = curPos;
		this._idx = curIdx++;
		curPos += parent.SlideshowSettings.thumbSpacing;
	});
	inner.find('a').click(function() {
		var parent = $(this).closest('.i001-gallery-slideshow-parent').data('g');
		parent.SlideshowChangeTo(parseInt($(this).closest('div')[0]._idx),parent.SlideshowData);
		return false;
	});
	this.ThumbListWidth = curPos;
	this.ThumbMinPos = this.ThumbBoxWidth - this.ThumbListWidth;
	
	this.g.find('.i001-gallery-nav.i001-gallery-back a').click(function(){
		var parent = $(this).closest('.i001-gallery-slideshow-parent').data('g');
		parent.SlideshowChangeTo(parent.SlideshowIndex - 1,parent.SlideshowData);
		return false;
	});
	this.g.find('.i001-gallery-nav.i001-gallery-next a').click(function(){
		var parent = $(this).closest('.i001-gallery-slideshow-parent').data('g');
		parent.SlideshowChangeTo(parent.SlideshowIndex + 1,parent.SlideshowData);
		return false;
	});
};
slideShow.prototype.SlideshowActivateThumbnail = function(g,thmId) {
	g.g.find('.i001-gallery-slideshow-nav-parent').find('.i001-gallery-slideshow-item-active').removeClass('i001-gallery-slideshow-item-active');
	var thm = g.g.find('.i001-gallery-slideshow-item-' + parseInt(thmId));
	thm.addClass('i001-gallery-slideshow-item-active');
	var ntPos = (g.ThumbBoxWidth / 2) - (thm[0]._position + (thm.width() / 2));
	if (ntPos < g.ThumbMinPos) ntPos = g.ThumbMinPos;
	if (ntPos > 0) ntPos = 0;
	g.g.find('.i001-gallery-slideshow-thumbs div.i001-gallery-thumb_row_inner').stop(true).animate({left: ntPos},g.SlideshowSettings.transitionInterval);
};
/* TemplateFilter 0x10C80FA000000019 */
local.cartRedir_productLinksActive = false;
local.cartRedir_activateProductLinks = function() {
	if (local.cartRedir_productLinksActive == false) {
		local.cartRedir_productLinksActive = true;
		
		if (local.ActivePage) {
			$('a.i001-prod-tgt-link').click(function(e) {
				var scrollTop = $(document).scrollTop();
				if (isNaN(scrollTop)) { scrollTop = 0; }
				var pageId = local.ActivePage;
				var t = $(this);
				var curTarget = t.attr('originalTarget');
				if (curTarget == null) {
					curTarget = t.attr('href');
					t.data('originalTarget',curTarget);
				}
				t.attr('href',curTarget + '&lv.nextpage=' + parseInt(pageId,10) + '&lv.nextpagehash=ST' + parseInt(scrollTop,10));
			});
			
			$('form').each(function(){
				var t = $(this);
				if (t.find('.i001-detail-info input').length > 0) {
					t.submit(local.cartRedir_productSubmitForm);
				}
			});
		}
						
		if (window.location.hash) {
			if (window.location.hash.substring(0,3) == '#ST') {
				var scrollTop = parseInt(window.location.hash.substring(3),10);
				if (scrollTop > 0) {
					$(window).scrollTop(scrollTop);
					cms.DisplayMessage('Items added to cart successfully.',2000);
				}
			}
		}
	}
};

local.cartRedir_productSubmitForm = function() {
	if (local.ActivePage) {
		var scrollTop = $(document).scrollTop();
		if (isNaN(scrollTop)) { scrollTop = 0; }
		var pageId = local.ActivePage;
		var t = $(this);
		var curTarget = t.data('originalTarget');
		if (curTarget == null) {
			curTarget = t.attr('action');
			t.data('originalTarget',curTarget);
		}
		t.attr('action',curTarget + '&lv.nextpage=' + parseInt(pageId,10) + '&lv.nextpagehash=ST' + parseInt(scrollTop,10));
	}
};
/* TemplateFilter 0x10C80FA00000001A */
local.changeTargetImage = function(smallVerId,largeVerId) {
	cms.Popup.ImgChangeDynamic('#target_img',smallVerId,largeVerId);
	return false;
};
/* TemplateFilter 0x10C80FA0000000E5 */
cms.InitializeDropdown = function(direction,multi){
	if(cms._initializedComplete == true){return};
	if(direction == 'vertical'){
		var width  = $('.w123-std-menu').width();
		var shrinkSize = width - (0.3 * width);
		$('.w123-std-menu li').children('.w123-std-dropdown').css({left: shrinkSize});		
		cms.VertStdDropdown();		
		
	} else if(direction == 'horizontal'){
		var height  = $('.w123-std-menu').height();
		if (height == 0) { height = $('.w123-std-menu li').height(); }
		var shrinkSize = height - (0.3 * height);
		$('.w123-std-menu li').children('.w123-std-dropdown').css({top: shrinkSize});		
		cms.HoriStdDropdown();		
	}
	if(multi == true){		
		
		$('.w123-std-dropdown').each(function(){			
			var pWidth = $(this).outerWidth();	
			var shrinkSize = pWidth - (0.1 * pWidth);
			if(shrinkSize > 0){
				$(this).find('.w123-std-dropdown-inner-child').css({left: shrinkSize});			
			}
		});
		
		cms.deepStdDropdown(direction);
	}
	cms._initializedComplete = true;
};
cms.VertStdDropdown = function(){
	if (cms.StdDropdownActive == true) { return; }	
	cms.StdDropdownActive = true;
	var width  = $('.w123-std-menu').width();
	var shrinkSize = width - (0.3 * width);
	
	
	$('.w123-std-menu li').mouseover(function(){
		$(this).children('.w123-std-dropdown').stop().dequeue().animate({ left: width, opacity: 1},100);
		$(this).closest('li').addClass('open');	
	}).mouseleave(function(){
		$(this).children('.w123-std-dropdown').animate({
			left: shrinkSize, 
			opacity: 0
		},200);		
		
		$('.w123-std-menu li').closest('li').removeClass('open');
		
	});
	cms.StdDropdownActive = false;
};

cms.HoriStdDropdown = function(){
	if (cms.StdDropdownActive == true) { return; }	
	cms.StdDropdownActive = true;
	var height  = $('.w123-std-menu').height();
	if (height == 0) { height = $('.w123-std-menu li').height(); }
	height = height * 0.9;
	var shrinkSize = height * 0.5;
	
	$('.w123-std-menu li').mouseover(function(){
		$(this).children('.w123-std-dropdown').stop().dequeue().animate({ top: height, opacity: 1},100);
		$(this).closest('li').addClass('open');			
		
	}).mouseleave(function(){
		$(this).children('.w123-std-dropdown').animate({
			top: shrinkSize, 
			opacity: 0
		},200);	
		
		$('.w123-std-menu li').closest('li').removeClass('open');
		
		
	});				
	cms.StdDropdownActive = false;
};


cms.StdDropdown = function(){ 
	if (cms.StdDropdownActive == true) { 
		return; 
			} 
	$('.w123-std-menu li').hover( function() { 
		$(this).closest('li').addClass('open'); 
	}, function() { 
		$(this).closest('li').removeClass('open'); 
	} ); 
	cms.StdDropdownActive = false; 
}; 


cms.deepStdDropdown = function(direction){
	if (cms.StdDropdownActive == true) { return; }		
	cms.StdDropdownActive = true;
	
	if(direction == 'horizontal'){	
		$('.w123-std-dropdown li').mouseover(function(){
			var target = $(this).closest('ul');
			cms.getWidth(target);
			$(this).children('.w123-std-dropdown-inner-child').stop().dequeue().width(cms._targetWidth).animate({ left: cms._targetWidth, opacity: 1},100);
			$(this).closest('li').addClass('open');				
		}).mouseleave(function(){		
			$(this).children('.w123-std-dropdown-inner-child').animate({
				left: cms._shrinkSize, 
				opacity: 0
			},200);		
			
			$('.w123-std-menu li').closest('li').removeClass('open');			
		});
	} else if(direction == 'vertical'){
		$('.w123-std-dropdown li').mouseover(function(){
			var target = $(this).closest('ul');
			cms.getWidth(target);	
			$(this).children('.w123-std-dropdown-inner-child').stop().dequeue().animate({ left: cms._targetWidth, opacity: 1},100);
			$(this).closest('li').addClass('open');	
			
		}).mouseleave(function(){		
			$(this).children('.w123-std-dropdown-inner-child').animate({
				left: cms._shrinkSize, 
				opacity: 0
			},200);		
			
			$('.w123-std-menu li').closest('li').removeClass('open');			
		});
	}
	cms.StdDropdownActive = false;	
};

cms.StdDropdownActive = false;
cms._targetWidth = 0;
cms._shrinkSize = 0;
cms._initializedComplete = false;

cms.getWidth = function(target){	
	cms._targetWidth = $(target).width();	
	cms._shrinkSize = cms._targetWidth - (0.1 * cms._targetWidth);	
};
/* TemplateFilter 0x10C80FA00000042F */
local.toggleFaq = function(obj) {
	var tgt = $(obj);
	var parent = tgt.closest('.i001-faq-item0');
	var inner = parent.find('.faq-content');
	if (parent.hasClass('open')) {
		inner.hide('fast');
		parent.removeClass('open');
	} else {
		inner.show('fast');
		parent.addClass('open');
	}
	return false;
};
/* TemplateFilter 0x10C80FA00000043E */
local.changeTargetImage = function(selector, smallVerId,largeVerId) {
	cms.Popup.ImgChangeDynamic(selector, smallVerId,largeVerId);
	return false;
};

local.enableImageZoom = function(selector) {
	var tgt = $(selector);
	var zoomData = tgt.data('imgZoom');
	
	if (zoomData == null) {
		zoomData = { };
		tgt.data('imgZoom',zoomData);
		tgt.addClass('cms-img-zoom');
		var nh = tgt.height();
		var nw = tgt.width();
		var ar = nh / nw;
		tgt.mouseover(local.imgZoomMouseOver);		
		tgt.mousemove(local.imgZoomMouseMove);
		//Set event handler as 'mouseleave' if original image is less than 450px high
		if(ar < 0.4){
			tgt.mouseleave(local.imgZoomMouseOut);
		} else {
			tgt.mouseout(local.imgZoomMouseOut);
		}
		tgt.find('img').load(local.imgZoomLoadImg);
		local.imgZoomSetSizes(tgt);
	}
};

local.imgZoomSetSizes = function(tgt) {
	var zoomData = tgt.data('imgZoom');

	var lge = tgt.find('.cms-img-zoom-large');
	
	
	var w = tgt.width();	
	var h = tgt.height();	
	var bw = lge.width();
	var bh = lge.height();
	var xMax = (bw - w);
	var yMax = (bh - h);

	zoomData.pad = 20;
	zoomData.w = w;
	zoomData.h = h;
	zoomData.ar = h / w;
	zoomData.bw = bw;
	zoomData.bh = bh;
	zoomData.xMax = xMax;
	// Set the height of the element to be equal to the height of the large image if less than 450px
	// so that the mouse move pad is correctly setup for the new, larger height.
	if(zoomData.ar < 0.4){		
		zoomData.o = h;
		h = bh;
		zoomData.h = bh;
		zoomData.yMax = bh;
	} else {
		zoomData.yMax = yMax;
	}
	zoomData.pos = tgt.offset();
	
	zoomData.xt = bw - w;
	zoomData.yt = bh - h;

	zoomData.xRatio = (w - zoomData.pad * 2) / zoomData.xt;
	zoomData.yRatio = (h - zoomData.pad * 2) / zoomData.yt;
	
};

local.imgZoomLoadImg = function(e) {
	var tgt = $(this).closest('.cms-img-zoom');
	if (tgt.length > 0) {
		local.imgZoomSetSizes(tgt);
	}
};

local.imgZoomMouseOver = function(e) {
	if($(e.relatedTarget).is('img') == false) {
		var tgt = $(this);
		var lge = tgt.find('.cms-img-zoom-large');
		var bh = lge.height();
		var zoomData = tgt.data('imgZoom');
		// Make the image box the size of the large image if less than 450px.
		if(zoomData.ar < 0.4){
			$(this,'#target_img').animate({
				height: bh
			});			
		}
		$(this).find('.cms-img-zoom-large').fadeIn();
	}
};
local.imgZoomMouseMove = function(e) {
	var tgt = $(this);
	var lge = tgt.find('.cms-img-zoom-large');
	var zoomData = tgt.data('imgZoom');
	zoomData.pos = tgt.offset();

	var x = e.pageX - zoomData.pos.left;
	var y = e.pageY - zoomData.pos.top;
	if (x > zoomData.w - zoomData.pad) { x = zoomData.w - zoomData.pad; }
	x = Math.max(0,(x - zoomData.pad));
	if (y > zoomData.h - zoomData.pad) { y = zoomData.h - zoomData.pad; }
	y = Math.max(0,(y - zoomData.pad));
	
	x = -(x / zoomData.xRatio);
	y = -(y / zoomData.yRatio);
	if (x > 0) { x = 0; }
	if (y > 0) { y = 0; }
	if (x < -zoomData.xMax) { x = -zoomData.xMax; }
	if (y < -zoomData.yMax) { y = -zoomData.yMax; }

	lge.css('top',y + 'px');
	lge.css('left',x + 'px');
};
local.imgZoomMouseOut = function(e) {
	if($(e.relatedTarget).is('img') == false) {
		$(this).find('.cms-img-zoom-large').fadeOut();
		var tgt = $(this);
		// Put image box back to original size and remove height styling.
		var zoomData = tgt.data('imgZoom');
		if(zoomData.ar < 0.4){
			$(this,'#target_img').css('height', '');			
		}
	}
	
	
};

local.changeTargetZoomImage = function(selector,smallVerId,largeVerId) {
	var tgt = $(selector);
	tgt.find('.cms-img-zoom-default img').attr('src','/f.ashx?v=' + smallVerId);
	tgt.find('.cms-img-zoom-large img').attr('src','/f.ashx?v=' + largeVerId);
	return false;
};
/* TemplateFilter 0x10C80FA000000476 */
local.initBookingForm = function(){
	if(local.bookingFormIsInit == false){
		$('.i001-booking-date a').click(function(){
			local.changeDate($(this));
		});

		if (window.location.hash) {
			if (window.location.hash.substring(0,3) == '#ST') {
				var scrollTop = parseInt(window.location.hash.substring(3),10);
				if (scrollTop > 0) {
					$(window).scrollTop(scrollTop);
				}
			}
		}
		
		local.bookingFormPostLoad();
		cms.Dynamic.CompleteCallback = local.bookingFormPostLoad;
		
		local.bookingFormIsInit = true;
	}
};
local.bookingFormIsInit = false;

local.bookingFormPostLoad = function() {
	$('.daywrapper').hover(function(){
		var tgt = $(this);
		tgt.addClass('active');
	},function(){
		var tgt = $(this);
		tgt.removeClass('active');
	});

	$('.i001-booking-main td.day, .i001-booking-extra-sel').not('.sold').click(function(e){
		var tgt = $(e.target);
		if (tgt.is('td') == false) { tgt = tgt.closest('td'); }
		var chk = tgt.find('input.cms-checkbox');
		if (chk.length > 0) {
			chk.click();
		}
	});	
};

local.bookUpdatePicker = function(sDate,inst){
	if (sDate != '') {
		var td = new Date(sDate);
		if (td.getFullYear() > 1900) {
			var m = td.getMonth() + 1;
			var d = td.getDate();
			var s = td.getFullYear() + '-' + (m < 10 ? '0' : '') + m + '-' + (d < 10 ? '0' : '') + d;
			
			// Get State Dump
			jsDump = 'ST' + $(window).scrollTop();
			
			document.location.href = local._baseBookUrl.replace('_val_',s) + '#' + jsDump;
		}
	}
}

local.changeDate = function(tgt){
	var tgt = tgt;
	var d = tgt.closest('.i001-booking-date').attr('data-date');
	var d = $.datepicker.parseDate('dd-mm-yy',d);
	console.log(d);
	
};
/* TemplateFilter 0x10C80FA000000489 */
local.gallery = {};
local.gallery.initPopup = function(gId,imgArray){
	
};
local.gallery.openPopup = function(gId,idx,tgt){	
	var gallery = $(gId);
	var imgSrc = tgt.attr('href');
	local.gallery.createAndLoad(gallery,idx,imgSrc);	
	return false;	
};
local.gallery.fixResize = function(){
	var p = $('.db-dialog-wrap');
	var tgt = $('.db-dialog-backing');
	if (tgt.length != 0) {
		tgt.css({width:local.screenWidth,height:local.screenHeight});	
		var img = p.find('.slideshow-img');
		local.gallery.fitToWindow(img,'.db-dialog-image-wrap',img.width(),img.height());
	}
};
local.gallery.fitToWindow = function(img,parentSelector,w,h){
	var p = $(parentSelector);	
	var ar = w/h;	
	var maxH = local.screenHeight * 0.8;
	var maxW = local.screenWidth * 0.8;
	var sAr = maxW/maxH;
	var finalW;
	var finalH;
	if(h > maxH || w > maxW){
		if(sAr > ar){
			finalW = w * maxH / h;
			finalH = maxH;
		} else {
			finalW = maxW;
			finalH = h * maxW / w;
		}
			
	} else {
		finalH = h;
		finalW = w;
	}
	img.css('width',finalW);
	img.css('height', finalH);
	
	$('.db-dialog-caption').css({width:finalW});	
	p.animate({
		width: finalW		
	}, 300).animate({
		height: finalH			
	}, 300);
};

local.gallery.nav = function(gId,direction,tgt){
	var gallery = $(gId);
	var v = tgt.attr('href');
	var newsrc = '/f.ashx?v='+v;
	var img = $('<img class="slideshow-img-temp">');
	
	$(img).load(function(){
		var newimg = $(this);		
		newimg.appendTo('.db-dialog-image-wrap');
		local.gallery.fitToWindow(newimg,'.db-dialog-image-wrap',newimg.width(),newimg.height());
		$('.slideshow-img').fadeOut(300, function(){				
			$(this).remove();
		});
		newimg.removeClass('slideshow-img-temp').fadeIn('fast').addClass('slideshow-img');
				
	});	
	img.attr('src', newsrc);
	
	
	var tempArr = gallery.data('arr');
	var max = gallery.data('arr').length - 1;
	
	var idx = 0;
	if(v == '#'){
		if(direction == -1){
			idx = 0;
		} else {
			idx = max
		}
	} else {
		idx = local.gallery.findArrIdx(parseInt(v),tempArr);
		//$.inArray(parseInt(v),tempArr);
	}
	
	var txt = tempArr[idx].t;
	var caption = $('.db-dialog-image-wrap .db-dialog-caption');
	caption.text(txt);
	if (txt == '') { caption.hide(); } else { caption.show(); }

	var prev = $('.db-dialog-gallery-nav-prev');	
	var prevLink = prev.find('a');
	var next = $('.db-dialog-gallery-nav-next');
	var nextLink = next.find('a');
	var prevIdx = prevLink.attr('href');
	var nextIdx = nextLink.attr('href');
	
	if(prevIdx == '#'){
		prevIdx = -1;
	} else {
		prevIdx = local.gallery.findArrIdx(parseInt(prevIdx),tempArr);
	}
	if(nextIdx == '#'){
		nextIdx = max + 1;
	} else {
		nextIdx = local.gallery.findArrIdx(parseInt(nextIdx),tempArr);
	}		
	if(direction == -1){
		if(idx == 0){
			prevLink.attr('href','#');	
			prev.hide();
		} else {			
			prevLink.attr('href',gallery.data('arr')[prevIdx-1].i);		
			prev.show();
			
		}	
		nextLink.attr('href',gallery.data('arr')[nextIdx-1].i);
		next.show();	
		
	
	} else {
		if(idx == max){			
			nextLink.attr('href','#');	
			next.hide();			
		} else {
			nextLink.attr('href',gallery.data('arr')[nextIdx+1].i);	
			next.show();
			
		}
		prevLink.attr('href',gallery.data('arr')[prevIdx+1].i);		
		prev.show();
	}
};

local.gallery.findArrIdx = function(val,arr) {
	var idx = 0;
	for (idx=0; idx < arr.length; idx++) {
		if (arr[idx].i == val) { break; }
	}
	return idx;
};

local.gallery.createAndLoad = function(gallery,idx,src){
	var tgt = $('#db-dialog-wrap');
	if (tgt.length == 0) {
		tgt = $('<div/>').attr('id','db-dialog-wrap').prependTo('body');		
	}
	var boxInitialise = $('<div />').attr('class','db-dialog-place').prependTo(tgt);
	$('<div />').attr('class','loading').prependTo(boxInitialise);
	var boxInner = $('<div />').attr('class','db-dialog-image-wrap').prependTo(boxInitialise);
	$('<div class="db-dialog-caption"/>').prependTo(boxInner);
	$('<div class="db-dialog-close-wrap">X</div>').prependTo(boxInner);
	var backing = $('<div class="db-dialog-backing"></div>').prependTo(tgt);
	
	var img = $('<img class="slideshow-img">');
	$(img).load(function(){
		var newimg = $(this);		
		newimg.appendTo('.db-dialog-image-wrap');
		local.gallery.fitToWindow(newimg,'.db-dialog-image-wrap',newimg.width(),newimg.height());		
		newimg.fadeIn('slow');
				
	});
	img.attr('src', src);
	
	var tempArr = gallery.data('arr');
	var gId = $(gallery).attr('id');	
	var src = parseInt(src.replace('/f.ashx?v=',''));
	var tgt = idx == 0 ? '' : tempArr[idx-1].i;
	var prev = $('<div class="db-dialog-gallery-nav-prev db-dialog-gallery-nav"><a href="'+tgt+'" onclick="local.gallery.nav(\'#'+gId+'\',-1,$(this)); return false;">&laquo;</a></div>').prependTo(boxInner);
	if(idx == 0){
		prev.hide();
	}
	tgt = idx == tempArr.length-1 ? '' : tempArr[idx+1].i;
	var next = $('<div class="db-dialog-gallery-nav-next db-dialog-gallery-nav"><a href="'+tgt+'" onclick="local.gallery.nav(\'#'+gId+'\',1,$(this)); return false;">&raquo;</a></div>').prependTo(boxInner);
	if(idx == tempArr.length-1){
		next.hide();
	}
	var txt = tempArr[idx].t;
	var caption = $('.db-dialog-image-wrap .db-dialog-caption');
	caption.text(txt);
	if (txt == '') { caption.hide(); } else { caption.show(); }
	
	local.gallery.activatePortfolioPopup(gallery);
		
};


local.gallery.activatePortfolioPopup = function(gallery) {	
	b = $(window);
	var gal = $(gallery);
	$('.db-dialog-backing').click(local.gallery.hidePortfolioPopup).height(b.height()).width(b.width()).css('opacity',0).show().fadeTo(500,0.65);
	$('.db-dialog-close-wrap').click(local.gallery.hidePortfolioPopup);
	$('.db-dialog-place').click(local.gallery.hidePortfolioPopup);
	$(document).keydown(function(e) {
		// ESCAPE key pressed		
		if (e.keyCode == 27) {
			local.gallery.hidePortfolioPopup();
		} else if(e.keyCode == 37){
			local.gallery.nav(gallery,-1,$('.db-dialog-gallery-nav-prev a'));
		} else if(e.keyCode == 39){
			local.gallery.nav(gallery,1,$('.db-dialog-gallery-nav-next a'));
		}
	});
	$('.db-dialog-image-wrap').click(function(e){		
		var t = $(e.target); 
		//console.log(t);
		if(t.is('a') != false || t.is('input') != false || t.is('b') != false || t.is('img') != false){
			return false;
		} else {
			
		}
	});

};
local.gallery.hidePortfolioPopup = function() {
	$('.db-dialog-backing').fadeOut(250);
	$('.db-dialog-place').fadeOut(300,function(){$('#db-dialog-wrap').empty();});
};

local.screenWidth = 0;
local.screenHeight = 0;
/* TemplateFilter 0x10C80FA0000004A2 */
if (!cms.HtmlEdit) { cms.HtmlEdit = function() {}; }
if (!window.CmsHtmlEdit) { CmsHtmlEdit = function() {}; }

cms.HtmlEdit.ClickStyleItem = function (e)
{
	var editor = $(this).data('editor');
	var item = $(this).data('item');

	//cms.HtmlEdit.restoreSelection(editor.LastSelection);

	// Check collapsed
	var sel = window.getSelection();

	if(sel.focusNode)
	{
		var extNodeAttr = sel.focusNode.attributes;
	}
	else
	{
		var extNodeAttr = sel.extentNode.attributes;
	}

	if(extNodeAttr != undefined)
	{
		console.log("Bad node!");
		
		console.log(sel);
		return;
	}

	if (sel.isCollapsed == true) {
		var range = document.createRange();
		range.selectNode(sel.focusNode);
		sel.removeAllRanges();
		sel.addRange(range);
	}

	if (item.element != null || item.cssClass != null) {
		var ret = false;
		if (item.cssClass || $.browser.msie || item.cssClass === '') {
			var sel = window.getSelection();
//			console.log(sel);
//			var tgt = $(sel.anchorNode);
			var tgt = $(sel.focusNode);
			while (tgt.length > 0) {
				if (item.cssClass != null && tgt.hasClass('tool-htmledit-editor') == false) { tgt.removeClass(); }
				if (item.element == null && item.cssClass != null && tgt.hasClass(item.cssClass)) { break; }
				var d;
				try { d = tgt.css('display');}
				catch(exx) { d = 'inline'; }
				if (d == 'list-item' || d == 'table-cell' || tgt.hasClass('tool-htmledit-editor')) {
					var nTgt = $('<' + (item.element || (tgt.hasClass('tool-htmledit-editor') ? 'p' : 'span')) + '/>');
					nTgt.html(tgt.html());
					tgt.empty();
					nTgt.appendTo(tgt);
					tgt = nTgt;
					break;
				} else if (d == 'block') { break; }
				
				tgt = tgt.parent();
			}
			if (tgt.length > 0) {
				if (item.element && tgt.is(item.element) == false) {
					var nTgt = $('<' + item.element + '/>').insertBefore(tgt);
					nTgt.html(tgt.html());
					tgt.remove();
					tgt = nTgt;
				}
				if (item.cssClass && tgt.hasClass(item.cssClass)) {
					tgt.removeClass(item.cssClass);
				} else if (item.cssClass) {
					tgt.removeClass().addClass(item.cssClass);
				}
			}
		} else {
			cms.HtmlEdit.__EnterDesignMode(this);
//	CleanupHTML(editor.editor);
			ret = document.execCommand('formatBlock', false, item.element);
			cms.HtmlEdit.__ExitDesignMode(this);
		}
		e.preventDefault();
		e.stopPropagation();

		editor.UpdateToolbar(window.getSelection());

		//cms.HtmlEdit.restoreSelection(editor.LastSelection);
	} else {

	}
	return ret;
};


cms.HtmlEdit.DropHandling = function(e)
{
	e = e || window.event;
	e.preventDefault();

	if(e.originalEvent.dataTransfer)
	{
		var files = e.originalEvent.dataTransfer.files;
	}

	for (var i = 0, f; f = files[i]; i++) {
		// We need to represent the image as a file,
		var thisFile = files[i];
		var reader = new FileReader();
		var editObj = $(this).closest('.tool-htmledit-wrap').data('editor');
		reader.onload = function (event) {
			editObj.InsertElement($('<img/>').attr('src', event.target.result));
		}; // data url!
		reader.readAsDataURL(thisFile);
	}
};



cms.HtmlEdit.Create = function (strId, bHasMerge)
{
	var f = new CmsHtmlEdit(strId);
	var ta = $('#' + strId);
	f.Width = ta.width();  //450;
	f.Height = ta.height();  //550;
	f.ReplaceTextarea();
	ta[0].fck = f;

	$(".tool-htmledit-wrap").bind({
		drop: cms.HtmlEdit.DropHandling
	});
};

CmsHtmlEdit.prototype.ReplaceTextarea = function ()
{
	this.wrap = $('<div/>').addClass('tool-htmledit-wrap').insertBefore(this.targetElement);
	this.wrap.data('editor', this);
	this.targetElement.remove().appendTo(this.wrap);
	this.CreateToolbar();
	this.editor = $('<div/>').appendTo(this.wrap);
	this.editor
		.attr('contenteditable', 'true')
		.addClass('tool-htmledit-editor')
		.bind('paste', this.HandlePaste)
		//.css('min-height',(this.Height - 24) + 'px');
		.height(this.Height - 24);
	this.UpdateHtml();
	var editorWidth = this.editor.width();
	this.targetElement.width(editorWidth);
	this.editor.width(editorWidth);
	var w = this.wrap;
	this.wrap.closest('form').bind('submit', function () { cms.HtmlEdit.OnSubmit(w); });
	if ($.on) {
		this.editor.on('click', 'img', cms.HtmlEdit.ClickImage);
	} else {
		if (cms.HtmlEdit.FallbackImageClickEnabled == false) {
			cms.HtmlEdit.FallbackImageClickEnabled = true;
			$('.tool-htmledit-editor img').live('click', cms.HtmlEdit.ClickImage);
		}
	}
	this.editor.bind('mouseup', cms.HtmlEdit.UpdateSelection);
	this.editor.bind('keyup', cms.HtmlEdit.__KeyUp);
	this.editor.bind('keydown', cms.HtmlEdit.__KeyDown);
	this.editor.bind('focus', cms.HtmlEdit.UpdateSelection);
	$('body').mouseup(cms.HtmlEdit.UpdateSelectionWin);
	this.editor.bind('mousedown', cms.HtmlEdit.mouseDownSaveEditorInstance);
	var wx = this;
	setTimeout(function () { wx.editor.css('max-width', wx.wrap.parent().width() - 32); }, 125);
	//.blur(function () { document.designMode = 'off'; }).focus(function () { document.designMode = 'on'; })
};
cms.HtmlEdit.mouseDownSaveEditorInstance = function (e)
{
	var editor = $(this);
	cms.HtmlEdit.currentlySelectedEditor = editor;
};
cms.HtmlEdit.saveSelection = function()
{
	if (window.getSelection) {
		sel = window.getSelection();
		if (sel.getRangeAt && sel.rangeCount) {
			var ranges = [];
			for (var i = 0, len = sel.rangeCount; i < len; ++i) {
				ranges.push(sel.getRangeAt(i));
			}
			return ranges;
		}
	} else if (document.selection && document.selection.createRange) {
		return document.selection.createRange();
	}
	return null;
};
cms.HtmlEdit.UpdateSelectionWin = function (e)
{
	var currentEd = cms.HtmlEdit.currentlySelectedEditor;
	if(currentEd != undefined)
	{
		var e = $(currentEd).closest('.tool-htmledit-wrap').data('editor');
	}else
	{
		var e = $('.tool-htmledit-wrap').data('editor');
	}

	if (e) {
		var sel = window.getSelection();

		var selectionInfo = cms.HtmlEdit.saveSelection();
		if (selectionInfo != null) {
			if (selectionInfo.length > 0) {
				e.LastSelection = selectionInfo;
			}
		}

		e.UpdateToolbar(sel);
	}
};
cms.HtmlEdit.UpdateSelection = function (e) {
	var e = $(this).closest('.tool-htmledit-wrap').data('editor');
	if (e) {
		var sel = window.getSelection();
		$('.tool-htmledit-img').removeClass('selected');
		var isImg = false;
		if (e.selectedImage) {
			if (sel.containsNode && sel.containsNode(e.selectedImage[0],false)) {
				e.selectedImage.addClass('selected');
				isImg = true;
			} else {
				e.selectedImage = null;
			}
		}
		if (isImg) {
			e.baseToolbar.removeClass('active');
			e.imageToolbar.addClass('active');
		} else {
			e.baseToolbar.addClass('active');
			e.imageToolbar.removeClass('active');
		}
		var selectionInfo = cms.HtmlEdit.saveSelection();
		if (selectionInfo != null) {
			if (selectionInfo.length > 0) {
				e.LastSelection = selectionInfo;
			}
		}

		e.UpdateToolbar(sel);
	}
};
cms.HtmlEdit.__KeyDown = function (e) {
	var keycode = e.keyCode;

	var printableChar = 
	    (keycode > 47 && keycode < 58)   || // number keys
	    keycode == 32 || keycode == 13   || // spacebar & return key(s) (if you want to allow carriage returns)
	    (keycode > 64 && keycode < 91)   || // letter keys
	    (keycode > 95 && keycode < 112)  || // numpad keys
	    (keycode > 185 && keycode < 193) || // ;=,-./` (in order)
	    (keycode > 218 && keycode < 223);   // [\]' (in order)
	
	cms.HtmlEdit.UpdateSelection(e);
	
	var range = window.getSelection().getRangeAt(0);
	
	//console.log(range.startContainer.parentNode);
	
	var isButton = $(range.startContainer.parentNode).hasClass("i001-css-button");
	
	if(printableChar && isButton)
	{
	//	console.log("In button!");
		return false; // In button - don't edit!
	}

	
	if (keycode == 8) {
		var editor = $(this).closest('.tool-htmledit-wrap').data('editor');
		if (editor.selectedImage && editor.selectedImage.length > 0) {
			editor.selectedImage.remove();
			editor.selectedImage = null;
			e.stopPropagation();
			e.preventDefault();
		}
	}
		

};
cms.HtmlEdit.__KeyUp = function (e) {
	var keycode = e.keyCode;

	var printableChar = 
	    (keycode > 47 && keycode < 58)   || // number keys
	    keycode == 32 || keycode == 13   || // spacebar & return key(s) (if you want to allow carriage returns)
	    (keycode > 64 && keycode < 91)   || // letter keys
	    (keycode > 95 && keycode < 112)  || // numpad keys
	    (keycode > 185 && keycode < 193) || // ;=,-./` (in order)
	    (keycode > 218 && keycode < 223);   // [\]' (in order)
	
	cms.HtmlEdit.UpdateSelection(e);
	
	var range = window.getSelection().getRangeAt(0);
	
	//console.log(range.startContainer.parentNode);
	
	var isButton = $(range.startContainer.parentNode).hasClass("i001-css-button");
	
	if(printableChar && isButton)
	{
	//	console.log("In button!");
		return false; // In button - don't edit!
	}
	
	if (keycode == 46 || keycode == 8) {
		var editor = $(this).closest('.tool-htmledit-wrap').data('editor');
		if (editor.selectedImage && editor.selectedImage.length > 0) {
			editor.selectedImage.remove();
			editor.selectedImage = null;
			e.stopPropagation();
			e.preventDefault();
		}
	}
	
};

CmsHtmlEdit.prototype.CreateButtonLink = function (sUri, noUndo, linkText) {
	var gsp = this.GetSelectionParent('.tool-htmledit-wrap');
	var ret = false;
	if (gsp != null) {
		if (gsp.length > 0) {
			cms.HtmlEdit.__EnterDesignMode(this);
			ret = document.execCommand('insertHTML',false,"<br /><a href='"+sUri+"' class='i001-css-button new_v01 tool-htmledit-img'>"+linkText+"</a><br />");
			cms.HtmlEdit.__ExitDesignMode(this);
		}
	}
	return ret;
};

CmsHtmlEdit.prototype.getSelectionText = function() {
    var text = "";
    if (window.getSelection) {
        text = window.getSelection().toString();
    } else if (document.selection && document.selection.type != "Control") {
        text = document.selection.createRange().text;
    }
    return text;
};


/* CLEAR IMAGE LINK */
cms.HtmlEdit.LinkParserRegex = /^\{\{([0-9]+):(-?[0-9]+)(;.+)?\}\}$/;
cms.HtmlEdit.ClearImageLink = function ()
{
	var editor = $(this).closest('.tool-htmledit-wrap').data('editor');
	if (editor.selectedImage && editor.selectedImage.length > 0)
	{
		var blah = $(editor.selectedImage).parent().get(0).tagName;
		// test that parent is a link FIRST
		if($(editor.selectedImage).parent().get(0).tagName.toLowerCase()=='a')
		{
			editor.selectedImage.unwrap();
		}

		baseUrl = editor.selectedImage.attr('data-link', '');
		/* UNFINISHED */
	}
};


cms.HtmlEdit.OpenLinkPicker = function ()
{
	//var oLink = FCK.Selection.MoveToAncestorNode('A');
	var editor = $(this).closest('.tool-htmledit-wrap').data('editor');
	var oLink, baseUrl;
	if (editor.selectedImage && editor.selectedImage.length > 0) {
		oLink = editor.selectedImage[0];
		baseUrl = editor.selectedImage.attr('data-link');
	} else {
		oLink = editor.GetSelectionParent('a');
		baseUrl = '';
		if (oLink && oLink.length > 0) {
			var sel = window.getSelection();
			sel.removeAllRanges();
			var range = document.createRange();
			range.selectNode(oLink[0]);
			sel.addRange(range);
			baseUrl = oLink.attr('href');
		}
	}

	var oEditor = window;

	// Open link picker popup and configure 'store' action.
	var linkDialog = $('<div/>').addClass('cms-picker-loader').attr('title', 'Choose or enter a link destination');
	var dConfig = {
		bgiframe: true,
		modal: true,
		width: 700,
		height: 500,
		dialogClass: 'cms-picker-loader'
	};

	$('body').unbind('mouseup');
	$(this).closest('.tool-htmledit-wrap').unbind('mousedown');

	linkDialog.dialog(dConfig);
	var sUrl = cms.RootPath + '/p.ashx?t=268570528&d=2&p.lr=' + cms.LinkRenderId;
	window.curDialogBaseUrl = sUrl;
	if (baseUrl != null && baseUrl != '') {
		// Interpret supplied URL
		var isObject = 0;
		var x = cms.HtmlEdit.LinkParserRegex.exec(baseUrl);
		if (x != null && x.length > 0) {
			isObject = 1;
			sUrl += '&lv.tgt_type=' + parseInt(x[1]);
			sUrl += '&lv.tgt_id=' + parseInt(x[2]);
			sUrl += '&lv.link_type=' + (x[3] != null && x[3].match(/attach/i) ? 1 : 0);
		} else {
			sUrl += '&lv.raw=' + encodeURIComponent(baseUrl);
		}
		sUrl += '&lv.internal=' + isObject;
	}
	linkDialog.load(sUrl, null, function () { linkDialog.closest('.ui-dialog').removeClass('cms-picker-loader') });
	window.storeCmsLink = function (sUri, sContent) {
		if (editor.selectedImage && editor.selectedImage.length > 0) {
			editor.selectedImage.attr('data-link', sUri);

			/* ********************************** */

			/* This is where the editor needs to create a link */

			console.log(editor.selectedImage);

			sInnerHtml = sContent;
			
			
			if($(editor.selectedImage).parent().get(0).tagName.toLowerCase()!='a')
			{
				$(editor.selectedImage).wrap('<a href="' + sUri + '"></a>');
			}
			else
			{
				$(editor.selectedImage).unwrap();
				$(editor.selectedImage).wrap('<a href="' + sUri + '"></a>');
			}
		} else {
			// If no link is selected, create a new one (it may result in more than one link creation - #220).
			//if ($.browser.msie)
				//sRange.select();
			//else
			cms.HtmlEdit.restoreSelection(editor.LastSelection);
			var selX = window.getSelection();
			if (selX == null || selX.isCollapsed == true) {
				var aLinks = oLink == null ? [] : [$(oLink)];

				// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
				var aHasSelection = (aLinks.length > 0);
				if (!aHasSelection) {
					// Is internal link?
					var x = cms.HtmlEdit.LinkParserRegex.exec(sUri);
					if (x != null && x.length > 0 && sContent == null) {
						var ajaxUrl = cms.RootPath + '/wf.ashx?f=obj.title&t=' + parseInt(x[1]) + '&d=' + parseInt(x[2]);
						$.get(ajaxUrl, function (data, textStatus) { window.storeCmsLink(sUri, data); });
						return;
					} else if (sContent == null) {
						sContent = sUri;
					}

					sInnerHtml = sContent;

					// Create a new (empty) anchor.
					oLink = $('<a/>').attr('href', sUri).html(sInnerHtml);
					aLinks = [oLink];
					editor.InsertElement(oLink);
				}

				for (var i = 0; i < aLinks.length; i++)
				{
					oLink = aLinks[i];

					if (aHasSelection)
					{
						sInnerHtml = oLink.html(); 	// Save the innerHTML (IE changes it if it is like an URL).
					}

					oLink.attr('href', sUri);
					//SetAttribute(oLink, '_fcksavedurl', sUri);

					try { oLink.html(sInnerHtml); } // Set (or restore) the innerHTML
					catch (e) { }
				}
			} else {
				editor.CreateLink(sUri, true);
			}
		}

		// Select the (first) link.
		//oEditor.FCKSelection.SelectNode(aLinks[0]);
		linkDialog.dialog('close');
		linkDialog.remove();

		$('body').mouseup(cms.HtmlEdit.UpdateSelectionWin);
		$(this).closest('.tool-htmledit-wrap').bind('mousedown', cms.HtmlEdit.mouseDownSaveEditorInstance);

		window.storeCmsLink = null;
		window.curDialogBaseUrl = null;
	};
};

cms.HtmlEdit.dragButtonMouseDown = function (e)
{
	cms.HtmlEdit.dragButtonMode = true;
	cms.HtmlEdit.dragButtonObject = $(this);
};
cms.HtmlEdit.dragButtonMouseUp = function (e)
{
	cms.HtmlEdit.dragButtonMode = false;
};
cms.HtmlEdit.dragButtonMouseMove = function (e)
{
	if(cms.HtmlEdit.dragButtonMode==true)
	{
		$(cms.HtmlEdit.dragButtonObject).offset().x = e.pageX;
		$(cms.HtmlEdit.dragButtonObject).offset().y = e.pageY;
	}
};
cms.HtmlEdit.CreateButton = function () {
	var editor = $(this).closest('.tool-htmledit-wrap').data('editor');
	var oLink, baseUrl;

	oLink = editor.GetSelectionParent('a');
	baseUrl = '';
	if (oLink && oLink.length > 0) {
		var sel = window.getSelection();
		sel.removeAllRanges();
		var range = document.createRange();
		range.selectNode(oLink[0]);
		sel.addRange(range);
		baseUrl = oLink.attr('href');
	}

	var oEditor = window;

	// Open link picker popup and configure 'store' action.
	var linkDialog = $('<div/>').addClass('cms-picker-loader').attr('title', 'Choose or enter a link destination');
	var dConfig = {
		bgiframe: true,
		modal: true,
		width: 700,
		height: 500,
		dialogClass: 'cms-picker-loader'
	};

	$('body').unbind('mouseup');
	$(this).closest('.tool-htmledit-wrap').unbind('mousedown');

	linkDialog.dialog(dConfig);
	var sUrl = cms.RootPath + '/p.ashx?t=268570528&d=2&p.lr=' + cms.LinkRenderId;
	window.curDialogBaseUrl = sUrl;
	if (baseUrl != null && baseUrl != '') {
		// Interpret supplied URL
		var isObject = 0;
		var x = cms.HtmlEdit.LinkParserRegex.exec(baseUrl);
		if (x != null && x.length > 0) {
			isObject = 1;
			sUrl += '&lv.tgt_type=' + parseInt(x[1]);
			sUrl += '&lv.tgt_id=' + parseInt(x[2]);
			sUrl += '&lv.link_type=' + (x[3] != null && x[3].match(/attach/i) ? 1 : 0);
		} else {
			sUrl += '&lv.raw=' + encodeURIComponent(baseUrl);
		}
		sUrl += '&lv.internal=' + isObject;
	}
	linkDialog.load(sUrl, null, function () { linkDialog.closest('.ui-dialog').removeClass('cms-picker-loader') });
	window.storeCmsLink = function (sUri, sContent) {
		if (editor.selectedImage && editor.selectedImage.length > 0) {
			editor.selectedImage.attr('data-link', sUri);
		} else {
			// If no link is selected, create a new one (it may result in more than one link creation - #220).
			//if ($.browser.msie)
				//sRange.select();
			//else
			cms.HtmlEdit.restoreSelection(editor.LastSelection);
			var selX = window.getSelection();
			if (selX == null || selX.isCollapsed == true) { // here
				var aLinks = oLink == null ? [] : [$(oLink)];

				// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
				var aHasSelection = (aLinks.length > 0);
				if (!aHasSelection) {
					// Is internal link?
					var x = cms.HtmlEdit.LinkParserRegex.exec(sUri);
					if (x != null && x.length > 0 && sContent == null) {
						var ajaxUrl = cms.RootPath + '/wf.ashx?f=obj.title&t=' + parseInt(x[1]) + '&d=' + parseInt(x[2]);
						$.get(ajaxUrl, function (data, textStatus) { window.storeCmsLink(sUri, data); });
						return;
					} else if (sContent == null) {
						sContent = sUri;
					}

					sInnerHtml = sContent;

					// Create a new (empty) anchor.
					oLink = $('<a/>').attr('href', sUri).html(sInnerHtml).after('<br />');
					$(oLink).addClass('i001-css-button new_v01 tool-htmledit-img');
					$(oLink).before('<br />');
					aLinks = [oLink];
					editor.InsertElement(oLink);
/*					
// enable drag and drop for image
					$(".tool-htmledit-editor").unbind('mousedown');
					$(".tool-htmledit-editor").unbind('mouseup');
					$(".tool-htmledit-editor").mousedown(cms.HtmlEdit.dragButtonMouseDown);
					$(".tool-htmledit-editor").mouseup(cms.HtmlEdit.dragButtonMouseUp);
					$(".tool-htmledit-editor").mousemove(cms.HtmlEdit.dragButtonMouseMove);
*/					
				}

				for (var i = 0; i < aLinks.length; i++) {
					oLink = aLinks[i];

					if (aHasSelection)
						sInnerHtml = oLink.html(); 	// Save the innerHTML (IE changes it if it is like an URL).

					oLink.attr('href', sUri);
					//SetAttribute(oLink, '_fcksavedurl', sUri);

					try { oLink.html(sInnerHtml); } // Set (or restore) the innerHTML
					catch (e) { }
				}
			} else {
				selectionText = editor.getSelectionText();
				editor.CreateButtonLink(sUri, true, selectionText);
			}
		}

		// Select the (first) link.
		//oEditor.FCKSelection.SelectNode(aLinks[0]);
		linkDialog.dialog('close');
		linkDialog.remove();

		
		$('body').mouseup(cms.HtmlEdit.UpdateSelectionWin);
		$(this).closest('.tool-htmledit-wrap').bind('mousedown', cms.HtmlEdit.mouseDownSaveEditorInstance);

		window.storeCmsLink = null;
		window.curDialogBaseUrl = null;
	};
};


cms.HtmlEdit.ClickToolbarItem = function (e) {
	var editor = $(this).data('editor');
	var item = $(this).data('item');

	//cms.HtmlEdit.restoreSelection(editor.LastSelection);
	
	// Check collapsed
	var sel = window.getSelection();
	if (sel.isCollapsed == true) {
		var range = document.createRange();
		range.selectNode(sel.focusNode);
		sel.removeAllRanges();
		sel.addRange(range);
	}

	var ret = false;
	var proceed = true;
	if (item.func == 'insertunorderedlist') {
		var parentUl = $(sel.focusNode).closest('.tool-htmledit-editor ul');
		var parentOl = $(sel.focusNode).closest('.tool-htmledit-editor ol');
		if (parentUl.length > 0) {
			// Remove List
			var newContainer = $('<div/>');
			parentUl.children('li').each(function () {
				$(this).contents().appendTo($('<p/>').appendTo(newContainer));
			});
			newContainer.insertBefore(parentUl);
			parentUl.remove();
			proceed = false;
		} else if (parentOl.length > 0) {
			// Move list
			var newList = $('<ul/>').insertBefore(parentOl);
			parentOl.children().appendTo(newList);
			parentOl.remove();
			proceed = false;
		}
	} else if (item.func == 'insertorderedlist') {
		var parentUl = $(sel.focusNode).closest('.tool-htmledit-editor ul');
		var parentOl = $(sel.focusNode).closest('.tool-htmledit-editor ol');
		if (parentOl.length > 0) {
			// Remove List
			var newContainer = $('<div/>');
			parentOl.children('li').each(function () {
				$(this).contents().appendTo($('<p/>').appendTo(newContainer));
			});
			newContainer.insertBefore(parentOl);
			parentOl.remove();
			proceed = false;
		} else if (parentUl.length > 0) {
			// Move list
			var newList = $('<ol/>').insertBefore(parentUl);
			parentUl.children().appendTo(newList);
			parentUl.remove();
			proceed = false;
		}
	}

	if (proceed) {
		cms.HtmlEdit.__EnterDesignMode(this);
		ret = document.execCommand(item.func, false, item.param);
		cms.HtmlEdit.__ExitDesignMode(this);
	}
	e.preventDefault();
	e.stopPropagation();
	//cms.HtmlEdit.restoreSelection(editor.LastSelection);
	editor.UpdateToolbar(window.getSelection());
	return ret;
};

/* Toolbar */
CmsHtmlEdit.prototype.ToolbarItems = [
	{
		label: 'Style', func: '_style', styleList: [], styleFunc: function () {
			var list = [
				//{ name: 'Heading 1', element: 'h1' },
				//{ name: 'Heading 2', element: 'h2' },
				{ name: 'Heading 1', element: 'h3' },
				{ name: 'Heading 2', element: 'h4' },
				{ name: 'Heading 3', element: 'h5' },
				{ name: 'Heading 4', element: 'h6' },
				{ name: 'Body Text', element: 'p' },
				{ name: 'Body Text Larger', element: 'p', cssClass: 'es-larger' },
				{ name: 'Intro Paragraph', element: 'p', cssClass: 'es-intro' },
				{ name: 'Feature Paragraph', element: 'p', cssClass: 'es-feature' },
				{ name: 'Standout Quote 1', element: 'p', cssClass: 'es-quote' },
				{ name: 'Standout Quote 2', element: 'p', cssClass: 'es-quote2' },
				{ name: 'Standout Quote 3', element: 'p', cssClass: 'es-quote3' },
				{ name: 'Fine Print', element: 'p', cssClass: 'es-fineprint' }
			]
			if (local && local.__resetStyles == true) { list = []; }
			if (local && local.extraEditorStyles && local.extraEditorStyles.length > 0) { list = list.concat(local.extraEditorStyles); }
			return list;
		}
	},
	{
		label: 'Colour', func: '_style', sprite: 'colour', styleList: [], styleFunc: function () {
			var list = cms.__GetColourStyles();
			if (list.length > 0) { list.push({ name: 'Default', cssClass: '' }); }
			return list;
		}
	},
	{
		label: 'Appearance', func: '', sprite: 'appearance', children: [
		  { label: 'Bold', sprite: 'bold', func: 'bold', prop: 'font-weight', val: 'bold' },
		  { label: 'Italic', sprite: 'italic', func: 'italic', prop: 'font-style', val: 'italic' },
		  { label: 'Underline', sprite: 'underline', func: 'underline', prop: 'text-decoration', val: 'underline' },
		  { label: 'Remove Formatting', sprite: 'clear', func: 'removeformat' }
		]
	},
	{
		label: 'Align', func: '', sprite: 'align', children: [
		  { label: 'Left', sprite: 'left', func: 'JustifyLeft', prop: 'text-align', val: 'left' },
		  { label: 'Centre', sprite: 'centre', func: 'JustifyCenter', prop: 'text-align', val: 'center' },
		  { label: 'Right', sprite: 'right', func: 'JustifyRight', prop: 'text-align', val: 'right' },
		  { label: 'Full Justify', sprite: 'full', func: 'JustifyFull', prop: 'text-align', val: 'justify' }
		]
	},
	//{ label: 'Adjust', func: '', sprite: 'adjust' },
	{
		label: 'List Options', func: '', sprite: 'lists', children: [
		  { label: 'Bullet List', sprite: 'list_bullet', func: 'insertunorderedlist', isActive: function (e) { var sel = window.getSelection(); return sel && sel.focusNode && $(sel.focusNode).closest('ul').length > 0; } },
		  { label: 'Numbered List', sprite: 'list_num', func: 'insertorderedlist', isActive: function (e) { var sel = window.getSelection(); return sel && sel.focusNode && $(sel.focusNode).closest('ol').length > 0; } }
		]
	},
	{ label: 'Create Link', sprite: 'link', exec: cms.HtmlEdit.OpenLinkPicker },
	{ label: 'Remove Link', sprite: 'unlink', func: 'unlink' },
	{ label: 'Create Button', sprite: 'editor_button', exec: cms.HtmlEdit.CreateButton }, 
	{ label: 'Insert Image', sprite: 'image', exec: cms.HtmlEdit.OpenImagePicker },
	//{ label: 'Spell Check', sprite: 'spellcheck', func: 'spellcheck' },
	{
		label: 'View Source', sprite: 'source', extraClass: 'right', exec: function () {
			var w = $(this).closest('.tool-htmledit-wrap');
			var e = w.data('editor');
			if (w.hasClass('show-source')) {
				e.UpdateHtml();
			} else {
				e.UpdateTextarea();
			}
			w.toggleClass('show-source');
			$(this).toggleClass('active');
			e.Focus();
		}
	}
];

CmsHtmlEdit.prototype.ImageToolbarItems = [
	{
		label: 'Float Left', sprite: 'img_left',
		isActive: function (e) { return e.selectedImage && e.selectedImage.hasClass('left'); },
		exec: function () {
			var e = $(this).closest('.tool-htmledit-wrap').data('editor');
			e.GetSelectedImage();
			if (e.selectedImage) {
				e.selectedImage.addClass('left').removeClass('right');
			}
			e.UpdateToolbar();
		}
	},
	{
		label: 'Float Right', sprite: 'img_right',
		isActive: function (e) { return e.selectedImage && e.selectedImage.hasClass('right'); },
		exec: function () {
			var e = $(this).closest('.tool-htmledit-wrap').data('editor');
			e.GetSelectedImage();
			if (e.selectedImage) {
				e.selectedImage.removeClass('left').addClass('right');
			}
			e.UpdateToolbar();
		}
	},
	{
		label: 'Full Width', sprite: 'img_full',
		isActive: function (e) { return e.selectedImage && e.selectedImage.hasClass('left') == false && e.selectedImage.hasClass('right') == false; },
		exec: function () {
			var e = $(this).closest('.tool-htmledit-wrap').data('editor');
			e.GetSelectedImage();
			if (e.selectedImage) {
				e.selectedImage.removeClass('left').removeClass('right');
			}
			e.UpdateToolbar();
		}
	},
	{ label: 'Create Link', sprite: 'link', exec: cms.HtmlEdit.OpenLinkPicker },
	{ label: 'Remove Link', sprite: 'unlink', exec: cms.HtmlEdit.ClearImageLink },
	{
		label: 'View Source', sprite: 'source', extraClass: 'right', exec: function () {
			var w = $(this).closest('.tool-htmledit-wrap');
			var e = w.data('editor');
			if (w.hasClass('show-source')) {
				e.UpdateHtml();
			} else {
				e.UpdateTextarea();
			}
			w.toggleClass('show-source');
			$(this).toggleClass('active');
			e.Focus();
		}
	}
];
cms.__GetColourStyles = function() { return [
	{ name: 'Body Text', cssClass: 'tc-bodytext' },
	{ name: 'Feature A', cssClass: 'tc-featureA' },
	{ name: 'Feature B', cssClass: 'tc-featureB' },
	{ name: 'Feature C', cssClass: 'tc-featureC' }
] };

/* TemplateFilter 0x10C80FA10000440F */
local.initSocialHover = function(){
	if(local._isSocialInit == false){
		var src = '';
		var hsrc = '';		
		$('.d_sm-item a').hover(function(){
			var tgt = $(this).find('img');
			src = tgt.attr('src');
			hsrc = tgt.attr('data-hover');			
			tgt.attr('src',hsrc);
		}, function(){			
			var tgt = $(this).find('img');			
			tgt.attr('src',src);
		});
		local._isSocialInit = true;
	}
};
local._isSocialInit = false;
/* TemplateFilter 0x10C80FA100005303 */
local.gplusShare = function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  }();

local.facebookShare = function(d, s, id) {
	  var js, fjs = d.getElementsByTagName(s)[0];
	  if (d.getElementById(id)) {return;}
	  js = d.createElement(s); js.id = id;
	  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
	  fjs.parentNode.insertBefore(js, fjs);
	}(document, 'script', 'facebook-jssdk');
/* TemplateFilter 0x10C80FA10000530B */
local.EnableSlider = function(id,auto) {
	if (local._S != null) { return; }
	local._S = $('#global-slider-'+id);
	var s = local._S;	
	s.find('.global-slider-button-left').click(function(e){local.SliderJump(1,100); e.preventDefault();});
	s.find('.global-slider-button-right').click(function(e){local.SliderJump(-1,100); e.preventDefault();});
	s.find('.global-slider-button-left').hover(function(){local.BeginSlide(1);},local.EndSlide);
	s.find('.global-slider-button-right').hover(function(){local.BeginSlide(-1);},local.EndSlide);
	local._Sinner = s.find('.global-slider-wrap-inner').width();
	var sc = s.find('.global-slider-item-wrap');
	local._ScWidth = sc.outerWidth();
	local._Scount = $('.global-slider-gallery').children().size();
	local._MaxDuration = local._Scount * 250;
	var sce = $(sc[sc.length - 1]);
	local._Swidth = sce.position().left + sce.width();
	local._Smax = local._S.width() - local._Swidth - sc.width() + 16;
	local._Sg = s.find('.global-slider-gallery');
	
	if(auto == true){		
		var autoInterval = setInterval(function() {
			if(local._Sg.position().left == local._Smax || local._Sg.position().left < local._Smax){
				local._Sg.animate({left: 0},2000);	
			} else {
				local.SliderJump(-1,2000);	
			}
		}, 8000);
	}
};

local._S = null;
local._Swidth = null;
local._Smax = 0;
local._SlideTimer = null;
local._SlideOffset = 0;
local._SlidePos = 0;
local._Sg = null;
local._MaxDuration = 0;
local._MaxDurationLeft = 8000;
local._MaxDurationRight = 8000;
local._SlideLeft = false;
		  
 local.BeginSlide = function(offset) {
	local._SlideOffset = offset;
	if (local._SlideTimer == null) { 
		local._SlideTimer = '';
		local.ExecSlide();
	}
};

local.EndSlide = function() {
	if (local._SlideTimer != null) { 
		local._Sg.stop();		
		local.GetPos();		
	}
	local._SlideTimer = null;	
};

local.ExecSlide = function() {	
	local._Sactive = true;	
	local.GetPos();	
	if(local._SlideOffset == 1){
		local._Sg.animate({left: 0},local._MaxDurationLeft,'easeInOutSine');
		local._SlideLeft = false;
	} else {
		local._Sg.animate({left: local._Smax},local._MaxDurationRight,'easeInOutSine');			
		local._SlideLeft = true;
	}
};

local.GetPos = function(){
	local._SlidePos = local._Sg.position().left;	
	if(local._SlideLeft == true){
		local._MaxDurationLeft = local._MaxDuration * (local._SlidePos / local._Smax);
		local._MaxDurationRight = local._MaxDuration - local._MaxDurationLeft;
	} else {
		local._MaxDurationLeft = local._MaxDuration * (local._SlidePos / local._Smax);
		local._MaxDurationRight = local._MaxDuration - local._MaxDurationLeft;
	}
	
	//console.log('Left Pos: ' + local._SlidePos);
	//console.log('Max Width: ' + local._Smax);
	//console.log('Max Left: ' + local._MaxDurationLeft);	
	//console.log('Max Right: ' + local._MaxDurationRight);	
};

local.SliderJump = function(direction,speed){	
	local._Sactive = true;
	var visibleChild = local._Sinner / local._ScWidth;
	var jumpGap = visibleChild * local._ScWidth;
	if(direction == 1){
		local._SlideLeft = false;
	} else {
		local._SlideLeft = true;
	}
	local._Sg.stop();		
	local.GetPos();	
	
	if(local._SlideLeft == false){
		var roughLeftJump = local._SlidePos + jumpGap;
		var leftJump = local.FindNearest(roughLeftJump);
		if(leftJump <= 0){        //If the position of the slider is not past max..
			local._Sg.animate({
				left: leftJump
			},speed);
			
		} else {
			local._Sg.animate({left: 0},speed);			
		}
	} else {
		var rightJump = local._SlidePos - jumpGap;
		rightJump = local.FindNearest(rightJump);
		if(rightJump < local._Smax){
			local._Sg.animate({
				left: local._Smax
			},speed);			
		} else {
			local._Sg.animate({
				left: rightJump
			},speed);			
		}
	}
};

local.FindNearest = function(position){
	if(local._SlideLeft == false){		
		var roughCount = position / local._ScWidth;
		var exactCount = Math.floor(roughCount);	
		var exactPos = exactCount * local._ScWidth;		
	} else {		
		var roughCount = position / local._ScWidth;
		var exactCount = Math.round(roughCount);	
		var exactPos = exactCount * local._ScWidth;	
	}	
	return exactPos;    
};
/* TemplateFilter 0x10C80FA10000530C */
local.cartDropdown = function(){
	$('.cart-wrap').mouseenter(
		function () {
			$(this).find('.cart_rolldown').stop(true,true).slideDown('fast');
		});
	$('.cart-wrap').mouseleave(
		function () {
			$(this).find('.cart_rolldown').stop(true,true).slideUp('fast');	
		});
	
	
}
/* TemplateFilter 0x10C80FA10000530E */
/*
* jQuery OnDemand Image Loader
*
* Developed by
* Copyright 2011 - Anthony McLin
* http://anthonymclin.com
* Version 1.0
* Licensed under GPLv2
*
* Extended by Simon Willcock - 2012
*/


$(document).ready(function(){
$.fn.onDemandLoader = function(options) {
		
		// Configuration
		options = $.extend({
			selector: null,
			spinner: null,
			background: null,
			callback : jQuery.noop
		}, options);
		
		//Change the source of all the images to point to the loading image
		$(options.selector).each( function() {
			
			if(options.background != true){
				//Write the original source to a temporary location
				$(this).attr('_src', $(this).attr('src'));
				//Change the image source to the loading image
				$(this).attr('src', options.spinner);
			} else {				
				$(this).attr('_src', $(this).css('background-image')).attr('data-bg','true');
				$(this).css('background-image', 'url('+options.spinner+')');
			}
		});
	};
	
	//Load a specific image by changing the source back
	$.fn.onDemandLoader.loadImage = function(img) {
		if($(img).attr('data-bg') !== undefined){		
			$(img).css('background-image', $(img).attr('_src'));
		} else {
			$(img).attr('src', $(img).attr('_src'));
		}
	};
});
