//OPENS NEW WINDOW//
function newWin(url) {
	//find extra passed attributes in arguments
	var ar = arguments;
	var size = "";
	var name = "";
	for (i = 1; i < ar.length; i++) {
		if (ar[i] == "-size") { size = ar[++i] } //window size
		if (ar[i] == "-name") { name = ar[++i] } //window name
	}
	//determine which window size type to use
	if (size == "rect"){ var width = 650; var height = 375; var winParms = "scrollbars=1" }
	else if  (size == "smallrect") { var width = 350; var height = 350; var winParms = "scrollbars=1"; var url = url + '&w=srect' }
	else { var width = 650; var height = 500;  var winParms = "scrollbars=1,resizable=1" }
	
	//center the new window on the screen
	var left = Math.floor( (screen.width - width) / 2);
	var top = Math.floor( (screen.height - height) / 2);
	var winParms = winParms + ",top=" + top + ",left=" + left + ",height=" + height + ",width=" + width;
	if (parseInt(navigator.appVersion) >= 4) { window.focus(); }
	window.open(url,name,winParms)
}




//PRELOAD IMAGES USED IN MOUSEOVERS//
function preloadimages(){
	var myimages=new Array()
	for (i=0; i < preloadimages.arguments.length; i++){
		myimages[i]=new Image()
		myimages[i].src=preloadimages.arguments[i]
	}
}

//CLOSES CHILD AND LOADS NEW PAGE INTO OPENER PAGE - USED IN job_preview_footer.byt
function changeFramedOpener (url) {
	if (confirm("PLEASE NOTE: THIS ACTION WILL CLOSE THIS JOB PREVIEW WINDOW.\nWhen you log in or register with Bayt, you will find this job located in your Job Folder for easy access.  \n\nDo you wish to continue?")) {
		if ( window.parent.opener == null ){
			window.parent.location.href = url
		} else {
			window.parent.close();
			window.parent.opener.focus();
			window.parent.opener.location = url;
		}
	}
}	

//CLOSES WINDOW//
function closeWin(){
	window.close();
}

//GOES BACK IN HISTORY IF HISTORY EXISTS, ELSE CLOSES WINDOW//
function backWin(){
	if(history.length == 0) window.close()
	if(history.length > 0) history.back()
}

//PRINTS PAGE//
function printPage(){
	window.print();
}

//DELETE CONFIRMATION//
function ConfirmDelete(){ 
	if (confirm("REALLY DELETE THIS ITEM?\n----------\nWarning: you will not be able to undo this action.")) { 
		delete_record = true;
	} else {  
		delete_record = false;
	} return delete_record;
}

//OPENS NEW WINDOW//
function newWin(url,size) {
	if (size == "s"){ var width = 300; var height = 300; var winParms = "" }
	else if (size == "m"){ var width = 450; var height = 400; var winParms = "scrollbars=1" }
	else { var width = 700; var height = 500;  var winParms = "scrollbars=1,resizable=1" }

	var left = Math.floor( (screen.width - width) / 2);
    var top = Math.floor( (screen.height - height) / 2);
    var winParms = winParms + ",top=" + top + ",left=" + left + ",height=" + height + ",width=" + width;
    if (parseInt(navigator.appVersion) >= 4) { window.focus(); }
	window.open(url,'',winParms)
}
function newSmallWin(url) { newWin(url,"s") }
function newMedWin(url) { newWin(url,"m") }

//CLEARS A SPECIFIED FIELD - USED FOR onFocus//
function textClear(input){	
	if ( input.value == input.defaultValue ) input.value = ""
}


//RESTORES A SPECIFIC FIELD TO IT'S DEFAULT - USED FOR onBlur//
function textRestore(input) {
	if ( input.value == "" ) input.value = input.defaultValue
}

//CHECKS ALL CHECKBOXES IN A LIST//
//This function takes into consideration if there are 2 buttons on the page //
//THE HIDDEN FIELD "full_select_flag" MUST BE INITIALIZED TO 0 IN FORM //
//FOR ALTERNATE TEXT ON THE BUTTONS, SET "bttn_on" AND "bttn_off" as hidden fields //
function cbCheck(){
	var C = document.form.cb;
	var B1 = document.form.bttn;
	var B2 = document.form.bttn_alt;
	var flag = document.form.full_select_flag;
	if(!B2) B2 = B1;

	var B_on = (document.form.bttn_on) ? document.form.bttn_on.value : "De-Select All";
	var B_off = (document.form.bttn_off) ? document.form.bttn_off.value : "Select All";

	var temp_flag = (document.form.view_type_val) ? parseInt(document.form.view_type_val.value) : 1;
	
	if(flag.value == 0){
		for (i = 0; i < C.length; i++) {
			if(C[i].checked == false) C[i].click()
		}
		B1.value = B_on;
		B2.value = B_on;
		flag.value = temp_flag;
	} else {
		for (i = 0; i < C.length; i++) {
			if(C[i].checked == true) C[i].click()
		}
		B1.value = B_off;
		B2.value = B_off;
		flag.value = 0;
	}
}

//CONFIRMS DELETION OF SELECTED CHECKBOXES IN A LIST//
function cbDelete() { 
	flag = 0 ;
	i = document.form.cb.length
	i = i - 1
	for (var j = 0; j <= i; j++) {
		box = eval(document.form.cb[j]); 
		if (box.checked == true) flag = 1;	
	}
	if (flag == 0 ) {
		alert ("NO SELECTIONS WERE MADE\n\nPlease select the items you wish to delete from your list.");
		return false; 
	} else {
		if (confirm("Are you sure you want to delete these items?  IMPORTANT: You will not be able to undo this action.")) {
			return true;
		} else {  
		    return false;
		}
	}
}

//ALPHABETICALLY SORTS ITEMS IN A LIST - USED IN SEARCH RESULTS PAGES//
function SubmitForSort(sortCol){
	var F=document.form;
	F.colsort.value = sortCol;
	F.startctr.value = parseInt(F.startctr.value);
	F.type.value = F.type.value;
	F.refinekey.value = F.refinekey.value
	if ( F.type.value == "desc" ) F.type.value = "asc";
	else F.type.value = "desc";
	F.submit();
}

//FORM VALIDATOR FUNCTIONS//
function isEmpty(s){ return ((s == null) || (s.length == 0)) }
function isWhitespace(s){
    var i;
    var whitespace = " \t\n\r";
	if (isEmpty(s)) return true;
	for (i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) return false;
	} return true
}

//CHECKS IF MORE THAN 10 OPTIONS ARE SELECTED IN A MULTIPLE SELECTION MENU//
function checkFor10(input,name){
	var pretxt = "PLEASE RESTRICT YOUR SELECTIONS FOR THE FOLLOWING FIELD:  ";
	var posttxt = "\n----------\nSorry, you can only select a maximum of 10 selections per search field.\nPlease restrict your selections for this field to 10 items or less.";
	var input = eval("document." + input);
	if (Boolean(input)) {
		var counter = 0;
		for (i=0; i<input.length; i++) {
			if (input.options[i].selected ) counter = counter + 1
		}
		if (counter > 10) {
			alert(pretxt + name + posttxt);
			input.focus(); return false;
		} else return true
	} return true
}

//LIMITS THE MAX CHARACTERS IN A TEXTAREA INPUT//
function textCounter(input, countfield, maxlimit) {
	var maxlimit = (maxlimit) ? maxlimit : 2000
	if(input.value.length > maxlimit) {
		countfield.value = input.value.length + ' characters: limit exceeded!  Please edit text.';
	} else countfield.value = input.value.length + ' characters used.';
}

//CHECKS THE MAX CHARACTERS IN A TEXTAREA INPUT//
function CheckMax(input,name,maxlimit){
	var maxlimit = (maxlimit) ? maxlimit : 2000
	var input = eval("document." + input);
	if(Boolean(input)){
		if(input.value.length > maxlimit){
			alert("\"" + name + "\" EXCEEDS THE CHARACTER LIMIT\n----------\nPlease edit this field to contain only " + maxlimit + " characters.");
			input.focus(); return false;
		}
	} return true
}

//FUNCTIONS TO REMOVE LEADING AND TRAILING SPACES FROM A STRING USED IN CheckInput()
function ltrim(string){
	while (1){
		if (string.substring(0, 1) != " ") break;
		string = string.substring(1, string.length);
	}
	return string;
}
function rtrim(string){
	while (1){
		if (string.substring(string.length - 1, string.length) != " ") break;
		string = string.substring(0, string.length - 1);
	}
	return string;
}
function trim(string){
	var tmpstr = ltrim(string);
	return rtrim(tmpstr);
}

//CHECKS IF INPUT CONTAINS ONLY BLANK ENTRIES
function CheckInput(input,name,alt){
	var input = eval("document." + input);
	if (Boolean(input)){
		//trim leading and trailing spaces//
		string = trim(input.value)
		var txt = (alt) ? alt : "Please provide the relevant information for this field.";
		if (isWhitespace(string)){
			alert("\"" + name + "\" IS EMPTY\n----------\n" + txt);
			input.focus(); return false;
		}
		input.value = string
	} return true
}

//CHECKS IF INPUT CONTAINS BLANK AND SPECIAL CHARACTERS
function CheckInputSpecialChars(input,name,alt){
	var iChars = "!#$%^&*+=[]\\\;/{}|\"<>?";

	var input = eval("document." + input);
	if (Boolean(input)){
		//trim leading and trailing spaces//
		string = trim(input.value)
		var txt = (alt) ? alt : "Please provide the relevant information for this field.";
		if (isWhitespace(string)){
			alert("\"" + name + "\" IS EMPTY\n----------\n" + txt);
			input.focus(); return false;
		}
		else{
			for (var i = 0; i < string.length; i++) {
				if (iChars.indexOf(string.charAt(i)) != -1) {
					alert ("This field contains special characters. \n !#$%^&*()+=[]\\\';/{}|\":<>? are not allowed.\n Please remove them and try again.");
					input.focus(); return false;
				}
			}
		}
		input.value = string
	} return true	
}

//CHECKS IF INPUT CONTAINS BLANK AND SPECIAL CHARACTERS
function CheckSpecialChars(input,name,alt){
	var iChars = "!#$%^&*+=[]\\\;/{}|\"<>?";

	var input = eval("document." + input);
	if (Boolean(input)){
		//trim leading and trailing spaces//
		string = trim(input.value)
		var txt = (alt) ? alt : "Please provide the relevant information for this field.";
		
		for (var i = 0; i < string.length; i++) {
			if (iChars.indexOf(string.charAt(i)) != -1) {
				alert ("This field contains special characters. \n !#$%^&*()+=[]\\\';/{}|\":<>? are not allowed.\n Please remove them and try again.");
				input.focus(); return false;
			}
		}
		input.value = string
	} return true	
}

//CHECKS IF INPUT CONTAINS SPECIAL CHARACTERS
function CheckInputSpecialCharsOnly(input,name,alt){
	var iChars = "!#$%^&*()+=[]\\;/{}|:<>";

	var input = eval("document." + input);
	if (Boolean(input)){
		//trim leading and trailing spaces//
		string = trim(input.value)
		var txt = (alt) ? alt : "Please provide the relevant information for this field.";
		
		for (var i = 0; i < string.length; i++) {
			if (iChars.indexOf(string.charAt(i)) != -1) {
				alert ("This field contains special characters. \n !#$%^&*()+=[]\\;/{}|:<> are not allowed.\n Please remove them and try again.");
				input.focus(); return false;
			}
		}
		
		input.value = string
	} return true	
}

function CheckSelect(input,name,title_alt){
	var title = (title_alt) ? title_alt : "\"" + name + "\" IS EMPTY";
	var input = eval("document." + input);
	if(Boolean(input)){	
		if (input.selectedIndex == 0){
			alert(title + "\n----------\nPlease select the relevant information for this field.");
			input.focus(); return false;
		}
	} return true
}
function CheckMulti(input,name){
	var input = eval("document." + input);
	var counter = 0;
	if(Boolean(input)){
		if (input.selectedIndex < 0){
			alert("\"" + name + "\" IS EMPTY\n----------\nPlease select the relevant information for this field.");
			input.focus(); return false;
		}
		for (i = 0; i < input.length; i++){
			if (input.options[i].selected) counter = counter + 1
		}
		if (counter > 10){
			alert("\"" + name + "\" HAS TOO MANY SELECTIONS\n----------\nYou may only select a maximum of 10 items.");
			input.focus(); return false;
		}
	} return true
}

//CHECKS FOR ALPHANUMERIC CHARACTERS//
//for alternate character sets, define "ALT_CHARS" within arguments//
//for alternate string length, define "ALT_LENGTH" within arguments//
function CheckAlphanum(input,name){
	var input = eval("document." + input);
	if (Boolean(input)) {
		var string = input.value
		var ar = arguments;
		var alt_length = 0;
		var alt_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_";
		for (i = 2; i < ar.length; i++) {
			if (ar[i] == "ALT_LENGTH") { alt_length = ar[++i] }
			if (ar[i] == "ALT_CHARS") { alt_chars = ar[++i] }
		}
		//string length test//
		if (string.length < alt_length) {
		    alert("\"" + name + "\" IS INVALID\n----------\nThis field must contain at least " + alt_length + " characters.");
			input.select(); return false;
		}
		//charset test//
		for (var i = 0; i < string.length; i++){
			var chr = string.charAt(i);
			var ok = 0;
			for (var j = 0 ; j < alt_chars.length ; j++){
				allowed = alt_chars.charAt(j);
				if (chr == allowed) ok = 1;
			}
			if (ok == 0){
				alert ("\"" + name + "\" IS INVALID\n----------\nPlease use valid characters for this field -- use the following characters only:\n" + alt_chars);
	 			input.select(); return false;	 
			}
		}
	} return true
}

//CHECKS FOR NUMERIC CHARACTERS//
//for alternate character sets, define "ALT_CHARS" within arguments//
//for alternate string length, define "ALT_LENGTH" within arguments//
function CheckNumeric(input,name){
	var input = eval("document." + input);
	if (Boolean(input)) {
		var string = input.value
		var ar = arguments;
		var alt_length = 0;
		var alt_chars = "0123456789";
		for (i = 2; i < ar.length; i++) {
			if (ar[i] == "ALT_LENGTH") { alt_length = ar[++i] }
			if (ar[i] == "ALT_CHARS") { alt_chars = ar[++i] }
		}
		//string length test//
		if (string.length < alt_length) {
		    alert("\"" + name + "\" IS INVALID\n----------\nThis field must contain at least " + alt_length + " characters.");
			input.select(); return false;
		}
		//charset test//
		for (var i = 0; i < string.length; i++){
			var chr = string.charAt(i);
			var ok = 0;
			for (var j = 0 ; j < alt_chars.length ; j++){
				allowed = alt_chars.charAt(j);
				if (chr == allowed) ok = 1;
			}
			if (ok == 0){
				alert ("\"" + name + "\" IS INVALID\n----------\nPlease use mobile number in numeric." );
	 			input.select(); return false;	 
			}
		}
	} return true
}

//VALIDATES IF AN EMAIL ADDRESS CONTAINS "@" AND "."//
function badEmail(input){
	if (!CheckInput(input,"E-MAIL ADDRESS")) return false;
	if (!CheckAlphanum(input,"E-MAIL ADDRESS","ALT_CHARS","abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_-@.","ALT_LENGTH",5)) return false;
	
	var input = eval("document." + input);
	if(Boolean(input)){
		if (input.value.indexOf('@') == -1 || input.value.indexOf('.') == -1){
			alert("INVALID E-MAIL ADDRESS\n----------\nYou have not entered a valid E-MAIL address.\nPlease check that the e-mail address you entered contains both the \"@\" and the \".\" characters.")
			input.select(); return false;
		}
	} return true
}

//VALIDATES IF AN INPUT MUST NOT BE EMAIL ID//
function isEmailId(input){
	if (!CheckInput(input,"User Name ")) return false;
	if (!CheckAlphanum(input,"User Name","ALT_CHARS","abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_-@.","ALT_LENGTH",5)) return false;
	
	var input = eval("document." + input);
	if(Boolean(input)){
		if (input.value.indexOf('@') != -1 || input.value.indexOf('.') != -1){
			alert("User Name must not be email id.")
			input.select(); return false;
		}
	} return true
}

//CHECKS THE SPELLING OF INPUT FIELD//
function checkSpelling(input){
	var text = eval("document." + input);
	if (isWhitespace(text.value)){
		alert("SPELL CHECKER\n----------\nEnter your text in the textbox provided to check your spelling.");
		text.focus()
 	} else newMedWin('/app/global/spellcheck.adp?text=' + escape(text.value.replace( /\n/gi ," <br>")) )
}

//HIGLIGHT FUNCTION FOR CV KEYWORDS
function highlight(keywordArray){
	var pos = 0;
	var exitCounter = 0 ;
    if ( keywordArray.length != 0 && document.all) {
        var found = false;
        var text = document.body.createTextRange();
		
        for (var i=0; i<=pos && exitCounter < 150 ; i++) {
			
        	text.moveStart("character", 1);
            text.moveEnd("textedit");
			startBookmark = text.getBookmark();
			endBookmark = text.getBookmark();
			for (var j=0; j<keywordArray.length ; j++) {
				text.moveToBookmark(startBookmark) ;
				found=text.findText(keywordArray[j]) ;
				if ( found ) {
					text.execCommand("BackColor",false,"FFFF00") ;
					endBookmark = text.getBookmark();
		            pos++;
				}
			}
			startBookmark = endBookmark ;
			exitCounter++ ;
        }
    }

}

function checkRadio(input,name){
	var input = eval("document." + input);
	if(Boolean(input)){
		var ar = arguments;
		var message = "\"" + name + "\" IS EMPTY\n----------\nPlease select the relevant information for this field."
		for (i = 2; i < ar.length; i++) {
			if (ar[i] == "-message") { var message = ar[i + 1] } //over-ride the default error message
		}
		var is_empty = 1
		for (i = 0; i < input.length; i++) {
			if(input[i].checked == true) { var is_empty = 0; break } 
		}
	}
	if(is_empty) {
		alert(message);
		return false;
	} return true
}

//CHECKS IF INPUT IS NOT A NUMBER//
function CheckNaN(input,name,alt){
	var input = eval("document." + input);
	string = trim(input.value);
	if (isNaN(string)){
		//trim leading and trailing spaces//		
		var txt = (alt) ? alt : "Please provide only numbers.";
		if (!isWhitespace(string)){
			alert("\"" + name + "\" contains characters. \n----------\n" + txt);
			input.focus(); return false;
		}
		input.value = string
	} return true
}

//CHECKS IF INPUT IS NOT A NUMBER//
function CheckChar(input,name,alt){
	var input = eval("document." + input);
	string = trim(input.value);
	if (!isNaN(string)){
		//trim leading and trailing spaces//		
		var txt = (alt) ? alt : "Please provide only characters.";
		if (!isWhitespace(string)){
			alert("\"" + name + "\" contains numbers. \n----------\n" + txt);
			input.focus(); return false;
		}
		input.value = string
	} return true
}

//CHECKS LENGTH OF INPUT FIELD, MUST NOT BE LESS THAN PROVIDED INPUT LEN//
function CheckInputLength(input,len,name,alt){
	var input = eval("document." + input);
	int_len = input.value.length;
	if (int_len < len){		
		var txt = (alt) ? alt : "Please provide required number of characters.";
			alert("\"" + name + "\" must be of minimum "+ len +" characters. \n----------\n" + txt);
			input.focus(); return false;
	} return true
}

//CHECKS LENGTH OF INPUT FIELD, MUST NOT BE GREATER THAN PROVIDED INPUT LEN//
function maxLength(input,len,name,alt){
	var input = eval("document." + input);
	int_len = input.value.length;
	if (int_len > len){		
		var txt = (alt) ? alt : "Please provide required number of characters.";
			alert("\"" + name + "\" must not be greater than "+ len +" characters. \n----------\n" + txt);
			input.focus(); return false;
	} return true
}

//CHECKS TWO INPUT FIELDS FOR EQUALITY//
function CheckEquality(input1,input2,name1,name2,alt){
	var input1 = eval("document." + input1);
	var input2 = eval("document." + input2);
	string1 = trim(input1.value);
	string2 = trim(input2.value);
	if (string1 != string2){	
			alert(name1+" and "+name2+" doesn't match. ");
			input2.focus(); return false;
	} return true
}


//CHECKS TWO INPUT FIELDS FOR EQUALITY//
function CheckPositive(input,name,alt){
	var input = eval("document." + input);
	intVal = trim(input.value);
	if (intVal <= 0){
		//trim leading and trailing spaces//		
		var txt = (alt) ? alt : "Please provide only positive value.";
		if (!isWhitespace(string)){
			alert("\"" + name + "\" contains negative value. \n----------\n" + txt);
			input.focus(); return false;
		}
		input.value = string
	} return true
}


function check_uncheck_checkbox(form_name,bool_val)
{
	var input = eval("document." + form_name);
	var el = input.elements;

	for(i=0;i<el.length;i++) {
		if(el[i].type == "checkbox" ) {
			if(bool_val == 1)
				el[i].checked = true;
			else
				el[i].checked = false;
		}
	}
}
