	//Document variables
	var googleBox; // Google search box 		
	var priceMask;
	var toolTipCache =new Array();
	var tipExtended = false;
    
    window.addEvent('domready', function(){ 			
		//Create a listener to expand the hidden google search box
		googleBox = new Fx.Slide($E('.moduletable_dvGoogle'), {height: true, opacity: true, duration: 250});
        googleBox.hide();
		
		if($('dvAutoSuggest')!=undefined)
			autoCompleteObj=new autoComplete();	
		
		chatStatus();
	});
	
	//Check the chat operator status
	function chatStatus(){
		if($("dvLiveChat")!=undefined){
			new XHR({method: 'get', 
				onSuccess: function(rv){					
					if(rv=="on")
						$("dvLiveChat").style.display="block";
				}
			}).send('/webim/button-custom-cbhb.php');				
		}
	}
	
	//Disable the chat box for the rest of this visit
	function disableChat(){
		new XHR({method: 'get'}).send(templatePath+'xhr/chat_disable.php');				
		$("dvLiveChat").style.display="none";
		return false;
	}	
	
	function inputFocus(obj,value1){		
		if(obj.value==value1)
			obj.value="";		
		return false;	
	}
	
	function inputBlur(obj,value,alt){
		if(obj.value=="")
			obj.value=value;
		if(alt!=undefined){						
			if(obj.value==alt){
				obj.value=value;		
				
			}
		}
		return false;	
	}	
	
	function numLetter(num){
		var letter= String.fromCharCode(64+num);	
		return letter.toLowerCase()
	}
	
	function emailAgent(){
		if($('mls')==undefined){
			mls="";
			addressAgt="";
		}else{
			mls=$('mls').value;
			addressAgt=$('addressAgt').value		
		}
		
		
		$("dvEmailBoxOverlay").style.display="block";
		$("dvEmailBoxOverlay").style.height= ($("dvEmailBox").getSize().size.y -120)+ "px";				
		new XHR({method: 'get', 
						onSuccess: function(rv){
							rv=json_parse(rv);
							if(rv["success"]!=undefined){									
								_gaq.push(['_trackPageview', '/EmailSent']);
								 if($("resetForm")!=undefined && $("resetForm").value=="true")
									resetAgentForm(true);
								$("dvEmailBoxOverlay").style.display="none";	
								 MOOdalBox.open("/email-agent.html?complete=true&agent="+$('agentAgt').value,"Message Received","450 300");
								 
							}
							else{
								$("dvEmailBoxOverlay").style.display="none";
								resetAgentForm(false);
								$("txtAlertAgt").style.display="block";
								var reqFields=rv;
								reqFields.each(function(field) {
									$(field[0]+"Container").className +=" dvInputContainerAlert";		
									$(field[0]+"Notice").className ="fldAlert";		
									$(field[0]+"Notice").value = field[1];												
								});
							}	
						}
				}).send(templatePath+'xhr/leads_agent.php', 'agent='+$('agentAgt').value+'&email='+$('emailAgt').value+'&firstName='+$('firstNameAgt').value+'&lastName='+$('lastNameAgt').value+'&phone='+$('phoneAgt').value+'&comments='+$('commentsAgt').value+'&mls='+mls+'&address='+addressAgt);	
	}
	
		
	function resetAgentForm(clearData){
		$("txtAlertAgt").style.display="none";
		$("dvEmailBoxOverlay").style.display="none";
		hideFields=["firstNameAgt","lastNameAgt","emailAgt"];
		hideFields.each(function(field) {		
			$(field+"Container").className ="dvInputContainer";		
			$(field+"Notice").className ="fldAlert hide";
			if(clearData)
				$(field).value ="";			
		});
		if(clearData){
			$("phoneAgt").value ="";			
			$("commentsAgt").value ="";			
		}
	}
	
	function sellerForm(){
		queryData=processForm("sellerForm");			
		$("dvEmailBoxOverlay").style.display="block";
		$("dvEmailBoxOverlay").style.height= ($("dvSellerEmailBox").getSize().size.y -120)+ "px";				
		new XHR({method: 'get', 
						onSuccess: function(rv){							
							rv=json_parse(rv);
							if(rv["success"]!=undefined){								
								_gaq.push(['_trackPageview', '/SellerLead']);
								 if($("resetForm")!=undefined && $("resetForm").value=="true")
									resetSellerForm(true);
								 MOOdalBox.open(templatePath+"includes_content/lightbox_seller_thanks.php","Message Received","350 100");
								 
							}
							else{
								$("dvEmailBoxOverlay").style.display="none";
								resetSellerForm(false);
								$("txtAlertSell").style.display="block";
								var reqFields=rv;
								reqFields.each(function(field) {
									$(field[0]+"Container").className +=" dvInputContainerAlert";		
									$(field[0]+"Notice").className ="fldAlert";		
									$(field[0]+"Notice").value = field[1];												
								});
							}	
						}
				}).send(templatePath+'xhr/leads_seller.php', queryData);	
	}
	
	function resetSellerForm(clearData){
		$("txtAlertSell").style.display="none";
		$("dvEmailBoxOverlay").style.display="none";
		hideFields=["firstNameSell","lastNameSell","emailSell","zipSell"];
		hideFields.each(function(field) {		
			$(field+"Container").className ="dvInputContainer";		
			$(field+"Notice").className ="fldAlert hide";
			if(clearData)
				$(field).value ="";			
		});
		if(clearData){
			$("phoneSell").value ="";			
			$("commentsSell").value ="";			
			$("addressSell").value ="";			
			$("citySell").value ="";			
			
		}
	}
	
	//Mortgage calculator functions
	function mortCal(){
		
		LoanAmount= $('mortPrice').value
		DownPayment= $('mortDown').value		
		Taxes= parseInt($('mortTaxes').value); 
		AnnualInterestRate = $('mortRate').value/100; 
		Years= $('mortTerm').value; 
		MonthRate=AnnualInterestRate/12; 
		NumPayments=Years*12; 
		Prin1=LoanAmount-DownPayment;
		MonthPayment=(Prin1*MonthRate)/(1-Math.pow((1+MonthRate),(-1*NumPayments)))*100/100; 
		MonthPayment = MonthPayment + (Taxes / 12);
		$('dvCalcPayment').innerHTML=formatCurrency(mortRound(MonthPayment));
		$('dvCalcNumber').innerHTML=NumPayments;
		$('dvCalcTotal').innerHTML=formatCurrency(mortRound(MonthPayment * NumPayments));
	}				
	function mortRound(number){
		return Math.round(number*Math.pow(10,2))/Math.pow(10,2);
	}
	
	//Formats number into US currency.
	function formatCurrency(num) {
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num))
			num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if(cents<10)
			cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
		return (((sign)?'':'-') + '$' + num + '.' + cents);
	}
	
	function autoComplete(){	
		var input = $('fldLocation');
		var suggest = $('dvAutoSuggest');		
		var me = this;
		var TAB = 9;
		var ESC = 27;
		var KEYUP = 38;
		var KEYDN = 40;
		var ENTER = 13;
		var BACKSPACE = 8;
		var defInput='e.g. \'main street\' or \'burlington\' or \'4001234\'';
		var defSuggest=suggest.innerHTML;
		highlighted=0;
		suggestionsMax=0;		
		searchCount=0;
		processing=false;
		
		if(input == undefined)
			return;
		
		input.onfocus=function(){
			suggest.style.display="block";
			inputFocus(input,defInput)

		}
		
		input.onblur=function(){			
			if(input.value=="" || input.value == defInput)
				suggest.innerHTML=defSuggest;
			suggest.style.display="none";
			inputBlur(input,defInput)			
			//Remove all highlights			
			highlighted=0;
			for(k=1;k<=suggestionsMax;k++){
				if($('suggestion'+k)!=undefined)
					$('suggestion'+k).className='';						
			}
			
		}
		
		input.onkeyup = function(ev){	
			var key = me.getKeyCode(ev);			
			switch(key){			
				case TAB:
				case ESC:
				case KEYUP:
				case KEYDN:
					return;
				case BACKSPACE:
					if(input.value.length<3)
						suggest.innerHTML=defSuggest;
					else
						me.findSuggestions();
					break;
				default:	
					if(input.value.length >2)
						me.findSuggestions();
						
			}		
		}
		
		input.onkeydown = function(ev){
			var key = me.getKeyCode(ev);		
			switch(key)
			{
				case TAB:			
					if(highlighted>0)
						me.useHighlight(highlighted);
					break;
				case ESC:					
					break;				
				case ENTER:					
					if(highlighted>0)
						me.useHighlight(highlighted);
					break;				
				case KEYUP:					
						if(highlighted>1){
							highlighted--;
							me.highlight(highlighted);
						}						
					break;
				case KEYDN:					
						if(highlighted<suggestionsMax){
							highlighted++;
							me.highlight(highlighted);
						}							
					break;			
			}
		};
		
		this.highlight = function(position){
			highlighted=position;
			for(k=1;k<=suggestionsMax;k++)				
				$('suggestion'+k).className='';							
			$('suggestion'+highlighted).className='highlighted';					
			
			var mlsCheck = photos[highlighted-1];		
			if(mlsCheck != "town" && mlsCheck != "street" && mlsCheck >0)
				$('fldAutoMls').value = photos[highlighted-1];
			else
				$('fldAutoMls').value = "";
		};
		
		this.useHighlight = function(position){
			highlighted=position;
			input.value=suggestions[highlighted-1];
			suggest.style.display="none";
			//$('frmQuickSearch').submit();		
		};
		
		this.getKeyCode = function(ev){
			if(ev)			//Moz		
				return ev.keyCode;
		
			if(window.event)	//IE		
				return window.event.keyCode;	
		};
		
		this.findSuggestions = function(){		
			if(!processing){
				processing=true;
				//suggest.innerHTML='<img src="/templates/standard/images/loader-house.gif" class="imgSuggestLoader"/>';
				if($('imgSmallLoader')!=undefined)
					$('imgSmallLoader').className="";
				if($('dvAutoSuggestInner')!=undefined)
					$('dvAutoSuggestInner').className="fade";
			
				searchCount++;
			
				new XHR({method: 'get', 
					onSuccess: function(rv){					
						rv=json_parse(rv);
						me.processSuggestions(rv);							
					}
				}).send(templatePath+'xhr/autosuggest.php', 'location='+input.value+'&searchCount='+searchCount);				
			}
		};		
		
		
		this.processSuggestions = function(rv){
			
			suggestions=rv["data"];
			photos=rv["photos"];
			var price=rv["price"];
			var output='<div id="dvAutoSuggestInner">';
			if(suggestions.length>0){															
				var i=0;				
				suggestions.each(function(s) {					
					if(photos[i]==0)
						output+='<div style="padding-left:80px" id="suggestion'+(i+1)+'" onmouseover="autoCompleteObj.highlight('+(i+1)+')" onmousedown="autoCompleteObj.useHighlight('+(i+1)+')">'+s+'<br />$'+price[i]+'</div>';							
					if(photos[i]=="town")
						output+='<div id="suggestion'+(i+1)+'" onmouseover="autoCompleteObj.highlight('+(i+1)+')" onmousedown="autoCompleteObj.useHighlight('+(i+1)+')"><span class="town">Town</span>'+s+'</div>';							
					if(photos[i]=="street")
						output+='<div id="suggestion'+(i+1)+'" onmouseover="autoCompleteObj.highlight('+(i+1)+')" onmousedown="autoCompleteObj.useHighlight('+(i+1)+')"><span class="town">Street</span>'+s+'</div>';													
					if(photos[i]>0 && photos[i]!="town")
						output+='<div id="suggestion'+(i+1)+'" onmouseover="autoCompleteObj.highlight('+(i+1)+')" onmousedown="autoCompleteObj.useHighlight('+(i+1)+')"><img src="http://www.hickokandboardman.com/mlsphotos/'+photos[i]+'a.jpg" width="75" align="left" />'+s+'<br />$'+price[i]+'</div>';												
					i++;
				});
				if(rv["more"]=="true"){
					output+='<div id="suggestion'+(suggestions.length+1)+'" onmouseover="autoCompleteObj.highlight('+(suggestions.length+1)+')" onmousedown="autoCompleteObj.useHighlight('+(suggestions.length+1)+')">View All Results</div>';
					suggestions.push(input.value);					
				}
				output+='</div>';
			}else
				output+='<div><label style="padding:6px">No Matches</label></div></div>';
			
			processing=false;	
			if(rv["original"].length< input.value.length )
				me.findSuggestions();
			else{
					suggest.innerHTML=output;
					suggestionsMax=suggestions.length;
					searchCount=0;
					highlighted=0;
			}
			if($('imgSmallLoader')!=undefined)
				setTimeout('$("imgSmallLoader").className="hide"',200);
			if($('dvAutoSuggestInner')!=undefined)
				setTimeout('$("dvAutoSuggestInner").className=""',200);			
			
		};
	
	}
	
	function regionSelector(){
		var me = this;
		this.activeCounty=1;		
		var countyCnt=6;
		var maxTowns=24;		
		
		this.showCounty = function(county){
			for(i=1;i<=countyCnt;i++)
				$('dvSelector_'+i).className='dvRegionSelectorTowns hide';
			$('dvSelector_'+county).className='dvRegionSelectorTowns';
			me.activeCounty = county;
			me.setCountyBackgrounds();
		
		}
		
		this.toggleCounty = function(){			
			var county=$('county'+me.activeCounty);
			if(county.checked==true)
				me.clearTowns();			
			if(this.onChange!=undefined)
				eval(this.onChange);
			me.setCountyBackgrounds();	
		}
		
		this.toggleTown = function(town){
			if(town.checked==true)
				me.clearCounty();
			if(this.onChange!=undefined)
				eval(this.onChange);	
		}

		this.clearCounty = function(){
			$('county'+me.activeCounty).checked=false;
		}		
		this.clearTowns = function(){
			for(i=1;i<maxTowns;i++){
				var town= $('county'+me.activeCounty+'_town'+i);
				if(town!=undefined)
					$('county'+me.activeCounty+'_town'+i).checked=false;
			}
		}
		
		this.setCountyBackgrounds= function(){
			for(i=1;i<=countyCnt;i++){
				var on = false;				
				if($('county'+i).checked==true)
					on = true;
				else{
					for(j=1;j<maxTowns;j++){
						var town= $('county'+i+'_town'+j);
						if(town!=undefined && town.checked==true)
							on = true;
					}				
				}
				if(on==true)
					$('countySelector'+i).className='county countyOn';
				else
					$('countySelector'+i).className='county countyOff';
			}
			$('countySelector'+me.activeCounty).className='county countyActive';
		}		
	}
	
	function emailAlert(){
		var me = this;		
		
		this.remove = function(){
			$("imgAlertLoading").style.display="block";
			$("frmAlertSignup").className="fade";
			var queryData= processForm('frmAlertSignup');
			
			new XHR({method: 'get', 
					onSuccess: function(rv){
						rv=json_parse(rv);
						me.hideErrors();
						$("frmAlertSignup").className="";
						$("imgAlertLoading").style.display="none";
						if(rv["success"]!=undefined){															
							 MOOdalBox.open("/popup-notice.html?message="+rv["success"],"Property Alert Deleted","380 150");
							 $("frmAlertSignup").innerHTML="";
						}					
							
					}
				}).send(templatePath+'xhr/email_alert_delete.php', queryData);			
		
		}
		
		this.send = function(){					
			$("imgAlertLoading").style.display="block";
			$("frmAlertSignup").className="fade";
			var queryData= processForm('frmAlertSignup');
			
			//Are we adding or modifying?
			xhr_action="email_alert_signup.php";
			if($('modifyAlert')!=undefined)
				xhr_action="email_alert_modify.php";
			
			new XHR({method: 'get', 
				onSuccess: function(rv){
					rv=json_parse(rv);
					me.hideErrors();
					$("frmAlertSignup").className="";
					$("imgAlertLoading").style.display="none";
					if(rv["success"]!=undefined){						
						_gaq.push(['_trackPageview', '/AlertSignup']);
						 MOOdalBox.open("/popup-notice.html?message="+rv["success"],"Property Alert Saved","380 150");
					}
					else{
						//$("dvAlertSignupBoxOverlay").style.display="none";
						$("txtAlertSignup").style.display="block";						
						var reqFields=rv;
						reqFields.each(function(field) {
							$(field[0]+"Container").className +=" dvInputContainerAlert";		
							$(field[0]+"Notice").className ="fldAlert";		
							$(field[0]+"Notice").value = field[1];												
						});						
					}
						
				}
			}).send(templatePath+'xhr/'+xhr_action, queryData);			
		}
		
		this.hideErrors = function(){
			$("txtAlertSignup").style.display="none";
			hideFields=["emailSignup","typeSignup"];
			hideFields.each(function(field) {
				$(field+"Container").className ="dvInputContainer";		
				$(field+"Notice").className ="fldAlert hide";		
				$(field+"Notice").value = "";												
			});						
		};
		
		this.reset = function(){
			MOOdalBox.open("/email-alerts-signup.html","Signup for Email Alerts","480 650");
		
		}
	}
	
	function reloRequest(){
		var me = this;		
		
		this.send = function(){					
			$("dvReloBox").className="fade";
			$("imgReloLoader").className="";
			
			var queryData= processForm('frmReloRequest');
			//alert(queryData); return;
			
			new XHR({method: 'get', 
				onSuccess: function(rv){
					$("dvReloBox").className="";
					$("imgReloLoader").className="hide";					
					_gaq.push(['_trackPageview', '/ReloPackage']);
					rv=json_parse(rv);
					me.hideErrors();
					if(rv["success"]!=undefined){															
						 MOOdalBox.open("/popup-notice.html?message="+rv["success"],"Request Received","480 150");
					}
					else{						
						$("mb_contents").style.height="auto";
						$("mb_center").style.height="auto";
						$("txtRelo").style.display="block";
						var reqFields=rv;
						reqFields.each(function(field) {
							$(field[0]+"Container").className +=" dvInputContainerAlert";		
							$(field[0]+"Notice").className ="fldAlert";		
							$(field[0]+"Notice").value = field[1];												
						});						
					}	
				}
			}).send(templatePath+'xhr/relo_request.php', queryData);			
		}
		
		this.hideErrors = function(){
			$("txtRelo").style.display="none";
			hideFields=["emailRelo","firstNameRelo","lastNameRelo","addressRelo","cityRelo","stateRelo","zipRelo"];
			hideFields.each(function(field) {				
				$(field+"Container").className ="dvInputContainer";		
				$(field+"Notice").className ="fldAlert hide";		
				$(field+"Notice").value = "";												
			});						
		};
		
		this.reset = function(){
			MOOdalBox.open("/request-relocation-package.html","Signup for Relocation Package","480 580");
		
		}
	}
	
	function processForm(docForm){
		var strSubmitContent = '';
		var formElem;
		var strLastElemName = '';		
		var docForm =$(docForm);
		
		for (i = 0; i < docForm.elements.length; i++) {
			
			formElem = docForm.elements[i];
			switch (formElem.type) {
				// Text fields, hidden form elements
				case 'text':
				case 'hidden':
				case 'password':
				case 'textarea':
				case 'image':
				case 'select-one':
					strSubmitContent += formElem.name + '=' + encodeURIComponent(formElem.value) + '&';
					break;				
				case 'select-multiple':
					for (count = 0; count < formElem.length; count++) {
						if ( formElem[count].selected ) {
							strSubmitContent += formElem.name + '=' + encodeURIComponent(formElem[count].value) + '&';
						}
					}
					break;								
				// Radio buttons
				case 'radio':
					if (formElem.checked) {
						strSubmitContent += formElem.name + '=' + encodeURIComponent(formElem.value) + '&';
					}
					break;				
				// Checkboxes
				case 'checkbox':
					if (formElem.checked) {
						// Continuing multiple, same-name checkboxes
						if (formElem.name == strLastElemName) {
							// Strip of end ampersand if there is one
							if (strSubmitContent.lastIndexOf('&') == strSubmitContent.length-1) {
								strSubmitContent = strSubmitContent.substr(0, strSubmitContent.length - 1);
							}
							// Append value as comma-delimited string
							strSubmitContent += ',' + encodeURIComponent(formElem.value);
						}
						else {
							strSubmitContent += formElem.name + '=' + encodeURIComponent(formElem.value);
						}
						strSubmitContent += '&';
					}
					break;
			}
			strLastElemName = formElem.name;
		}
		
		// Remove trailing separator
		strSubmitContent = strSubmitContent.substr(0, strSubmitContent.length - 1);
		return strSubmitContent;
	}
	
	//Date formatter

	function checkDate(field,event){
		var value = field.value;
		var len= value.length;		
		if(len>0){						
			//Check if last digit is a number or not
			var lastDigit= value.charAt(len-1);
			if(isNaN(lastDigit)==true  || lastDigit==" "){
				if(lastDigit!="/" && (len!=3 && len!=6))
					field.value=value.substring(0,(len-1))
			}else{
				if(len==2 && event.keyCode!=8)
					field.value=value+"/";
				if(len==5 && event.keyCode!=8)
					field.value=value+"/";								
			}
		}
	}

	
	function countMatches(){
		queryData=processForm("searchForm");				
		$('imgMatchLoader').style.display="";
		$('dvMatchCheck').className="fade";
		new XHR({method: 'get', 
				onSuccess: function(rv){						
					$("matchHolder").innerHTML=rv+" Match this Criteria";
					$('imgMatchLoader').style.display="none";
					$('dvMatchCheck').className="";
				}
			}).send(templatePath+'xhr/search_count_matches.php', queryData);			
	
	}
	
	function thousandSeparator(num) {
		if(num.length>3)
			return 2000;
		else
			return num;

	}
	
		
	function wantBox(page){
		if(page!="")			
			document.location.href=page;
	
	}
	
	function agentJump(page){
		if(page!="")			
			document.location.href=page;
	
	}
	
	function detectOverflow(el) {
		var original = el.scrollTop++;
		return el.scrollTop-- > original;
	}
	
	function propCartPreview(obj){
		if(toolTipCache["propCart"]==undefined){
			toolTipCache["propCart"]="LOADING"
			tooltip.show(obj,'<img src="/templates/standard/images/loader-house.gif"  />'); 
			new XHR({method: 'get', 
				onSuccess: function(rv){
					rv=json_parse(rv);
					$('ttcont').innerHTML=rv;
					toolTipCache["propCart"]=rv;
				}
			}).send(templatePath+'xhr/property_cart_preview.php');		
		}else{
			if(toolTipCache["propCart"]!="LOADING")
				tooltip.show(obj,toolTipCache["propCart"]); 	
		}
	}
	
	function recentSearchPreview(obj){
		
		if(toolTipCache["recentSearch"]==undefined){
			toolTipCache["recentSearch"]="LOADING"
			tooltip.show(obj,'<img src="/templates/standard/images/loader-house.gif"  />',1); 
			new XHR({method: 'get', 
				onSuccess: function(rv){
					rv=json_parse(rv);
					//tooltip.show(obj,rv,1); 
					$('ttcont').innerHTML=rv;
					toolTipCache["recentSearch"]=rv;
				}
			}).send(templatePath+'xhr/recent_searches_preview.php');		
		}else{
			if(toolTipCache["recentSearch"]!="LOADING")
				tooltip.show(obj,toolTipCache["recentSearch"],1); 	
		}
	
	}
	
	function showGoogle(obj){
		var s='<div class="moduletable_dvGoogle"><form method="get" action="http://www.hickokandboardman.com/index.php" id="mod_googleSearch_cse"><input type="hidden" name="option" value="com_googlesearch_cse" />	<input type="hidden" name="n" value="30" />	<div class="mod_googleSearch_cse_dvGoogle">	<input type="hidden" name="cx" value="015911989332563450903:ltzhdelie6y" />	<input type="hidden" name="cof" value="FORID:9" />	<input type="hidden" name="ie" value="ISO-8859-1" />	<input type="text" name="q" id="googleInput"class="inputbox_dvGoogle" size="16" maxlength="255" value="" />	<input type="submit" name="sa" value="" class="button_dvGoogle" />	<input type="hidden" name="hl" value="en" />	</div></form></div>';
		tooltip.show(obj,s,1); 			
		$('googleInput').focus();
	}
	
	var tooltip=function(){
		var id = 'tt';
		var top = 0;
		var left = -15;
		var maxw = 300;
		var speed = 10;
		var timer = 0;
		var endalpha = 95;
		var alpha = 0;
		var tt,t,c,b,h;
		var ie = document.all ? true : false;
		return{
			show:function(obj,v,extend, w){
			
				//Customization: remove title and alt tags, to avoid overlap
				if(obj.title!=null && obj.rel==undefined)
					obj.removeAttribute("title");
				if(obj.alt!=null)	
					obj.removeAttribute("alt");
				
				if(tt == null){
					
					tt = document.createElement('div');
					tt.setAttribute('id',id);
					t = document.createElement('div');
					t.setAttribute('id',id + 'top');
					c = document.createElement('div');
					c.setAttribute('id',id + 'cont');
					b = document.createElement('div');
					b.setAttribute('id',id + 'bot');
					tt.appendChild(t);
					tt.appendChild(c);
					tt.appendChild(b);
					document.body.appendChild(tt);
					t.style.display = 'none';
					
				}
				this.pos(obj);
				tt.style.display = 'block';
				t.style.display = 'block';
				c.innerHTML = v;
				tt.style.width = w ? w + 'px' : 'auto';
				if(!w && ie){
					t.style.display = 'none';
					b.style.display = 'none';
					tt.style.width = tt.offsetWidth;
					t.style.display = 'block';
					b.style.display = 'block';
				}
				if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
				h = parseInt(tt.offsetHeight) + top;	
								
				if(extend!=undefined && extend==1){								
					tt.onmouseover=new Function("document.getElementById('tt').style.display = 'block';");
					tt.onmouseout=new Function("document.getElementById('tt').style.display = 'none';");					
				}else{
					tt.onmouseover = "";				
					tt.onmouseout = "";
				}
			},
			
			pos:function(e){			
				e=$(e); //Some weird ie bug fix
				var u = e.getPosition().y;
				var l = e.getPosition().x;
				tt.style.top = (u + top + e.offsetHeight) + 'px';
				tt.style.left = (l) + 'px';
			},			
			hide:function(){				
				if($("tt")!=undefined)
					tt.style.display = 'none'	
			}
		};
	}();
