function list_obj(obj)
{
    var s = "";
    for( key in obj )
    {
        s += key + ": " + obj[key] + "<br/>";
    }
    return s;
}
function flip(id)
{
	d=document.getElementById;
	if(d(id).style.display=='none')
		d(id).style.display='block';
	else
		d(id).style.display='none';
}

function openwin(src, w_name, w_width, w_height, w_opt)
{
	if(!w_opt)    w_opt    = 'resizable=1,scrollbars=1';

	if(!w_width)  w_width  = 700;
	if(!w_height) w_height = 500;

	w_opt += ',width='+w_width+',height='+w_height;

	if(typeof(screen) != 'undefined')
	{
		w_left   = parseInt((screen.width-w_width)/2);
		w_top    = parseInt((screen.height-w_height)/2);

		w_opt += ',left='+w_left+',top='+w_top;
	}

	wobj = window.open(src, w_name, w_opt);
	wobj.focus();

	return wobj;
}

function filename(url) {
	return url.substring(url.lastIndexOf('/')+1, url.length);
}

function resizewin(w_width, w_height, forceBody)
{
	if(!w_width)  w_width  = 700;
	if(!w_height) w_height = 500;

	if(typeof(screen) != 'undefined')
	{
		w_left   = parseInt((screen.width-w_width)/2);
		w_top    = parseInt((screen.height-w_height)/2);
	}

	window.moveTo(w_left, w_top);
	window.resizeTo(w_width, w_height);

	if(forceBody)
	{
		barHeight = screen.height - (w_top*2) - document.body.clientHeight;

		if(typeof(screen) != 'undefined')
		{
			w_left   = parseInt((screen.width-w_width)/2);
			w_top    = parseInt((screen.height-(barHeight + w_height))/2);
		}

	window.moveTo(w_left, w_top);
		window.resizeTo(w_width, barHeight + w_height);

	}

	/*
	document.body.clientWidth
	document.body.clientHeight

	window.screenLeft
	window.screenTop
	*/
}
function formChangeInputClass(f)
{
	if(typeof(f.elements.length) == 'undefined')
	{
		return false;
	}

	for(i=0,max=f.elements.length ; i < max ; i++)
	{
		obj = f.elements[i]
		if(obj.type == 'text' || obj.type == 'textarea' || obj.type == 'password' || obj.type == 'file') {
			obj.className='tb_field_input';
		}
	}

    return true;
}

function formSubmitLock(f)
{
	if(typeof(f.elements.length) == 'undefined')
	{
		return false;
	}

	for(i=0,max=f.elements.length ; i < max ; i++)
	{
		obj = f.elements[i]
		if(obj.type == 'submit' || obj.type == 'button' || obj.type == 'reset') {
			obj.disabled=1
		}
		/*
		if(obj.type == 'text' || obj.type == 'textarea') {
			obj.readOnly=1
		}
		*/
	}

    return true;
}

function formSubmitUnlock(f)
{
	if(typeof(f.elements.length) == 'undefined')
	{
		return false;
	}

	for(i=0,max=f.elements.length ; i < max ; i++)
	{
		obj = f.elements[i]
		if(obj.type == 'submit' || obj.type == 'button' || obj.type == 'reset') {
			obj.disabled=0
		}
	}

    return true;
}


function setButtonDisabled(the_button_obj, disabled)
{
    var elts      = the_button_obj
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0;

    if (elts_cnt) {
        for (var i = 0; i < elts_cnt; i++) {
        	alert(elts[i].type)
            elts[i].disabled = disabled;
        } // end for
    } else {
    	alert(elts.type)
        elts.disabled        = disabled;
    } // end if... else

    return true;
}

function open_epaper_varlist(f, group_id)
{
	w_opt    = 'status:false;resizable:true'

	w_width  = 300;
	w_height = 460;

	w_opt += ';dialogWidth:'+w_width+'px;dialogHeight:'+w_height+'px';

	if(typeof(screen) != 'undefined')
	{
		w_left   = 250; //parseInt((screen.width-w_width)/2);
		w_top    = parseInt((screen.height-w_height)/2);

		w_opt += ';dialogLeft:'+w_left+'px;dialogTop='+w_top+'px';
	}

	showModelessDialog('xet_epaper_varlist.php?group_id='+group_id, f, w_opt);
}

function open_epaper_preview_by_src(src)
{
	if(isBlank(src)) {
		alert('請先輸入郵件內容');
		return;
	}

	w_opt    = 'resizable=1,scrollbars=1';

	w_width  = 700;
	w_height = 500;

	w_opt += ',width='+w_width+',height='+w_height;

	if(typeof(screen) != 'undefined')
	{
		w_left   = parseInt((screen.width-w_width)/2);
		w_top    = parseInt((screen.height-w_height)/2);

		w_opt += ',left='+w_left+',top='+w_top;
	}

	ppr = window.open('', 'preview', w_opt);

	ppr.document.open();

	if(document.forms[0].field_format[1].checked)
	{
		src = '<xmp>' + src + '</xmp>';
	}

	ppr.document.writeln(src);
	ppr.document.close();

}

function open_epaper_preview(id)
{
	if(typeof(id) == 'undefined' || parseInt(id) <= 0) {
		alert('錯誤的預覽編號!');
		return false;
	}

	w_opt    = 'resizable=1,scrollbars=1';

	w_width  = 700;
	w_height = 500;

	w_opt += ',width='+w_width+',height='+w_height;

	if(typeof(screen) != 'undefined')
	{
		w_left   = parseInt((screen.width-w_width)/2);
		w_top    = parseInt((screen.height-w_height)/2);

		w_opt += ',left='+w_left+',top='+w_top;
	}

	window.open('xet_epaper_preview.php?id=' + id, 'preview', w_opt);
}

function URL_Encode(url)
{
	//url = url.replace(/&amp;/, '&');
	buf = '';

	max = url.length

	for(i=0 ; i < max ; i++)
	{
		c = url.charAt(i);

		if(c == '&')
			buf += '%26';
		else if(c == '/')
			buf += '%2F';
		else if(c == '\\')
			buf += '%5C';
		else if(c == '@')
			buf += '%40';
		else if(c == '\'')
			buf += '%27';
		else if(c == ';')
			buf += '%3B';
		else if(c == ' ')
			buf += '+';
		else if(c == '+')
			buf += '%2B';
		else if(c == ':')
			buf += '%3A';
		else if(c == '=')
			buf += '%3D';
		else if(c == '?')
			buf += '%3F';
		else
			buf += c;
	}

	return buf;
}


/**
 * Checks/unchecks all tables
 *
 * @param   string   the form name
 * @param   boolean  whether to check or to uncheck the element
 *
 * @return  boolean  always true
 */
function setCheckboxes(the_checkbox_obj, do_check)
{
    var elts      = the_checkbox_obj
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0;

    if (elts_cnt) {
        for (var i = 0; i < elts_cnt; i++) {
            elts[i].checked = do_check;
        } // end for
    } else {
        elts.checked        = do_check;
    } // end if... else

    return true;
} // end of the 'setCheckboxes()' function

/**
 * This array is used to remember mark status of rows in browse mode
 */
var marked_row = new Array;

/**
 * Sets/unsets the pointer and marker in browse mode
 *
 * @param   object    the table row
 * @param   interger  the row number
 * @param   string    the action calling this script (over, out or click)
 * @param   string    the default background color
 * @param   string    the color to use for mouseover
 * @param   string    the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 */
function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        currentColor = theCells[0].style.backgroundColor;
        domDetect    = false;
    } // end 3

    // 3.3 ... Opera changes colors set via HTML to rgb(r,g,b) format so fix it
    if (currentColor.indexOf("rgb") >= 0)
    {
        var rgbStr = currentColor.slice(currentColor.indexOf('(') + 1,
                                     currentColor.indexOf(')'));
        var rgbValues = rgbStr.split(",");
        currentColor = "#";
        var hexChars = "0123456789ABCDEF";
        for (var i = 0; i < 3; i++)
        {
            var v = rgbValues[i].valueOf();
            currentColor += hexChars.charAt(v/16) + hexChars.charAt(v%16);
        }
    }

    // 4. Defines the new color
    // 4.1 Current color is the default one
    if (currentColor == ''
        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
        if (theAction == 'over' && thePointerColor != '') {
            newColor              = thePointerColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
        }
    }
    // 4.1.2 Current color is the pointer one
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
             && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
        if (theAction == 'out') {
            newColor              = theDefaultColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
        }
    }
    // 4.1.3 Current color is the marker one
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
        if (theAction == 'click') {
            newColor              = (thePointerColor != '')
                                  ? thePointerColor
                                  : theDefaultColor;
            marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                  ? true
                                  : null;
        }
    } // end 4

    // 5. Sets the new color...
    if (newColor) {
        var c = null;
        // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            } // end for
        }
        // 5.2 ... with other browsers
        else {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].style.backgroundColor = newColor;
            }
        }
    } // end 5

    return true;
} // end of the 'setPointer()' function

function insertValueByStr(str, myQuery)
{
	//alert(myQuery);

    var chaineAj = str;

    //IE support
    if (document.selection) {
        myQuery.focus();
        sel = document.selection.createRange();
        sel.text = chaineAj;
    }

    //MOZILLA/NETSCAPE support
    else if (myQuery.selectionStart || myQuery.selectionStart == "0") {
        var startPos = myQuery.selectionStart;
        var endPos = myQuery.selectionEnd;
        var chaineSql = myQuery.value;

        myQuery.value = chaineSql.substring(0, startPos) + chaineAj + chaineSql.substring(endPos, chaineSql.length);
    } else {
        myQuery.value += chaineAj;
    }
}

function insertValue(myListBox, myQuery)
{
	//alert(myListBox.options.length);return;
    if(myListBox.options.length > 0) {
        var chaineAj = "";
        var NbSelect = 0;
        for(var i=0; i<myListBox.options.length; i++) {
            if (myListBox.options[i].selected){
                NbSelect++;
                //if (NbSelect > 1)                    chaineAj += ", ";
                chaineAj += myListBox.options[i].value;
            }
        }

        //IE support
        if (document.selection) {
            myQuery.focus();
            sel = document.selection.createRange();
            //alert(sel.text);
            sel.text = chaineAj;
            myListBox.focus();
        }
        //MOZILLA/NETSCAPE support
        else if (myQuery.selectionStart || myQuery.selectionStart == "0") {
            var startPos = myQuery.selectionStart;
            var endPos = myQuery.selectionEnd;
            var chaineSql = myQuery.value;

            myQuery.value = chaineSql.substring(0, startPos) + chaineAj + chaineSql.substring(endPos, chaineSql.length);
        } else {
            myQuery.value += chaineAj;
        }
    }
}

function setFromCheckboxValue(t, c)
{
	max = c.length;
	t.value = ''
	for(i=0 ; i < max ; i++)
	{
		if(c[i].checked)
		{
			t.value += '{' + c[i].value + '}';
		}
	}
}

function setNow(f, name, is_time)
{
  myDate1 = new TimeDate()
  f[name].value = myDate1.year + '-' + myDate1.zp_monthNum + '-' + myDate1.zp_dayNum;

  if(is_time) {
    f[name].value += ' ' + myDate1.zp_hours + ':' + myDate1.zp_minutes + ':' + myDate1.zp_seconds;
  }
}
function setClear(f, name)
{
  f[name].value = ''
}

function checkAll(obj)
{
	if(obj)
	{
		if(!obj.length)
			obj.checked=true
		for(i=0 ; i<obj.length ; i++){
			if(!obj[i].checked)
				obj[i].checked=true
		}
	}
}

function checkSwitch(obj){
	if(obj)
	{
		if(!obj.length)
			if(obj.checked)
				obj.checked=false
			else
				obj.checked=true

		for(i=0 ; i<obj.length ; i++){
			if(obj[i].checked)
				obj[i].checked=false
			else
				obj[i].checked=true
		}
	}
}

function setSelectByOption(sel, str)
{
	str = str.replace(/(.)/gi, "\\$1");
	re = new RegExp(str, "i")

	for(i=0 ; i < sel.length ; i++)
	{
		//if(sel.options[i].text == str)
		if(re.test(sel.options[i].text))
		{
			sel.selectedIndex = i
			break;
		}
	}
	return true;
}

function setSelectById(sel, id)
{
	sel.selectedIndex = id
	return true;
}

mysql_date_re = /(\d\d\d\d)-(\d\d)-(\d\d)( (\d\d):(\d\d):(\d\d))?/

function isMySQLDateTime(s)
{
	if(!mysql_date_re.test(s)) {
		return false;
	} else {
		return true
	}
}
function setSelectByText(sel, s)
{
	for(i=0 ; i < sel.length ; i++)
	{
		if(sel.options[i].text == s)
		{
			sel.selectedIndex = i
			break;
		}
	}
	return true;
}
function setSelectByValue(sel, s)
{
	for(i=0 ; i < sel.length ; i++)
	{
		if(sel.options[i].value == s)
		{
			sel.selectedIndex = i
			break;
		}
	}
	return true;
}
function setRadioByValue(sel, s)
{
	if(typeof(sel.length) == "undefined") {
		if(sel.type != 'radio') return false;
		if(sel.value == s) {
			sel.checked = true;
		}
	}
	else
	{
		for(i=0 ; i < sel.length ; i++)
		{
			if(sel[i].type != 'radio') return false;

			if(sel[i].value == s)
			{
				sel[i].checked = true;
				break;
			}
		}
	}
	return true;
}

function setInputByValue(o, s)
{
	if(typeof(o) == "undefined") {
		return false;
	}
	if(typeof(o.length) == "undefined")
	{
		if((o.type == 'radio'|| o.type == 'checkbox') && o.value == s) {
			o.checked = true;
		}
		if((o.type == 'text' || o.type == 'textarea' || o.type == 'hidden' || o.type == 'password' )) {
			o.value = s;
			try {
				o.fireEvent("onclick");
			}
			catch(E){}
		}
	}
	else
	{
		for(i=0 ; i < o.length ; i++)
		{
			// 當 s 為一個陣列
			if(typeof(s) == 'object' && typeof(s.length) != 'undefined')
			{
				// 先取消現有的選取
				for(j=0,jmax=s.length ; j < jmax ; j++) {
					if(o.type == 'select-multiple') {
						o.options[i].selected = false;
						try{
							o.fireEvent("onchange");
						}
						catch(E){}
					}
					if(o[i].type == 'checkbox') {
						o[i].checked = false;
					}
				}
				// 再將需要的選取起來
				for(j=0,jmax=s.length ; j < jmax ; j++) {
					if(o.type == 'select-multiple') {
						if(o.options[i].value == s[j]) {
							o.options[i].selected = true;
							try{
								o.fireEvent("onchange");
							}
							catch(E){}
						}
					}
					if(o[i].type == 'checkbox') {
						if(o[i].value == s[j]) {
							o[i].checked = true;
							try{
								o[i].fireEvent("onclick");
							}
							catch(E){}
						}
					}
				}
			}
			else
			{
				if(o.type == 'select-one') {
					if(o.options[i].value == s) {
						//o.selectedIndex = i;
						o.options[i].selected = true;
						try{
							o.fireEvent("onchange");
						}
						catch(E){}
					}
				}
				if((o[i].type == 'radio' || o[i].type == 'checkbox') && o[i].value == s) {
					o[i].checked = true;
					try {
						o[i].fireEvent("onclick");
					}
					catch(E){}
				}
				if((o[i].type == 'text' || o[i].type == 'textarea' || o[i].type == 'hidden' || o[i].type == 'password' )) {
					o[i].value = s;
				}
			}
		}
	}
	return true;
}

function setSelectById(sel, id)
{
	sel.selectedIndex = id
	return true;
}

function focusFirstField(form, firsttext)
{
	for(i=0,max=form.elements.length ; i<max ; i++)
	{
		if( (form.elements[i].type == "text" || form.elements[i].type == "file" ) &&
			form.elements[i].readOnly == false &&
			form.elements[i].disabled == false &&
			form.elements[i].style.display != 'none')
		{
			//form.elements[i].setActive();
			form.elements[i].focus();
			return true;
		}
		if(!firsttext)
		{
			if( (form.elements[i].type == "select-one" || form.elements[i].type == "select-multiple" ) &&
				form.elements[i].disabled == false && form.elements[i].style.display != 'none')
			{
				form.elements[i].focus();
				return true;
			}
		}
	}
}

function blockStatus(theRow, status, id)
{
	var theCells = null;

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

	theCells[0].innerHTML = (status % 2 == 0) ? '-': '+';
	eDiv = document.getElementById(id);
	eDiv.style.display = (status % 2 == 0) ? '': 'none';

/*
	//dump_props('eDiv.style');
	eDiv.style.display = 'inline-block';
	//alert(eDiv.style.display);
*/
}



DoggyInputObject = function() {};

/*
 * Usage:
 *
 *   <script>
 *     iapi = new DoggyInputObject();
 *   </script>
 *
 *   <input class="tb_field_input" type="text" name="field_contact_mobile"
 *	 	onBlur="iapi.tel(this);">
 *
 *	onBlur="iapi.email(this);"
 *	onBlur="iapi.mobile(this);"
 *	onBlur="iapi.number(this);"
 *
 */
DoggyInputObject.prototype.overlib_username = function() {
	return overlib('☉ 請設定一個唯一的帳號名稱<P>帳號必須<span class="red">輸入 3 ~ 16 個字元</span><BR>其名稱僅能包括<span class="red">英文</span>、<span class="red">數字</span>或<span class="red">底線(_)</span>', WIDTH, '300', TEXTFONT, 'Courier, Courier New', TIMEOUT, 2000);
}

DoggyInputObject.prototype.overlib_fieldname = function() {
	return overlib('☉ 請設定一個唯一的欄位名稱<P>欄位必須以<span class="red">英文字母</span>開頭<BR>其名稱僅能包括<span class="red">英文</span>、<span class="red">數字</span>或<span class="red">底線(_)</span>', WIDTH, '300', TEXTFONT, 'Courier, Courier New', TIMEOUT, 2000);
}

DoggyInputObject.prototype.overlib_tel = function() {
	return overlib('☉ 請使用標準電話格式輸入：<P>格式範例1: 02-23222480<BR>格式範例2: 02-23222480#14<BR>格式範例3: +886-2-23222480#14', WIDTH, '300', TEXTFONT, 'Courier, Courier New', TIMEOUT, 2000);
}

DoggyInputObject.prototype.overlib_mobile = function() {
	return overlib('☉ 請使用標準行動電話格式輸入：<P>格式範例1: 0939-123456<BR>格式範例2: +886-939-123456', WIDTH, '300', TEXTFONT, 'Courier, Courier New', TIMEOUT, 2000);
}

DoggyInputObject.prototype.number = function(obj, required) {
	obj.value=stripCharsNotInBag(obj.value, ' 0123456789');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	} else {
		obj.className='tb_field_input';
	}
}

DoggyInputObject.prototype.required = function(obj) {

	obj.value=stripLeadingTrailingBlanks(obj.value);

	if(isBlank(obj.value)) {
		obj.className='tb_field_input_error';
	} else {
		obj.className='tb_field_input';
	}
}

// 統一編號 8 碼數字
DoggyInputObject.prototype.gui = function(obj, required) {

	obj.value=stripCharsNotInBag(obj.value, '0123456789');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(obj.value.length < 8) {
			padding_zero_num = 8 - obj.value.length;
			for(i=0 ; i < padding_zero_num ; i++)
			{
				obj.value = '0' + obj.value;
			}
		}
		if(obj.value.length != 8) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
		}
	}
}

DoggyInputObject.prototype.tel = function(obj, required) {

	obj.value=stripLeadingTrailingBlanks(obj.value);

	obj.value=stripCharsNotInBag(obj.value, ' +()0123456789-*#');

	obj.value=fapi.correct_tel(obj.value);

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.tel_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	   		obj.value=stripCharsNotInBag(obj.value, '+0123456789-#');
	    }
	} else {
		obj.className='tb_field_input';
	}
}

DoggyInputObject.prototype.mobile = function(obj, required) {

	obj.value=stripLeadingTrailingBlanks(obj.value);

	obj.value=stripCharsNotInBag(obj.value, ' +()0123456789-#');

	obj.value=fapi.correct_tel(obj.value);

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.mobile_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	   		obj.value=stripCharsNotInBag(obj.value, '+0123456789-#');
	    }
	} else {
		obj.className='tb_field_input';
	}
}

DoggyInputObject.prototype.email = function(obj, required) {

	obj.value=stripLeadingTrailingBlanks(obj.value);

	obj.value=obj.value.toLowerCase();

	//kevin_chang@abacus.com.ｔｗ

	obj.value=fapi.correct_email(obj.value);

	//obj.value=stripCharsNotInBag(obj.value, 'abcdefghijklmnopqrstuvwxyz@0123456789-_.');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.email_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	    }
	} else {
		obj.className='tb_field_input';
	}
}

DoggyInputObject.prototype.username = function(obj, required) {

	obj.value=obj.value.toLowerCase();
	obj.value=obj.value.replace(/-/, "_");
	obj.value=stripCharsNotInBag(obj.value, 'abcdefghijklmnopqrstuvwxyz0123456789_.');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.username_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	    }
	} else {
		obj.className='tb_field_input';
	}
}

DoggyInputObject.prototype.fieldname = function(obj, required) {

	obj.value=obj.value.toLowerCase();
	obj.value=obj.value.replace(/-/, "_");
	obj.value=stripCharsNotInBag(obj.value, 'abcdefghijklmnopqrstuvwxyz0123456789_');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.fieldname_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	    }
	} else {
		obj.className='tb_field_input';
	}
}

DoggyInputObject.prototype.date = function(obj, required) {

	obj.value=stripCharsNotInBag(obj.value, '0123456789-');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.date_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	    }
	} else {
		obj.className='tb_field_input';
	}
}
DoggyInputObject.prototype.time = function(obj, required) {

	obj.value=stripCharsNotInBag(obj.value, '0123456789:');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.time_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	    }
	} else {
		obj.className='tb_field_input';
	}
}
DoggyInputObject.prototype.datetime = function(obj, required) {

	obj.value=stripLeadingTrailingBlanks(obj.value);

	obj.value=stripCharsNotInBag(obj.value, '0123456789-: ');

	if(required && isBlank(obj.value)) {
		obj.className='tb_field_input_error';
		return;
	}

	if(!isBlank(obj.value)) {
		if(!fapi.datetime_check(obj.value)) {
			obj.className='tb_field_input_error';
		} else {
			obj.className='tb_field_input';
	    }
	} else {
		obj.className='tb_field_input';
	}
}


DoggyFormatObject = function() {};

// 電話號碼 自動校正 ( Auto-correct ) , 以「台北」為預設
DoggyFormatObject.prototype.tel = function(str) {

	i = 0;

	arrRegEx = new Array();
	arrRepEx = new Array();

	if(str.length < 8) {
		return str;
	}

	if(str.match(/^(080\d|020\d)[\d\-\#]+$/)) {
		//return str;
	}

	// 0800 與 0204 的電話格式
	arrRegEx[i]   = /^\(?\s*(020\d|080\d)\s*\)?[\s-]*(\d{3,4})\s*[\/ -]?\s*(\d{3,4})/;
	arrRepEx[i++] = "($1) $2$3";

	// 台灣全省各地區碼
	arrRegEx[i]   = /^\(?\s*0(2|3|37|4|49|5|6|7|8|89|836|826|823|827)\s*\)?[\s-]*(\d{3,4})\s*[\/ -]?\s*(\d{3,4})/;
	arrRepEx[i++] = "+886-$1-$2$3";

	// 台北電話號碼
	arrRegEx[i]   = /^([2358]\d\d\d)[ -]*(\d\d\d\d)/;
	arrRepEx[i++] = "+886-2-$1$2";

	// 行動電話號碼
	arrRegEx[i]   = /^\(?0(9\d\d)[\) -]*(\d\d\d)[ -]?(\d\d\d)/;
	arrRepEx[i++] = "+886-$1-$2$3";

	// 分機號碼
	arrRegEx[i]   = /\+(\d+)-(\d)-(\d{6,8})\s*(\*|ext[\.]?|#|\-|\~|分機|分機\s*:\s*)\s*(\d+)/;
	arrRepEx[i++] = "+$1-$2-$3 #$5";

	// 其他有國碼的電話
	arrRegEx[i]   = /^\+(\d{1,3})[\s-]*(\d{1,3})?[\/ -]*(\d{3,4})\s*[\/ -]?\s*(\d{3,4})/;
	arrRepEx[i++] = "+$1-$2-$3$4";

	for(i=0; i<arrRegEx.length ; i++)
	{
		str = str.replace(arrRegEx[i], arrRepEx[i]);
	}

	return str;
};

// 電話號碼 格式檢查
DoggyFormatObject.prototype.tel_check = function(str) {

	i = 0;

	arrRegEx = new Array();

	// 標準電話格式 +886-2-23222480 #123
	arrRegEx[i++]   = /^\+([1-9]\d{0,2})\-([1-9]\d{0,2})-(\d+)(#\d+)?$/;

	// 國內電話格式
	arrRegEx[i++]   = /^0(2|3|37|4|49|5|6|7|8|89|836|826|823|827)-(\d{6,8})(#\d+)?$/;

	// 其他電話格式 ( 0800 + 手機 + 其他 )
	arrRegEx[i++]   = /^(0[1-9]\d\d)-(\d{6})$/;

	is_valid = false;

	for(i=0; i<arrRegEx.length ; i++)
	{
		if(str.match(arrRegEx[i]))
		{
			is_valid = true;
			break;
		}
	}

	return is_valid;
};

// 行動電話 格式檢查
DoggyFormatObject.prototype.mobile_check = function(str) {

	i = 0;

	arrRegEx = new Array();

	// 標準電話格式 +886-939-800382 #123
	arrRegEx[i++]   = /^\+([1-9]\d{0,2})\-([1-9]\d{0,2})-(\d+)(#\d+)?$/;

	// 行動電話格式
	arrRegEx[i++]   = /^(09\d\d)-(\d\d\d\d\d\d)$/;

	is_valid = false;

	for(i=0; i<arrRegEx.length ; i++)
	{
		if(str.match(arrRegEx[i]))
		{
			is_valid = true;
			break;
		}
	}

	return is_valid;
};


// 電話號碼 自動校正 ( Auto-correct ) , 以「台北」為預設
DoggyFormatObject.prototype.correct_tel = function(str) {

	i = 0;

	arrRegEx = new Array();
	arrRepEx = new Array();

	if(str.length < 8) {
		return str;
	}

	// 把有刮號的電話格式換成沒有刮號的電話格式
	arrRegEx[i]   = /^\((0[1-9]\d{0,2})\)[\s-]*(.+)$/;
	arrRepEx[i++] = "$1-$2";

	// 把手機號碼(10碼)換成有效格式
	arrRegEx[i]   = /^\(?(09\d\d)\)?[\s-]*(\d{3})\s*[\/ -]?\s*(\d{3})$/;
	arrRepEx[i++] = "$1-$2$3";

	// 台北電話號碼
	arrRegEx[i]   = /^([2345678]\d\d\d)[ -]*(\d\d\d\d)$/;
	arrRepEx[i++] = "02-$1$2";

	// 台北電話號碼 + 分機
	arrRegEx[i]   = /^([2345678]\d\d\d)[ -]*(\d\d\d\d)\s*[#:\*](\d+)$/;
	arrRepEx[i++] = "02-$1$2#$3";

	// 0800 與 0204 與 手機 的電話格式
	arrRegEx[i]   = /^\s*(0[1-9]\d\d)[\s-]+(\d{3})\s*[\/ -]?\s*(\d{3})$/;
	arrRepEx[i++] = "$1-$2$3";

	// 台灣全省各地區碼
	arrRegEx[i]   = /^0(2|3|37|4|49|5|6|7|8|89|836|826|823|827)[\s-]*(\d{3,4})\s*[\/ -]?\s*(\d{3,4})$/;
	arrRepEx[i++] = "0$1-$2$3";

	// 台灣全省各地區碼 + 分機
	arrRegEx[i]   = /^0(2|3|37|4|49|5|6|7|8|89|836|826|823|827)[\s-]*(\d{3,4})\s*[\/ -]?\s*(\d{3,4})\s*[#:\*](\d+)$/;
	arrRepEx[i++] = "0$1-$2$3#$4";

	// 有國碼的電話號碼 +(886)-2-2322-2480
	arrRegEx[i]   = /^\+\(([1-9]\d{0,2})\)[\s-]*([1-9]\d{0,2})[\/\s-]+(\d{3,4})\s*[\/ -]?\s*(\d{3,4})$/;
	arrRepEx[i++] = "+$1-$2-$3$4";

	arrRegEx[i]   = /^\+([1-9]\d{0,2})[\s-]+([1-9]\d{0,2})[\/\s-]+(\d{3,4})\s*[\/ -]?\s*(\d{3,4})$/;
	arrRepEx[i++] = "+$1-$2-$3$4";

	// 有國碼的電話號碼 + 分機
	arrRegEx[i]   = /^\+\(?([1-9]\d{0,2})\)?[\s-](\d{1,3})[\/\s-](\d{3,4})\s*[\/ -]?\s*(\d{3,4})\s*[#:\*](\d+)$/;
	arrRepEx[i++] = "+$1-$2-$3$4#$5";

	for(i=0; i<arrRegEx.length ; i++)
	{
		if(str.match(arrRegEx[i])) {
			str = str.replace(arrRegEx[i], arrRepEx[i]);
			//alert(i);
			if(i>0) break;
		}
	}

	return str;
};

// E-Mail 自動校正 ( Auto-correct )
DoggyFormatObject.prototype.correct_email = function(str) {

	i = 0;

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)

	if (str.indexOf('@')==-1 ||
		str.indexOf('.')==-1 ||
		str.indexOf(at,(lat+1))!=-1 ||
		str.indexOf(dot,(lat+2))==-1 ){
	   return str
	}

	arrRegEx = new Array();
	arrRepEx = new Array();

	// 把中文全形的英數字改成半形的
	arrRegEx[i]   = /ａ/g;	arrRepEx[i++] = "a";
	arrRegEx[i]   = /ｂ/g;	arrRepEx[i++] = "b";
	arrRegEx[i]   = /ｃ/g;	arrRepEx[i++] = "c";
	arrRegEx[i]   = /ｄ/g;	arrRepEx[i++] = "d";
	arrRegEx[i]   = /ｅ/g;	arrRepEx[i++] = "e";
	arrRegEx[i]   = /ｆ/g;	arrRepEx[i++] = "f";
	arrRegEx[i]   = /ｇ/g;	arrRepEx[i++] = "g";
	arrRegEx[i]   = /ｈ/g;	arrRepEx[i++] = "h";
	arrRegEx[i]   = /ｉ/g;	arrRepEx[i++] = "i";
	arrRegEx[i]   = /ｊ/g;	arrRepEx[i++] = "j";
	arrRegEx[i]   = /ｋ/g;	arrRepEx[i++] = "k";
	arrRegEx[i]   = /ｌ/g;	arrRepEx[i++] = "l";
	arrRegEx[i]   = /ｍ/g;	arrRepEx[i++] = "m";
	arrRegEx[i]   = /ｎ/g;	arrRepEx[i++] = "n";
	arrRegEx[i]   = /ｏ/g;	arrRepEx[i++] = "o";
	arrRegEx[i]   = /ｐ/g;	arrRepEx[i++] = "p";
	arrRegEx[i]   = /ｑ/g;	arrRepEx[i++] = "q";
	arrRegEx[i]   = /ｒ/g;	arrRepEx[i++] = "r";
	arrRegEx[i]   = /ｓ/g;	arrRepEx[i++] = "s";
	arrRegEx[i]   = /ｔ/g;	arrRepEx[i++] = "t";
	arrRegEx[i]   = /ｕ/g;	arrRepEx[i++] = "u";
	arrRegEx[i]   = /ｖ/g;	arrRepEx[i++] = "v";
	arrRegEx[i]   = /ｗ/g;	arrRepEx[i++] = "w";
	arrRegEx[i]   = /ｘ/g;	arrRepEx[i++] = "x";
	arrRegEx[i]   = /ｙ/g;	arrRepEx[i++] = "y";
	arrRegEx[i]   = /ｚ/g;	arrRepEx[i++] = "z";

	arrRegEx[i]   = /０/g;	arrRepEx[i++] = "0";
	arrRegEx[i]   = /１/g;	arrRepEx[i++] = "1";
	arrRegEx[i]   = /２/g;	arrRepEx[i++] = "2";
	arrRegEx[i]   = /３/g;	arrRepEx[i++] = "3";
	arrRegEx[i]   = /４/g;	arrRepEx[i++] = "4";
	arrRegEx[i]   = /５/g;	arrRepEx[i++] = "5";
	arrRegEx[i]   = /６/g;	arrRepEx[i++] = "6";
	arrRegEx[i]   = /７/g;	arrRepEx[i++] = "7";
	arrRegEx[i]   = /８/g;	arrRepEx[i++] = "8";
	arrRegEx[i]   = /９/g;	arrRepEx[i++] = "9";

	arrRegEx[i]   = /＠/g;	arrRepEx[i++] = "@";
	arrRegEx[i]   = /．/g;	arrRepEx[i++] = ".";
	arrRegEx[i]   = /－/g;	arrRepEx[i++] = "-";

	// 摒除所有非法的 E-Mail 字元或是 [aaa.bbb.ccc.ddd]
	//arrRegEx[i++]   = /[^\w@._\-]+/g;
	//arrRepEx[i++] = "";

	// E-Mail 的 @ 後面只能放一些字元
	arrRegEx[i]   = /@[^a-zA-Z0-9]+/;	arrRepEx[i++] = "@";

	// E-Mail 的結尾，一定是「英文」
	arrRegEx[i]   = /[^a-zA-Z]+$/;		arrRepEx[i++] = "";

	for(i=0; i<arrRegEx.length ; i++)
	{
		str = str.replace(arrRegEx[i], arrRepEx[i]);
	}

	return str;
};


DoggyFormatObject.prototype.username_check = function(str)
{
	if(str.length < 2 || str.length > 16 || !str.match(/^[a-z][a-z0-9_\.]+[a-z0-9]$/)) {
		return false;
	}

	return true
}

DoggyFormatObject.prototype.fieldname_check = function(str)
{
	if(str.length < 2 || str.length > 30 || !str.match(/^[a-z][a-z0-9_]+[a-z0-9]$/)) {
		return false;
	}
	// 保留欄位名稱!
	switch(str)
	{
		case "id": return false;
		case "table_id": return false;

		case "ctime": return false;
		case "mtime": return false;
		case "cuserid": return false;
		case "muserid": return false;
	}

	return true
}

DoggyFormatObject.prototype.date_check = function(str)
{
	if(!str.match(/^[1-2]\d\d\d-[0-1]\d-[0-3]\d$/)) {
		return false;
	}
	return true
}

DoggyFormatObject.prototype.time_check = function(str)
{
	if(!str.match(/^[0-2]\d:[0-5]\d:[0-5]\d$/)) {
		return false;
	}
	return true
}

DoggyFormatObject.prototype.datetime_check = function(str)
{
	if(!str.match(/^[1-2]\d\d\d-[0-1]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d$/)) {
		return false;
	}
	return true
}

DoggyFormatObject.prototype.email_check = function(str)
{
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)

	// 沒有小老鼠符號(@)
	if (str.indexOf(at)==-1){
	   return false
	}

	// 沒有小老鼠符號(@)或出現在頭尾
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	// 沒有逗點符號(.)或出現在頭尾
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

	// 超過兩個 @
	if (str.indexOf(at,(lat+1))!=-1){
	   return false
	}

	// @ 前、後是 .
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	   return false
	}

	// @ 後面沒有任何的 .
	if (str.indexOf(dot,(lat+2))==-1){
	   return false
	}

	// 出現空白
	if (str.indexOf(" ")!=-1){
	   return false
	}

	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

	if(filter.test(str) == false){
		return false
	}

	return true
}


// Initialize

dformat = new DoggyFormatObject();


function check_form_email(fieldID)
{
	if(dformat.email_check(fieldID.value) == false)
	{
		fieldID.style.background = '#FF6666'
	}
	else
	{
		fieldID.style.background = '#FFFFFF'
	}
}

function check_form_tel(fieldID)
{
	if(dformat.tel_check(fieldID.value) == false)
	{
		fieldID.style.background = '#FF6666'
	}
	else
	{
		fieldID.style.background = '#FFFFFF'
	}
}



function searchOptions(obj, str, offset)
{
	str = str.replace(/([\*\(\)\?\[\]\\\+\|\{\}\.])/g, '\\$1')

	if(!offset)
		offset = 1

	if(str.length < 1)
		return false

	re = new RegExp(str, "i");

	if(obj.length > 1)
	{
		for(i=offset ; i < obj.length ; i++)
		{
			if(re.test(obj.options[i].text))
			{
				obj.selectedIndex = i
				return true
			}
			if(i >= obj.length-1)
			{
				//if(confirm('找不到任何資料\r\n\r\n是否重頭搜尋？'))
				{
					i = 1;
				}
			}
		}
		return false
	}

	return false
}

function makeapassword(passwordlength)
{
	var pwdchars = new Array();

	pwdchars[0] = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
	pwdchars[1] = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
	pwdchars[2] = new Array("0","1","2","3","4","5","6","7","8","9");

	var specialsokay = "no";

	if (specialsokay == "yes")
	{
		pwdchars[3] = new Array("!","@","#","$","%","^","&","*","(",")","+");
	}

	var rannum1;
	var rannum2;
	var rannum3;
	var pickelem;
	var loopcounter;
	var passwordelement;
	var finalpassword = "";
	var passwordarray = new Array();

	for (loopcounter = 0; loopcounter < passwordlength; loopcounter++)
	{
		do
		{
			rannum1 = Math.floor(Math.random() * pwdchars.length);

			if ((loopcounter == 0) && (specialsokay == "yes"))
			{
				rannum1=Math.floor(Math.random() * (pwdchars.length - 1))
			}

			pickelem = Math.floor(Math.random() * pwdchars[rannum1].length)

			passwordelement = pwdchars[rannum1][pickelem];

		} while ((rannum1 == rannum2) && (rannum1 == rannum3));

		finalpassword = finalpassword + passwordelement;

		rannum3 = rannum2;
		rannum2 = rannum1;

		if (rannum1 == 3)
		{
			rannum3 = rannum2;
		}
	}
	return finalpassword;
}

var fapi = new DoggyFormatObject();

var iapi = new DoggyInputObject();

// address

function update_zip( Name, nForm, id, form_name)
{
	// nForm == area
	// rForm == zip

	nForm.length = 0;

	if (id=="1")
	{
		//rForm=eval('form_name.zip');
	}

	rForm=form_name.zip

	rForm.value='';

	switch( Name )
	{
		case "台北市":
			nForm.options[0] = new Option("中正區", 100);
			nForm.options[1] = new Option("大同區", 103);
			nForm.options[2] = new Option("中山區", 104);
			nForm.options[3] = new Option("松山區", 105);
			nForm.options[4] = new Option("大安區", 106);
			nForm.options[5] = new Option("萬華區", 108);
			nForm.options[6] = new Option("信義區", 110);
			nForm.options[7] = new Option("士林區", 111);
			nForm.options[8] = new Option("北投區", 112);
			nForm.options[9] = new Option("內湖區", 114);
			nForm.options[10] = new Option("南港區", 115);
			nForm.options[11] = new Option("文山區", 116);
			break;

		case "基隆市":
			nForm.options[0] = new Option("仁愛區", 200);
			nForm.options[1] = new Option("信義區", 201);
			nForm.options[2] = new Option("中正區", 202);
			nForm.options[3] = new Option("中山區", 203);
			nForm.options[4] = new Option("安樂區", 204);
			nForm.options[5] = new Option("暖暖區", 205);
			nForm.options[6] = new Option("七堵區", 206);
			break;

		case "台北縣":
			nForm.options[0] = new Option("萬里", 207);
			nForm.options[1] = new Option("金山", 208);
			nForm.options[2] = new Option("板橋", 220);
			nForm.options[3] = new Option("汐止", 221);
			nForm.options[4] = new Option("深坑", 222);
			nForm.options[5] = new Option("石碇", 223);
			nForm.options[6] = new Option("瑞芳", 224);
			nForm.options[7] = new Option("平溪", 226);
			nForm.options[8] = new Option("雙溪", 227);
			nForm.options[9] = new Option("貢寮", 228);
			nForm.options[10] = new Option("新店", 231);
			nForm.options[11] = new Option("坪林", 232);
			nForm.options[12] = new Option("烏來", 233);
			nForm.options[13] = new Option("永和", 234);
			nForm.options[14] = new Option("中和", 235);
			nForm.options[15] = new Option("土城", 236);
			nForm.options[16] = new Option("三峽", 237);
			nForm.options[17] = new Option("樹林", 238);
			nForm.options[18] = new Option("鶯歌", 239);
			nForm.options[19] = new Option("三重", 241);
			nForm.options[20] = new Option("新莊", 242);
			nForm.options[21] = new Option("泰山", 243);
			nForm.options[22] = new Option("林口", 244);
			nForm.options[23] = new Option("蘆洲", 247);
			nForm.options[24] = new Option("五股", 248);
			nForm.options[25] = new Option("八里", 249);
			nForm.options[26] = new Option("淡水", 251);
			nForm.options[27] = new Option("三芝", 252);
			nForm.options[28] = new Option("石門", 253);
			break;
		case "宜蘭縣":
			nForm.options[0] = new Option("宜蘭", 260 );
			nForm.options[1] = new Option("頭城", 261);
			nForm.options[2] = new Option("礁溪", 262);
			nForm.options[3] = new Option("壯圍", 263);
			nForm.options[4] = new Option("員山", 264);
			nForm.options[5] = new Option("羅東", 265);
			nForm.options[6] = new Option("三星", 266);
			nForm.options[7] = new Option("大同", 267);
			nForm.options[8] = new Option("五結", 268);
			nForm.options[9] = new Option("冬山", 269);
			nForm.options[10] = new Option("蘇澳", 270 );
			nForm.options[11] = new Option("南澳", 272);
			break;
		case "新竹市":
			nForm.options[0] = new Option("新竹市", 300,1,1);
			break;
		case "新竹縣":
			nForm.options[0] = new Option("竹北", 302);
			nForm.options[1] = new Option("湖口", 303);
			nForm.options[2] = new Option("新豐", 304);
			nForm.options[3] = new Option("新埔", 305);
			nForm.options[4] = new Option("關西", 306);
			nForm.options[5] = new Option("芎林", 307);
			nForm.options[6] = new Option("寶山", 308);
			nForm.options[7] = new Option("竹東", 310);
			nForm.options[8] = new Option("五峰", 311);
			nForm.options[9] = new Option("橫山", 312);
			nForm.options[10] = new Option("尖石", 313);
			nForm.options[11] = new Option("北埔", 314);
			nForm.options[12] = new Option("峨眉", 315);
  			break;
		case "桃園縣":
			nForm.options[0] = new Option("中壢", 320);
			nForm.options[1] = new Option("平鎮", 324);
			nForm.options[2] = new Option("龍潭", 325);
			nForm.options[3] = new Option("楊梅", 326);
			nForm.options[4] = new Option("新屋", 327);
			nForm.options[5] = new Option("觀音", 328);
			nForm.options[6] = new Option("桃園", 330);
			nForm.options[7] = new Option("龜山", 333);
			nForm.options[8] = new Option("八德", 334);
			nForm.options[9] = new Option("大溪", 335);
			nForm.options[10] = new Option("復興", 336);
			nForm.options[11] = new Option("大園", 337);
			nForm.options[12] = new Option("蘆竹", 338);
  			break;
		case "苗栗縣":
			nForm.options[0] = new Option("竹南", 350);
			nForm.options[1] = new Option("頭份", 351);
			nForm.options[2] = new Option("三灣", 352);
			nForm.options[3] = new Option("南庄", 353);
			nForm.options[4] = new Option("獅潭", 354);
			nForm.options[5] = new Option("後龍", 356);
			nForm.options[6] = new Option("通霄", 357);
			nForm.options[7] = new Option("苑裡", 358);
			nForm.options[8] = new Option("苗栗", 360);
			nForm.options[9] = new Option("造橋", 361);
			nForm.options[10] = new Option("頭屋", 362);
			nForm.options[11] = new Option("公館", 363);
			nForm.options[12] = new Option("大湖", 364);
			nForm.options[13] = new Option("泰安", 365);
			nForm.options[14] = new Option("銅鑼", 366);
			nForm.options[15] = new Option("三義", 367);
			nForm.options[16] = new Option("西湖", 368);
			nForm.options[17] = new Option("卓蘭", 369);
  			break;
		case "台中市":
			nForm.options[0] = new Option("中區", 400);
			nForm.options[1] = new Option("東區", 401);
			nForm.options[2] = new Option("南區", 402);
			nForm.options[3] = new Option("西區", 403);
			nForm.options[4] = new Option("北區", 404);
			nForm.options[5] = new Option("北屯區", 406);
			nForm.options[6] = new Option("西屯區", 407);
			nForm.options[7] = new Option("南屯區", 408);
			break;
		case "台中縣":
			nForm.options[0] = new Option("太平", 411);
			nForm.options[1] = new Option("大里", 412);
			nForm.options[2] = new Option("霧峰", 413);
			nForm.options[3] = new Option("烏日", 414);
			nForm.options[4] = new Option("豐原", 420);
			nForm.options[5] = new Option("后里", 421);
			nForm.options[6] = new Option("石岡", 422);
			nForm.options[7] = new Option("東勢", 423);
			nForm.options[8] = new Option("和平", 424);
			nForm.options[9] = new Option("新社", 426);
			nForm.options[10] = new Option("潭子", 427);
			nForm.options[11] = new Option("大雅", 428);
			nForm.options[12] = new Option("神岡", 429);
			nForm.options[13] = new Option("大肚", 432);
			nForm.options[14] = new Option("沙鹿", 433);
			nForm.options[15] = new Option("龍井", 434);
			nForm.options[16] = new Option("梧棲", 435);
			nForm.options[17] = new Option("清水", 436);
			nForm.options[18] = new Option("大甲", 437);
            nForm.options[19] = new Option("外埔", 438);				
			nForm.options[20] = new Option("大安", 439);  			
                        break;
		case "彰化縣":
			nForm.options[0] = new Option("彰化", 500);
			nForm.options[1] = new Option("芬園", 502);
			nForm.options[2] = new Option("花壇", 503);
			nForm.options[3] = new Option("秀水", 504);
			nForm.options[4] = new Option("鹿港", 505);
			nForm.options[5] = new Option("福興", 506);
			nForm.options[6] = new Option("線西", 507);
			nForm.options[7] = new Option("和美", 508);
			nForm.options[8] = new Option("伸港", 509);
			nForm.options[9] = new Option("員林", 510);
			nForm.options[10] = new Option("社頭", 511);
			nForm.options[11] = new Option("永靖", 512);
			nForm.options[12] = new Option("埔心", 513);
			nForm.options[13] = new Option("溪湖", 514);
			nForm.options[14] = new Option("大村", 515);
			nForm.options[15] = new Option("埔鹽", 516);
			nForm.options[16] = new Option("田中", 520);
			nForm.options[17] = new Option("北斗", 521);
			nForm.options[18] = new Option("田尾", 522);
            nForm.options[19] = new Option("埤頭", 523);
			nForm.options[20] = new Option("溪洲", 524);
			nForm.options[21] = new Option("竹塘", 525);
			nForm.options[22] = new Option("二林", 526);
			nForm.options[23] = new Option("大城", 527);
			nForm.options[24] = new Option("芳苑", 528);
			nForm.options[25] = new Option("二水", 530);
			break;
		case "南投縣":
			nForm.options[0] = new Option("南投", 540);
			nForm.options[1] = new Option("中寮", 541);
			nForm.options[2] = new Option("草屯", 542);
			nForm.options[3] = new Option("國姓", 544);
			nForm.options[4] = new Option("埔里", 545);
			nForm.options[5] = new Option("仁愛", 546);
			nForm.options[6] = new Option("名間", 551);
			nForm.options[7] = new Option("集集", 552);
			nForm.options[8] = new Option("水里", 553);
			nForm.options[9] = new Option("魚池", 555);
			nForm.options[10] = new Option("信義", 556);
			nForm.options[11] = new Option("竹山", 557);
			nForm.options[12] = new Option("鹿谷", 558);
			break;
		case "嘉義市":
			nForm.options[0] = new Option("嘉義市", 600, 1, 1);
			break;
		case "嘉義縣":
			nForm.options[0] = new Option("番路", 602);
			nForm.options[1] = new Option("梅山", 603);
			nForm.options[2] = new Option("竹崎", 604);
			nForm.options[3] = new Option("阿里山", 605);
			nForm.options[4] = new Option("中埔", 606);
			nForm.options[5] = new Option("大埔", 607);
			nForm.options[6] = new Option("水上", 608);
			nForm.options[7] = new Option("鹿草", 611);
			nForm.options[8] = new Option("太保", 612);
			nForm.options[9] = new Option("朴子", 613);
			nForm.options[10] = new Option("東石", 614);
			nForm.options[11] = new Option("六腳", 615);
			nForm.options[12] = new Option("新港", 616);
			nForm.options[13] = new Option("民雄", 621);
			nForm.options[14] = new Option("大林", 622);
			nForm.options[15] = new Option("溪口", 623);
			nForm.options[16] = new Option("義竹", 624);
			nForm.options[17] = new Option("布袋", 625);
  			break;
		case "雲林縣":
			nForm.options[0] = new Option("斗南", 630);
			nForm.options[1] = new Option("大埤", 631);
			nForm.options[2] = new Option("虎尾", 632);
			nForm.options[3] = new Option("土庫", 633);
			nForm.options[4] = new Option("褒忠", 634);
			nForm.options[5] = new Option("東勢", 635);
			nForm.options[6] = new Option("臺西", 636);
			nForm.options[7] = new Option("崙背", 637);
			nForm.options[8] = new Option("麥寮", 638);
			nForm.options[9] = new Option("斗六", 640);
			nForm.options[10] = new Option("林內", 643);
			nForm.options[11] = new Option("古坑", 646);
			nForm.options[12] = new Option("莿桐", 647);
			nForm.options[13] = new Option("西螺", 648);
			nForm.options[14] = new Option("二崙", 649);
			nForm.options[15] = new Option("北港", 651);
			nForm.options[16] = new Option("水林", 652);
			nForm.options[17] = new Option("口湖", 653);
			nForm.options[18] = new Option("四湖", 654);
                        nForm.options[19] = new Option("元長", 655);
			break;
		case "台南市":
			nForm.options[0] = new Option("中區", 700);
			nForm.options[1] = new Option("東區", 701);
			nForm.options[2] = new Option("南區", 702);
			nForm.options[3] = new Option("西區", 703);
			nForm.options[4] = new Option("北區", 704);
			nForm.options[5] = new Option("安平區", 708);
			nForm.options[6] = new Option("安南區", 709);
			break;
		case "台南縣":
			nForm.options[0] = new Option("永康", 710);
			nForm.options[1] = new Option("歸仁", 711);
			nForm.options[2] = new Option("新化", 712);
			nForm.options[3] = new Option("左鎮", 713);
			nForm.options[4] = new Option("玉井", 714);
			nForm.options[5] = new Option("楠西", 715);
			nForm.options[6] = new Option("南化", 716);
			nForm.options[7] = new Option("仁德", 717);
			nForm.options[8] = new Option("關廟", 718);
			nForm.options[9] = new Option("龍崎", 719);
			nForm.options[10] = new Option("官田", 720);
			nForm.options[11] = new Option("麻豆", 721);
			nForm.options[12] = new Option("佳里", 722);
			nForm.options[13] = new Option("西港", 723);
			nForm.options[14] = new Option("七股", 724);
			nForm.options[15] = new Option("將軍", 725);
			nForm.options[16] = new Option("學甲", 726);
			nForm.options[17] = new Option("北門", 727);
			nForm.options[18] = new Option("新營", 730);
            nForm.options[19] = new Option("後壁", 731);				
			nForm.options[20] = new Option("白河", 732);
			nForm.options[21] = new Option("東山", 733);
			nForm.options[22] = new Option("六甲", 734);
			nForm.options[23] = new Option("下營", 735);
			nForm.options[24] = new Option("柳營", 736);
			nForm.options[25] = new Option("鹽水", 737);
			nForm.options[26] = new Option("善化", 741);
			nForm.options[27] = new Option("大內", 742);
			nForm.options[28] = new Option("山上", 743);
			nForm.options[29] = new Option("新市", 744);
			nForm.options[30] = new Option("安定", 745);
			break;
		case "高雄市":
			nForm.options[0] = new Option("新興區", 800);
			nForm.options[1] = new Option("前金區", 801);
			nForm.options[2] = new Option("苓雅區", 802);
			nForm.options[3] = new Option("鹽埕區", 803);
			nForm.options[4] = new Option("鼓山區", 804);
			nForm.options[5] = new Option("旗津區", 805);
			nForm.options[6] = new Option("前鎮區", 806);
			nForm.options[7] = new Option("三民區", 807);
			nForm.options[8] = new Option("楠梓區", 811);
			nForm.options[9] = new Option("小港區", 812);
			nForm.options[10] = new Option("左營區", 813);
			break;
		case "高雄縣":
			nForm.options[0] = new Option("仁武", 814);
			nForm.options[1] = new Option("大社", 815);
			nForm.options[2] = new Option("岡山", 820);
			nForm.options[3] = new Option("路竹", 821);
			nForm.options[4] = new Option("阿蓮", 822);
			nForm.options[5] = new Option("田寮", 823);
			nForm.options[6] = new Option("燕巢", 824);
			nForm.options[7] = new Option("橋頭", 825);
			nForm.options[8] = new Option("梓官", 826);
			nForm.options[9] = new Option("彌陀", 827);
			nForm.options[10] = new Option("永安", 828);
			nForm.options[11] = new Option("湖內", 829);
			nForm.options[12] = new Option("鳳山", 830);
			nForm.options[13] = new Option("大寮", 831);
			nForm.options[14] = new Option("林園", 832);
			nForm.options[15] = new Option("鳥松", 833);
			nForm.options[16] = new Option("大樹", 840);
			nForm.options[17] = new Option("旗山", 842);
			nForm.options[18] = new Option("美濃", 843);
            nForm.options[19] = new Option("六龜", 844);				
			nForm.options[20] = new Option("內門", 845);
			nForm.options[21] = new Option("杉林", 846);
			nForm.options[22] = new Option("甲仙", 847);
			nForm.options[23] = new Option("桃源", 848);
			nForm.options[24] = new Option("三民", 849);
			nForm.options[25] = new Option("茂林", 851);
			nForm.options[26] = new Option("茄萣", 852);
			break;
		case "屏東縣":
			nForm.options[0] = new Option("屏東", 900);
			nForm.options[1] = new Option("三地門", 901);
			nForm.options[2] = new Option("霧臺", 902);
			nForm.options[3] = new Option("瑪家", 903);
			nForm.options[4] = new Option("九如", 904);
			nForm.options[5] = new Option("里港", 905);
			nForm.options[6] = new Option("高樹", 906);
			nForm.options[7] = new Option("鹽埔", 907);
			nForm.options[8] = new Option("長治", 908);
			nForm.options[9] = new Option("麟洛", 909);
			nForm.options[10] = new Option("竹田", 911);
			nForm.options[11] = new Option("內埔", 912);
			nForm.options[12] = new Option("萬丹", 913);
			nForm.options[13] = new Option("潮州", 920);
			nForm.options[14] = new Option("泰武", 921);
			nForm.options[15] = new Option("來義", 922);
			nForm.options[16] = new Option("萬巒", 923);
			nForm.options[17] = new Option("崁頂", 924);
			nForm.options[18] = new Option("新埤", 925);
            nForm.options[19] = new Option("南州", 926);
			nForm.options[20] = new Option("林邊", 927);
			nForm.options[21] = new Option("東港", 928);
			nForm.options[22] = new Option("琉球", 929);
			nForm.options[23] = new Option("佳冬", 931);
			nForm.options[24] = new Option("新園", 932);
			nForm.options[25] = new Option("枋寮", 940);
			nForm.options[26] = new Option("枋山", 941);
			nForm.options[27] = new Option("春日", 942);
			nForm.options[28] = new Option("獅子", 943);
			nForm.options[29] = new Option("車城", 944);
			nForm.options[30] = new Option("牡丹", 945);
			nForm.options[31] = new Option("恆春", 946);
			nForm.options[32] = new Option("滿州", 947);
			break;
		case "花蓮縣":
			nForm.options[0] = new Option("花蓮", 970);
			nForm.options[1] = new Option("新城", 971);
			nForm.options[2] = new Option("秀林", 972);
			nForm.options[3] = new Option("吉安", 973);
			nForm.options[4] = new Option("壽豐", 974);
			nForm.options[5] = new Option("鳳林", 975);
			nForm.options[6] = new Option("光復", 976);
			nForm.options[7] = new Option("豐濱", 977);
			nForm.options[8] = new Option("瑞穗", 978);
			nForm.options[9] = new Option("萬榮", 979);
			nForm.options[10] = new Option("玉里", 981);
			nForm.options[11] = new Option("卓溪", 982);
			nForm.options[12] = new Option("富里", 983);
			break;
		case "澎湖縣":
			nForm.options[0] = new Option("馬公", 880);
			nForm.options[1] = new Option("西嶼", 881);
			nForm.options[2] = new Option("望安", 882);
			nForm.options[3] = new Option("七美", 883);
			nForm.options[4] = new Option("白沙", 884);
			nForm.options[5] = new Option("湖西", 885);
			break;
		case "金門":
			nForm.options[0] = new Option("金沙", 890);
			nForm.options[1] = new Option("金湖", 891);
			nForm.options[2] = new Option("金寧", 892);
			nForm.options[3] = new Option("金城", 893);
			nForm.options[4] = new Option("烈嶼", 894);
			nForm.options[5] = new Option("烏坵", 896);
			break;	
		case "馬祖":
			nForm.options[0] = new Option("南竿", 209);
			nForm.options[1] = new Option("北竿", 210);
			nForm.options[2] = new Option("莒光", 211);
			nForm.options[3] = new Option("東引", 212);
			break;
		case "台東縣":
			nForm.options[0] = new Option("台東", 950);
			nForm.options[1] = new Option("綠島", 951);
			nForm.options[2] = new Option("蘭嶼", 952);
			nForm.options[3] = new Option("延平", 953);
			nForm.options[4] = new Option("卑南", 954);
			nForm.options[5] = new Option("鹿野", 955);
			nForm.options[6] = new Option("關山", 956);
			nForm.options[7] = new Option("海端", 957);
			nForm.options[8] = new Option("池上", 958);
			nForm.options[9] = new Option("東河", 959);
			nForm.options[10] = new Option("成攻", 961);
			nForm.options[11] = new Option("長賓", 962);
			nForm.options[12] = new Option("太麻里", 963);
			nForm.options[13] = new Option("金峰", 964);
			nForm.options[14] = new Option("大武", 965);
			nForm.options[15] = new Option("達仁", 966);
			break;

		case "海外地區":
			nForm.options[0] = new Option("海外地區", "---");
			break;

		default:
			nForm.options[0] = new Option("---------");
			nForm.options[1] = new Option();
			nForm.options[2] = new Option();
			nForm.options[3] = new Option();
			nForm.options[4] = new Option();
			break;
	}

	rForm.value=nForm.options[nForm.options.selectedIndex].value;
	form_name.field_area.value=nForm.options[nForm.options.selectedIndex].text;

}

function update_num( rForm, xForm ) {
	rForm.value=xForm.options[xForm.options.selectedIndex].value;
}


