String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function isBlank(field) {
	var fieldVal = field.value;
	return (fieldVal.trim().length == 0);
}

function isValidEmailAddress(addr, lang) {
	var errMsg = '';
	var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
	if (addr.search(emailRegEx) == -1) {
		errMsg = eval(lang+"_msg01") + eval(lang+"_msg04") + '.\n';
	}
	return errMsg;
}

function isValidEmail(fieldId, lang) {
	var errMsg = '';
	var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
	var field = document.getElementById(fieldId);
	if (field.value.search(emailRegEx) == -1) {
		errMsg = eval(lang+"_msg01") + eval(lang+"_msg04") + '.\n';
	}
	return errMsg;
}

function isValidTelNo(no, msg) {
	var errMsg = '';
	var telRegEx = /[A-Z-]/i;
	if (no.search(telRegEx) >= 0) {
		errMsg = msg + '.\n';
	}
	return errMsg;
}

function isValidTel(fieldId, msg) {
	var errMsg = '';
	var telRegEx = /[A-Z-]/i;
	var field = document.getElementById(fieldId);
	if (field.value.search(telRegEx) >= 0) {
		errMsg = msg + '.\n';
	}
	return errMsg;
}

function blockNonNumericKeys(e, allowNegative) {
	var key = window.event ? e.keyCode : e.which;
	var keychar = String.fromCharCode(key);
	reg = /\d|\./;
	if (allowNegative == 1) reg = /\d|\.|\-/;
	return reg.test(keychar);
}

function getSelectBoxErrMsg(fieldId, fieldName, isDate, mandatory, lang) {
    var field = document.getElementById(fieldId);
    var fieldVal = field.options[field.selectedIndex].value;
    var hasErr = false;
	var errMsg = '';
	if (mandatory) {
        hasErr = fieldVal.trim().length == 0;
	}
	if (!hasErr && isDate) {
		hasErr = !Date.parseExact(fieldVal, "yyyy-MM-dd");
	}
	if (hasErr) {
		errMsg += eval(lang+"_msg01") + fieldName + '.';
		errMsg += (isDate) ? '(yyyy-MM-dd)\n' : '\n';
	}
	return errMsg;
}

function getInputBoxErrMsg(fieldId, fieldName, isDate, mandatory, lang) {
	var field = document.getElementById(fieldId);
	var hasErr = false;
	var errMsg = '';
	if (mandatory) {
		hasErr = isBlank(field);
	}
	if (!hasErr && isDate) {
		hasErr = !Date.parseExact(field.value, "yyyy-MM-dd");
	}
	if (hasErr) {
		errMsg += eval(lang+"_msg01") + fieldName + '.';
		errMsg += (isDate) ? '(yyyy-MM-dd)\n' : '\n';
	}
	return errMsg;
}

function checkStep2SpecifyOptions(optionList, lang) {
	var errMsg = '';
	for (var i = 0; i < optionList.length; i++) {
		errMsg += checkStep2Specify(optionList[i], lang);
	}
	return errMsg;
}

function checkStep2Specify(oNo, lang) {
//	var answers = document.step2Form.question;
	var answers = document.getElementsByName('question[]');
	var errMsg = '';
	for (var i = 0; i < answers.length; i++) {
		if (answers[i].checked) {
			var temp = parseInt(answers[i].value);
			if (oNo == temp) {
				var specifyValue = document.getElementById("q"+oNo);
				if (isBlank(specifyValue)) {
				    oNo = oNo + "";
					errMsg = eval(lang+"_msg03") + oNo.substr(0, 1)
                    + eval(lang+"_msg03b") + oNo + ").\n";
				}
			}
		}
	}
	return errMsg;
}

function checkStep2Questions(questionList, lang) {
	var errMsg = '';
	for (var i = 0; i < questionList.length; i++) {
		errMsg += checkStep2Question(questionList[i], lang);
	}
	return errMsg;
}

function checkStep2Question2(lang) {
	var q2List = new Array(21, 22, 23, 24, 25, 26);
	var errMsg = '';
	for (var i = 0; i < q2List.length; i++) {
		var temp = checkStep2Question(q2List[i], lang);
		if (temp == '') {
			errMsg = '';
			break;
		} else {
			errMsg = temp;
		}
	}
	errMsg = (errMsg == '') ? '' : checkStep2Question(2, lang);
	return errMsg;
}

function checkStep2Question(qNo, lang) {
//	var answers = document.step2Form.question;
	var answers = document.getElementsByName('question[]');
	var checkMin = qNo * 100;
	var checkMax = (qNo + 1) * 100;
	var errMsg = eval(lang+"_msg01") + eval(lang+"_msg02") + qNo + ".\n";
	for (var i = 0; i < answers.length; i++) {
		if (answers[i].checked) {
			var temp = parseInt(answers[i].value);
			if (temp > checkMin && temp < checkMax) {
				errMsg = '';
				break;
			}
		}
	}
	return errMsg;
}

function blockStep2MultiCheck(qNo, boxNo) {
	var answers = document.getElementsByName('question[]');
	var currentAns = document.getElementById('box'+boxNo);
	var isChecking = currentAns.checked;
    var checkMin = qNo * 100;
	var checkMax = (qNo + 1) * 100;
	for (var i = 0; i < answers.length; i++) {
    	var temp = parseInt(answers[i].value);
    	if (temp > checkMin && temp < checkMax) {
            answers[i].checked = false;
		}
	}
	if (isChecking) {
        currentAns.checked = true;
    }
}

function checkStep1Form(lang) {
	var regType = document.step1Form.regType;
	for (var i = 0; i < regType.length; i++) {
		if (regType[i].checked) {
			return true;;
		}
	}
	alert(eval(lang+"_msg00") + eval(lang+"_LABEL00"));
	return false;
}

function checkStep2Form(lang) {
	var errMsg = getSelectBoxErrMsg('salutation', eval(lang+"_LABEL01a"), false, true, lang);
	errMsg += getInputBoxErrMsg('jobTitle', eval(lang+"_LABEL01"), false, true, lang);
    errMsg += getInputBoxErrMsg('givenName', eval(lang+"_LABEL02"), false, true, lang);
	errMsg += getInputBoxErrMsg('surname', eval(lang+"_LABEL03"), false, true, lang);
	errMsg += getInputBoxErrMsg('company', eval(lang+"_LABEL04"), false, true, lang);
	errMsg += getInputBoxErrMsg('email', eval(lang+"_LABEL05"), false, true, lang);
    errMsg += isValidEmail('email', lang);
	errMsg += getInputBoxErrMsg('countryCode', eval(lang+"_LABEL06a"), false, true, lang);
	errMsg += getInputBoxErrMsg('areaCode', eval(lang+"_LABEL06b"), false, false, lang);
	errMsg += getInputBoxErrMsg('telNo', eval(lang+"_LABEL06c"), false, true, lang);
	errMsg += isValidTel('countryCode', eval(lang+"_msg01") + eval(lang+"_msg05a"));
	errMsg += isValidTel('areaCode', eval(lang+"_msg01") + eval(lang+"_msg05b"));
	errMsg += isValidTel('telNo', eval(lang+"_msg01") + eval(lang+"_msg05c"));
	errMsg += isValidTel('mobile', eval(lang+"_msg01") + eval(lang+"_msg06"));
	errMsg += isValidTel('fax', eval(lang+"_msg01") + eval(lang+"_msg07"));
	errMsg += getInputBoxErrMsg('address', eval(lang+"_LABEL07"), false, true, lang);
	errMsg += getSelectBoxErrMsg('country', eval(lang+"_LABEL08"), false, true, lang);
	
	var questionList = new Array(3, 4, 5, 6);
	errMsg += checkStep2Question(1, lang);
	errMsg += checkStep2Question2(lang);
	errMsg += checkStep2Questions(questionList, lang);
	
	var optionList = new Array(115, 2113, 2204, 2308, 2405, 2504,
							2604, 303, 304, 307, 404, 411, 807);
	errMsg += checkStep2SpecifyOptions(optionList, lang);
	
	if (errMsg.length > 0) {
		alert(errMsg);
		return false;
	}
	return true;
}

function reloadStep3Form(qty) {
	var reloadForm = document.reloadForm;
	reloadForm.noOfColleagues.value = qty;
	reloadForm.submit();
}

function checkStep3Fields(fieldName, labelName, lang) {
	var answers = document.getElementsByName(fieldName+'[]');
	var errMsg = '';
	for (var i = 0; i < answers.length; i++) {
		if (isBlank(answers[i])) {
			errMsg = eval(lang+"_msg01") + labelName + ".\n";
			break;
		}
	}
	return errMsg;
}

function checkStep3Email(lang) {
	var answers = document.getElementsByName('email[]');
	var errMsg = '';
	for (var i = 0; i < answers.length; i++) {
		errMsg = isValidEmailAddress(answers[i].value, lang);
	}
	return errMsg;
}

function checkStep3Mobile(lang) {
	var answers = document.getElementsByName('mobile[]');
	var errMsg = '';
	for (var i = 0; i < answers.length; i++) {
		errMsg = isValidTelNo(answers[i].value, eval(lang+"_msg01") + eval(lang+"_msg06"));
	}
	return errMsg;
}

function checkStep3Form(lang) {
	var step3Form = document.step3Form;
	var errMsg = '';
	errMsg += checkStep3Fields('givenName', eval(lang+"_LABEL02"), lang);
	errMsg += checkStep3Fields('lastName', eval(lang+"_LABEL09"), lang);
	errMsg += checkStep3Fields('jobTitle', eval(lang+"_LABEL01"), lang);
	errMsg += checkStep3Fields('email', eval(lang+"_LABEL05"), lang);
	errMsg += checkStep3Email(lang);
	errMsg += checkStep3Mobile(lang);
	if (errMsg.length > 0) {
		alert(errMsg);
		return false;
	}
	return true;
}

function checkStep3CodeForm(lang) {
	var regForm = document.regForm;
	var invitor = regForm.invitor;
	var exhibitor = regForm.exhibitor;
	var organizer = regForm.organizer;
	var errMsg = getInputBoxErrMsg('code', eval(lang+"_LABEL11"), false, true, lang);
	
	if (!invitor[0].checked && !invitor[1].checked) {
		errMsg += eval(lang+"_msg00") + eval(lang+"_LABEL12") + ".";
	}
	if (invitor[0].checked) {
		errMsg += getInputBoxErrMsg('exhibitor', eval(lang+"_LABEL13"), false, true, lang);
	}
	if (invitor[1].checked) {
		errMsg += getInputBoxErrMsg('organizer', eval(lang+"_LABEL14"), false, true, lang);
	}

	if (errMsg.length > 0) {
		alert(errMsg);
		return false;
	}
	return true;
}

function checkOnsiteCreateForm() {
    var lang = 'en';
    var i = 0;
    var errMsg = getInputBoxErrMsg('barcode', "Barcode", false, true, lang);
    errMsg += getSelectBoxErrMsg('regType', "Registration Type", false, true, lang);
	errMsg += getInputBoxErrMsg('givenName', "First Name", false, true, lang);
	errMsg += getInputBoxErrMsg('surname', eval(lang+"_LABEL03"), false, true, lang);
	errMsg += getInputBoxErrMsg('company', eval(lang+"_LABEL04"), false, true, lang);
	errMsg += getSelectBoxErrMsg('country', "Country", false, true, lang);
//	errMsg += getInputBoxErrMsg('countryCode', eval(lang+"_LABEL06a"), false, true, lang);
    errMsg += getInputBoxErrMsg('jobTitle', eval(lang+"_LABEL01"), false, true, lang);
    //	errMsg += getInputBoxErrMsg('areaCode', eval(lang+"_LABEL06b"), false, false, lang);
//	errMsg += getInputBoxErrMsg('telNo', eval(lang+"_LABEL06c"), false, true, lang);
	errMsg += isValidTel('countryCode', eval(lang+"_msg01") + eval(lang+"_msg05a"));
	errMsg += isValidTel('areaCode', eval(lang+"_msg01") + eval(lang+"_msg05b"));
	errMsg += isValidTel('telNo', eval(lang+"_msg01") + eval(lang+"_msg05c"));
	errMsg += isValidTel('mobile', eval(lang+"_msg01") + eval(lang+"_msg06"));
	errMsg += isValidTel('fax', eval(lang+"_msg01") + eval(lang+"_msg07"));
//	errMsg += getInputBoxErrMsg('email', eval(lang+"_LABEL05"), false, true, lang);
//    errMsg += isValidEmail('email', lang);
	
	if (errMsg.length > 0) {
		alert(errMsg);
		return false;
	}
	return true;
}

function toogleExcelExport(formId, isExport) {
	var exportForm = document.getElementById(formId);
	exportForm.exportExcel.value = isExport;
	exportForm.submit();
}

function selectCCYAmount(amount) {
	var payForm = document.getElementById('payForm');
	payForm.amount.value = amount;
}

function isIE() {
    var ua = navigator.userAgent.toLowerCase();
    return ua.indexOf( "msie" ) != -1 ;
}

function openDetailsWin(rid) {
	window.open ("show_details.php?rid="+rid, "mywindow","menubar=0,resizable=1,location=0,status=0,scrollbars=1,width=650,height=500"); 	
}
