function hideShowFileField(){
	var file = document.getElementById('upload_image');		
	(file.style.display == 'none' ? file.style.display = 'block' : file.style.display = 'none' );
	return false;
};

/*Textarea-maxlength by frequency decoder (http://www.frequency-decoder.com/)*/
function addEvent( obj, type, fn, tmp ) {
	if( obj.attachEvent ) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function(){obj["e"+type+fn]( window.event );};
		obj.attachEvent( "on"+type, obj[type+fn] );
	} else {
		obj.addEventListener( type, fn, false );
	}
};

function removeEvent( obj, type, fn ) {
	if( obj.detachEvent ) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
	} else {
		obj.removeEventListener( type, fn, false );
	}
};

// Declare the namespace
var fdTextareaController;
(function() {
	function fdTextareaMaxlength(inp, maxlength) {
		this._inp       = inp;
		this._max       = Number(maxlength);
		var self        = this;

		self.maxlength = function() {
			if(self._inp.disabled) return false;
			
			var counter	= document.getElementById('count');
			var chars	= document.getElementById('chars');
			var value = parseInt(counter.innerHTML);
			counter.innerHTML = self._max - self._inp.value.length;
			
			if(self._max - self._inp.value.length <= 0){
				chars.className = 'over';
			} else {
				chars.className = '';
			}
			
			return true;
		};

		// Has Safari keypress foibles ? Needs tested...
		addEvent(self._inp, 'keyup', self.maxlength, false);

		// Sorry folks, but using the "onblur" event is the only way to cut the text down to size
		// after a users cut & paste action
		addEvent(self._inp, 'blur',     self.maxlength, false);

		// IE only event 'onpaste'
		// Conditional compilation used to load only in IE win.
		// As we don't need the onblur event for IE, we remove it at the same time.
		/*@cc_on @*/
		/*@if (@_win32)
		addEvent(self._inp, 'paste', function(){ setTimeout(self.maxlength, 10); }, true);
		/*@end @*/

		// Call the maxlength function immediately to trim any text inserted server-side to the required length.
		self.maxlength();
		
	};

	// Construct the previously declared namespace
	fdTextareaController = {
		textareas: [],
		_construct: function( e ) {
			var regExp_1 = /fd_max_([0-9]+){1}/ig;
			var textareas = document.getElementsByTagName("textarea");

			for(var i = 0, textarea; textarea = textareas[i]; i++) {
				if(textarea.className && textarea.className.search(regExp_1) != -1) {
					max = parseInt(textarea.className.match(regExp_1)[0].replace(/fd_max_/ig, ''));
					if(max) fdTextareaController.textareas[fdTextareaController.textareas.length] = new fdTextareaMaxlength(textarea, max);
				}
			}
		},
		_deconstruct: function( e ) {
		}
	};
	})();
	
	// Slideshow
	var d=document, imgs = new Array(), zInterval = null, current=0, pause=false;

	function so_init() {
		if(!d.getElementById("slideshow")){return;}
		imgs = d.getElementById("slideshow").getElementsByTagName("img");
		for(i=1;i<imgs.length;i++){
			imgs[i].style.display = 'none';
			imgs[i].xOpacity = 0;
		}		
		imgs[0].style.display = "block";
		imgs[0].xOpacity = .99;

		addEvent(window, 'load', setTimeout(so_xfade,5000), false);
	}

	function so_xfade() {
		cOpacity = imgs[current].xOpacity;
		nIndex = imgs[current+1]?current+1:0;

		nOpacity = imgs[nIndex].xOpacity;

		cOpacity-=.02; 
		nOpacity+=.02;

		imgs[nIndex].style.display = "block";
		imgs[current].xOpacity = cOpacity;
		imgs[nIndex].xOpacity = nOpacity;

		setOpacity(imgs[current]); 
		setOpacity(imgs[nIndex]);

		if(cOpacity<=0) {
			imgs[current].style.display = "none";
			current = nIndex;
			setTimeout(so_xfade,2000);
		} else {
			setTimeout(so_xfade,50);
		}

		function setOpacity(obj) {
			if(obj.xOpacity>.99) {
				obj.xOpacity = .99;
				return;
			}
			obj.style.opacity = obj.xOpacity;
			obj.style.MozOpacity = obj.xOpacity;
			obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
		}

	}

	// Remove Title attributes
	function removeAttributes(node) {
		if (node.title) {node.title = "";}
		if (node.alt) {node.alt = "";}

		var children = node.childNodes;
		for(var i=0; i < children.length; i++) {
		  removeAttributes(children[i]);
		};
	}

	// DOM Loaded
	function init() {
		if (arguments.callee.done) return;
		arguments.callee.done = true;
		if (_timer) clearInterval(_timer);

		so_init();
		removeAttributes(document.body);
	};
	
	// onload events
	addEvent(window, 'load', fdTextareaController._construct, false);
	addEvent(window, 'unload', fdTextareaController._deconstruct, false);
	
	/* for Mozilla/Opera9 and Safari */
	if (document.addEventListener) {
		/* for Safari */
		if (/WebKit/i.test(navigator.userAgent)){
			var _timer = setInterval(function(){if(/loaded|complete/.test(document.readyState)){ init(); }}, 0);
			window.onload(init);
		} else {
			document.addEventListener("DOMContentLoaded", init, false);
		}
	} else {
		document.write("<script id=__ie_onload defer src=//:><\/script>");
		var script = document.getElementById("__ie_onload");
		script.onreadystatechange = function() {
			if (this.readyState == "complete") {
				this.onreadystatechange = null;
				init(); // call the onload handler
			}
		};
	}