// ************************************************************************************************
// JAVASCRIPT: globalValidation.js
// ************************************************************************************************

function forceInt(obj){
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {
		case (window.event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57)):  // SHIFT Key + (0 - 9)
			event.returnValue=false;
			break;	
		case (event.keyCode >= 48 && event.keyCode <= 57):  // Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):  // Numerals: 0 - 9 (right-side keyboard)			
		case (event.keyCode >= 33 && event.keyCode <= 40):  // Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):   // Editing: BACKSPACE, DELETE 
		case (event.keyCode == 9):							// TAB
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	} 
}


function enforceInt(obj) {
    var rep=/[^0-9]/g ;   
	obj.value = obj.value.replace(rep,"");		
}

// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#

function forceAlpha(obj){
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {	
		case (event.keyCode >= 65 && event.keyCode <= 90):  // Letters: A - Z			
		case (event.keyCode >= 33 && event.keyCode <= 40):  // Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):   // Editing: BACKSPACE, DELETE 
		case (event.keyCode == 9):							// TAB
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	}   	
}

function enforceAlpha(obj) {
    var rep=/[^a-zA-Z]/g ;   
	obj.value = obj.value.replace(rep,"");		
}

// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#

function forcePhoneNumber(obj){
	// Allowed key: 0123456789()-space a-z . 
	if (event.repeat) {
		event.returnValue=false;
		return;
	}	
	switch (true) {
		case (window.event.shiftKey && (event.keyCode > 48 && event.keyCode < 57)):  // SHIFT Key + (1 - 8)
		case (window.event.shiftKey && (event.keyCode == 48 || event.keyCode == 57)):  // SHIFT Key + (0, 9)
		case (window.event.shiftKey && (event.keyCode == 189)):  // SHIFT Key + -
			event.returnValue=false;
			break;	
		case (event.keyCode >= 48 && event.keyCode <= 57):  // Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):  // Numerals: 0 - 9 (right-side keyboard)			
		case (event.keyCode == 189  || event.keyCode == 109):  // Symbols: -	
		case (event.keyCode == 190):							// Symbols: .
		case (event.keyCode == 110):							// Symbols: . (right-side keyboard)			
		case (event.keyCode >= 65 && event.keyCode <= 90):  // Letters: A - Z	
		case (event.keyCode >= 33 && event.keyCode <= 40):  // Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):   // Editing: BACKSPACE, DELETE 
		case (event.keyCode == 32):							// Spaces
		case (event.keyCode == 9):							// TAB
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	} 
}

function enforcePhoneNumber(obj) {
    var rep=/[^ a-zA-Z0-9\.\-]/g ;   
	obj.value = obj.value.replace(rep,"");		
}

// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#

function forceEmailAddress(obj){
	// Allowed key: 0123456789-space a-zA-Z @. 
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {		
		case (window.event.shiftKey && (event.keyCode > 50 && event.keyCode <= 57)):  // SHIFT Key + (3 - 9)	
		case (window.event.shiftKey && (event.keyCode == 49)):  // SHIFT Key + (1) ==> ^
		case (window.event.shiftKey && (event.keyCode == 48)):  // SHIFT Key + (0) ==> )
		case (window.event.shiftKey && (event.keyCode == 190)):  // SHIFT Key + (.) ==> >
		case (event.keyCode == 13): 							// Enter Key				
			event.returnValue=false;
			break;				
		case (event.keyCode >= 48 && event.keyCode <= 57):		// Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):		// Numerals: 0 - 9 (right-side keyboard)
		case (event.keyCode == 190):							// Symbols: .
		case (event.keyCode == 110):							// Symbols: . (right-side keyboard)								
		case (event.keyCode == 189  || event.keyCode == 109):  // Symbols: -	
		case (window.event.shiftKey && event.keyCode == 189):  // Symbols: _
		case (event.keyCode >= 65 && event.keyCode <= 90):		// Letters: A - Z			
		case (event.keyCode >= 33 && event.keyCode <= 40):		// Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):		// Editing: BACKSPACE, DELETE		
		case (event.keyCode == 9):								// TAB				
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	}   	
}

function enforceEmailAddress(obj) {
    var rep=/[^a-zA-Z0-9@\.\-_]/g ;   
	obj.value = obj.value.replace(rep,"");		
}


// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#

function forceMultiEmailAddress(obj){
	// Allowed key: 0123456789-space a-zA-Z @. 
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {		
		case (window.event.shiftKey && (event.keyCode > 50 && event.keyCode <= 57)):  // SHIFT Key + (3 - 9)	
		case (window.event.shiftKey && (event.keyCode == 49)):  // SHIFT Key + (1) ==> ^
		case (window.event.shiftKey && (event.keyCode == 48)):  // SHIFT Key + (0) ==> )
		case (window.event.shiftKey && (event.keyCode == 190)):  // SHIFT Key + (.) ==> >
		case (window.event.shiftKey && (event.keyCode == 186)):  // SHIFT Key + (;) ==> >
		case (event.keyCode == 13): 							// Enter Key				
			event.returnValue=false;
			break;				
		case (event.keyCode >= 48 && event.keyCode <= 57):		// Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):		// Numerals: 0 - 9 (right-side keyboard)
		case (event.keyCode == 190):							// Symbols: .
		case (event.keyCode == 186):							// Symbols: ;		
		case (event.keyCode == 110):							// Symbols: . (right-side keyboard)								
		case (event.keyCode == 189  || event.keyCode == 109):  // Symbols: -	
		case (window.event.shiftKey && event.keyCode == 189):  // Symbols: _
		case (event.keyCode >= 65 && event.keyCode <= 90):		// Letters: A - Z			
		case (event.keyCode >= 33 && event.keyCode <= 40):		// Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):		// Editing: BACKSPACE, DELETE		
		case (event.keyCode == 32):							// Spaces		
		case (event.keyCode == 9):								// TAB				
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	}   	
}

function enforceMultiEmailAddress(obj) {
    var rep=/[^a-zA-Z0-9@;\.\-_]/g ;   
	obj.value = obj.value.replace(rep,"");			
    rep=/@{2,}/g ;   
	obj.value = obj.value.replace(rep,"@");		
    rep=/;{2,}/g ;   
	obj.value = obj.value.replace(rep,";");		
	rep=/;$/g ;   
	obj.value = obj.value.replace(rep,"");		

}



// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#

function forceAlphaNum(obj){
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {
		case (window.event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57)):  // SHIFT Key + (0 - 9)
			event.returnValue=false;
			break;	
		case (event.keyCode >= 48 && event.keyCode <= 57):  // Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):  // Numerals: 0 - 9 (right-side keyboard)	
		case (event.keyCode >= 65 && event.keyCode <= 90):  // Letters: A - Z			
		case (event.keyCode >= 33 && event.keyCode <= 40):  // Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):   // Editing: BACKSPACE, DELETE 
		case (event.keyCode == 9):							// TAB
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	}   	
}

function enforceAlphaNum(obj) {
    var rep=/[^a-zA-Z0-9]/g ;   
	obj.value = obj.value.replace(rep,"");		
}

// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#

function forceAlphaNumSpace(obj){   // For 855
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {
		case (window.event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57)):  // SHIFT Key + (0 - 9)
			event.returnValue=false;
			break;	
		case (event.keyCode >= 48 && event.keyCode <= 57):  // Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):  // Numerals: 0 - 9 (right-side keyboard)	
		case (event.keyCode >= 65 && event.keyCode <= 90):  // Letters: A - Z	
		case (event.keyCode == 32):							// Spaces		
		case (event.keyCode >= 33 && event.keyCode <= 40):  // Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):   // Editing: BACKSPACE, DELETE 
		case (event.keyCode == 9):							// TAB
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	}   	
}

function enforceAlphaNumSpace(obj) {
    var rep=/[^ a-zA-Z0-9]/g ;   
	obj.value = obj.value.replace(rep,"");		
}

// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#


function forceSQLComp(obj){
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {		
		case (window.event.shiftKey && (event.keyCode == 54)):  // SHIFT Key + (6) ==> ^
			event.returnValue=false;
			break;		
		case (event.keyCode == 13): 							// Enter Key
		case (window.event.shiftKey && (event.keyCode == 192)):	// Symbols: '
			event.returnValue=false;
			break;				
		case (event.keyCode >= 48 && event.keyCode <= 57):		// Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):		// Numerals: 0 - 9 (right-side keyboard)
		case (event.keyCode >= 106 && event.keyCode <= 107):	// Symbols: . + - * /  (right-side keyboard)
		case (event.keyCode >= 109 && event.keyCode <= 111):		
		case (event.keyCode >= 65 && event.keyCode <= 90):		// Letters: A - Z			
		case (event.keyCode >= 33 && event.keyCode <= 40):		// Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):		// Editing: BACKSPACE, DELETE
		case (event.keyCode == 32):								// Spaces
		case (event.keyCode == 9):								// TAB
		case (event.keyCode >= 186 && event.keyCode <= 192):	// Symbols: - + = , . / ?  `
		case (event.keyCode == 221 || event.keyCode == 219 || event.keyCode == 109):	// Symbols: [ ] { } -
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	}   	
}

function enforceSQLComp(obj) {
	var rep= /[^ \w\\\-`!@#$%^&\*_+=;:,\.\/\(\)\{\}\[\]?]/gi
	obj.value = obj.value.replace(rep,"");		
}

// #==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#==#


function forceFloat(obj){
	if (event.repeat) {
		event.returnValue=false;
		confirmingValue(obj)
		return;
	}
	switch (true) {
		case (window.event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57)):   // SHIFT Key + (0 - 9)
		case (window.event.shiftKey && (event.keyCode == 189 || event.keyCode == 190)): // SHIFT Key + (Symbols: - .)
			event.returnValue=false;
			break;	
			
		case (event.keyCode >= 33 && event.keyCode <= 40):		// Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):		// Editing: BACKSPACE, DELETE		
		case (event.keyCode == 9):								// TAB
			event.returnValue=true;
			break;		
								
		case (event.keyCode == 190):							// Symbols: .
		case (event.keyCode == 110):							// Symbols: . (right-side keyboard)			
			if (obj.value.indexOf(".") < 0)
				event.returnValue=true;
			else
				event.returnValue=false;
			break;	
				
		case (event.keyCode == 189):							// Symbols: - 
		case (event.keyCode == 109):							// Symbols: - (right-side keyboard)
			if (obj.value.indexOf("-") < 0)
				event.returnValue=true;
			else
				event.returnValue=false;
			break;
							
		case (event.keyCode >= 48 && event.keyCode <= 57):		// Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):		// Numerals: 0 - 9 (right-side keyboard)			
			event.returnValue=true;
			break;	
									
		default:			
   			event.returnValue=false;
   	} 
}

function forcePosFloat(obj){
	if (event.repeat) {
		event.returnValue=false;
		confirmingValue(obj)
		return;
	}
	switch (true) {
		case (window.event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57)):   // SHIFT Key + (0 - 9)
		case (window.event.shiftKey && (event.keyCode == 190)): // SHIFT Key + (Symbols: .)
			event.returnValue=false;
			break;	
			
		case (event.keyCode >= 33 && event.keyCode <= 40):		// Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):		// Editing: BACKSPACE, DELETE	
		case (event.keyCode == 9):								// TAB	
			event.returnValue=true;
			break;	
									
		case (event.keyCode == 190):							// Symbols: .
		case (event.keyCode == 110):							// Symbols: . (right-side keyboard)		
			if (obj.value.indexOf(".") < 0)
				event.returnValue=true;
			else
				event.returnValue=false;
			break;		
			
		case (event.keyCode >= 48 && event.keyCode <= 57):		// Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):		// Numerals: 0 - 9 (right-side keyboard)			
			event.returnValue=true;
			break;		
								
		default:			
   			event.returnValue=false;
   	} 
}

function confirmingValue(obj){
	onKeyDownFun = "" + obj.onkeydown
	switch (true) {
 		case (onKeyDownFun.indexOf("forceFloat") > 0): 
			if (obj.value.indexOf("-") > 0) {		
				obj.select()				
	 			alert("Minus sign should precede digits.");
	 			obj.value = obj.value.replace("-", "")
	 			obj.focus()
	 			obj.select()	
 			} 			
		case (onKeyDownFun.indexOf("forcePosFloat") > 0 ):
			cvPos = obj.value.indexOf(".")
			if (obj.value.indexOf(".") >= 0 && (obj.value.length - cvPos) > 5) {		
				obj.select()				
	 			alert("You have too many digits after the decimal point. ")
 				obj.value = obj.value.substring(0, cvPos+5)
 				obj.focus()
	 			obj.select()			
 			}
 			break;	
		default:			
   	} 
}

function validate() {
	isFormOK = true
	for(i=0; i<Form1.elements.length; ++i) {
		if ((Form1.elements.item(i).tagName.toUpperCase() == "INPUT") && (Form1.elements.item(i).mandatory == "Yes")) {
			if (Form1.elements.item(i).value == "") {
				if (isFormOK) {
					Form1.elements.item(i).focus()
					isFormOK = false
				}
				Form1.elements.item(i).style.backgroundColor = "#e2e2d1"			
			}
			else {
				Form1.elements.item(i).style.backgroundColor = "#ffffff"			
			}
		}
	}
	return isFormOK
}


// *** For TextArea: (maxlength) ***
function CheckLength(length) {
    if (window.event.srcElement.value.length >= length) {
		window.event.srcElement.value = window.event.srcElement.value.substring(0, length)		
		alert('You have reached the maximum length of characters permitted here.');		
		return false;                         
     }
}



function split(str, token) {
	count = 0;
	index = 0;

	do {
		index = str.indexOf(token, index);
		++count;
		++index;
	}
	while (index != 0);

	var strArr = new Array(count)
	index = 0;
	endIndex = 0;

	for(i = 0; i < count; i++) {
		endIndex = str.indexOf(token, index);

		if (endIndex == -1)
			strArr[i] = str.substring(index);
		else
			strArr[i] = str.substring(index, endIndex);

		index = endIndex + 1;
	}
	return strArr;
}


/// ################################################################################################################
/// ################################################################################################################

function webGrid_forceSQLComp(){
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {		
		case (window.event.shiftKey && (event.keyCode == 54)):  // SHIFT Key + (6) ==> ^
			event.returnValue=false;
			break;		
		case (event.keyCode == 13): 							// Enter Key								
		case (window.event.ctrlKey): 							// Ctrl Key
		case (window.event.shiftKey && (event.keyCode == 192)):	// Symbols: '
			event.returnValue=false;
			break;				
		case (event.keyCode >= 48 && event.keyCode <= 57):		// Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):		// Numerals: 0 - 9 (right-side keyboard)
		case (event.keyCode >= 106 && event.keyCode <= 107):	// Symbols: . + - * /  (right-side keyboard)
		case (event.keyCode >= 109 && event.keyCode <= 111):		
		case (event.keyCode >= 65 && event.keyCode <= 90):		// Letters: A - Z			
		case (event.keyCode >= 33 && event.keyCode <= 40):		// Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):		// Editing: BACKSPACE, DELETE
		case (event.keyCode == 32):								// Spaces
		case (event.keyCode == 9):								// TAB
		case (event.keyCode >= 186 && event.keyCode <= 192):	// Symbols: - + = , . / ?  `
		case (event.keyCode == 221 || event.keyCode == 219 || event.keyCode == 109):	// Symbols: [ ] { } -
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	} 
}


function webGrid_forceSSN(){
	if (event.repeat) {
		event.returnValue=false;
		return;
	}
	switch (true) {
		case (window.event.shiftKey && (event.keyCode >= 48 && event.keyCode <= 57)):  // SHIFT Key + (0 - 9)
			event.returnValue=false;
			break;	
		case (event.keyCode >= 48 && event.keyCode <= 57):  // Numerals: 0 - 9		
		case (event.keyCode >= 96 && event.keyCode <= 105):  // Numerals: 0 - 9 (right-side keyboard)	
		case (event.keyCode == 189  || event.keyCode == 109):  // Symbols: -			
		case (event.keyCode >= 33 && event.keyCode <= 40):  // Navigation: PAGE UP, PAGE DOWN, END, HOME, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW 
		case (event.keyCode == 8 || event.keyCode == 46):   // Editing: BACKSPACE, DELETE 
		case (event.keyCode == 9):							// TAB
			event.returnValue=true;
			break;							
		default:			
   			event.returnValue=false;
   	}   	
}

function Date_EditKeyDown(oDropDown, keyCode, oEvent){
	if (keyCode = 46) {
		var nullDate = new Date(8000, 1, 1)
		oDropDown.setText(null)
	}
}


