////////////LIST EDITING/////////////////////

function itemDialog(obj, type, itemName, id) {
	document.getElementById(type + '_dialog').style.display = 'block';
	document.getElementById(type + '_id').value = id;
	if (type == 'move') { 
		document.getElementById(type + '_name').innerHTML = itemName;
	} else if (type == 'merge') { 
		document.getElementById(type + '_name').innerHTML = itemName;
		document.getElementById(type + '_newname').value = itemName;
	} else if (type == 'new') { 
		document.getElementById(type + '_newname').value = itemName;
	}
	obj.parentNode.insertBefore(document.getElementById(type + '_dialog'), obj);
	document.getElementById(type + '_dialog').style.left = obj.offsetLeft - 150 + 'px';
	document.getElementById(type + '_dialog').style.top = obj.offsetTop - 70 + 'px';
}
function move_item() {
	move_to = document.getElementById('move_to').value;
	move_id = document.getElementById('move_id').value; 
	move_to_row = document.getElementById('itemRow_' + move_to);
	movedItem = document.getElementById('itemRow_' + move_id);
	
	if (move_to_row) {
		var move_to_list = getSubs(move_to_row);
		if (!move_to_list) { move_to_list = createSubList(move_to_row); }
		move_to_list.appendChild(movedItem);
	} else {
		document.getElementById('TopList').appendChild(movedItem);	
	}
	
	parents[move_id]['parent_id'] = move_to;
	//document.getElementById('newOrder').value = convertParentChildsToStr(parents);
	document.getElementById('updatePair').value = move_id + ':' + move_to;
	cProcess.processForm('itemForm', 'Moving Practice Area');
	
	ToggleSimple('move_dialog');
}
function merge_item() {
	merge_to = document.getElementById('merge_to').value;
	merge_id = document.getElementById('merge_id').value; 
	merge_to_row = document.getElementById('itemRow_' + merge_to); 
	mergedItem = document.getElementById('itemRow_' + merge_id);
	new_name = document.getElementById('merge_newname').value;
	
	if (merge_to_row) { } else { return false; }
	
	var mergedList = getSubs(mergedItem);
	var merge_to_list = getSubs(merge_to_row);
	if (merge_to_list) { //sublist you are merging to exists
		if (mergedList) { //sublist you are merging from exists
			lis = mergedList.getElementsByTagName('li');
			for(i=0; i<lis.length; i++) {
				if (lis[i] && lis[i].parentNode == mergedList) {
					merge_to_list.appendChild(lis[i]);
				}
			}
		}
	} else { //sublist you are merging to does not exist
		if (mergedList) { //sublist you are merging from exists, just copy it as the new list
			merge_to_row.appendChild(mergedList);
		}
	}
	
	parents = UpdateParentChilds(merge_id, merge_to, parents);	
	document.getElementById('itemName_'+merge_to).innerHTML = new_name;
	parents[merge_to]['name'] = new_name;
	
	document.getElementById('mergePair').value = merge_id + ':' + merge_to + ':' + new_name;
	cProcess.processForm('itemForm', 'Merging Practice Area');
	
	mergedItem.parentNode.removeChild(mergedItem);
	
}
function new_item() {
	document.getElementById('act').value = 'new';
	cProcess.processForm('itemForm', 'Moving Item');
	ToggleSimple('new_dialog');
}
function new_itemAdd(new_name, new_to, new_id, innerObj) {
	newItem = document.createElement('li');
	newItem.className = 'itemLi';
	newItem.setAttribute('id', 'itemRow_'+new_id); 
	newItem.innerHTML = innerObj.innerHTML;
	
	move_to_row = document.getElementById('itemRow_' + new_to);
	if (move_to_row) {
		var move_to_list = getSubs(move_to_row);
		if (!move_to_list) { move_to_list = createSubList(move_to_row); }
		move_to_list.appendChild(newItem);
	} else {
		document.getElementById('TopList').appendChild(newItem);		
	}
	
	if (parents[new_id]) { } else { parents[new_id] = new Array(); }
	parents[new_id]['parent_id'] = new_to;
}
function RemoveItem(id) {
	if (confirm('Are you sure you want to delete this item?  This will also delete any items that are a sub-item of this item.  This action is not undo-able.')) {
		Item = document.getElementById('itemRow_'+id);
		Item.parentNode.removeChild(Item);
		cProcess.process('process/updatePracticeAreas.php?remove='+id, 'Deleting Item');
	}
}

function getSubs(listItem) {
	var subList;
	uls = listItem.getElementsByTagName('ul');
	for(i=0; i<uls.length; i++) {
		if (uls[i] && uls[i].className == 'editList') {
			subList = uls[i];	break;
		}
	}
	return subList;
}
function createSubList(parentObj) {
	newList = document.createElement('ul');
	parentObj.appendChild(newList);
	newList.className = 'editList';
	return newList;
}
function UpdateParentChilds(changeFrom, changeTo, array) {
	for(key in array) {
		if (array[key]['parent_id'] == changeFrom) { array[key]['parent_id'] = changeTo; }
	}
	return array;
}
function convertParentChildsToStr(array) {
	var str = '';
	var addTag = '';
	for(id in array) {
		str += 	addTag + id + ':' + array[id]['parent_id'];
		addTag = '|';
	}
	return str;
}






var visArray = new Array();
var visImgs = new Array();
visImgs[0] = 'i/vis_0.png';
visImgs[1] = 'i/vis_1.png';
visImgs[2] = 'i/vis_2.png';
for (i=0; i < visImgs.length; i++) {
	var preload = new Image();
	preload.src = visImgs[i];
}
function saveVis(toggle, id, Var, VarStr, start) {
	arrayKey = id + '-' + Var;
	if (visArray[arrayKey] >= 0) { 
	
	} else {
		visArray[arrayKey] = start;	
	}
	status = visArray[arrayKey] + 1;
	if (status > 2) { status = 0; }
	visArray[arrayKey] = status;
	
	cProcess.process('process/vis/'+Var+'.php?'+VarStr+'&'+Var+'='+status, 'Saving Field Visibility: '+Var);
	img = toggle.getElementsByTagName('img');
	if (img[0]) { img[0].src = visImgs[status]; }
}


//////////////////////////////////////////////

if (document.getElementById('nav')) {
	tabs = document.getElementById('nav').getElementsByTagName('a');
	for(key in tabs) {
		if (tabs[key]) {
			if (String(tabs[key].id).length > 0) {
				tabs[key].onmouseover = ShowSubNav;
			}
		}
	}
	if (document.getElementById(page)) {
		//ShowSubNav(document.getElementById(page));
	} else {
		//ShowSubNav(document.getElementById('ceditor'));	
	}

}


function HighLightField(e) {
	targ = GetTarget(e);
	targ.className = 'highlight';
}
function UnHighLightField(e) {
	targ = GetTarget(e);
	targ.className = '';
}

var CurrentSub;
var CurrentTab;
function ShowSubNav(e) {
	targ = GetTarget(e);
	if (targ) { } else { targ = e; }
	subNav = targ.parentNode.getElementsByTagName('ul');
	if (CurrentSub) {
		CurrentSub.className = '';
		CurrentTab.className = 'tab_off';
	}
	if (subNav[0]) {
		subNav[0].className = 'show';
		CurrentTab = targ;
		CurrentSub = subNav[0];
		targ.className = 'tab_on';
	} else if (document.getElementById(page)) {
		targ.onmouseout = function() { ShowSubNav(document.getElementById(page)); }
	}
}

function GetTarget(e) {
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ) {
		if (targ.nodeType == 3) // defeat Safari bug
			targ = targ.parentNode;
	}
	return targ;
}


function Toggle(obj, id, noChange) {
	if (document.getElementById(id)) {
		if (document.getElementById(id).style.display == 'block') {
			document.getElementById(id).style.display = 'none';
			if (noChange) {} else { obj.innerHTML = 'expand'; }
		} else {
			document.getElementById(id).style.display = 'block';
			if (noChange) {} else { obj.innerHTML = 'close'; }
		}
	}
}
function ToggleLink(obj, id) {
	if (document.getElementById(id)) {
		if (document.getElementById(id).style.display == 'inline') {
			document.getElementById(id).style.display = 'none';
		} else {
			document.getElementById(id).style.display = 'inline';
			obj.style.display = 'none';
		}
	}
}
function ToggleSimple(id) {
	if (document.getElementById(id)) {
		if (document.getElementById(id).style.display == 'block') {
			document.getElementById(id).style.display = 'none';
		} else {
			document.getElementById(id).style.display = 'block';
		}
	}
}



function printR(varName) {
	document.getElementById('output').innerHTML = print_r(varName);	
}
function print_r(theObj){
  if(theObj.constructor == Array ||
     theObj.constructor == Object){
    output = "<ul>"
    for(var p in theObj){
      if(theObj[p].constructor == Array||
         theObj[p].constructor == Object){
output += "<li>["+p+"] => "+typeof(theObj)+"</li>";
        output += "<ul>"
        output += print_r(theObj[p]);
        output += "</ul>"
      } else {
output += "<li>["+p+"] => "+theObj[p]+"</li>";
      }
    }
    output += "</ul>"
  }
  return output;
}
function getElementsByClassName(oElm, strTagName, oClassNames){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var arrRegExpClassNames = new Array();
    if(typeof oClassNames == "object"){
        for(var i=0; i<oClassNames.length; i++){
            arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
        }
    }
    else{
        arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
    }
    var oElement;
    var bMatchesAll;
    for(var j=0; j<arrElements.length; j++){
        oElement = arrElements[j];
        bMatchesAll = true;
        for(var k=0; k<arrRegExpClassNames.length; k++){
            if(!arrRegExpClassNames[k].test(oElement.className)){
                bMatchesAll = false;
                break;                      
            }
        }
        if(bMatchesAll){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 
function RemoveObjById(id) {
	obj = document.getElementById(id);
	if (obj) {
		obj.parentNode.removeChild(obj);	
	}
}
function CheckRequired(formId) {
	var error = false;
	requiredFields = getElementsByClassName(document.getElementById(formId), 'div', 'required');
	for(i=0; i<requiredFields.length; i++) {
		if (requiredFields[i]) {
			inputs = requiredFields[i].getElementsByTagName('input');
			for(c=0; c<inputs.length; c++) {
				if (inputs[c]) {
					if ((inputs[c].value == null || inputs[c].value.length == 0)) {
						error = true;
						inputs[c].className = 'requiredEmpty';
					} else {
						inputs[c].className = 'requiredOkay';
					}
				}
			}
		}
	}
	if (error) { alert('Please complete the required fields that are in red'); } else {
		document.getElementById(formId).submit();	
	}
}
function ebi(id) {
	return document.getElementById(id);	
}
function WhatKey(e) {
	var code;
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	return code;
}

function changeVis(target, objId, start) {
	if (visArray[objId] >= 0) { 
	
	} else {
		visArray[objId] = start;	
	} 
	oldStatus = visArray[objId] * 1;
	status = visArray[objId] * 1 + 1;
	if (status > 2) { status = 0; }
	visArray[objId] = status;
	document.getElementById(objId).value = status
	img = target.getElementsByTagName('img');
	if (img[0]) { img[0].src = img[0].src.replace(new RegExp(visImgs[oldStatus]), visImgs[status]); }
}

function RemoveMember(id, gId) {
	if (confirm('Are you sure you want to remove this member from the group?')) {
		Item = document.getElementById('member_'+id);
		Item.parentNode.removeChild(Item);
		cProcess.process('process/removeGroupMember.php?m='+id+'&g='+gId, 'Removing Member from Group');
	}
}

function CheckCap(m) {
	cp = document.getElementById('cap').value;
	if (cp.length == 5) {
		document.location.href='edit_profile_request.php?m='+m+'&c=1&cap='+cp;
	} else {
		alert('Please enter the text: "bbTtd" into the box, this is a step to prevent spam in the directory');
	}
}


window.onload = function() {
	cProcess = new cProcess();
	if ($('searchField')) {
	//	$('searchField').focus();
	}
}
