/*Information ************************************************
	Author:				Simon Paton
	Date Created:		2005-04-19(mod: 2005-08-06)
	Page Name:			public.js
	Purpose:			This is the cross-browser scripts file.
	XHTML1.0 COMPLIANT
*************************************************************/

/** GLOBAL */
var navType = -1;//undefined as yet
/** GLOBAL */

_ro('silly-value');
if( navType != -1 ) {
}

/*
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=1280,height=1024');");
}
*/

function _doPreviewCV( url ) {
	if( url ) {
		var pop = window.open(url,"","toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1");
	}
}

function viewResult( form, ID ) {
	if( !form.id )
		form = _ro(form);
	if( form && ID ) {
		form['ID'].value = ID;
		if( form['SUBMIT'] )
			form['SUBMIT'].disabled = true;
		form.submit();
	}
}

function swapImg( toImg, srcObj ) {
	if( !srcObj.src )
		srcObj = _ro(srcObj);
	
	if( srcObj.src && toImg ) {
		srcObj.src = toImg;
	}
}
function limitChars( obj, evt, allowedCharsRegX ) {
	return limitChars( obj, evt, allowedCharsRegX, -1 );
}
function limitChars( obj, evt, allowedCharsRegX, maxChars ) {
	var key = null;
    var keychar = null;
	var regEx = allowedCharsRegX;
	
	if( obj && maxChars > 0 ) {
		if( obj.value.length > maxChars -1 ) {
			obj.value.substring(0,maxChars);
			return false;
		}
	}
	if( window.event ) {//for IE
        key = window.event.keyCode;
    }
	else if( evt ) {
        key = evt.which;
    }
	else {
        return true;
    }
    keychar = String.fromCharCode(key);
    if ( (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) {
        return true;
    }
	else {
		if( allowedCharsRegX == null )
			regEx = /[\w\s\W]/;
		var m = keychar.match( regEx );
		return m != null;
    }
    return false;
}

/** First Registration Check - just the email: form the reg_login_form.jsp */
function _doRegChk( form ) {
	if( !form.id )
		form = _ro(form);
	else {
		if( isEmpty( form['register-email'] ) ) {
			alert('Please enter your Email Address!');
			form['register-email'].focus();
			return false;
		}
		else {
			var idx = form['register-email'].value.indexOf("@") != -1 ? 1 : 0;
			idx += form['register-email'].value.indexOf(".") != -1 ? 1 : 0;
			if( idx >= 2 )
				return true;
			else {
				alert('Please enter a proper Email Address!!');
				form['register-email'].focus();
				return false;
			}
		}
	}
}

function _doCVDocChk( form ) {
	if( !form.id )
		form = _ro(form);
	
	//assign method to return a child element...
	form.getField = _rc;
	
	if( form.id ) {
		if( form['cvFile'] && isEmpty( form['cvFile'] ) ) {
			alert('Please attach your Original CV Document\n(This is NOT optional!)');
			form['cvFile'].focus();
			return false;
		}
		if( form['disclaimer'] ) {
			if( form['disclaimer'].length ) {
				if( form.getField('yes') ) {
					if( form.getField('yes').checked )
						return true;
					else {
						alert('Disclaimer:\nPlease select \"YES\" if you wish to Register.');
						form.getField('yes').focus();
						return false;
					}
				}
			}
		}
	}
}


function _doDebronFranchiseChk( form ) {
	if( !form.id )
		form = _ro(form);
	
	//assign method to return a child element...
	form.getField = _rc;
	
	if( form.id ) {
		if( form['email'] ) {
			var idx = form['email'].value.indexOf("@") != -1 ? 1 : 0;
			idx += form['email'].value.indexOf(".") != -1 ? 1 : 0;
			if( isEmpty( form['email'] ) ) {
				alert('Please enter your Email Address!!');
				form['email'].focus();
				return false;
			}
			else if( idx < 2 ) {
				alert('Please enter a proper Email Address!!');
				form['email'].focus();
				return false;
			}
		}
		if( form['name'] && isEmpty( form['name'] ) ) {
			alert('Please enter your Name');
			form['name'].focus();
			return false;
		}
		if( form['surname'] && isEmpty( form['surname'] ) ) {
			alert('Please enter your Surname');
			form['surname'].focus();
			return false;
		}
		if( form['interests'] && isEmpty( form['interests'] ) ) {
			alert('Please enter your Interests');
			form['interests'].focus();
			return false;
		}
		if( form['passions'] && isEmpty( form['passions'] ) ) {
			alert('Please enter your Passions');
			form['passions'].focus();
			return false;
		}
		if( form['expertise'] && isEmpty( form['expertise'] ) ) {
			alert('Please enter your Areas of Expertise');
			form['expertise'].focus();
			return false;
		}
		if( form['nichemarket'] && isEmpty( form['nichemarket'] ) ) {
			alert('Please enter your Targetable Niche Market');
			form['nichemarket'].focus();
			return false;
		}
	}
}

/** Checks the Registration/CV Process Steps: from the cv_form.jsp */
function _doCVChk( form ) {
	if( !form.id )
		form = _ro(form);
	else {
		//assign method to return a child element...
		form.getField = _rc;
		
		if( form['titleID'] && form['titleID'].options[ form['titleID'].selectedIndex ].value == -1 ) {
			alert('Please select your Title');
			form['titleID'].focus();
			return false;
		}
		
		//NOTE: when looking for 'name', it will find the FORMS 'name' attribute!
		//USE: _ro( attribute_name );
		if( _ro('name') && isEmpty( _ro('name') ) ) {
			alert('Please enter your Name');
			form['name'].focus();
			return false;
		}
		
		if( form['surname'] && isEmpty( form['surname'] ) ) {
			alert('Please enter your Surname');
			form['surname'].focus();
			return false;
		}
		
		if( ( form['dayID'] && form['dayID'].options[ form['dayID'].selectedIndex ].value != -1 ) ||
			( form['month'] && form['month'].options[ form['month'].selectedIndex ].value != -1 ) ||
			( form['yearID'] && form['yearID'].options[ form['yearID'].selectedIndex ].value != -1 ) ) {
			
			if( form['dayID'].options[ form['dayID'].selectedIndex ].value == -1 ) {
				alert('Please select the Day of your Birthday');
				form['dayID'].focus();
				return false;
			}
			if( form['month'] && form['month'].options[ form['month'].selectedIndex ].value == -1 ) {
				alert('Please select the Month of your Birthday');
				form['month'].focus();
				return false;
			}
			if( form['yearID'] && form['yearID'].options[ form['yearID'].selectedIndex ].value == -1 ) {
				alert('Please select the Year of your Birthday');
				form['yearID'].focus();
				return false;
			}
		}
		
		if( form['ageID'] ) {
			if( form['ageID'].options[ form['ageID'].selectedIndex ].value == -1 ) {
				alert('Please select your Age');
				form['ageID'].focus();
				return false;
			}
		}
		if( form['raceID'] ) {
			if( form['raceID'].options[ form['raceID'].selectedIndex ].value == -1 ) {
				alert('Please select your Race');
				form['raceID'].focus();
				return false;
			}
		}
		if( form['genderID'] ) {
			if( form['genderID'].options[ form['genderID'].selectedIndex ].value == -1 ) {
				alert('Please select your Gender');
				form['genderID'].focus();
				return false;
			}
		}
		
		if( form['email'] ) {
			var idx = form['email'].value.indexOf("@") != -1 ? 1 : 0;
			idx += form['email'].value.indexOf(".") != -1 ? 1 : 0;
			if( isEmpty( form['email'] ) ) {
				alert('Please enter your Email Address!!');
				form['email'].focus();
				return false;
			}
			else if( idx < 2 ) {
				alert('Please enter a proper Email Address!!');
				form['email'].focus();
				return false;
			}
		}
		
		if( form['password'] && isEmpty( form['password'] ) ) {
			alert('Please enter your Password');
			form['password'].focus();
			return false;
		}
		if( form['confirm-password'] && isEmpty( form['confirm-password'] ) ) {
			alert('Please Confirm your Password');
			form['confirm-password'].focus();
			return false;
		}
		if( ( form['password'] && !isEmpty( form['password'] ) ) && ( form['confirm-password'] && !isEmpty( form['confirm-password'] ) ) ) {
			if( form['password'].value != form['confirm-password'].value ) {
				alert('Your Confirm Password does not match your Password\nPlease try again');
				form['confirm-password'].value = '';
				form['confirm-password'].focus();
				return false;
			}
		}
		
		if( form['cvFile'] && isEmpty( form['cvFile'] ) && form['cvDocNeeded'] ) {
			alert('Please attach your Original CV Document\n(This is NOT optional!)');
			form['cvFile'].focus();
			form['cvFile'].click();
			return false;
		}
		
		if( ( form['phoneWork'] && isEmpty( form['phoneWork'] ) ) &&
			( form['phoneHome'] && isEmpty( form['phoneHome'] ) ) &&
			( form['cell'] && isEmpty( form['cell'] ) ) 
			) {
			alert('Please fill at least 1 of the following Contact Numbers:\n\nPhone Work\nPhone Home\nCell');
			form['phoneWork'].focus();
			return false;
		}
		
		if( form['positionID'] ) {
			if( form['positionID'].options[ form['positionID'].selectedIndex ].value == -1 ) {
				alert('Please select your Position');
				form['positionID'].focus();
				return false;
			}
		}
		
		if( ( form['step'] && form['step'].value != 3 ) && form['summary'] && isEmpty( form['summary'] ) ) {
			alert('Please enter your Summary');
			form['summary'].focus();
			return false;
		}
		
		if( form['salaryID'] ) {
			if( form['salaryID'].options[ form['salaryID'].selectedIndex ].value == -1 ) {
				alert('Please select your Current Salary');
				form['salaryID'].focus();
				return false;
			}
		}
		
		if( form['qualification'] && isEmpty( form['qualification'] ) ) {
			alert('Please enter your Qualification');
			form['qualification'].focus();
			return false;
		}
		
		if( form['venue'] && isEmpty( form['venue'] ) ) {
			alert('Please enter the Venue of your Education');
			form['venue'].focus();
			return false;
		}
		
		if( ( form['startMonth'] && form['startMonth'].options[ form['startMonth'].selectedIndex ].value == -1 ) ||
			( form['startYear'] && form['startYear'].options[ form['startYear'].selectedIndex ].value == -1 ) ) {
			
			if( form['startMonth'] && form['startMonth'].options[ form['startMonth'].selectedIndex ].value == -1 ) {
				alert('Please select the Start Month of your Education');
				form['startMonth'].focus();
				return false;
			}
			if( form['startYear'] && form['startYear'].options[ form['startYear'].selectedIndex ].value == -1 ) {
				alert('Please select the Start Year of your Education');
				form['startYear'].focus();
				return false;
			}
		}
		
		if( ( form['endMonth'] && form['endMonth'].options[ form['endMonth'].selectedIndex ].value != -1 ) ||
			( form['endYear'] && form['endYear'].options[ form['endYear'].selectedIndex ].value != -1 ) ) {
			
			if( form['endMonth'] && form['endMonth'].options[ form['endMonth'].selectedIndex ].value == -1 ) {
				alert('Please select the End Month of your Education');
				form['endMonth'].focus();
				return false;
			}
			if( form['endYear'] && form['endYear'].options[ form['endYear'].selectedIndex ].value == -1 ) {
				alert('Please select the End Year of your Education');
				form['endYear'].focus();
				return false;
			}
		}
		
		if( form['rankID'] ) {
			if( form['rankID'].options[ form['rankID'].selectedIndex ].value == -1 ) {
				alert('Please select the Job Status for this Job');
				form['rankID'].focus();
				return false;
			}
		}
		
		if( form['jobTitle'] && isEmpty( form['jobTitle'] ) ) {
			alert('Please enter your Job Title');
			form['jobTitle'].focus();
			return false;
		}
		
		if( form['companyName'] && isEmpty( form['companyName'] ) ) {
			alert('Please enter your Company\'s name');
			form['companyName'].focus();
			return false;
		}
		
		/* NOT COMPULSARY
		if( form['responsibilities'] && isEmpty( form['responsibilities'] ) ) {
			alert('Please enter your Responsibilities');
			form['responsibilities'].focus();
			return false;
		}
		
		if( form['accomplishments'] && isEmpty( form['accomplishments'] ) ) {
			alert('Please enter your Accomplishments');
			form['accomplishments'].focus();
			return false;
		}
		*/
		
		if( ( form['start-day'] && form['start-day'].options[ form['start-day'].selectedIndex ].value == -1 ) ||
			( form['start-month'] && form['start-month'].options[ form['start-month'].selectedIndex ].value == -1 ) ||
			( form['start-year'] && form['start-year'].options[ form['start-year'].selectedIndex ].value == -1 ) ) {
			
			if( form['start-day'].options[ form['start-day'].selectedIndex ].value == -1 ) {
				alert('Please select the Start Day of your Job');
				form['start-day'].focus();
				return false;
			}
			if( form['start-month'].options[ form['start-month'].selectedIndex ].value == -1 ) {
				alert('Please select the Start Month of your Job');
				form['start-month'].focus();
				return false;
			}
			if( form['start-year'].options[ form['start-year'].selectedIndex ].value == -1 ) {
				alert('Please select the Start Year of your Job');
				form['start-year'].focus();
				return false;
			}
		}
		
		if( ( form['end-day'] && form['end-day'].options[ form['end-day'].selectedIndex ].value != -1 ) ||
			( form['end-month'] && form['end-month'].options[ form['end-month'].selectedIndex ].value != -1 ) ||
			( form['end-year'] && form['end-year'].options[ form['end-year'].selectedIndex ].value != -1 ) ) {
			
			if( form['end-day'].options[ form['end-day'].selectedIndex ].value == -1 ) {
				alert('Please select the End Day of your Job');
				form['end-day'].focus();
				return false;
			}
			if( form['end-month'].options[ form['end-month'].selectedIndex ].value == -1 ) {
				alert('Please select the End Month of your Job');
				form['end-month'].focus();
				return false;
			}
			if( form['end-year'].options[ form['end-year'].selectedIndex ].value == -1 ) {
				alert('Please select the End Year of your Job');
				form['end-year'].focus();
				return false;
			}
		}
		
		if( form['______'] && isEmpty( form['______'] ) ) {
			alert('Please enter your ______');
			form['______'].focus();
			return false;
		}
		
		if( form['______'] && isEmpty( form['______'] ) ) {
			alert('Please enter your ______');
			form['______'].focus();
			return false;
		}
		
		if( form['______'] && isEmpty( form['______'] ) ) {
			alert('Please enter your ______');
			form['______'].focus();
			return false;
		}
		
		if( form['______'] && isEmpty( form['______'] ) ) {
			alert('Please enter your ______');
			form['______'].focus();
			return false;
		}
		
		if( form['______'] && isEmpty( form['______'] ) ) {
			alert('Please enter your ______');
			form['______'].focus();
			return false;
		}
		
		if( form['______'] && isEmpty( form['______'] ) ) {
			alert('Please enter your ______');
			form['______'].focus();
			return false;
		}
		
		//FINALIZE
		if( confirm('Click \"Ok\" to submit the form') )
			return true;
	}
	return false;
}

function _doLoginChk( form ) {
	if( !form.id )
		form = _ro(form);
	else {
		//assign method to return a child element...
		form.getField = _rc;
		
		if( form['login-email'] ) {
			var idx = form['login-email'].value.indexOf("@") != -1 ? 1 : 0;
			idx += form['login-email'].value.indexOf(".") != -1 ? 1 : 0;
			if( isEmpty( form['login-email'] ) ) {
				alert('Please enter your Email Address!!');
				form['login-email'].focus();
				return false;
			}
			else if( idx < 2 ) {
				alert('Please enter a proper Email Address!!');
				form['login-email'].focus();
				return false;
			}
		}
		if( isEmpty( form['password'] ) ) {
			alert('Please enter your Password');
			form['password'].focus();
			return false;
		}
	}
}

/******** BEGIN NEW FUNCTIONS *******/

/*
document.write("document.all->" + ( document.all ? "true" : "false" ) + "<br />" );
document.write("document.getElementById->" + ( document.getElementById ? "true" : "false" ) + "<br />" );
document.write("document.layers->" + ( document.layers ? "true" : "false" ) + "<br />" );
*/

/* RETURN OBJECT */
function _ro( elementID ) {
	if( elementID ) {
		if( elementID.id ) {
			return elementID;
		}
		else if( navType != -1 ) {
			switch( navType ) {
				case 0://IE
					return document.all( elementID );
				case 1://mozilla?
					return document.getElementById( elementID );
				case 2://mozilla-netscape-etc
					return document.layers[ elementID ];
				default:
					return document.getElementById( elementID );
			}
		}
		else {
			if( document.all ) {
				navType = 0;
				return document.all( elementID );
			}
			else if( document.getElementById ) {
				navType = 1;
				return document.getElementById( elementID );
			}
			else if( document.layers ) {
				navType = 2;
				return document.layers[ elementID ];
			}
		}
	}
	alert(elementID + ' is null!');
	return null;
}

/* RETURN CHILD */
/* built-in object:method */
function _rc( elementID ) {
	//this refers to the form object
	return this[ elementID ];
}

/* RESET FORM FIELD */
function _rff( form, field ) {
	_rff( form, field, false, false );
}
function _rff( form, field, flag ) {
	_rff( form, field, flag, false );
}
function _rff( form, field, flag, bypass ) {
	form = _ro( form );
	if( form ) {
		//assign method to form object
		form.getField = _rc;
		field = form.getField( field );
		
		if( field ) {
			if( field.type ) {
				switch( field.type ) {
					case "hidden":
					case "text":
						field.value = '';
						break;
					case "radio":
					case "checkbox":
						field.checked = flag;
						break;
					case "select-one":
						field.selectedIndex = 0;
						if( !bypass )
							field.disabled = !flag;
						break;
					case "select-multiple":
						//field.selectedIndex = 0;
						deselect( field );
						if( !bypass )
							field.disabled = !flag;
						break;
					default:
						alert("FIELD-TYPE=> " + field.type);
						break;
				}
			}
		}
	}
}

/* CLEAR VALUE */
function _cl( elementID ) {
	var obj = _ro( elementID );
	if( obj ) {
		obj.value = '';
	}
}

/* DESELECT RADIO/CHECKBOX */
function _ds( elementID ) {
	var obj = _ro( elementID );
	//alert( obj );
	if( obj ) {
		if( obj.checked )
			obj.checked = false;
		else if( obj.selected )
			obj.selected = false;
	}
}

/* DIS/ENABLE OBJECT */
function _sw( form, field, flag ) {
	form = _ro( form );
	if( form ) {
		//assign method to form object
		form.getField = _rc;
		field = form.getField( field );
		
		if( field ) {
			field.disabled = flag;
		}
	}
}

function hideRows( tableID, startIdx, endIdx ) {
	var tbl = _ro( tableID );
	if( tbl ) {
		if( tbl.rows ) {
			len = tbl.rows.length;
			var ROW = null;
			
			startIdx -= 1;
			endIdx += 1;
			
			for( var r=0; r<len; r++ ) {
				if( r > startIdx && r < endIdx ) {
					ROW = tbl.rows[ r ];
					//alert( ROW.id + "[" + r + "]" );
					if( ROW.style.display != 'none' )
						ROW.style.display = 'none';
					else if( document.all )
						ROW.style.display = 'list-item';
					else
						ROW.style.display = 'table-row';
				}
			}
		}
	}
}

function addHTMLLink( field ) {
	field = _ro( field );
	if( field ) {
		var linkTxt = window.prompt('Please enter the link URL:\neg: http://www.debron.co.za');
		if( linkTxt != null ) {
			var alias = window.prompt('Please enter the link Name: (optional)\neg: debron website');
			if( linkTxt != null && linkTxt.length > 0 ) {
				if( linkTxt.indexOf("http://") == -1 )
					linkTxt = "http://" + linkTxt;
				field.value = field.value + 
								( field.value.length < 1 || field.value.charAt(field.value.length - 1) == ' ' ? "" : " " ) + 
								"<a href=\"" + linkTxt + "\">" + ( alias != null && alias.length > 0 ? alias : linkTxt ) + "</a> ";
			}
		}
	}
}

function isEmpty( obj ) {
	if( obj == null ) return true;
	obj = _ro( obj );
	//
	if( obj ) {
		var str = obj.value;
		if( !str || !str.length )
			return true;
		var len = str.length;
		//
		if( len == 0 || str == "" ) return true;
		else if( len ) {
			for( var x=0; x<len; x++ ) {
				if( str.charAt( x ) != " " )
					return false;
			}
			obj.value = '';
			return true;
		}
	}
	return true;
}

/******** END NEW FUNCTIONS *******/

/******** BEGIN UPDATE-SELECT FUNCTIONS *******/

function addOptionObj( str, tmpSel ) {
	
	if( str && tmpSel ) {
		tmpObj = 					document.createElement("option");
		tmpObj.defaultSelected = 	false;
		tmpObj.selected = 			false;
		
		if( str.indexOf( spl ) < 0 ) {
			tmpObj.defaultSelected = true;
			tmpObj.selected = 		true;
			swSpl = 				selectedSpl;
		}
		else
			swSpl = 				spl;
		
		tmpObj.text = 				str.substring( str.indexOf( swSpl ) + 1 );
		tmpObj.value = 				str.substring( 0, str.indexOf( swSpl ) );
		tmpIdx = 					tmpSel.options.length;
		tmpSel.options[ tmpIdx ] = 	tmpObj;
	}
}

var tmpArr;
function updateDropdown( catID, tmpSel ) {

	if( tmpSel ) {
		tmpArr = eval(tmpSel.name + "_array_" + catID);
		if( tmpArr && tmpArr.length ) {
			var len = tmpArr.length;
			for( var d=0; d<len; d++ )
				addOptionObj( tmpArr[ d ], tmpSel );
		}
	}
}

function updateDropdowns( catID, formObj ) {

	if( formObj ) {
		var frm;
		if( formObj.name )
			frm = formObj;
		else
			frm = _ro( formObj );
		
		if( frm && frm.id ) {
			clearDropdown( frm["positionID"] );
			if( frm["positionID"] && !frm["positionID"].multiple )
				addOptionObj( default_array[ 0 ], frm["positionID"] );
			
			clearDropdown( frm["qualificationID"] );
			if( frm["qualificationID"] && !frm["qualificationID"].multiple )
				addOptionObj( default_array[ 0 ], frm["qualificationID"] );
			
			clearDropdown( frm["experienceID"] );
			if( frm["experienceID"] && !frm["experienceID"].multiple )
				addOptionObj( default_array[ 0 ], frm["experienceID"] );
			
			if( catID > 0 ) {
				updateDropdown( catID, frm["positionID"] );
				updateDropdown( catID, frm["qualificationID"] );
				updateDropdown( catID, frm["experienceID"] );
			}
		}
	}
}

function clearDropdown( tmpSel ) {

	if( tmpSel ) {
		var len = tmpSel.options.length - 1;
		for( var loop=len; loop>-1; loop-- )
			//if( tmpSel.options[ loop ].value && tmpSel.options[ loop ].value != -1 )
				tmpSel.remove( loop );
	}
}

/******** END UPDATE-SELECT FUNCTIONS *******/

function toggleRowColor( row, styleName, chk ) {
	chk = _ro( chk );
	row = _ro( row );
	if( row && chk ) {
		if( !chk.checked )
			row.className = styleName;
	}
}

function toggleRow( chk, row, regClass, selClass, evt ) {
	chk = _ro( chk );
	row = _ro( row );
	if( chk ) {
		//if( !evt.cancelBubble )				// Makes sure that the event goes through the checkbox
			//chk.checked = !chk.checked;		// and not down to the row. If it does, it cancels itself out
		if( row ) {
			if( chk.checked )
				row.className = selClass;
			else
				row.className = regClass;
		}
	}
}

var len = 0;

function checkBoxes( tableID, prefix, sw1, sw2, style ) {
	var tbl = null;
	var rows = null;
	var chk = null;
	var flag = null;
	
	tbl = _ro( tableID );
	sw1 = _ro( sw1 );
	sw2 = _ro( sw2 );
	
	//prefix = prefix != null ? prefix : "";
	
	if( tableID && sw1 ) {
		flag = sw1.checked;
		if( sw2 )
			sw2.checked = flag;
		if( tbl.rows ) {
			len = tbl.rows.length;
			var ROW = null;
			
			for( var r=0; r<len; r++ ) {
				ROW = tbl.rows[ r ];
				chk = _ro( prefix + ROW.id );
				if( chk ) {
					chk.checked = flag;
					
					//if all rows are pre-selected, then it puts the className as 'row-selected' - very rare if this happens:)
					if( !ROW.mirrorclass )
						ROW.mirrorclass = ROW.className;
					
					if( flag )
						ROW.className = style;
					else
						ROW.className = ROW.mirrorclass;
				}
			}
		}
	}
}

var dateFormat = /[0123]{1}[0-9]{1}\/[0123]{1}[0-9]{1}\/[2]{1}[0]{1}[01]{1}[0-9]{1}/;
var phoneFormat = /[0][01234]{2}[-][1-9]/;
var img;

function chkDateFormat( field, flag ) {
	if( field ) {
		img = ( field.value.match( dateFormat ) ? "" : "no" ) + "tick.gif";
		if( flag.src )
			flag.src = img;
	}
}

var len, str1, str2, str3, idx;
var nums = "0123456789";
function numbersOnly( obj ) {
	numbersOnly( obj, null, false );
}
function numbersOnly( obj, evt ) {
	numbersOnly( obj, evt, false );
}

//modified from StandardBank InternetBanking script
function allowOnly( obj, evt, allowedChars ) {
	var key = null;
    var keychar = null;
    if( window.event ) {//for IE
        key = window.event.keyCode;
    }
	else if( evt ) {
        key = evt.which;
    }
	else {
        return true;
    }
    keychar = String.fromCharCode(key);
    if ( (key==null) || (key==0) || (key==8) || (key==9) || /*(key==13) ||*/ (key==27) ) {
        return true;
    } else if ( allowedChars == null || allowedChars.indexOf(keychar) > -1 ) {
        return true;
    }
    return false;
}

var dateChars = "0123456789/";
function datesOnly( obj ) {
	if( obj ) {
		var c = obj.value.charAt( obj.value.length - 1 );
		var str = null;
		if( dateChars.indexOf( c ) == -1 ) {
			str = obj.value;
			obj.value = str.substring(0, str.length - 1);
		}
	}
}

var i = 0;
var counter = 0;
var fieldObj = null;
var regEnc = "application/x-www-form-urlencoded";
function chkEncoding( formObj, fieldName, numFields ) {
	var f = formObj;
	
	if( f ) {
		counter = 0;
		for( i=0; i<numFields; i++ ) {
			fieldObj = eval( f.name + "." + fieldName + "" + (i+1) );
			if( isEmpty( fieldObj ) )
				counter++;
		}
		if( counter == numFields )
			formObj.encoding = regEnc;
		
		return true;
	}
	else {
		alert("Sorry, cannot submit this form!\nIncorrect Parameters.");
		return false;
	}
}


function deselect( select ) {
	if( select && !select.id )
		select = _ro( select );
	if( select ) {
		select.blur();
		var len_ = select.options.length;
		if( len_ > 0 ) {
			for( var s=0; s<len_; s++ )
				select[ s ].selected = false;
		}
	}
}


var tmpObj, tmp, idx, len, len2;
function addColumn( sel, sel2 ) {
	sel = _ro( sel );
	sel2 = _ro( sel2 );
	if( sel && sel2 ) {
		idx = sel2.options.length;
		len2 = idx;
		len = sel.options.length;
		if( len == len2 ) {
			sel.disabled = true;
			alert("There are no more columns to export.");
			return;
		}
		tmpObj = sel.options[ sel.selectedIndex ];
		for( var x=0; x<len2; x++ ) {
			tmp = sel2.options[ x ];
			if( tmp.text == tmpObj.text ) {
				alert("That column is already being exported!");
				return;
			}
		}
		tmp = null;
		sel2.options[ idx ] = new Option( tmpObj.text );
		len = sel.options.length;
		len2 = sel2.options.length;
		sel2.options[ idx ].selected = true;
		if( len == len2 )
			sel.disabled = true;
	}
}

function removeColumn( sel2, sel, toggle ) {
	sel = _ro( sel );
	sel2 = _ro( sel2 );
	toggle = _ro( toggle );
	if( sel && sel2 ) {
		if( sel2.selectedIndex != -1 ) {
			sel2.remove( sel2.selectedIndex );
			len2 = sel2.options.length;
			len = sel.options.length;
			if( len != len2 ) {
				sel.disabled = false;
				if( toggle && toggle.checked )
					toggle.checked = false;
			}
		}
		else {
			alert("You have to add a column before you can remove one!");
		}
	}
}

function clearSelect( sel2, sel, toggle ) {
	sel = _ro( sel );
	sel2 = _ro( sel2 );
	toggle = _ro( toggle );
	if( sel2 && sel ) {
		len2 = sel2.options.length - 1;
		for( var x=len2; x>-1; x-- )
			sel2.remove( x );
		
		len2 = sel2.options.length;
		len = sel.options.length;
		if( len != len2 ) {
			sel.disabled = false;
			if( toggle && toggle.checked )
				toggle.checked = false;
		}
	}
}

function toggleAll( flag, sel, sel2 ) {
	sel = _ro( sel );
	sel2 = _ro( sel2 );
	if( sel && sel2 ) {
		if( flag ) {
			len = sel.options.length;
			for( var x=0; x<len; x++ )
				sel2.options[ x ] = new Option( sel.options[ x ].text );
			sel.disabled = true;
		}
		else {
			len2 = sel2.options.length - 1;
			for( var x=len; x>-1; x-- )
				sel2.remove( x );
			sel.disabled = false;
		}
	}
}

function chkExportCols( sel2 ) {
	sel2 = _ro( sel2 );
	if( sel2 ) {
		len2 = sel2.options.length;
		if( len2 < 1 ) {
			alert("Please select at least 1 column to export!");
			return false;
		}
		len2--;
		for( var x=len2; x>-1; x-- )
			sel2.options[ x ].selected = true;
		return true;
	}
	alert("Invalid Arguement!");
	return false;
}

function toggleStatus( obj, sw ) {
	obj = _ro( obj );
	sw = _ro( sw );
	if( obj ) {
		if( sw ) 
			obj.disabled = !sw.checked;
		else if( obj.disabled )
			obj.disabled = false;
		else
			obj.disabled = true;
	}
}

function popup( url ) {
	var pop = window.open(url,"","");
	//pop.location.href = url;
}

function popupHTML( str, isHTML ) {
	var pop = window.open("","","toolbars=no");
	if( str.indexOf("<html>") == -1 )
		str = str.replace(/\n/g, "<br/>\n");
	pop.document.write( str );
	pop.document.close();
	return pop;
}

function chkModForm( chkNameObj ) {
	if( chkNameObj ) {
		if( chkNameObj.length ) {
			len = chkNameObj.length;
			var count = 0;
			for( var x=0; x<len; x++ ) {
				if( chkNameObj[ x ].checked )
					count++;
			}
			if( count < 1 ) {
				alert("Please tick at least 1 row!");
				return false;
			}
		}
		else {
			if( !chkNameObj.checked ) {
				alert("Please tick at least 1 row!");
				return false;
			}
		}
		
		var q = confirm("Are you sure you want to make these modifications?");
		return q;
	}
}

function doBulk( form, actionPath, functionList, table, rowPrefix ) {
	form = _ro( form );
	functionList = _ro( functionList );
	table = _ro( table );
	
	if( form ) {
		
		if( functionList.options[ functionList.selectedIndex ].value == -1 ) {
			alert("Please select a Function to perform!");
			functionList.focus();
			return;
		}
		
		count = 0;
		
		if( table && table.rows ) {
			len = table.rows.length;
			var ROW = null;
			
			for( var r=0; r<len; r++ ) {
				ROW = table.rows[ r ];
				chk = _ro( rowPrefix + ROW.id );
				if( chk ) {
					if( chk.checked ) {
						count = 1;
						break;
					}
				}
			}
		}
		
		if( count == 0 ) {
			alert("Please select at least 1 row to modify!");
			return;
		}
		
		if( confirm('Click OK to continue...') ) {
			form.action = actionPath;
			form.submit();
		}
	}
}
