var err_msg = '';
var status = new Array();

// Validation to check whether the value is empty (or) negative number (or) contains character.
function stringTrim(str) {
   if (str != null)
     return str.replace(/^\s+/g,"").replace( /\s+$/g,"");
   else
     return null;
}


function getObject(txtName){
	var object = document.getElementsByName(txtName);
	return object[0];
}

function setErrorClass(classname){

	if(classname == 'InputText'  ){
		normalClassName = classname;
		oppositeClassName = 'InputTextError';
	}

	if(classname == 'ProposedSolutionTextBox')
		return 'ProposedSolutionTextBoxError';

	if(classname == 'offlineProfileText')
		return 'offlineProfileTextError';
	
	if(classname == 'offlineTelephone')
		return 'offlineTelephoneError';
		
	if(classname == 'offlineCustomerTextBox')
		return 'offlineCustomerTextBoxError';
		
	if(classname == 'offlineProfileDropdown')
		return 'offlineProfileDropdownError';
		
	if(classname == 'offline_CustomerTextBox')
		return 'offline_CustomerTextBoxError';		

	if(classname == 'InputText')
		return 'InputTextError';

	if(classname == 'InputText_noborder')
		return 'InputText_noborderError';

	if(classname == 'InputText_small')
		return 'InputText_smallError';

	if(classname == 'AgeText')
		return 'AgeTextError';
		
	if(classname == 'InputText_small'  ){
		normalClassName = classname;
		oppositeClassName = 'InputText_smallError';
	}

	if(classname == 'InputText_large')
		return 'InputText_largeError';

	if(classname == 'InputText_large' ){
		normalClassName = classname;
		oppositeClassName = 'InputText_largeError' ;
	}

	if(classname == 'ProfileDropdown')
	return 'ProfileDropdownError';
	
	if(classname == 'ProfileDropdown' ){
		normalClassName = classname;
		oppositeClassName = 'ProfileDropdownError';
	}
	
	if(classname == 'CustomerTextBox')
	return 'CustomerTextBoxError';
	
	if(classname == 'CustomerTextBox' ){
		normalClassName = classname;
		oppositeClassName = 'CustomerTextBoxError';
	}

	if(classname == 'ProfileText')
	return 'ProfileTextError';
	
	if(classname == 'ProfileText' ){
		normalClassName = classname;
		oppositeClassName = 'ProfileTextError';
	}

	if(classname == 'selectDivNormal')
	return 'selectDivNormalError';
	
	if(classname == 'selectDivNormal' ){
		normalClassName = classname;
		oppositeClassName = 'selectDivNormalError';
	}
	
	if(classname == 'InputTextUserPwd')
		return 'InputTextUserPwdError';

	if(classname == 'InputTextUserPwd'  ){
		normalClassName = classname;
		oppositeClassName = 'InputTextUserPwdError';
	}
	
}

function resetErrorClass(classname){
	if(classname == 'InputTextError')
		return 'InputText';

	if(classname == 'InputText_noborderError')
		return 'InputText_noborder';

	if(classname == 'InputText_smallError')
		return 'InputText_small';

	if(classname == 'ProposedSolutionTextBoxError')
		return 'ProposedSolutionTextBox';

	if(classname == 'AgeTextError')
		return 'AgeText';
		
	if(classname == 'CustomerTextBoxError')
		return 'CustomerTextBox';
		
	if(classname == 'InputText_small'  ){
		normalClassName = classname;
		oppositeClassName = 'InputText_smallError';
	}
	
	if(classname == 'InputText_largeError' ){
		normalClassName = classname;
		oppositeClassName = 'InputText_large' ;
	}
	
	if(classname == 'ProfileDropdownError' ){
		normalClassName = classname;
		oppositeClassName = 'ProfileDropdown';
	}
	if(classname == 'ProfileTextError' ){
		normalClassName = classname;
		oppositeClassName = 'ProfileText';
	}

	if(classname == 'InputText_largeError')
		return 'InputText_large';

	if(classname == 'InputText_largeError' ){
		normalClassName = classname;
		oppositeClassName = 'InputText_large' ;
	}

	if(classname == 'ProfileDropdownError')
	return 'ProfileDropdown';
	
	if(classname == 'ProfileDropdownError' ){
		normalClassName = classname;
		oppositeClassName = 'ProfileDropdown';
	}

	if(classname == 'ProfileTextError')
	return 'ProfileText';
	
	if(classname == 'ProfileTextError' ){
		normalClassName = classname;
		oppositeClassName = 'ProfileText';
	}

	if(classname == 'selectDivNormalError')
	return 'selectDivNormal';
	
	if(classname == 'selectDivNormalError' ){
		normalClassName = classname;
		oppositeClassName = 'selectDivNormal';
	}
	
	if(classname == 'InputTextUserPwdError')
	return 'InputTextUserPwd';
	
	if(classname == 'InputTextUserPwdError'){
		normalClassName = classname;
		oppositeClassName = 'InputTextUserPwd';
	}
	

	return classname;

}



function checkLimit(txtName,alerttxt,minValue,maxValue){
	var object= getObject(txtName);
	value = object.value;	

	if ( (parseFloat(value) < parseInt(minValue) ) || (parseFloat(value) > parseInt(maxValue) ) ) {
		object.className = setErrorClass(object.className);
		err_msg = err_msg + '<li>' + alerttxt;
		ShowAlert("alertbox_type_1",alerttxt);
		return false;
	}
	else
		return true;
}


function isNumber(txtName,alerttxt){
	var object= getObject(txtName);
	value = object.value;
	
	if (isNaN(value)){
		object.className = setErrorClass(object.className);;
		err_msg = err_msg + '<li>' + alerttxt;
		ShowAlert("alertbox_type_1",alerttxt);
		return false;
		}
	else
		return true;
}

function isEmpty(txtName,alerttxt) {
	
	var object= getObject(txtName);
	var val = stringTrim(object.value);
	
		
	if ((val.length==0) || val==""){
		err_msg = err_msg + '<li>' + alerttxt ;
		
		if(object.type == 'select-one'){
			var index = txtName.substring(txtName.length-1);
			if(!isNaN(index)){
				object = document.getElementById('selectfinancial'+index);
				object.className = setErrorClass(object.className);
			}
			else{
				
				object = document.getElementById(txtName.substring(txtName.indexOf("_")+1));
				object.className = setErrorClass(object.className);
			}
		}
		else{
			object.className = setErrorClass(object.className);
			}
		return false;
	}
	else
		return true;
}



function isNegative(txtName,alerttxt){
	var object= getObject(txtName);
	value = object.value;
	
	var val = stringTrim(object.value);

	if(!isNaN(value)){
		if(value < 0){
			err_msg = err_msg + '<li>' + alerttxt;
			object.className = setErrorClass(object.className);;
			ShowAlert("alertbox_type_1",alerttxt);
			return false;
		}
		else
			return true
	}
	
}



function checkLength(txtName,alerttxt){
	var object= getObject(txtName);
	value = object.value;	

	if ( parseInt(value) > parseInt(MAXIMUM_AMOUNT) ){
		object.className = setErrorClass(object.className);
		err_msg = err_msg + '<li>' + alerttxt;
		ShowAlert("alertbox_type_1",alerttxt);
		return false;
	}
	else
		return true;
}



function isNumberContainsDecimal(value,alerttxt){

	if(value.indexOf('.')!=-1){
		ShowAlert("alertbox_type_1",alerttxt);return false;
		err_msg = err_msg + '<li>' + alerttxt;
	}
	else{return true;}
}


function isLessEqualZero(value,alerttxt){
	if(!isNaN(value)){
		if(value <= 0){
		err_msg = err_msg + '<li>' + alerttxt;
			return false;}
		else{return true;}
	}
	
}

function isNumberContainsTwoDecimalValue(field,alerttxt){
	with(field){
		if(value.substring(value.indexOf('.')+1).length > 2){
			ShowAlert("alertbox_type_1",alerttxt);
			return false;
		}
		else{return true;}
	}
}



function checkGreaterAlert(field1,field2,alerttxt){
	if (parseInt(field1) >= parseInt(field2)){
		ShowAlert("alertbox_type_1",alerttxt);
		return false;
	}
	else
		{return true}
}

function checkGreater(field1,field2,alerttxt){
	if (parseInt(field1) >= parseInt(field2)){
		ShowAlert("alertbox_type_1",alerttxt);
		err_msg = err_msg + '<li>' + alerttxt;
		return false;
	}
	else
		{return true}
}

function checkSum(field1,field2,alerttxt){
	if ((parseInt(field1) + parseInt(field2))>parseInt(RET_LIFESPAN_CONFIGURATION)){
		ShowAlert("alertbox_type_1",alerttxt);
		err_msg = err_msg + '<li>' + alerttxt;
		return false;
	}
	else
		{return true}
}


function bas_validate(fileds,msg){
	status = [false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false];

	for(j=0,i=0;i<fileds.length;i++,j=j+3){

		if (msg[j]!=null && isEmpty(fileds[i],msg[j])==false)
			continue;
		if (msg[j+1]!=null && isNumber(fileds[i],msg[j+1])==false)
			continue;
		if (msg[j+2]!=null && isLessEqualZero(fileds[i],msg[j+2])==false)
			continue;
		status[i]=true;
	}

}




function bas_validateEmpty(fields,msg){
	err_msg = '';
	estatus = false;
	for(i=0;i < fields.length;i++){
					
		if (msg[i]!=null){
			estatus = estatus | !isEmpty(fields[i],msg[i]);}
	}
	if(estatus)
		return false;
	else 
		return true;
}

function bas_validateNumeric(fields,msg){
	err_msg = '';
	//	status = [true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true];
	estatus = false;
	for(i=0;i < fields.length;i++){
		if (msg[i] != null)
			estatus = estatus | !isNumber(fields[i],msg[i]);
		}
	if(estatus)
		return false;
	else 
		return true;
	}


function bas_validateRange(fields,msg){
	err_msg = '';
	//	status = [true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true];
	estatus = false;
	for(j=0,i=0;i < fields.length;i++,j=j+3){
		if (msg[j] != null)
			estatus = estatus | !checkLimit(fields[i],msg[j],msg[j+1],msg[j+2]);
		}
	if(estatus)
		return false;
	else 
		return true;
	}


function bas_validateisNegative(fields,msg){
	err_msg = '';
	//	status = [true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true];
	estatus = false;
	for(i=0;i < fields.length;i++){
		if (msg[i] != null)
			estatus = estatus | !isNegative(fields[i],msg[i]);
		}
	if(estatus)
		return false;
	else 
		return true;
	}

function bas_validatecheckLength(fields,msg){
	err_msg = '';
	//	status = [true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true];
	estatus = false;
	for(i=0;i < fields.length;i++){
		if (msg[i] != null)
			estatus = estatus | !checkLength(fields[i],msg[i]);
		}
	if(estatus)
		return false;
	else 
		return true;
	}
	
	
		
function checkNoSpecialChardesc(txtName){
	var object= getObject(txtName);
	value = object.value;
	for (var i = 0; i < value.length; i++){ 
		var ch = value.substring(i, i + 1);
		if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && (ch < "0" || "9" < ch)&& (ch!=" ")){
			object.className = setErrorClass(object.className);
			return false;
		}
	}
	return true;
}



function WithDigit(object,Max_Value){
	var value = formatNumber(Max_Value,null,FRACTIONDIGITS_AMOUNT)
	var obj = getObject(object);
	obj.maxLength = value.length;
}

function WithRate(object,Max_Value){
	var value = formatNumber(Max_Value,null,FRACTIONDIGITS_RATE)
	var obj = getObject(object);
	obj.maxLength = value.length;
}

function WithNoFormat(object,Max_Value){
	
	var value = formatNumber(Max_Value,null,0)
	var obj = getObject(object);
	obj.maxLength = value.length;
}

function Focus(ctrl){
	var range=ctrl.createTextRange();
	var pos=ctrl.value.length;
	if(pos!=-1 && range){
		range.moveStart("character",pos+1);
		range.select();
	}
}

