function toggle(obj) {
	var el = document.getElementById(obj);
	
	if ( el.style.display != 'none' ) {
		el.style.display = 'none';
	}
	else {
		el.style.display = 'block';
	}

}


function hide(obj) {
	var el = document.getElementById(obj);
	el.style.display = 'none';
	}

function activateDropdown(currD, nextD) {
	var current = document.getElementById(currD);
	var next = document.getElementById(nextD);
	current.style.display = 'none';
}

function changeMlPage() {
	toggle('mlContent'); toggle('ml2Content');
}

function next(el) {
	do {
		el = el.nextSibling;
	} while (el && el.nodeType != 1);
	return el;
}

function clickclear(thisfield, defaulttext) {
	if (thisfield.value == defaulttext) {
		thisfield.value = "";
	}
}
function clickrecall(thisfield, defaulttext) {
	if (thisfield.value == "") {
		thisfield.value = defaulttext;
	}
}
function performMLSupportSearch(e) { 
	e = e || window.event;
	var unicode=e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
	if (unicode == 13){
		return submitMLSupportSearch();
	}
}
function clearSearchBox(){ 
	var sb = document.getElementById('searchModelKeyword');
	var val = sb.value; 
	sb.blur();
	if (val != ''){
		sb.value = val;
	}	
 
 }
function submitMLSupportSearch() {
	var sTerm = document.mlSearchbarform.Ntt.value
	sTerm = sTerm.replace(/^\s+|\s+$/g, '');
	document.mlSearchbarform.Ntt.value = sTerm;
	if (sTerm == "" || sTerm == "enter your model # or keyword") {
		alert('Please enter a search term and try your search again.');
		return false;
	}
	document.mlSearchbarform.submit();
}

function openwindow(url,w,h) {
	window.open(url,"mywindow","location=0,menubar=0,resizable=0, scrollbar=0, width="+w+",height="+h+"");
}

// Manage select-box creation - both during and dynamically after page load.
var SelectManager = (function(){
	var element = "";
	var page = "";
	var limit = {'contact-email':8,'contact-service':8,'supplies':8} // max number of spawned dds - not strictly required any more so set them high
	var cssClass = {'contact-email':'contactColFullWidth','contact-service':'dynamicServiceSelectBox','supplies':'dynamicServiceSelectBox'}
	var _o={};
	createDynamic = function(){
		destroy();
		var id;
		if($(_o.dynamic.previous).getElement('select').value == "0"){return;} 
		_o.level==limit[page] ? _o.level = 0 : 0;
		_o.level!=0 ? id = _o.id+''+_o.level:id=_o.id;
		createHTMLWrapper(_o.dynamic,id); // build and inject a wrapper to hold the results from the AJAX call...
		
	};
	createHTMLWrapper = function(d,id){
		element = new Element('div');
		element.addClass(cssClass[page]);
		element.addClass('inputBox');
		element.style.zIndex = 1;
		element.id = id;
		element.inject($(d.previous),'after');
		var isAnAjaxCall = $(d.previous).getElement('select').onchange.toString().search('ajaxSubCategoryFetch');
		// needs some explanation this line below
		// the correct call to load AJAX is written into the markup which is itself returned from an AJAX call - 
		// we need to call the handler attached to the onchange event on the previous dropdown's select element 
		// also, if the onchange is NOT an AJAX call the process of injecting a div needs to be reversed... 
		if($(d.previous).getElement('select').onchange && isAnAjaxCall != -1){
			eval($(d.previous).getElement('select').onchange());
		}
		else{
			eval($(d.previous).getElement('select').onchange());
			$(element.id).remove();
		}
		//ajaxSubCategoryFetch('/webapp/wcs/stores/servlet/vSupportCategory',$(d.previous).getElement('select'),'subCatTopDiv',0);
	};
	createSelect = function(){new CustomSelect(_o.id,_o.text,_o.level);}
	destroy = function(){ 
		// remove previously made Select boxes...must be done if user selects from an earlier dd 
		//(it shows user wants to start again on the dd user journey)
		if ($(_o.id)) { //there could be a dd with no level attached to the id. This is when a dd has a level value of '0' - usually the last in a list of dds
				//$(_o.id).remove();
			}
		for(var i=(_o.level);i<=limit[page];i++){	
			if ($(_o.id + '' + i)) {
				$(_o.id + '' + i).remove();
			}else{break;}		
		}
	};
	return{
		create:function(o){
			_o = o;
			_o.isDynamic ? createDynamic() : createSelect();		
			return SelectManager;
		},
		setPage:function(pge){
			page = pge;
		},
		callback:function(markup){
			element.innerHTML = markup;
			createSelect();
		}
	}
})(); 

var Overlay = (function(){
	var offSetX = 50;
	var offSetY = 30;
	var lock = false;
	var overlaylock = false;
		isIE = function(){
			if(navigator.appName == "Microsoft Internet Explorer"){return true;}
			return false;
		};
		addSomeEvents = function(parent){
			$(parent).getElements('td').each(function(td){
				parentDiv = $(td).getElement('div');
				if(parentDiv){
					$(parentDiv).getElements('a').each(function(el){
						if(el.getParent() == parentDiv){
							el.addEvent('mouseover',function(el){Overlay.mouseOverHandler(el);});
							el.addEvent('mouseout',function(el){Overlay.mouseOutHandler(el);});
							setUpOverlay(el);
						}
					})
				}
			})
		};
		setUpOverlay = function(el){
			var d = new Element('div');
			
			d.addClass('techPopWrapper');
			
			d.style.zIndex = 999;
			var dv = el.getParent();
			var pnt = dv.getParent();
			var img = $(el).getNext();
			var overlay = $(img).getNext();
			$(overlay).remove();
			d.appendChild(overlay);
			d.inject($(el),'after');
			ul = d.getElement('ul');
			$(ul).addEvent('mouseover',function(e){
				!isIE() ? el = e.target : el = e.srcElement;
				$(el).hasClass('techPop')?Overlay.mouseOverOverlayHandler(e):0;	
			});
			
			$(ul).addEvent('mouseout',function(e){
				!isIE() ? el = e.target : el = e.srcElement;
				$(el).hasClass('techPop')?Overlay.mouseOutOverlayHandler(e):0;
			});
			$(img).remove();
		};
		findPosX = function(obj){
			var curleft = 0;
			if(obj.offsetParent)
				while(1) 
				{
				  curleft += obj.offsetLeft;
				  if(!obj.offsetParent)
					break;
				  obj = obj.offsetParent;
				}
			else if(obj.x)
				curleft += obj.x;
			return curleft;
		 };
		 findPosY = function(obj){
			var curtop = 0;
			if(obj.offsetParent)
				while(1)
				{
				  curtop += obj.offsetTop;
				  if(!obj.offsetParent)
					break;
				  obj = obj.offsetParent;
				}
			else if(obj.y)
				curtop += obj.y;
			return curtop;
		  };
		return{
			mouseOverOverlayHandler:function(e){
				!isIE() ? el = e.target : el = e.srcElement;
				if(!overlaylock){
					el.getParent().getParent().style.zIndex = 100;
				overlaylock = true;}			
			},
			mouseOutOverlayHandler:function(e){
			
				if (!e) var e = window.event;
				var tg = (window.event) ? e.srcElement : e.target;
				if (tg.nodeName != 'UL') return;
				var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
				while (reltg != tg && reltg.nodeName != 'BODY')
					reltg= reltg.parentNode
				if (reltg== tg) return;
				var div = tg.getParent();
				div.getParent().getParent().style.zIndex = 99;
				if(div.style.visibility == 'visible'){
					if(overlaylock){
						div.style.visibility = 'hidden'; 
						overlaylock = false;
						lock=false;
					}
				}		
			},
			mouseOverHandler:function(e){
				if(!lock){
					lock = true;
					var a,left,top;					
					if(!isIE()){
						a = e.target;
						var cX = findPosX(a);
						var cY = findPosY(a);
						var divX = findPosX(a.getParent());
						var divY = findPosY(a.getParent());
						left = ((cX - divX) + offSetX);
						top = ((cY - divY)-offSetY);
					}
					else{
						a = e.srcElement;
						var gbCR = a.getBoundingClientRect();
						var cX = gbCR.left;
						var cY = gbCR.top;
						var gbCR = a.getParent().getBoundingClientRect();
						var divX = gbCR.left;
						var divY = gbCR.top;
						left = ((cX - divX) + offSetX);
						top = ((cY - divY)-offSetY);
					}
					a.getParent().getParent().style.zIndex = 100;
					var thisOverlay = $(a).getNext();
					thisOverlay.style.left = ((cX - divX) + offSetX) +'px';
					thisOverlay.style.top = ((cY - divY)-offSetY) +'px';
					thisOverlay.style.visibility = 'visible';
				}
				
			},
			mouseOutHandler:function(e){
				var a;
				!isIE() ? a = e.target : a = e.srcElement;
				var thisOverlay = $(a).getNext();
				
				if(thisOverlay.style.visibility == 'visible'){(function(){ if(!overlaylock){
					a.getParent().getParent().style.zIndex = 99;
					thisOverlay.style.visibility = 'hidden'; 
					lock = false;
				}}).delay(500);}
			},
			setup:function(el){
				$('techspecs') ? addSomeEvents(el) : 0;				
			}
		}
	})();



