// General functions for javascript
function trim(str) {
	return str.replace(/^\s*|\s*$/g,"");
}
// End

function uploadPic(picform){
	var objPicForm = document.getElementById(picform);
	objPicForm.action = "uploadpic.php";
    objPicForm.submit();
}


function loadPage(nPage){
var url;
	if (!nPage || !objMenuForm) return false;
	
    switch (nPage){
    	case 1:
        	url = "home.php";
        	break;
    	case 2:
        	url = "personalinfo.php";
        	break;
    	case 3:
        	url = "education.php";
        	break;
    	case 4:
        	url = "career.php";
        	break;
    	case 5:
        	url = "employment.php";
        	break;
    	case 6:
        	url = "family.php";
        	break;
    	case 7:
        	url = "references.php";
        	break;
    	case 8:
        	url = "editacct.php";
        	break;
    	case 9:
        	url = "deleteacct.php";
        	break;
    	case 10:
        	url = "logout.php";
        	break;
    }
    objMenuForm.action = url;
    objMenuForm.submit();
}

function backPage(nPage){
	if (confirm("Changes you have made will not be saved. Continue?")){
		loadPage(nPage);
	}
}

function deleteRecs(fieldCheckBox) {
	var tmp = countChecked(fieldCheckBox);
    if (tmp){
        alert("No record marked (checked) for deletion.");
        return false;
    }
    var ans;
    ans = confirm("Are you sure you want to delete all checked records from your list?");
    if (ans){
        objForm.mode.value = "del";
        objForm.submit();
    }
}

// ycon.07dec05
// checkbox.length returns undefined if list contains only 1 element (eg.schools[0])
// thus setting countCheckBoxes to 0 on undefined AND
// using objCheckBoxes w/o index (objCheckBoxes.checked)
function countChecked(fieldCheckboxes) {
	var objCheckBoxes = objForm.elements[fieldCheckboxes];
    
    if(!objCheckBoxes) return true;
       
	var countCheckBoxes = objCheckBoxes.length;
    var zeroChecked = true;
    
    if (!countCheckBoxes){
    	if (objCheckBoxes.checked)
        	zeroChecked = false;
    }else{
        forLoop:
		for (var i = 0; i < countCheckBoxes; i++){
        	if (objCheckBoxes[i].checked){
            	zeroChecked = false;
                break forLoop;
            }
        }
    }	
    return zeroChecked;
}


function setCheckBoxes(parentCheckBox, childCheckBoxes){
	var objParentBox  = objForm.elements[parentCheckBox];
	var objCheckBoxes = objForm.elements[childCheckBoxes];
    var checkValue    = objParentBox.checked;

    if(!objCheckBoxes)
    	return;
	
    var countCheckBoxes = objCheckBoxes.length;
	if (!countCheckBoxes)
		objCheckBoxes.checked = checkValue;
	else
		// set the check value for all child check boxes
		for(var i = 0; i<countCheckBoxes; i++)
			objCheckBoxes[i].checked = checkValue;
}

/*
function setCheckBoxes(fieldName, checkValue){
	var objCheckBoxes = objForm.elements[fieldName];
	if(!objCheckBoxes)
    	return;
	var countCheckBoxes = objCheckBoxes.length;
	if (!countCheckBoxes)
		objCheckBoxes.checked = checkValue;
	else
		// set the check value for all check boxes
		for(var i = 0; i < countCheckBoxes; i++)
			objCheckBoxes[i].checked = checkValue;
}
*/


// for email validation ---------------------------------------------------------------------------
function isValidEmail(f, re, eMsg, ru, r) {
	err = tmt_regExpValidator(f, re, eMsg, ru, r);

	if(err == "eMsg")
	    return false;

	return true;
}
function MM_findObj(n, d) {
	var p, i, x;  

	if(!d) 
	    d = document; 

	if((p=n.indexOf("?")) > 0 && parent.frames.length) {
	    d = parent.frames[n.substring(p+1)].document; 
	    n = n.substring(0,p);
	}

	if(!(x=d[n])&&d.all) 
	    x = d.all[n]; 

	for(i=0; !x && i < d.forms.length; i++) 
	    x = d.forms[i][n];

	for(i=0; !x && d.layers && i < d.layers.length; i++) 
	    x = MM_findObj(n,d.layers[i].document);

	if(!x && document.getElementById) 
	    x = document.getElementById(n); 

	return x;
}
function tmt_regExpValidator(f, re, eMsg, ru, r) {
	var myErr = "";
	var fv = MM_findObj(f).value;
	var rex = new RegExp(unescape(re));
	var t = eval(ru+rex.test(fv));

	if(r) { 
	    if(fv.length <= 0 || !t) { 
		alert(unescape(eMsg)); 
		myErr += "eMsg";
	    }
	}
	else if(fv.length > 0 && !t) {
	    alert(unescape(eMsg));
	    myErr += "eMsg";
	}

	return myErr;
}
// email validation ------------------------------------------------------------------------------

function saveForm(ntag){
	if (ntag==2){
        objForm.mode.value = "back";
    }

    return checkForm(0);
}

function checkAccountInfo(){
	if (objForm.password1.value != "" || objForm.password2.value != "") {
		var tmp;
		tmp = objForm.password1.value;
		if (tmp.length<4) {
			alert("Password should at least be four (4) characters long.");
			objForm.password1.focus();
			return false;
		} 
		
		if (objForm.password1.value != objForm.password2.value) {
			alert("Passwords do not match.");
			objForm.password1.focus();
			return false;
		}
	}
	
	if (objForm.email1.value == "") {
		alert("Please enter your E-mail address.");
		objForm.email1.focus();
		return false;
	}
    if ((objForm.email1.value != "") && (!isValidEmail('email1', '%5E%5B%5Cw%5C.=-%5D%2B@%5B%5Cw%5C.-%5D%2B%5C.%5Ba-z%5D%7B2,3%7D$', 'Invalid%20email%20address%20format.', '', '1'))) {
		objForm.email1.focus();
	    return false;
	}
    if ((objForm.email2.value != "") && (!isValidEmail('email2', '%5E%5B%5Cw%5C.=-%5D%2B@%5B%5Cw%5C.-%5D%2B%5C.%5Ba-z%5D%7B2,3%7D$', 'Invalid%20email%20address%20format.', '', '1'))) {
		objForm.email2.focus();
        return false;
	}
	if (objForm.email1.value == objForm.email2.value) {
		objForm.email2.value = "";
	}
    return true;
}


function formCancel(tag){
	switch (tag){
    	case 1:
        	objForm.action = "personalinfo.php";
        	break;
    	case 2:
        	objForm.action = "education.php";
        	break;
    	case 3:
        	objForm.action = "employment.php";
        	break;
    	case 4:
        	objForm.action = "family.php";
        	break;
    	case 5:
        	objForm.action = "career.php";
        	break;
    }
    objForm.submit();
} //formCancel


function formSubmit(formName,formAction){
	eval('document.'+ formName + '.action = \"' + formAction + '\";');
    eval('document.'+ formName + '.submit;')
} //formSubmit


function checkForm(confirm){
	
	var objFields = document.getElementById('reqFields');
    var strtemp = objFields.value;
    var arrtemp =  strtemp.split(":");
    var arrfields = arrtemp[0].split(",");
    var arrtype   = arrtemp[1].split(",");
    var boo11, boo12, objField, ntmp;

	if (confirm==null) {
		confirm=1;
	}

	forLoop:
	for (i=0; i<arrfields.length; i++) {
		boo1 = false;

		switch (arrtype[i]) {
		case "text": // text,combo,textarea
			if (objForm.name=='educForm') {
				fname = arrfields[i].substring(5);
				if (fname=='school_id') {
					ans = eval('objForm.'+arrfields[i]+'.value');
					fld = arrfields[i].substring(0,5)+'school';
					if (ans==0 && eval('objForm.'+fld+'.value')=='') {
						boo1 = true
						objField = 'objForm.'+fld+'.focus();';
						break forLoop;
					}
				} else {
					ans = eval('objForm.' + arrfields[i] + '.value');
					if (ans==""){
						boo1 = true;
						objField = 'objForm.' + arrfields[i] + '.focus();';
						break forLoop;
					}
				}
			} else {
				ans = eval('objForm.' + arrfields[i] + '.value');
				if (ans==""){
					boo1 = true;
					objField = 'objForm.' + arrfields[i] + '.focus();';
					break forLoop;
				}
			}
			break;

		case "radio":
			//ans1 = eval('document.'+ formName + '.' + arrfields[i] + '[0].checked');
			//ans2 = eval('document.'+ formName + '.' + arrfields[i] + '[1].checked');
			
			//alert("hello!");
			//alert(eval('objForm.' + arrfields[i] + '.length'));
			//return false;
			
			
			ntmp = eval('objForm.' + arrfields[i] + '.length');
			boo2 = true;
			for(j=0; j<ntmp; j++){
				ans = eval('objForm.' + arrfields[i] + '[' + j + '].checked');
				objField = 'objForm.' + arrfields[i] + '[' + j + '].focus();';
				if (ans){
					boo2 = false;
					break;
				}
			}
			if (boo2){
				boo1 = true;
				break forLoop;
			}
			
			/*
			ans1 = eval('objForm.' + arrfields[i] + '[0].checked');
			ans2 = eval('objForm.' + arrfields[i] + '[1].checked');
			if (!ans1 && !ans2){
				boo1 = true;
				//objField = 'objForm.'+ formName + '.' + arrfields[i] + '[0].focus();';
				objField = 'objForm.' + arrfields[i] + '[0].focus();';
				break forLoop;
			}
			break;
			*/
		}
	}
	
	
    if (boo1){
    	alert("Please check your answers. All fields marked with an asterisk (*) should be filled.");
        //alert(objField);
        eval(objField);
	    return false;
    }
    //eval('objForm.it;');

	if (confirm == 0) {
		objForm.submit();
	}else if (confirm == 1){
		if (confirmSave()) {
			objForm.submit();
		}
	}
}

//----- EDUCATION MODULE ------------------------------------------------------------
function addRowFields(tableId, rowId, countField){
	var objTable	= document.getElementById(tableId);
    var objTableRow = document.getElementById(rowId);
    var objCntField = document.getElementById(countField);
    var cloneRow	= objTableRow.cloneNode(true);

    counter++;
    cloneRow.id = '';
    var cloneRowNodes  = cloneRow.childNodes;
    // loop through the cloned rows child nodes and get node (td) where id is set --> <td id='examField'> (td of marker)
    // if id is set, remove cloned row's id to retain unique property of 'marked' td's  --> <td id=''> (td of clone)
    // next, replace element names of cloned rows (eg, <input type=text name='type1'> to <input type=text name='type2'>)
    for (i=0; i<cloneRowNodes.length; i++){
        var cloneRowColId = cloneRowNodes[i].id;
        if (cloneRowColId){
        	cloneRowColId.id = '';
            var newRowFields = cloneRowNodes[i].childNodes;
            for (j=0; j<newRowFields.length; j++){
                var fieldName = newRowFields[j].name;             
                if (fieldName){
                	fieldName = fieldName.substring(0,(fieldName.length-1))
                	newRowFields[j].name = fieldName + counter;
                }
            }
        }
    }
    objCntField.value = counter;
    objTable.appendChild(cloneRow);
} //addRowFields()


function deleteRowFields(tableId, rowId, countField, delIdsField){
	var objTable	   = document.getElementById(tableId);
    var objTableRow    = document.getElementById(rowId);
    var objCntField    = document.getElementById(countField);
    var objDelIdsField = document.getElementById(delIdsField);
    var del_ids        = objDelIdsField.value;

	//Check all rows in table. Length of table will change during loop if deletes occur.
	if (counter>0){
    	// loop through the table and get rows with checkbox as the first element (marker can't be used since cloned rows have null ('') ids)
        alert('table length: '+objTable.rows.length);
        for (i=0; i<objTable.rows.length; i++) {
        	var rowNodes = objTable.rows[i].cells;
            for (j=0; j<rowNodes.length; j++){
                var cellNodes = rowNodes[j].childNodes;
                //alert(++cellNodes[0].name);
	            alert('row '+i+' col '+j+': '+cellNodes[0].name);
            }
/*        	var rowNodes = objTable.rows[i].childNodes;
            for (j=0; j<rowNodes.length; j++){
            	alert(rowNodes[j].cell[0].nodeName)
            	//alert('row: '+i+j+rowNodes[j].nodeName)
            }*/
        	//alert('i: '+objTable.rows[i].length);
        	//var rowNodes =  objTable.rows[i].childNodes;
        	//alert('i = '+rowNodes.length);
            //alert(objTable.rows[i].cells[0].firstChild.nodeType);
/*			if (objTable.rows[i].cells[0].firstChild.checked) {
	        	del_ids = (del_ids=='') ? (objTable.rows[i].cells[0].childNodes[1].value) : (del_ids+';'+objTable.rows[i].cells[0].childNodes[1].value);
                counter--;
				objTable.deleteRow(i);
			}*/
		}
        objDelIdsField.nodeValue = del_ids;
	    objCntField.value    = counter;
/*		if (chknum==0){
			emptyFriendRow();
		}*/
	}	
}
//----- END: EDUCATION MODULE ------------------------------------------------------------



//----- REFERENCES MODULE ------------------------------------------------------------
function emptyFriendRow(){
	var tbl = document.getElementById('friendsTable');
	var rownum = document.referenceForm.rowCount.value;
	var empRow = tbl.insertRow(rownum);
	var cell = empRow.insertCell(0);
	cell.setAttribute('colspan', '4');
	cell.setAttribute('align', 'center');
	cell.innerHTML = "<i>** List is empty **</i>";
}

function addFriendRow(id,name,rel,dept){
    if (!name){
		name = "";
	}
	if (!rel){
		rel = "";
	}
	if (!dept){
    	dept = "";
	}
	var tbl = document.getElementById('friendsTable');
	var cnt = eval(document.referenceForm.chkCount.value);
	var row = eval(document.referenceForm.rowCount.value);
	
	if (cnt=="0"){
		tbl.deleteRow(row);
	}

	cnt++;
	var cloneRowNodes = tbl.insertRow(row);
		
	// 1st cell
	var cell1 = cloneRowNodes.insertCell(0);
	var textNode = document.createTextNode("");
	el = document.createElement('input');
	el.setAttribute('type', 'checkbox');
	el.setAttribute('name', 'check' + cnt);
	cell1.appendChild(el);
	el = document.createElement('input');
	el.setAttribute('type', 'hidden');
	el.setAttribute('name', 'friend_id' + cnt);
	el.setAttribute('id', 'friend_id' + cnt);
	el.setAttribute('value', id);
	cell1.appendChild(el);
	cell1.appendChild(textNode);
	
	// 2nd cell
	var cell2 = cloneRowNodes.insertCell(1);
	var el = document.createElement('input');
	el.setAttribute('type', 'text');
	el.setAttribute('name', 'friend_name' + cnt);
	el.setAttribute('class', 'formInputSpecial');
	el.setAttribute('style', 'width: 180px');
	el.setAttribute('value', name);
	el.setAttribute('maxlength', '90');
	cell2.appendChild(el);		
	
	// 3rd cell
	var cell3 = cloneRowNodes.insertCell(2);
	var el = document.createElement('input');
	el.setAttribute('type', 'text');
	el.setAttribute('name', 'friend_rel' + cnt);
	el.setAttribute('class', 'formInputSpecial');
	el.setAttribute('style', 'width: 180px');
	el.setAttribute('value', rel);
	el.setAttribute('maxlength', '30');
	cell3.appendChild(el);
	
	// 4th cell
	var cell4 = cloneRowNodes.insertCell(3);
	el = document.createElement('input');
	el.setAttribute('type', 'text');
	el.setAttribute('name', 'friend_dept' + cnt);
	el.setAttribute('class', 'formInputSpecial');
	el.setAttribute('style', 'width: 180px');
	el.setAttribute('value', dept);
	el.setAttribute('maxlength', '30');
	cell4.appendChild(el);	

	document.referenceForm.rowCount.value = row+1;
	document.referenceForm.chkCount.value = cnt;

} //addFriendRow()

function deleteRow(id) {
	var rownum  = eval(document.referenceForm.rowCount.value);
	var	chknum  = eval(document.referenceForm.chkCount.value);
    var del_ids = document.referenceForm.delIds.value;
	var tbl = document.getElementById("friendsTable");
    var id='';

	//Check all rows in table. Length of table will change during loop if deletes occur.
	if (chknum>0){
		for (i = tbl.rows.length-1; i != 0; i--) {
			if (tbl.rows[i].cells[0].firstChild.checked) {
	        	del_ids = (del_ids=='') ? (tbl.rows[i].cells[0].childNodes[1].value) : (del_ids+';'+tbl.rows[i].cells[0].childNodes[1].value);
				rownum--;
				chknum--;
				tbl.deleteRow(i);
			}
		}
        document.referenceForm.delIds.value   = del_ids;
		document.referenceForm.rowCount.value = rownum;
		document.referenceForm.chkCount.value = chknum;
		if (chknum==0){
			emptyFriendRow();
		}
	}	
} //deleteRow()
										
function modifyRef(cid) {
	document.referenceForm.action = "references2.php"
	document.referenceForm.id.value = cid;
	document.referenceForm.mode.value = "mod";
	document.referenceForm.submit();
}

function confirmDelete(ref) {
	var msg="";
	msg = "Are you sure you want to remove " + ref + " from your Reference/s list?";
	return confirm(msg);
}

function deleteRef(cid) {
	document.referenceForm.action = "references.php";
	document.referenceForm.id.value = cid;
	document.referenceForm.mode.value = "del";
	document.referenceForm.submit();
}

function confirmSave() {
	return confirm("Proceeding to the next page will save the provided information. Continue?");
}

function isFieldBlank(obj) {
	if (obj.value.length == 0) {
		alert ('Please enter ' + fieldName + '.');
		obj.focus();
		return true;
	} else {
		return false;
	}
}

function check_whitespaces(obj) {
	var myString = obj.value;
	var returnVal = true;
	var cnt = 0;
	
	for (x=0; x < myString.length; x++) {
		if (myString.charAt(x) == " "){
			cnt++;
		}
	}

	if (cnt == myString.length){
	//	alert ('Invalid input for ' + fieldName);
	//	obj.focus();
		returnVal = false ;
	}
		return returnVal;
}


//----- END: REFERENCES MODULE -------------------------------------------------------------------
