/* core javascript for Launch Pad 2.0 FW */

//remove unused elements from dom

// EDITABLE LIST OF ALL ELEMENTS TO BE REMOVED
var LB_elementsToRemove = { 
	"tags": ["li", "ul"],
	"ids": ["pre-content", "footer_banner", "footer_container"],
	"classes": ["img_rt", "img_left", "img_block", "title_block", "title_block_f"]
};

// DO NOT EDIT BELOW
function getElementsByClass(node,searchClass,tag) {
	var classElements = [];
	var els = node.getElementsByTagName(tag); // use "*" for all elements
	var elsLen = els.length;
	var pattern = new RegExp("\\b"+searchClass+"\\b");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
	  		classElements[j] = els[i];
	   		j++;
	    }
	}
	return classElements;
}

// test for emptyness
function isEmpty(el) {
	if(el){
		if(el.childNodes.length === 0){
			return true;
		} else
		if(!el.innerHTML.match(/\S/)){
			return true;
		}
		return false;
	}
	return false;
}

// remove the elements 
function removeIt(el, type) {
	
	var allEls = [],
	toRemove = "",
	r = "";
	
	if(type == "tag"){
		allEls = document.getElementsByTagName(el);
		var resultArray = [];
		
		for (var i=0;i<allEls.length;i++) {
			resultArray.push(allEls[i]);
		}
		
					
		for(j=0; j<resultArray.length; j++){
			toRemove = resultArray[j];
			if(isEmpty(toRemove)){
				r = toRemove;
				r.parentNode.removeChild(toRemove);
			}
		}
	} else
	
	if(type == "id"){
		toRemove = document.getElementById(el);
		
						
		if(isEmpty(toRemove)){
			
			r = toRemove;
			r.parentNode.removeChild(toRemove);
			
		}
	} else
	
	if(type == "class"){
		allEls = getElementsByClass(document,el,'*');
		for(i=0; i<allEls.length; i++){
			toRemove = allEls[i];
			if(isEmpty(toRemove)){
				r = toRemove;
				r.parentNode.removeChild(toRemove);
			}
		}
	}
}


// loop through elements object and call remove func
function removeElements(){
	for (var key in LB_elementsToRemove){
		if(LB_elementsToRemove.hasOwnProperty(key)){
			var type = "";
			if(key == "tags"){ type = "tag"; }
			else if(key == "ids"){ type = "id"; }
			else if(key == "classes"){ type = "class"; }
			var obj = LB_elementsToRemove[key];
			for (var element in obj){
				if(obj.hasOwnProperty(element)){
					removeIt(obj[element], type);
				}
			}			
		}
	}
}

				
// onload / document ready

function fw_init() {
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	// do this on init
	removeElements();
}

if (document.addEventListener) {
	document.addEventListener('DOMContentLoaded', fw_init, false);
}
(function() {
	/*@cc_on
	try {
		document.body.doScroll('up');
		return fw_init();
	} catch(e) {}
	/*@if (false) @*/
	if (/loaded|complete/.test(document.readyState)) return fw_init();
	/*@end @*/
	if (!fw_init.done) setTimeout(arguments.callee, 30);
})();

if (window.addEventListener) {
	window.addEventListener('load', fw_init, false);
} else if (window.attachEvent) {
	window.attachEvent('onload', fw_init);
}
