/* Copyright (c) 2004,2005 Talkingstone Solutions.    **
** This source may not be reproduced in any           **
** form without the express written consent of        **
** Talkingstone Solutions.                            **/
var isNav=(navigator.appName.indexOf("Netscape")!= -1 || navigator.appName.indexOf("Gecko") != -1);var isIE=(navigator.appName.indexOf("Microsoft") != -1);var doc=this.document;
function handle(event){var code=(isNav)?event.which:event.keyCode;if(code==13 && validate()){execute(currentEvent,currentSubEvent);}}var currentEvent = "";var currentSubEvent = "";var fieldRequirements = new Array();
function clearReqs(){	fieldRequirements.length=0;}
function addReq(req){fieldRequirements[fieldRequirements.length] = req;}
function Requirement(_name,_min,_max){
    this.field = document.forms[0][_name];
    this.name = _name;
    this.min = _min;
    this.max = _max;
}
function validate(){
    var metRequirements = false;
    if(fieldRequirements.length>0){
        for(var i=0;i<fieldRequirements.length;++i){	
            metRequirements = fieldRequirements[i].valid();
            if(!metRequirements){
                fieldRequirements[i].field.style.backgroundColor="#D1CFEB";
            } else {
                fieldRequirements[i].field.style.backgroundColor="#FFFFFF";
            }
        }
    } else {
        return true;
    }
    return metRequirements;
}
function valid(){	
    switch(this.field.type){
        case "checkbox":
            return validCheckbox(this);
            break;
        case "file":	
            return validFile(this);	
            break;	
        case "text":
            return validText(this);
            break;
        case "hidden":	
            return validText(this);	
            break;
        case "textarea":
            return validTextarea(this);
            break;	
        case "password":
            return validPassword(this);
            break;
        case "radio":
            return validRadio(this);
            break;
        case "select-one":
            return validSelect(this);	
            break;
        case "select-multiple":
            return validSelect(this);
            break;
        }
    }
Requirement.prototype.valid = valid;
function validCheckbox(obj){var reqNum = obj.min;var numChecked = 0; for(i=0;i<obj.field.length;++i){	if(obj.field[i].checked)++numChecked;if(numChecked>=obj.min)return true;break; }return false;}
function validFile(obj){	return obj.field.value!="";}
function validText(obj){        return obj.field.value!="";}
function validTextarea(obj){    return obj.field.value!="";}
function validPassword(obj){    return obj.field.value!="";}
function validRadio(obj){       for(i=0;i<obj.field.length;++i){if(obj.field[i].checked)return true;break; }return false;}
function validSelect(obj){      return obj.field.selectedIndex>=obj.min;}
function selectAll(fieldType,fieldName){    var field = this.document.forms[0][fieldName]; if(fieldType=="select"){for(var i=0;i<field.Options.length;++i){field[i].selected=true;}}else{alert("This function is not available for "+fieldType+"!"); }}
function singleChecked(element,currentIndex){ for(i=0;i<element.length;++i){ if(currentIndex!=i) element[i].checked = false; }}
function selectItem(fieldName,optionValue){ var field = document.forms[0][fieldName]; if(field.type.indexOf("select")>-1){ for(var i=0;i<field.options.length;++i){ if(field[i].value==optionValue){ field[i].selected = true; break; } } } }
function getSelectValue(name){ return document.forms[0][name][document.forms[0][name].selectedIndex].value;}
function getValue(name){
    if(!doc.getElementById(name)){
        return doc.forms[0][name].value;
    } else {
        switch(doc.getElementById(name).type){
            case("text"):
                return doc.forms[0][name].value;	
                break;
            case("checkbox"):	
                var values = new Array(); 
                for(i=0;i<doc.forms[0][name].length;++i){
                    if(doc.forms[0][name][i].checked) values[values.length]=doc.forms[0][name][i].value;	
                }
                return values.toString();
                break;
            case("select-one"):
                return getSelectValue(name);
                break; 
            case("select-multiple"):
                var values = new Array(); 
                for(i=0;i<doc.forms[0][name].length;++i){
                    if(doc.forms[0][name][i].selected) values[values.length]=doc.forms[0][name][i].value;
                }
                return values.toString();
                break;
            case("hidden"):	
                return doc.forms[0][name].value;
                break;
            default:
                return doc.forms[0][name].value;
                break;
            }
        }
}
function removeItemsFromList(srcList){srcList.remove(srcList.selectedIndex);}
function sortList(srcList){var forms = this.document.forms[0];var holder = new Array();for(var i=0;i<forms[srcList].options.length;++i){holder[i] = forms[srcList].options[i].text;}	forms[srcList].length=0;holder.sort();for(var j=0;j<holder.length;++j){	var newElement = document.createElement("OPTION");newElement.text=holder[j];newElement.value=holder[j];	forms[srcList].options.add(newElement);	}}
function isDateRangeValid(limit){var today= new Date();var retireYear=document.forms[0].retireYear.value;var retireMonth = document.forms[0].retireMonth.value;var retireDay=document.forms[0].retireDay.value;var retireDate 	= new Date(retireYear,(retireMonth-1),retireDay);var diff = Math.ceil((retireDate - today)/1000/60/60/24);if(diff<=limit){return true;} else {alert("Please enter a new date no later than "+limit+" days from present.");return false;	}}
function addItemToList(srcList, targetList){var forms = this.document.forms[0];while(srcList.selectedIndex>-1){var newElement = new Option(srcList[srcList.selectedIndex].text,srcList[srcList.selectedIndex].value);	forms[targetList].options.add(newElement);srcList.remove(srcList.selectedIndex);}}
function setEnctype(type){if(type=="multipart") 	this.document.forms[0].enctype="multipart/form-data";else this.document.forms[0].enctype="application/x-www-form-urlencoded";}
function setValue(field,value,register){this.document.forms[0][field].value=value;}
function filter(field){var fieldType = field.type;switch(fieldType){ case 'numeric':validateNumber(field);}}
function validateNumber(field){if(field.value.isNaN()) {field.focus();return false;}else{	return true;}}
function validateEmail(field){
    if(field.value.length==0 || field.value.indexOf("@")==-1 || field.value.indexOf(".")==-1) 
    {
        field.focus();
        alert("A valid email address is required.");
    }
}
function setFieldValue(id,value,register){this.document.forms[0][id].value = value;}
function loadSelectData(srcName,targetName,dataSet,textIndex,valIndex){var targetList = this.document.forms[0][targetName];targetList.length=0;targetList.options.add(new Option('-- make selection --',''));	for( var cnt=0; cnt < dataSet.length-1; ++cnt ){var newElement = document.createElement("OPTION");newElement.text	= dataSet[cnt][textIndex];newElement.value= dataSet[cnt][valIndex];targetList.options.add(newElement); }/*loadQueue(srcName,getSelectValue(srcName));*/}
function getAttributeFields(key, form_idx){    var _form = (form_idx)?document.forms[form_idx]:document.forms[0]; var fields = _form.elements; var returnFields = new Array(); for(var i=0;i<fields.length;++i){ if(fields[i].name.substring(0,key.length)==key && fields[i].name.indexOf('type')==-1 && fields[i].name.indexOf('current')==-1) returnFields[returnFields.length] = new Array(fields[i].name,fields[i].name+"_type"); } return returnFields;}
function clearFields(fields, form_idx){ var _form = (form_idx)?document.forms[form_idx]:document.forms[0]; for(var i=0;i<fields.length;++i){ var fieldType = _form[fields[i][1]].value; if(fieldType!="label"){ _form[fields[i][0]+"_current"].value = ""; switch(fieldType){ case "text": _form[fields[i][0]].value = ''; break; case "boolean": _form[fields[i][0]].checked = false; break; case "multi-select": _form[fields[i][0]].selectedIndex = -1; break; case "single-select": _form[fields[i][0]].selectedIndex = -1; break; }}}}
function verify(type, field, required){
    switch(type){ 
        case "int":
            field.value = field.value.replace("$",""); 
            field.value = field.value.replace(",",""); 
            if(required && field.value==""){ 
                alert("This field is required.  Please return and enter a valid "+field.name); 
                field.focus(); 
                break; 
            }
            if(isNaN(field.value)){ 
                if(required) field.value=prompt("Please enter a valid "+field.name+"."); 
                else if(isNaN(field.value)) field.value="";
                else field.value=Math.floor(field.value);
                break;
            } else {
                field.value=Math.floor(field.value);
            }
            break; 
        case "decimal": field.value = replace(field.value, "$",""); if(required && field.value==""){ alert("This field is required.  Please return and enter a valid "+field.name); } else if(field.value!="" && isNaN(replace(field.value, ",","")+0)){if(required) field.value=prompt("Please enter a valid "+field.name+"."); else field.value=""; } break; }}

function addOption(fieldname,value,text){
	if(document.forms[0][fieldname]){
		document.forms[0][fieldname].options[document.forms[0][fieldname].options.length] = new Option(text,value);
		//javascript:addOption('territories','190','--');selectItem('territories','190');execute('search','territory');
	}
}
