var emailre = new RegExp("^[a-zA-Z0-9]+[a-zA-Z0-9\._-]*@[a-zA-Z0-9\-]+\.([a-zA-Z0-9\.-]+)+$");

function validateEmail(email) {
  return emailre.test(email);
}

function validateAddress() {
  // no long validate address
  return true;
}

function basicFormCheck(frm, fields, no_warn) {
  var result = true, req;
  if (typeof(fields) == 'undefined')
    return false;
  missing = new Array();

  for (i in fields) {
    if (typeof(frm[i]) == 'undefined')
      continue;

    req = document.getElementById('req_' + i);
    if (req)
      req.style.display = 'none';

    switch (frm[i].type) {
      case 'checkbox':
	var checked = false;
	for (var j = 0 ; j < frm[i].length ; ++j)
	  checked |= frm[i][j].checked;
	if (!checked) {
	  missing.push(i);
	  if (req) req.style.display = 'inline';
	  result = false;
	}
	break;
      case 'select-one':
	if (frm[i].selectedIndex < 1) {
	  missing.push(i);
	  if (req) req.style.display = 'inline';
	  result = false;
	}
	break;
      case 'select-multiple':
	var selected = false;
	for (var j = 0 ; frm[i].options.length ; ++j)
	  selected |= frm[i].options[j].selected;
	if (!selected) {
	  missing.push(i);
	  if (req) req.style.display = 'inline';
	  result = false;
	}
	break;
      default:
	if (typeof(frm[i].length) == 'number') {
	  if (frm[i][0].type == 'radio' ||
	      frm[i][0].type == 'checkbox') {

	    var checked = false;
	    for (var j = 0 ; j < frm[i].length ; ++j)
	      checked |= frm[i][j].checked;
	    if (!checked) {
	      missing.push(i);
	      if (req) req.style.display = 'inline';
	      result = false;
	    }
	  }
	} else if (frm[i].value == '') {
	  missing.push(i);
	  if (req) req.style.display = 'inline';
	  result = false;
	}
    };
  }

  if (!no_warn) {
    var str = new String();
    for (i = 0 ; i < missing.length ; ++i)
      str += fields[missing[i]] + "\n";
    if (!result) {
      str = "請輸入以下欄位:\n" + str.substr(0, str.length - 1);
      window.alert(str);
    }
  }

  return result;
}

function checkHref(h) {
  var protocol = document.getElementById(h.id + '_protocol');
  if (protocol) {
    if (h.value.indexOf('://') > -1)
      protocol.innerHTML = '';
    else
      protocol.innerHTML = 'http://';
  }

  h.style.width = (h.value.length < 5 ? 5 : h.value.length * .6) + 'em';
}
