<!--
//** begin ErrorMessage **//
function ErrorMessage(){
    this.msg = new Array();

    this.add = ErrorMessage_add;
    this.count = ErrorMessage_count;
    this.clear = ErrorMessage_clear;
    this.hasMessage = ErrorMessage_hasMessage;
    this.toString = ErrorMessage_toString;
}
function ErrorMessage_add(msg){
    this.msg.push(msg);
}
function ErrorMessage_clear(){
    this.msg = new Array();
}
function ErrorMessage_count(){
    return this.msg.length;
}
function ErrorMessage_hasMessage(){
    return (this.count()>0);
}
function ErrorMessage_toString(){
    return this.msg.join('\n');
}
//** end ErrorMessage **//

var emsg = new ErrorMessage();
function _setWarning(e,b,m){
    var defaultClass = "col_header";
    var warningClass = "text_warning";
    var p = e.parentNode.parentNode;
    for(i=0; i < p.childNodes.length; ++i){
        if(p.childNodes[i].tagName=="TD"){
            if(b){
                p.childNodes[i].className=warningClass;
                if(typeof(m) != 'undefined')
                    emsg.add(m);
            }
            else
                p.childNodes[i].className=defaultClass;
            break;
        }
    }
}

// form value support
function _isEmpty(e){
    switch(e.type){
        case "checkbox":
		case "file":
        case "hidden":
        case "password":
        case "textarea":
        case "text": return (e.value.length==0); break;
        case "select-one": return (e.selectedIndex<0||e.options[e.selectedIndex].value.length==0); break;
        default: return true;
    }
}

function _setValue(e, v){
    switch(e.type){
        case "select-one": for(i=0;i<e.options.length;++i)if(e.options[i].value==v){e.options[i].selected=true;return;}e.selectedIndex=-1;break;
        case "checkbox":
		case "file":
        case "text":
        case "textarea":
        case "password":
        case "hidden":
        default: e.value=v; break;
    }
}

function _getValue(e){
    switch(e.type){
        case "select-one": if(e.selectedIndex>-1)return e.options[e.selectedIndex].value; else return "";
        case "checkbox":
		case "file":
        case "text":
        case "textarea":
        case "password":
        case "hidden":
        default: return e.value;
    }
}

function _isValid(str, pat){ return pat.test(str);}

function _trim(str){
	if(str.search(/\n/) > -1){
		array = str.split(/\r?\n\r?/);
		for(i = 0; i < array.length; ++i)
			array[i] = _trim(array[i]);
		return array.join("\r\n");
	}
	return /^[ ]*(.*?)[ ]*$/.exec(str)[1];
}
// number formatting
function _NumberFormat(num, dec, dsp, tsp){
    dec = dec || 0;
    dsp = dsp || ".";
    tsp = tsp || ",";
    var num = new Number(num);
    if(!isNaN(num)){
        var arr = /^(-)?([0-9]*?)(\.([0-9]*))?$/.exec(num);
        sign = arr[1];
        iPart = arr[2];
        dPart = arr[4];
        num = new Array();
        while(iPart.length>3){
            arr = /([0-9]{1,})?([0-9]{3})$/g.exec(iPart);
            iPart = arr[1];
            num.unshift(arr[2]);
        }
        if(iPart.length>0) num.unshift(iPart);
        dPart = dPart.substr(0,dec);
        while(dPart.length<dec) dPart = dPart.concat("0");
        num = sign.concat(num.join(tsp));
        if(dec>0) num = num.concat(dsp, dPart);
    }
    return num;
}
function _NumberUnformat(num, tsp){
    return num.replace(new RegExp(tsp||",", "gi"),"");
}
//-->