/**
 *
 * ADD DROP DOWN MENUS TO MAIN MENU
 *
 */
function nav_menus(){


	/**
	 *
	 * MAIN MENU SUBMENUS
	 *
	 */
	(function() {
		var menu;
		var timeout;
		var last_id;
		var last_class;
		var tabs = ['ac','heating','electrical','account','appliances'];
			function mouseover(e) {
				
				/** clear timeout **/
				clearTimeout(timeout);

				/** close previously opened menu and change tab back **/
				try{
					YAHOO.util.Dom.setStyle(eGet(last_id).getElementsByTagName('div')[0], 'display', 'none');
					eGet(last_id).className = eGet(last_id).className.replace(/over/g,last_class);
				}catch(e){}

				/** grab menu object **/
				menu = this.getElementsByTagName('div')[0];

				/** determine if tab is on or off **/
				last_class = this.className == 'on drop-on' ? 'on' : 'off';

				/** change tab **/
				this.className = this.className.replace(new RegExp(last_class, "g"), 'over');

				/** show sub menu **/
				YAHOO.util.Dom.setStyle(menu, 'display', 'block');
			};

			function mouseout(e) {

				/** cleartimeout **/
				clearTimeout(timeout);

				/** grab menu object **/
				menu = this.getElementsByTagName('div')[0];

				/** hide menu after timeout **/
				timeout = setTimeout(function(){YAHOO.util.Dom.setStyle(menu, 'display', 'none'); eGet(last_id).className = eGet(last_id).className.replace(/over/g,last_class); },500);

				/** set id of this object for later use **/
				last_id = this.id;

			};
			/** add event listeners to tabs **/
			for(i in tabs){
				YAHOO.util.Event.addListener(eGet(tabs[i]+'_tab'), 'mouseover', mouseover);
				YAHOO.util.Event.addListener(eGet(tabs[i]+'_tab'), 'mouseout', mouseout);
			}
	})();


}

	/**
	 *
	 * Slideshow
	 *
	 */
	var timing_home = [0,4,4,4,4,4];
	var to_tab_home1;
	var to_tab_home2;
	var to_tab_home3;
	var to_tab_home4;
	var fadedur;
	var num;
	function slide(num,name,fadedur){

		YAHOO.util.Dom.setStyle("slide-home-" + num, 'zIndex', 1);
		//alert(eGet("slide-home-" + num).id + ' = ' + YAHOO.util.Dom.getStyle("slide-home-" + num, 'zIndex'));

		var myAnim = new YAHOO.util.Anim(name+num, { opacity: { to: 0 } }, fadedur, YAHOO.util.Easing.easeIn);
		myAnim.animate();

		to_tab_home2 = setTimeout('new slide_next('+num+',\''+name+'\','+fadedur+')', 100);

	}

	function slide_next(num,name,fadedur){

		var num = parseInt(num+1);
		if(num >= timing_home.length) num = 1;

		var myAnim = new YAHOO.util.Anim(name+num, { opacity: { to: 1 } }, fadedur, YAHOO.util.Easing.easeOut);
		myAnim.animate();


		var tab = eGet("tab-home-" + num);
		var slide = eGet("slide-home-" + num);
		to_tab_home3 = setTimeout('new tabs_off("home", "tab-home-")', 395);
		to_tab_home4 = setTimeout('new eGet("tab-home-'+num+'").className = eGet("tab-home-'+num+'").className + " on"', 400);
		to_tab_home1 = setTimeout('new slide('+num+',\''+name+'\','+fadedur+')', timing_home[num] * 1000);

		for (var t = 1; t <= 5; t++){YAHOO.util.Dom.setStyle(eGet('slide-home-'+t), 'zIndex', 1);}
		YAHOO.util.Dom.setStyle(slide, 'zIndex', 5);
		//alert(slide.id + ' = ' + YAHOO.util.Dom.getStyle(slide, 'zIndex'));

	}

	function tabs_off(local, tab_name){

		switch(local){

			case "home":

				for (var t = 1; t <= 5; t++)
				{
					tab = eGet(tab_name + t);
					tab.className = tab.className.replace(" on", "");
					/** change z-index of slides too **/
					//eGet('slide-home-' + t).style.zIndex = 1;
				}

			break;

		}

	}

	/**
	 *
	 * HOME TABS
	 *
	 */
	function tabs_home() {
		var slides = [];
		var num;
		var numchk;

		function mouseover_tab_home(e) {

			/** find out number of element **/
			var ele = YAHOO.util.Event.getTarget(e);	
			while (ele.id != "tabs") {
				if(ele.nodeName.toUpperCase() == "LI") {
					break;
				} else {
					ele = ele.parentNode;
				}
			}

			var fact = ele.id.indexOf("slide-home-") == -1 ? "tab-home-" : "slide-home-";
			if(fact == "slide-home-"){

				for (i = 1; i <= 5; i++){if(YAHOO.util.Dom.getStyle(eGet(fact+i), 'zIndex') > 1) num = parseInt(i);}

			}else{
			
				num = parseInt(ele.id.replace(fact, ""));

			}

			try{

				/** clear all timeouts **/
				clearTimeout(to_tab_home1);
				clearTimeout(to_tab_home2);
				clearTimeout(to_tab_home3);
				clearTimeout(to_tab_home4);
				/** show this tab and this div **/
				YAHOO.util.Dom.setStyle(slides, 'opacity', 0);
				YAHOO.util.Dom.setStyle("slide-home-"+num, 'opacity', 1);
				tabs_off("home", "tab-home-");
				eGet("tab-home-"+num).className = eGet("tab-home-"+num).className + " on";
				/** set zIndex for this, and change last **/
				for (var t = 1; t <= 5; t++){YAHOO.util.Dom.setStyle(eGet('slide-home-'+t), 'zIndex', 1);}
				YAHOO.util.Dom.setStyle(eGet('slide-home-'+num), 'zIndex',5)

			}catch(e){}

			
		};

		function mouseout_tab_home(e) {

			/** find out number of current element **/
			//alert(YAHOO.util.Event.getRelatedTarget(e).className);
			var ele2 = YAHOO.util.Event.getRelatedTarget(e);
			var num2 = 0;
			while (ele2.nodeName.toUpperCase() != "BODY") {
				if(ele2.nodeName.toUpperCase() == "LI") {
					num2 = parseInt(ele2.id.replace("tab-home-", ""));
					break;
				} else {
					ele2 = ele2.parentNode;
				}
			}

			/** find out number of previous element **/
			var ele = YAHOO.util.Event.getTarget(e);
			while (ele.nodeName.toUpperCase() != "LI") {
				if(ele.className == "tabs") {
					break;
				} else {
					ele = ele.parentNode;
				}
			}

			/** reset based on tab or slide that was hovered **/
			var fact = ele.id.indexOf("slide-home-") == -1 ? "tab-home-" : "slide-home-";
			if(fact == "slide-home-"){

				/** kick start with slide_next based on the next number **/
				var myAnim = new YAHOO.util.Anim("slide-home-"+num, { opacity: { to: 0 } }, fadedur, YAHOO.util.Easing.easeIn);
				to_tab_home1 = setTimeout(function(){myAnim.animate();}, 1200);

				to_tab_home2 = setTimeout('new slide_next('+num+',\'slide-home-\','+fadedur+')', 1200);

			}else{

				/** find out number of element **/
				if (num2 == 0)
				{

					/** kick start with slide_next based on the next number **/
					var myAnim = new YAHOO.util.Anim("slide-home-"+num, { opacity: { to: 0 } }, fadedur, YAHOO.util.Easing.easeIn);
					to_tab_home1 = setTimeout(function(){myAnim.animate();}, 1200);

					to_tab_home2 = setTimeout('new slide_next('+num+',\'slide-home-\','+fadedur+')', 1200);

				}

			}

		};
		/** add event listeners to tabs **/
		for (var t = 1; t <= 5; t++){
			YAHOO.util.Event.addListener(eGet('tab-home-'+t), 'mouseover', mouseover_tab_home);
			YAHOO.util.Event.addListener(eGet('slide-home-'+t), 'mouseover', mouseover_tab_home);
			YAHOO.util.Event.addListener(eGet('tab-home-'+t), 'mouseout', mouseout_tab_home);
			YAHOO.util.Event.addListener(eGet('slide-home-'+t), 'mouseout', mouseout_tab_home);
			slides.push('slide-home-'+t);
		}
	};


function findAndReplace(searchText, replacement, searchNode) {
    if (!searchText || typeof replacement === 'undefined') {
        // Throw error here if you want...
        return;
    }
    var regex = typeof searchText === 'string' ?
                new RegExp(searchText, 'g') : searchText,
        childNodes = (searchNode || document.body).childNodes,
        cnLength = childNodes.length,
        excludes = 'html,head,style,title,link,meta,script,object,iframe';
    while (cnLength--) {
        var currentNode = childNodes[cnLength];
        if (currentNode.nodeType === 1 &&
            (excludes + ',').indexOf(currentNode.nodeName.toLowerCase() + ',') === -1) {
            arguments.callee(searchText, replacement, currentNode);
        }
        if (currentNode.nodeType !== 3 || !regex.test(currentNode.data) ) {
            continue;
        }
        var parent = currentNode.parentNode,
            frag = (function(){
                var html = currentNode.data.replace(regex, replacement),
                    wrap = document.createElement('div'),
                    frag = document.createDocumentFragment();
                wrap.innerHTML = html;
                while (wrap.firstChild) {
                    frag.appendChild(wrap.firstChild);
                }
                return frag;
            })();
        parent.insertBefore(frag, currentNode);
        parent.removeChild(currentNode);
    }
}


/*--------------------------------------------------------------------------------------------*/


/**
 *
 * Ajax POST
 *
 *	var ajax_url = 'urlwithoptions';
 *	eGet('content_'+id).innerHTML = '<img src="'+siteRoot+'design/ajax-loader-large.gif" /> Updating...';
 *	var ajax = new ajax('content_'+id, siteRoot);
 *	ajax.update('content_'+id, ajax_url, 'POST');
 */
function ajax(layer, url, callbackFunction) {
  var that=this;      
  this.updating = false;
  this.abort = function() {
    if (that.updating) {
      that.updating=false;
      that.AJAX.abort();
      that.AJAX=null;
    }
  }
  this.update = function(layer, passData,postMethod) { 
    if (that.updating) { return false; }
    that.AJAX = null;                          
    if (window.XMLHttpRequest) {              
      that.AJAX=new XMLHttpRequest();              
    } else {                                  
      that.AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }                                             
    if (that.AJAX==null) {                             
      return false;                               
    } else {
      that.AJAX.onreadystatechange = function() {  
        if (that.AJAX.readyState==4 || that.AJAX.readyState=="complete") {             
          LayerID.innerHTML=that.AJAX.responseText;                  //   It is, so put the new data in the object's layer
          that.updating=false;                
          that.callback(that.AJAX.responseText,that.AJAX.status,that.AJAX.responseXML);        
          that.AJAX=null;                                         
        }                                                      
      }                                                        
      that.updating = new Date();                              
      if (/post/i.test(postMethod)) {
        var uri=urlCall+'?'+that.updating.getTime();
        that.AJAX.open("POST", uri, true);
        that.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        that.AJAX.setRequestHeader("Content-Length", passData.length);
        that.AJAX.send(passData);
      } else {
        var uri=urlCall+'?'+passData+'&timestamp='+(that.updating.getTime()); 
        that.AJAX.open("GET", uri, true);                             
        that.AJAX.send(null);                                         
      }              
      return true;                                             
    }                                                                           
  }
  LayerID = eGet(layer);                     // Remember the layer associated with this object.
  var urlCall = url;        
  this.callback = callbackFunction || function () { };
}

/**
 *
 * SHORTCUT TO GET ELEMENT
 *
 */
function eGet(element){return document.getElementById(element);}

/**
 *
 * Show Div
 *
 */
function showDiv(element){
	try{eGet(element).style.display = 'block';}catch(e){}
}

/**
 *
 * Hide Div
 *
 */
function hideDiv(element,delay){
	if(delay > 0){
		setTimeout('try{eGet(\''+element+'\').style.display = \'none\';}catch (e) {}',delay);
	}else{
		try{eGet(element).style.display = 'none';}catch (e) {}
	}
}




/**
 *
 * Validate Forms
 *
 */
function validate_form_side(){

	if(eGet('name').value.length == 0 || (eGet('phone1').value.length == 0 && eGet('email').value.length == 0)){

		alert('Please enter your name and either phone number or email address');
		return false;


	}else if(eGet('category').options[eGet('category').selectedIndex].value == 'Select' || eGet('service').options[eGet('service').selectedIndex].value == 'Select'){

		alert('Please select the category and service type for your message');
		return false;

	}

}

function validate_form_bottom(){

	if(eGet('name-bot').value.length == 0 || ((eGet('phone1-bot').value.length == 0 && eGet('phone2-bot').value.length == 0) && eGet('email-bot').value.length == 0)){

		alert('Please enter your name and either phone number or email address');
		return false;

	}else if(eGet('category-bot').options[eGet('category-bot').selectedIndex].value == 'Select' || eGet('service-bot').options[eGet('service-bot').selectedIndex].value == 'Select'){

		alert('Please select the category and service type for your message');
		return false;

	}

}





function validate_form_side_appliances(){

	if(eGet('name').value.length == 0 || eGet('type').value.length == 0 || eGet('manu').options[eGet('manu').selectedIndex].value.length == 0 || (eGet('phone1').value.length == 0 && eGet('email').value.length == 0)){

		alert('Please enter your name, type of appliance, preferred manufacturer, and either phone number or email address');
		return false;

	}

}
function validate_form_bottom_appliances(){

	if(eGet('name-bot').value.length == 0 || eGet('type-bot').value.length == 0 || eGet('manu-bot').options[eGet('manu-bot').selectedIndex].value.length == 0 || (eGet('phone1-bot').value.length == 0 && eGet('email-bot').value.length == 0)){

		alert('Please enter your name, type of appliance, preferred manufacturer, and either phone number or email address');
		return false;

	}

}



function validate_form_side_commercial(){

	if(eGet('company').value.length == 0 || eGet('phone1').value.length == 0){

		alert('Please enter your company name and phone number');
		return false;

	}

}
function validate_form_bottom_commercial(){

	if(eGet('company-bot').value.length == 0 || eGet('phone1-bot').value.length == 0){

		alert('Please enter your company name and phone number');
		return false;

	}

}


function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
	var pair = vars[i].split("=");
	if (pair[0] == variable) {
		return pair[1];
	}
  }
}



onload = function(){
	if(getQueryVariable('email') == 'y'){
		findAndReplace("\\(?\\d{3}\\)?[^\\d]+\\d{3}[^\\d]+\\d{4}", "(888) 797-3591");

	var o = document.links;
    var query = document.location.search;
        for(var i=0;i<o.length;i++){
            o[i].href = o[i].href+"?email=y";
        }

	
	}
}

