

Array.prototype.has=function(v,i){
for (var j=0;j<this.length;j++){
if (this[j]==v) return (!i ? true : j);
}
return false;
}

Array.prototype.remove=function(s){
  for(i=0;i<this .length;i++){
    if(s==this[i]) this.splice(i, 1);
  }
}

Array.prototype.inArray = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val){
			return true;
		}
	}
	return false;
}


function ManageTabPanelDisplay() {
   if(arguments.length < 1)return null;
   showItem = arguments[0];
   for(var i = 0; i < tabsList.length; i++) {
		if(tabsList[i] != showItem){
			//disbling the current
			document.getElementById(tabsList[i]).style.display = "none";
			document.getElementById("tab_"+tabsList[i]).className = "tabOff";
		}else{
			//enabling the clicked one
			document.getElementById(showItem).style.display = "block";
			document.getElementById("tab_"+showItem).className = "tabOn";
	   }
   }
}



function limitMultiSelection(element,maxValues,clickedId){
}

function setValueAndSubmit(elementId, value) {
	var element = document.getElementById(elementId);
	element.value = value;
	element.form.submit();
}


function toggleImage(elementId,value1,value2) {
   var element = document.getElementById(elementId);
	if (element.src == value1) {
		element.src = value2;
	} else {
		element.src = value1;
	}
	return element.src;
}

function toggleVisibility(elementId) {
    var visible;
    var element = document.getElementById(elementId);
    var visibilityCookie = new Cookie(document, "visible", 24);
    visibilityCookie.load();
	if (element.style.display == "") {
		element.style.display = "none";
		visible = false;
		visibilityCookie[elementId] = "0";
	} else {
		element.style.display = "";
		visible = true;
		visibilityCookie[elementId] = "1";
	}
	visibilityCookie.store();
	return visible;
}

function toggleDisabled(elementId) {
    var disabled;
    var element = document.getElementById(elementId);
    var disabledCookie = new Cookie(document, "disabled", 24);
    disabledCookie.load();
	if (element.disabled == true) {
		element.disabled = false;
		disabled = false;
		disabledCookie[elementId] = "0";
	} else {
		element.disabled = true;
		disabled = true;
		disabledCookie[elementId] = "1";
	}
	disabledCookie.store();
	return disabled;
}

function hide(elementId) {
    var element = document.getElementById(elementId);
    var visibilityCookie = new Cookie(document, "visible", 24);
    visibilityCookie.load();
	element.style.display = "none";
	visibilityCookie[elementId] = "0";
	visibilityCookie.store();
}

function show(elementId) {
    var element = document.getElementById(elementId);
    var visibilityCookie = new Cookie(document, "visible", 24);
    visibilityCookie.load();
	element.style.display = "";
	visibilityCookie[elementId] = "1";
	visibilityCookie.store();
}

// Selects all checkboxes based on name rather than id
function selectAllCheckboxes(parentCheckbox, checkboxName) {
    var checkboxes = document.getElementsByName(checkboxName);
    for (var i = 0; i < checkboxes.length; i++) {
        checkboxes[i].checked = parentCheckbox.checked;
    }
}

function doSubmit(submitButton, hiddenSubmitId, action, disableIds) {
    if (disableIds != null) {
        for (var i = 0; i < disableIds.length; i++) {
            var element = document.getElementById(disableIds[i]);
            element.disabled = true;
        }
    }
    submitButton.value = "Please wait...";
    submitButton.disabled = true;
    var hiddenSubmit = document.getElementById(hiddenSubmitId);
    hiddenSubmit.value = action;
    hiddenSubmit.form.submit();
}


function doSubmitAndSetValue(submitButton, hiddenSubmitId, action, disableIds,setField,setValue) {
    if (disableIds != null) {
        for (var i = 0; i < disableIds.length; i++) {
            var element = document.getElementById(disableIds[i]);
            element.disabled = true;
        }
    }
    submitButton.value = "Please wait...";
    submitButton.disabled = true;
    var hiddenSubmit = document.getElementById(hiddenSubmitId);
    hiddenSubmit.value = action;
			
		var hiddenSetField = document.getElementById(setField);
		hiddenSetField.value = setValue;
	
    hiddenSubmit.form.submit();
}	

// Limits the length of an object's value and displays a popup message when the limit has been exceeded
function limitLength(o, length) {
    var limitExceeded = false;
    if (o.value.length > length) {
        limitExceeded = true;
    } else {
        return;
    }
    o.value = o.value.substr(0, length);
    if (limitExceeded) {
        var msg = "Data truncated. Maximum input length of ";
        msg += length;
        msg += " characters exceeded.";
        alert(msg);
    }
}


function _isNumeric(sText)
{
var ValidChars = new Array("0","1","2","3","4","5","6","7","8","9",".");
var IsNumber=true;
var Char;
var arrayText = sText.split("");

if(sText != ""){
	alert(sText);
   for(i = 0; i < arraysText.length; i++){ 
	  	Char = arrayText[i];
		alert(Char);
	  	//if(!ValidChars.inArray(Char))IsNumber = false;
		/*for(var j = 0; j < ValidChars.length; j++) {
			if(ValidChars[j] != Char){
				IsNumber = false;
			}
		}*/
		
	}
}else{
	IsNumber = false;
	};
	
return IsNumber;
}

function isNumeric(x) {
// I use this function like this: if (isNumeric(myVar)) { } 
// regular expression that validates a value is numeric 
var RegExp = /^[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?$/; // Note: this WILL allow a number that ends in a decimal: -452. 
// compare the argument to the RegEx 
// the 'match' function returns 0 if the value didn't match 
var result = x.match(RegExp);

return (result != null); 
}


function isNumericCheck(o,errorDiv){
	var isNum = true;
	var value = o.value;
	if(o.value.length > 0){
		 var arrayText = value.split("");
		 var arrayTextResult = arrayText;
		 
		 for(i = 0; i < arrayText.length; i++){ 
	  			Char = arrayText[i];
				if(!isNumeric(Char)){arrayTextResult.remove(Char); isNum=false;}
		 }
		
		o.value = arrayTextResult.join("");
		
		//checking
		if(isNum){
			 	document.getElementById(errorDiv).style.display = "none";				 
		}else{
				document.getElementById(errorDiv).style.display = "";
				document.getElementById(errorDiv).innerHTML = "<br>Only numeric values accepted.";
			 }
				
	}else{
		document.getElementById(errorDiv).style.display = "none";
		}
}

/**
 * DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

function isEmailCheck(field,errorDiv) {
		var str = field.value;
		var errorMessage = "<br>Please provide a valid email";
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   document.getElementById(errorDiv).style.display = "";
			document.getElementById(errorDiv).innerHTML = errorMessage;
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   document.getElementById(errorDiv).style.display = "";
			document.getElementById(errorDiv).innerHTML = errorMessage;
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    document.getElementById(errorDiv).style.display = "";
			document.getElementById(errorDiv).innerHTML = errorMessage;
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    document.getElementById(errorDiv).style.display = "";
			document.getElementById(errorDiv).innerHTML = errorMessage;
		    return false;
		}

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    document.getElementById(errorDiv).style.display = "";
			document.getElementById(errorDiv).innerHTML = errorMessage;
		    return false;
		}

		 if (str.indexOf(dot,(lat+2))==-1){
		    document.getElementById(errorDiv).style.display = "";
			document.getElementById(errorDiv).innerHTML = errorMessage;
		    return false;
		}
		
		 if (str.indexOf(" ")!=-1){
		    document.getElementById(errorDiv).style.display = "";
			document.getElementById(errorDiv).innerHTML = errorMessage;
		    return false;
		}
		 
		 
		 
		 document.getElementById(errorDiv).style.display = "none";
		 document.getElementById(errorDiv).innerHTML = "";
 		 return true;					
	}


function arrayControl(value,fieldName){
	var newArray = document.getElementById(fieldName).value.split(",");
	if(newArray.has(value)){
			newArray.remove(value);
		}else{
			newArray.push(value);
			}
	document.getElementById(fieldName).value = newArray.toString();
}


function divListControl(value,divName,separator){
	var newArray = document.getElementById(divName).innerHTML.split(separator);
	if(newArray.has(value)){
			newArray.remove(value);
		}else{
			newArray.push(value);
			}
	document.getElementById(divName).innerHTML = newArray.join(separator);
}




var imgRe = /^.+\.(jpg|jpeg|gif|png)$/i;
function previewImage(pathField, previewName, size, width, height){ 
		var path = pathField.value;
		if (path.search(imgRe) != -1){ 
				previewPicture = document.getElementById(previewName);			
				var f=path;
				previewPicture.src="";
				if(f.charAt(0) == '/') f=f.substring(1);
				pathImg = f.split("\\");
				previewPicture.src = "file://"+ pathImg.join("/").toString();
				imglength = previewPicture.fileSize;
				if (imglength > size) writestring += "\nFile too large!" + '<a href="javascript: history.go(-1)"><br>RETURN TO PREVIOUS PAGE</a>';
		}else{ 
			alert("JPG, PNG, and GIFs only!");
			pathField.value = "";
		} 
}



// ------- List Box functions------------------------------------------
var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);

function addOption(theSel, theText, theValue)
{
  var newOpt = new Option(theText, theValue);
  var selLength = theSel.length;
  theSel.options[selLength] = newOpt;
}

function deleteOption(theSel, theIndex)
{ 
  var selLength = theSel.length;
  if(selLength>0)
  {
    theSel.options[theIndex] = null;
  }
}

function moveOptions(theSelFrom, theSelTo)
{
  
  theSelFrom = document.getElementById(theSelFrom);
  theSelTo = document.getElementById(theSelTo);
  var selLength = theSelFrom.length;
  var selectedText = new Array();
  var selectedValues = new Array();
  var selectedCount = 0;
  
  var i;
  
  // Find the selected Options in reverse order
  // and delete them from the 'from' Select.
  for(i=selLength-1; i>=0; i--)
  {
    if(theSelFrom.options[i].selected)
    {
      selectedText[selectedCount] = theSelFrom.options[i].text;
      selectedValues[selectedCount] = theSelFrom.options[i].value;
      deleteOption(theSelFrom, i);
      selectedCount++;
    }
  }
  
  // Add the selected text/values in reverse order.
  // This will add the Options to the 'to' Select
  // in the same order as they were in the 'from' Select.
  for(i=selectedCount-1; i>=0; i--)
  {
    addOption(theSelTo, selectedText[i], selectedValues[i]);
  }
  
  if(NS4) history.go(0);
}


function moveOptionsUp(selectId) { 
var selectList = document.getElementById(selectId); var selectOptions = selectList.getElementsByTagName('option'); for (var i = 1; i < selectOptions.length; i++) {  var opt = selectOptions[i];  if (opt.selected) {   selectList.removeChild(opt);   selectList.insertBefore(opt, selectOptions[i - 1]);     }    }}

function moveOptionsDown(selectId) { var selectList = document.getElementById(selectId); var selectOptions = selectList.getElementsByTagName('option'); for (var i = selectOptions.length - 2; i >= 0; i--) {  var opt = selectOptions[i];  if (opt.selected) {   var nextOpt = selectOptions[i + 1];   opt = selectList.removeChild(opt);   nextOpt = selectList.replaceChild(opt, nextOpt);   selectList.insertBefore(nextOpt, opt);     }    }}


function loopSelectAll(listId){
	list = document.getElementById(listId);
	for(i=0;i<=list.length-1;i++) {
		list.options[i].selected = true; 
		}
	}


//---------------------------------------------------------



function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i;
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function

function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
} // Ends the "getSelectedCheckbox" function

function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
} // Ends the "getSelectedCheckBoxValue" function


function setSelectedIndex(s, v) {    for ( var i = 0; i < s.options.length; i++ ) {        if ( s.options[i].value == v ) {            s.options[i].selected = true;            return;        }    }}
//---------------------------------------------------------


