// JavaScript Document
// Author: Digitaria
// Description: Add Mucnhkin Functions
// Date: June 2008
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}
var munchkinIds=new Array();

function appendMunchkinIds(el, appendStr) {
	allEls=el.getElementsByTagName('*');
	if ((typeof allEls == "undefined") || (allEls==null)) {
		alert("No elements found in appendMunchkinIds for "+el.id);
		return false;
	}
	// Process the children
	for (i=0; i<allEls.length; i++) {
		if ( (typeof allEls[i].id != "undefined") && (allEls[i].id != null) && (allEls[i].id!="") ) {
			allEls[i].id=allEls[i].id.toString()+appendStr;
		}
		if ( (typeof allEls[i].htmlFor != "undefined") && (allEls[i].htmlFor != null) && (allEls[i].htmlFor!="") ) {
			allEls[i].htmlFor=allEls[i].htmlFor.toString()+appendStr;
		}
		if ( (typeof allEls[i].name != "undefined") && (allEls[i].name != null) && (allEls[i].name!="") ) {
			allEls[i].name=allEls[i].name.toString()+appendStr;
		}
	}
	
	// Process the node itself
	if ( (typeof el.id != "undefined") && (el.id != null) && (el.id!="") ) {
		el.id=el.id.toString()+appendStr;
	}
}
function getMunchkinAryPos(munchkinId) {
	munchkinAryPos=0;
	found=false;
	while (munchkinAryPos<munchkinIds.length && !found) {
		if (munchkinIds[munchkinAryPos]==munchkinId) {
			return munchkinAryPos;
		}
		munchkinAryPos++;
	}
}

function aryRemove(ary, pos) {
	if (pos==0) {
		ary.shift(); // Delete item from front
		return ary;
	} else if (pos==ary.length-1) {
		ary.pop(); // Delete item from end
		return ary;
	} else {
		aryStart=ary.slice(0, pos);
		aryEnd=ary.slice(pos+1);
		return aryStart.concat(aryEnd);
	}
}

function normalizeHeaderNumbers() {
	
	allH3s=document.getElementById('addMunchkinContainer').getElementsByTagName('h3');
	if ((typeof allH3s != "undefined") && (allH3s!=null)) {
		count=0;
		for (i=0; i<allH3s.length; i++) {
			count++;
			allH3s[i].innerHTML="Munchkin #"+count;
		}
	}
}

function addMunchkin() {
	if(document.getElementById('myMunchkinRow')) {
		if (munchkinIds.length==0) {
			munchkinIds[0]=0;
		} else {
			munchkinIds[munchkinIds.length]=munchkinIds[munchkinIds.length-1]+1;
		}
		
		newId=munchkinIds[munchkinIds.length-1];
		newNode=document.getElementById('myMunchkinRow').cloneNode(true);
		appendMunchkinIds(newNode, "_"+newId);
		
		document.getElementById('addMunchkinContainer').appendChild(newNode);
		
		//Modify Headers
//		var header = document.getElementById('munchkinHdr');
//		var frontId = munchkinIds.length+1;
//		header.innerHTML = 'Munchkin #' + frontId;
		
		removeBtn=document.getElementById("munchkin_remove_"+newId);
		removeBtn.parentMunchkin=document.getElementById("myMunchkinRow_"+newId);
		removeBtn.onclick=function() {
			removeMunchkin(this.parentMunchkin);
			return false;
		}
		normalizeHeaderNumbers();
		
	}
}
function removeMunchkin(elementRef) {
	if (munchkinIds.length==1) {
		alert("You must have at least one Munchkin.");
		return;
	}
	
	munchkinId=parseInt(elementRef.id.toString().substring(elementRef.id.toString().lastIndexOf("_")+1));
	
	munchkinAryPos=getMunchkinAryPos(munchkinId);
	munchkinIds=aryRemove(munchkinIds, munchkinAryPos);
	
	elementRef.parentNode.removeChild(elementRef);
	normalizeHeaderNumbers();
}
function phpAddMunchkin(el) {
		munchkinIds.push(el)
}
function phpRemoveMunchkin(elementRef) {
	if (munchkinIds.length==1) {
		alert("You must have at least one Munchkin.");
		return;
	}
	
	munchkinId=parseInt(elementRef.id.toString().substring(elementRef.id.toString().lastIndexOf("_")+1));
	
	munchkinAryPos=getMunchkinAryPos(munchkinId);
	munchkinIds=aryRemove(munchkinIds, munchkinAryPos);
	
	elementRef.parentNode.removeChild(elementRef);
	normalizeHeaderNumbers();
}
function initaddMunchkin() {
	if (document.getElementById("addAnother")) {
		document.getElementById("addAnother").onclick=function() {
			addMunchkin();
			return false;
		} 
	addMunchkin();
	}
}
