var hasCSS;

// Fix IE ABBR bug
document.createElement('abbr');
//

addLoadEvent(init);

function init(){
	addListClassNames();
}

// protect the onload event
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
		} else {
		window.onload = function() {
		  oldonload();
		  func();
		}
	}
}

// cross browser event binding
// csAddEvent(obj,'mouseup',myFunctionName)
function csAttachEvent(obj,ev,fct){
	extEv='on'+ev;
	if(window.addEventListener){
		obj.addEventListener(ev, fct, false);
	}else if (window.attachEvent){
		obj.attachEvent(extEv, fct);
	}
}


// Add some classnames to list items
function addListClassNames() {
	if (document.getElementsByTagName) {
		var lists = document.getElementsByTagName('ul');
		for(i=0;i < lists.length;++i){
			sel = lists[i].getElementsByTagName('li');
			addClassName(sel[0],'first');
			addClassName(sel[sel.length-1],'last');
		}

		// implements zebra pattern for results-list;
		if (document.getElementById('result-list')) 
		{
			if (document.getElementById('result-list').getElementsByTagName('ol').length > 0) 
			{
				lists = document.getElementById('result-list').getElementsByTagName('ol')[0].getElementsByTagName('li');
				for (i=0;i < lists.length;++i) 
				{
					if (i % 2 == 0)
						addClassName(lists[i],'odd');
				}
			}
		}
	}
}

// Return next sibling element
// -- this may have some bugs to do with non-elmenentNode siblings
function getNextElementSibling(obj) {
	var	obj = obj.nextSibling;
	while (obj.nodeType != 1 && obj.nextSibling != 'null')
	{
		obj = obj.nextSibling;
	}
	var state = (obj.parentNode) ? obj.parentNode : false;
	return state;
}

// Find ancestor with specific className
function getAncestorWithClass(obj,targetClassName) {
	while (!containsClassName(obj.parentNode,targetClassName))
	{
		obj = obj.parentNode;
	}
	var state = (obj.parentNode) ? obj.parentNode : false;
	return state;
}

// Find ancestor with specific className
function getAncestorElement(obj,targetTagName) {
	while (obj.parentNode.tagName.toLowerCase() != targetTagName)
	{
		obj = obj.parentNode;
	}
	var state = (obj.parentNode) ? obj.parentNode : false;
	return state;
}

// Handle adding & removing classNames cleanly
function addClassName(obj,newClassName){
	if (containsClassName(obj,newClassName)==true)
		return;
	var CLname = (obj.className == '') ? newClassName : obj.className+' '+newClassName;
	obj.className = CLname;
}

function removeClassName(obj,ClassName){
	var vRegX=new RegExp('\s*' +ClassName+ '*\\b');
	obj.className = obj.className.replace(vRegX, '');
}

function containsClassName(obj,ClassName){
	var vRegX=new RegExp('\s*' +ClassName+ '*\\b');
	var state = (obj.className.search(vRegX) >= 0) ? true : false;
	return state;
}
/*
 * INIT Feature Image
 */
function initMainFeature(jsondata, target){
  if ($(target).length>0) {
    var queue = jsondata.features.length;
    setMainFeature(queue,$(target),jsondata.features[Math.floor(Math.random()*queue)]);
  }
}

/*
 * SET Feature Image
 */
function setMainFeature(queue,feature,item) {
  if(item){
    var $feature = $(feature);
    $feature.empty();
    var $image = $('<img src="'+item.image+'" alt="'+item.alt+'" title="'+item.alt+'" />');
    var $link = $('<a href="'+item.link+'"></a>');

    if(item.body==undefined || item.body==""){
      // feature image only
      $feature.append($image);
      if(item.link && item.link!="") $image.wrap($link);
    }
  }
}

$(document).ready(function(){
  // home feature rotation
  if(typeof mainFeaturesQueue  === 'object') {
    initMainFeature(mainFeaturesQueue,'#feature-main');
  }

});
