





Object.extend(Event,{
	_domReady:function(){
		if(arguments.callee.done)return;
		arguments.callee.done=true;

		if(this._timer)clearInterval(this._timer);

		this._readyCallbacks.each(function(f){f()});
		this._readyCallbacks=null;
	},

	onDOMReady:function(f){
		if(!this._readyCallbacks){
			var domReady=this._domReady.bind(this);

			if(document.addEventListener)
			document.addEventListener("DOMContentLoaded",domReady,false);

			/*@cc_on @*/
			/*@if (@_win32)
			    document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
			    document.getElementById("__ie_onload").onreadystatechange = function() {
			        if (this.readyState == "complete") domReady(); 
			    };
			/*@end @*/

			if(/WebKit/i.test(navigator.userAgent)){
				this._timer=setInterval(function(){
					if(/loaded|complete/.test(document.readyState))domReady();
				},10);
			}

			Event.observe(window,'load',domReady);
			Event._readyCallbacks=[];
		}
		Event._readyCallbacks.push(f);
	}
});


if(typeof(AC)=="undefined")AC={};

AC.decorateSearchInput=function(field,options){

	var searchField=$(field);
	var standIn=null;

	var results=0;
	var placeholder='';
	var autosave='';

	if(options){

		if(options.results){results=options.results;}
		if(options.placeholder){placeholder=options.placeholder;}
		if(options.autosave){autosave=options.autosave;}

	}

	if(AC.Detector.isWebKit()){

		searchField.setAttribute('type','search');
		if(!searchField.getAttribute('results')){
			searchField.setAttribute('results',results);
		}

		if(null!=placeholder){
			searchField.setAttribute('placeholder',placeholder);
			searchField.setAttribute('autosave',autosave);
		}

	} else if (BrowserDetect.browser != 'Explorer') {

		searchField.setAttribute('autocomplete','off');

		standIn=document.createElement('input');
		searchField.parentNode.replaceChild(standIn,searchField)

		var left=document.createElement('span');
		Element.addClassName(left,'left');

		var right=document.createElement('span');
		Element.addClassName(right,'right');

		var reset=document.createElement('div');
		Element.addClassName(reset,'reset');

		var wrapper=document.createElement('div');
		Element.addClassName(wrapper,'search-wrapper');

		var alreadyHasPlaceholder=field.value==placeholder;
		var isEmpty=field.value.length==0;

		if(alreadyHasPlaceholder||isEmpty){
			searchField.value=placeholder;
			Element.addClassName(wrapper,'blurred');
			Element.addClassName(wrapper,'empty');
		}

		wrapper.appendChild(left);
		wrapper.appendChild(searchField);
		wrapper.appendChild(right);
		wrapper.appendChild(reset);

		var focus=function(){

			var blurred=Element.hasClassName(wrapper,'blurred');

			if(searchField.value==placeholder&&blurred){
				searchField.value='';
			}

			Element.removeClassName(wrapper,'blurred');
		}

		Event.observe(searchField,'focus',focus);

		var blur=function(){

			if(searchField.value==''){
				Element.addClassName(wrapper,'empty');
				searchField.value=placeholder;
			}

			Element.addClassName(wrapper,'blurred');
		}
		Event.observe(searchField,'blur',blur);

		var toggleReset=function(){

			if(searchField.value.length>=0){
				Element.removeClassName(wrapper,'empty');
			}
		}
		Event.observe(searchField,'keydown',toggleReset);

		var resetField=function(){
			return(function(evt){

				var escaped=false;

				if(evt.type=='keydown'){
					if(evt.keyCode!=27){
						return;
					}else{
						escaped=true;
					}
				}

				searchField.blur();
				searchField.value='';
				Element.addClassName(wrapper,'empty');
				searchField.focus();

			})
		}
		Event.observe(reset,'mousedown',resetField());
		Event.observe(searchField,'keydown',resetField());

		if(standIn){
			standIn.parentNode.replaceChild(wrapper,standIn);
		}

	} else {
		searchField.style.background = '';
		searchField.style.border = '1px solid #999999';
		searchField.style.paddingLeft = '3px';
	}
}







var Element2={};
Element2.Methods={

getInnerDimensions:function(element){

element=$(element);
var d=Element.getDimensions(element);

var innerHeight=d.height;
var styleOf=Element.getStyle;
innerHeight-=styleOf(element,'border-top-width')&&styleOf(element,'border-top-width')!='medium'?parseInt(styleOf(element,'border-top-width'),10):0;
innerHeight-=styleOf(element,'border-bottom-width')&&styleOf(element,'border-bottom-width')!='medium'?parseInt(styleOf(element,'border-bottom-width'),10):0;
innerHeight-=styleOf(element,'padding-top')?parseInt(styleOf(element,'padding-top'),10):0;
innerHeight-=styleOf(element,'padding-bottom')?parseInt(styleOf(element,'padding-bottom'),10):0;

var innerWidth=d.width;
innerWidth-=styleOf(element,'border-left-width')&&styleOf(element,'border-left-width')!='medium'?parseInt(styleOf(element,'border-left-width'),10):0;
innerWidth-=styleOf(element,'border-right-width')&&styleOf(element,'border-right-width')!='medium'?parseInt(styleOf(element,'border-right-width'),10):0;
innerWidth-=styleOf(element,'padding-left')?parseInt(styleOf(element,'padding-left'),10):0;
innerWidth-=styleOf(element,'padding-right')?parseInt(styleOf(element,'padding-right'),10):0;

return{width:innerWidth,height:innerHeight};
},


getOuterDimensions:function(element){
element=$(element);
var clone=element.cloneNode(true);

document.body.appendChild(clone);
Element.setStyle(clone,{position:"absolute",visibility:"hidden"});
var d=Element.getDimensions(clone);

var outerHeight=d.height;
var styleOf=Element.getStyle;
outerHeight+=styleOf(clone,'margin-top')?parseInt(styleOf(clone,'margin-top'),10):0;
outerHeight+=styleOf(clone,'margin-bottom')?parseInt(styleOf(clone,'margin-bottom'),10):0;

var outerWidth=d.width;
outerWidth+=styleOf(clone,'margin-left')?parseInt(styleOf(clone,'margin-left'),10):0;
outerWidth+=styleOf(clone,'margin-right')?parseInt(styleOf(clone,'margin-right'),10):0;

Element.remove(clone);

return{width:outerWidth,height:outerHeight};
},

removeAllChildNodes:function(element){
element=$(element);
if(!element){return;}

while(element.hasChildNodes()){
element.removeChild(element.lastChild);
}
}

};

Object.extend(Element,Element2.Methods);


