/***********************************************
* Required field(s) validation v1.10- By NavSurf
* Visit Nav Surf at http://navsurf.com
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
//Modified by AITINDO 2006

/*var error message */
var errHeading = "Error:";
var mustNotEmptyMsg = "must not be empty";
var mustEmailMsg = "is not in a correct email form";
var mustUrlMsg = "URL has incorrect format";
var pwdErrMsg = "Minimal Password length is 6 character, and Password must have at least 1 special character";
var dateExpiryMsg = "Active Date must be before Expired Date";
var dateEventMsg = "Start Date must be before End Date";
var numQuestionMsg = "Number of Questions shown must be lower or equal to the number of total questions";
var digitOnlyMsg = "Entri berikut harus berupa angka:";
var bulletedList = "-";

function trimAll(sString){
  while (sString.substring(0,1) == ' '){
    sString = sString.substring(1, sString.length);
  }
  while (sString.substring(sString.length-1, sString.length) == ' '){
    sString = sString.substring(0,sString.length-1);
  }
  return sString;
}

/* check a field must not be empty */
function checkFieldMustNotEmpty(formobj, objId, objDescription){
	var obj = formobj.getElementById(objId);
	if (obj != null) {
		var content = trimAll(obj.value)
		if (content == "") {
			return bulletedList + " " + objDescription + " " + mustNotEmptyMsg + "\n";
		}else{
			return "";
		}
	}else{
		return "";
	}
}
/* check a table must not be empty */
function checkTableMustNotEmpty(formobj, objId, objDescription)
{
	var obj = formobj.getElementById(objId); 
	if (obj != null) {
	 if (obj.rows.length < 1) {  
			return bulletedList + " " + objDescription + " " + mustNotEmptyMsg + "\n";
		}else{
			return "";
		}
	}else{
		return "";
	}
}

/* check a field must be in correct email form */
function validateEmail(formobj, objId, objDescription)
{
  var emailReg =  /^(?:\w+\.?)*\w+@(?:\w+\.?)*\w+$/;
  var obj = formobj.getElementById(objId);
	if (obj != null) {
		var content = trimAll(obj.value)
		if (!content.match(emailReg)) {
			return bulletedList + " " + objDescription + " " + mustEmailMsg + "\n";
		}else{
			return "";
		}
	}else{
		return "";
	}
}

/* check a field must be in correct email form */
function validateUrl(formobj, objId, objDescription)
{
  var urlReg =  /^((ht|f)tp(s?))\:\/\/([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
  var obj = formobj.getElementById(objId);
	if (obj != null) {
		var content = trimAll(obj.value)
		if (content == "") {
		  return bulletedList + " " + objDescription + " " + mustNotEmptyMsg + "\n";}
		else if (!content.match(urlReg)) {
			return bulletedList + " " + mustUrlMsg + "\n";}
		else{
			return "";
		}
	}else{
		return "";
	}
}

/* check a field must be in correct email form */
function compareTime(formobj, objId, objDescription)
{
  var alertMsg = ""
	var allFill = true;
	var objStart = new Date(formobj.getElementById(objId[0]).value);
	var objEnd = new Date(formobj.getElementById(objId[1]).value);
		
	for (var i = 0; i < objId.length; i++)
	{
		var obj = formobj.getElementById(objId[i])  
		if (obj != null) 
		{
			var content = trimAll(obj.value)
			if (content == "") {
				alertMsg += bulletedList + " " + objDescription[i] + " " + mustNotEmptyMsg + "\n";
				allFill = false;
			}else{
				allFill = allFill == false ? false : true;
			}
		}else{
			return "";
		}
	}
	
	if(allFill && objStart > objEnd)
	{
		alertMsg = bulletedList + " " + dateEventMsg + "\n";
	}
	
	return alertMsg;
}

function formCheckField(formobj,fieldRequired,fieldDescription){
	// dialog message
	var alertMsg = errHeading + "\n";
	var l_Msg = alertMsg.length;
	
	// check not empty
	for (var i = 0; i < fieldRequired.length; i++){
		alertMsg += checkFieldMustNotEmpty(formobj,fieldRequired[i], fieldDescription[i]);
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}

function formCheckTable(formobj,fieldRequired,fieldDescription,tableRequired,tableDescription){
	// dialog message
	var alertMsg = errHeading + "\n";
	var l_Msg = alertMsg.length;

	//check not empty
	for (var i = 0; i < fieldRequired.length; i++){
		alertMsg += checkFieldMustNotEmpty(formobj,fieldRequired[i], fieldDescription[i]);
	}
	//check table
 	for (var j = 0; j < tableRequired.length; j++){
		alertMsg += checkTableMustNotEmpty(formobj,tableRequired[j], fieldDescription[j]);
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}

function formCheckTableNumber(formobj,fieldRequired,fieldDescription,tableRequired,tableDescription,numberRequired,numberDescription){
	// dialog message
	var alertMsg = errHeading + "\n";
	
	var l_Msg = alertMsg.length;
	var obj;
	
	//check not empty
	for (var i = 0; i < fieldRequired.length; i++){
		alertMsg += checkFieldMustNotEmpty(formobj,fieldRequired[i], fieldDescription[i]);
	}

 var numQuestion = 0;
 for (var j = 0; j < tableRequired.length; j++){
		obj = formobj.getElementById(tableRequired[j]); 
		if (obj != null) {
			 numQuestion = j==0 ? obj.rows.length : numQuestion 		 
			 if (obj.rows.length < 1) {  
		    alertMsg += bulletedList + tableDescription[j] + "\n"; }
				}
	}
	
	var maxQuestion = 0;
	
	var numberMsg = "";
	for (var k = 0; k < numberRequired.length; k++){
		obj = formobj.getElementById(numberRequired[k]); 
		if (obj != null) {
			 var content = trimAll(obj.value)
			 if (content != "" && isNaN(content)) {
					numberMsg += bulletedList + numberDescription[k] + "\n";
					maxQuestion = k == 1 ? 0 : maxQuestion; 
				}
				else {
					maxQuestion = k == 1 ? parseInt(content) : maxQuestion;
				}
			}				
	}
	
	numberMsg = numberMsg != "" ? "\n" + digitOnlyMsg + "\n" + numberMsg : numberMsg;
	alertMsg += numberMsg;
	
	//alertMsg += maxQuestion + ',' + (numQuestion - 1);
	if (maxQuestion > (numQuestion - 1))
	{	
		  alertMsg += "\n" + numQuestionMsg + "\n";
		  alertMsg = alertMsg.length == l_Msg ? "" : alertMsg;
		    
	}
	
	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}

function formCheckFieldPassword(formobj,fieldRequired,fieldDescription,dateVar,dateDesc){
	// dialog message
	var alertMsg = errHeading + "\n";
	

	var l_Msg = alertMsg.length;
	
	//alert("start field check");
	for (var i = 0; i < fieldRequired.length; i++){
		alertMsg += checkFieldMustNotEmpty(formobj,fieldRequired[i], fieldDescription[i]);
	}
	
	//alert("end");

  
        var objPass = formobj.getElementById(fieldRequired[0]);               

        if(!objPass.value.match(/\W/) || objPass.value.length < 6)
        {
          alertMsg = (alertMsg.length == l_Msg) ? "" : alertMsg + "\n";
          alertMsg += pwdErrMsg + "\n";                 
	}
	
	var dateAct = new Date(formobj.getElementById(dateVar[0]).value);
	var dateExp = new Date(formobj.getElementById(dateVar[1]).value);
	
	//alert()
	
    if (dateAct > dateExp)
	{   
	    var dateMsg = "\n"+dateExpiryMsg+"\n";
		alertMsg = alertMsg.length == l_Msg ? dateMsg : alertMsg + dateMsg
	}
	
	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}

function formCheckFieldConfPassword(formobj,fieldRequired,fieldDescription,mustFill,mustFillDescription)
{
	// dialog message
	var alertMsg = errHeading + "\n";
	var alertTemp = "";
	var alertBool = false;
	var l_Msg = alertMsg.length;
	var obj;
	
	for (var i = 0; i < fieldRequired.length; i++){
		alertMsg += checkFieldMustNotEmpty(formobj,fieldRequired[i], fieldDescription[i]);
	}
  
	for (var j = 0; j < mustFill.length; j++){
		obj = formobj.getElementById(mustFill[j]);
		if (obj != null) {
			 var content = trimAll(obj.value)
			 if (content == "") {
		    alertTemp += bulletedList + mustFillDescription[j] + "\n" }
			 else
			 {  alertBool = true; }
		}			 		
	}
	
	var objPass = formobj.getElementById(mustFill[0]);
	
	if (alertTemp.length != 0 && alertBool == true)
	{
		alertMsg += alertTemp;
	
          if(!objPass.value.match(/\W/) || objPass.value.length < 6)
          {
            alertMsg = (alertMsg.length == l_Msg) ? "" : alertMsg + "\n";
            alertMsg += pwdErrMsg + "\n";                 
	        }
	}    
	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}