// This function iterates through the text, textarea, password, and file fields on a form
// and sets the focus to the first one if it is empty.
function setInitialFocus() {
	var initialFocusElement=null;
	if (typeof document.forms[0] != 'undefined' && document.forms[0] != null) {
 		var elementCount=document.forms[0].elements.length;
   	for (var i=0; i < elementCount; i++) {
	   	var element=document.forms[0].elements[i];
	   	var elementType=element.type;
   		if ((elementType.indexOf("text") != -1 || elementType == "password" || elementType == "file") && !element.disabled) {
				if (isFormElementChanged(element)) {
					initialFocusElement=null;
					break;
				}
				else if (initialFocusElement == null) {
					initialFocusElement=element;
				}
     	}
   	}
  }
  if (initialFocusElement != null) {
   	initialFocusElement.focus();
  }
}

function isFormElementChanged(element) {
    var result=true;
    var type=element.type;
    if (type.indexOf('checkbox') > -1 || type.indexOf('radio') > -1) {
        if (element.checked && element.defaultChecked) {
            result=false
        }
    }
    if (type.indexOf('hidden') > -1 || type.indexOf('password') > -1 || type.indexOf('text') > -1) {
        if (element.value == element.defaultValue) {
            result=false
        }
    }
    if (type.indexOf('select') > -1) {
        for (var k=0, l=element.options.length; k<l; k++) {
            if (element.options[k].selected && element.options[k].defaultSelected) {
                result=false
            }
        }
    }
    return result;
}

function findObject(n, d) { //v4.01
	var p, i, x;
	if (!d)
		d=document;
	if ((p=n.indexOf("?")) > 0 && parent.frames.length) {
		d=parent.frames[n.substring(p + 1)].document;
		n=n.substring(0, p);
	}
	if (!(x=d[n]) && d.all)
		x=d.all[n];
	for (i=0; !x && i < d.forms.length; i++)
		x=d.forms[i][n];
	for (i=0; !x && d.layers && i < d.layers.length; i++)
		x=findObject(n, d.layers[i].document);
	if (!x && d.getElementById)
		x=d.getElementById(n);
	return x;
}

function toggleMenu() { //v1.1 PVII
	var g, b, k, f, args=toggleMenu.arguments;
	if (!document.p7setc) {
		p7c=new Array();
		document.p7setc=true;
	}
	for (k=0; k < p7c.length; k++) {
		if ((g=findObject(p7c[k])) != null) {
			b=(document.layers) ? g : g.style;
			b.visibility="hidden";
		}
	}
	for (k=0; k < args.length; k++) {
		if ((g=findObject(args[k])) != null) {
			b=(document.layers) ? g : g.style;
			b.visibility="visible";
			f=false;
			for (j=0; j < p7c.length; j++) {
				if (args[k] == p7c[j]) {
					f=true;
				}
			}
			if (!f) {
				p7c[p7c.length++]=args[k];
			}
		}
	}
}

function toggleFormElement(element) {
  element.disabled=(element.disabled) ? false : true;
}

function selectAllCheckboxes(form) {
  for (i=0; i < form.elements.length; i++) {
    if(form.elements[i].type == 'checkbox') {
      form.elements[i].checked=true;
    }
  }
}

function clearAllCheckboxes(form) {
  for (i=0; i < form.elements.length; i++) {
    if(form.elements[i].type == 'checkbox') {
      form.elements[i].checked=false;
    }
  }
}

//<!--swap list tag
function alertListMustHaveOneItem(){
	var myCustomListMustHaveOneItemMessage = "The selected column must have at least one item!";
	var CustomListHaveOneItemMessage = document.getElementById("CustomListHaveOneItemMessage");
	if (CustomListHaveOneItemMessage != null) myCustomListMustHaveOneItemMessage = CustomListHaveOneItemMessage.value;
	alert(myCustomListMustHaveOneItemMessage);
}

function alertEmptyList(){
	var myCustomListIsEmptyMessage = "The list is empty!";
	var CustomListIsEmptyMessage = document.getElementById("CustomListIsEmptyMessage");
	if (CustomListIsEmptyMessage != null) myCustomListIsEmptyMessage = CustomListIsEmptyMessage.value;
	alert(myCustomListIsEmptyMessage);
}
function alertNoItemChoose(){
	var myCustomSelectAnItemMessage = "Please select an item to move";
	var CustomSelectAnItemMessage = document.getElementById("CustomSelectAnItemMessage");
	if (CustomSelectAnItemMessage != null) myCustomSelectAnItemMessage = CustomSelectAnItemMessage.value;
	alert(myCustomSelectAnItemMessage);
}
function moveUp(hiddenFieldName,listFieldName) {

	var myCustomCannotMoveMessage = "You can not move up any further!";
	var CustomCannotMoveMessage = document.getElementById("CustomCannotMoveUpMessage");
	if (CustomCannotMoveMessage != null) myCustomCannotMoveMessage = CustomCannotMoveMessage.value;

	var listField=document.getElementById(listFieldName);
	if ( listField.length <= 0) {
		alertEmptyList();
	}
	else {
		var selected = listField.selectedIndex;
		if (selected == -1) {
			alertNoItemChoose();
		}
		else if (selected == 0) {
			alert(myCustomCannotMoveMessage)
		}
		else {
			var moveText = listField[selected].text;
			var moveValue = listField[selected].value;
			listField[selected].text = listField[selected-1].text;
			listField[selected].value = listField[selected-1].value;
			listField[selected-1].text = moveText;
			listField[selected-1].value = moveValue;
			listField.selectedIndex = selected-1;
		}
	}
	collectionValues(hiddenFieldName,listFieldName);
}
function moveDown(hiddenFieldName,listFieldName) {

	var myCustomCannotMoveMessage = "You can not move down any further!";
	var CustomCannotMoveMessage = document.getElementById("CustomCannotMoveDownMessage");
	if (CustomCannotMoveMessage != null) myCustomCannotMoveMessage = CustomCannotMoveMessage.value;

	var listField=document.getElementById(listFieldName);
	if ( listField.length <= 0) {
		alertEmptyList();
	}
	else {
		var selected = listField.selectedIndex;
		if (selected == -1){
			alertNoItemChoose();
		}
		else if (selected == listField.length-1) {
			alert(myCustomCannotMoveMessage)
		}
		else {
			var moveText = listField[selected].text;
			var moveValue = listField[selected].value;
			listField[selected].text = listField[selected+1].text;
			listField[selected].value = listField[selected+1].value;
			listField[selected+1].text = moveText;
			listField[selected+1].value = moveValue;
			listField.selectedIndex = selected+1;
		}
	}
	collectionValues(hiddenFieldName,listFieldName);
}
function swapBox(hiddenFieldName,fromBoxName, toBoxName,iSort, preserveOrder, preserveOrderDataName, fromDirection) {

	if (preserveOrder){
		swapBoxPreserveOrder(hiddenFieldName,fromBoxName, toBoxName,iSort, preserveOrderDataName);
		return;
	}

	var fbox=document.getElementById(fromBoxName);
	var tbox=document.getElementById(toBoxName);
	var arrFbox = new Array();
	var arrTbox = new Array();
	var arrLookup = new Array();
	var i;
	for (i = 0; i < tbox.options.length; i++) {
		arrLookup[tbox.options[i].text] = tbox.options[i].value;
		arrTbox[i] = tbox.options[i].text;
	}
	var fLength = 0;
	var tLength = arrTbox.length;
	for(i = 0; i < fbox.options.length; i++) {
		arrLookup[fbox.options[i].text] = fbox.options[i].value;
		if (fbox.options[i].selected && fbox.options[i].value != "") {
			arrTbox[tLength] = fbox.options[i].text;
			tLength++;
	}
	else {
		arrFbox[fLength] = fbox.options[i].text;
		fLength++;
	   }
	}

	var myDirection = "MoveLeftSign";
	var direction = document.getElementById(myDirection);
	if (direction != null) {
		myDirection = direction.value;
	}
	if (fromDirection == myDirection) {
		if (arrFbox.length < 1) {
			alertListMustHaveOneItem();
			return;
		}
	}

	if(iSort){
		arrFbox.sort();
	}else{
		arrTbox.sort();
	}
	fbox.length = 0;
	tbox.length = 0;
	var c;
	for(c = 0; c < arrFbox.length; c++) {
		var no = new Option();
		no.value = arrLookup[arrFbox[c]];
		no.text = arrFbox[c];
		fbox[c] = no;
	}
	for(c = 0; c < arrTbox.length; c++) {
		var no = new Option();
		no.value = arrLookup[arrTbox[c]];
		no.text = arrTbox[c];
		tbox[c] = no;
		   }
	if(iSort)
		collectionValues(hiddenFieldName,toBoxName);
	else
		collectionValues(hiddenFieldName,fromBoxName);
}

function findOptionInArray(_option, _array){
	var i = 0;
	for (i=0; i<_array.length; i++){
		if (_array[i].text == _option.text && _array[i].value == _option.value){
			return i;
		}
	}
	return -1;
}

function swapBoxPreserveOrder(hiddenFieldName,fromBoxName, toBoxName,iSort, preserveOrderDataName) {

	var i,j;
	var temp;

	var fbox=document.getElementById(fromBoxName);
	var tbox=document.getElementById(toBoxName);
	var arrFbox = new Array();
	var arrSelected = new Array();
	var arrTbox = new Array();

	//get selected items in from box then store them to 2 arrays
	var arrFboxLength = 0;
	var arrSelectedLength = 0;
	for (i = 0; i < fbox.options.length; i++) {
		temp = fbox.options[i];
		if (!temp.selected && temp.value != ''){
			arrFbox[arrFboxLength] = temp;
			arrFboxLength++;
		}
		else {
			temp.selected = false;
			arrSelected[arrSelectedLength] = temp;
			arrSelectedLength++;
		}
	}

	//rebuild from box
	fbox.length = 0;
	for (i=0; i<arrFbox.length; i++){
		fbox[i] = arrFbox[i];
	}

	//get all data of to box to arrTbox
	for (i = 0; i < tbox.options.length; i++) {
		arrTbox[i] = tbox.options[i];
	}

	//rebuild to box
	tbox.length = 0;
	var tboxLength = 0;
	var myIndex;
	for (i = 0; i < preserveOrderDataName.options.length; i++) {
		temp = preserveOrderDataName.options[i];

		myIndex = findOptionInArray(temp, arrSelected);
		if (myIndex != -1){
			tbox[tboxLength] = arrSelected[myIndex];
			tboxLength++;
		} else {
			myIndex = findOptionInArray(temp, arrTbox);
			if (myIndex != -1){
				tbox[tboxLength] = arrTbox[myIndex];
				tboxLength++;
			}
		}
	}

	//update value
	if(iSort)
		collectionValues(hiddenFieldName,toBoxName);
	else
		collectionValues(hiddenFieldName,fromBoxName);
}
function collectionValues(hiddenFieldName,boxName){
	var tbox=document.getElementById(boxName);
	var hiddenField=document.getElementById(hiddenFieldName);
	var result="";
	for(i = 0; i < tbox.options.length; i++) {
		result=result+";"+tbox.options[i].value;
	}
	result=result.substring(1,result.length);
	hiddenField.value=result;
}
//swap list tag--!>

//<!--reset button tag
function resetBox(myColumnName, columnHiddenLeftBoxName, columnHiddenRightBoxName, leftColumnName, rightColumnName, myButtonName, buttonHiddenLeftBoxName, buttonHiddenRightBoxName, leftButtonName, rightButtonName) {

	var columnLeftBoxItems = document.getElementById(columnHiddenLeftBoxName);
	var columnRightBoxItems = document.getElementById(columnHiddenRightBoxName);
	var buttonLeftBoxItems = document.getElementById(buttonHiddenLeftBoxName);
	var buttonRightBoxItems = document.getElementById(buttonHiddenRightBoxName);

	resetTwoBox(leftColumnName,rightColumnName,columnLeftBoxItems,columnRightBoxItems);
	resetTwoBox(leftButtonName,rightButtonName,buttonLeftBoxItems,buttonRightBoxItems);

	myColumnNameData = document.getElementById(myColumnName);
	myColumnNameOriginalData = document.getElementById(myColumnName + '____original');
	myColumnNameData.value = myColumnNameOriginalData.value;

	myButtonNameData = document.getElementById(myButtonName);
	myButtonNameOriginalData = document.getElementById(myButtonName + '____original');
	myButtonNameData.value = myButtonNameOriginalData.value;
}

function resetTwoBox(leftName, rightName, leftBoxItems, rightBoxItems) {
	var leftBox = document.getElementById(leftName);
	var rightBox = document.getElementById(rightName);
	var i;

	leftBox.length = 0;
	for (i = 0; i < leftBoxItems.options.length; i++) {
		var no = new Option();
		no.value = leftBoxItems.options[i].value;
		no.text = leftBoxItems.options[i].text;
		leftBox[i] = no;
	}
	rightBox.length = 0;
	for (i = 0; i < rightBoxItems.options.length; i++) {
		var no = new Option();
		no.value = rightBoxItems.options[i].value;
		no.text = rightBoxItems.options[i].text;
		rightBox[i] = no;
	}
}

// <!--reset button tag
