// JavaScript Document

function printForm()
{
	//Prints the current window
	ans = confirm("Confirm print !");
	if (ans)
	{
		window.print();
	}
}

function noenter()
{
	//Disables enter key on the given control
	return !(window.event && window.event.keyCode == 13);
	//E.g. onkeypress="return noenter();"
}

function checkDate(objDD,objMM,objYYYY)
{			
	//Validates date using objDD,objMM & objYYYY controls
	if (objMM.value == 4) //Apr
	{
		if (objDD.value > 30)
		{
			alert("L'Abril no pot tenir més de 30 dies.");
			objDD.focus();
			return false;
		}		
	}
	
	if (objMM.value == 6) //Jun
	{
		if (objDD.value > 30)
		{
			alert("El Juny no pot tenir més de 30 dies.");
			objDD.focus();
			return false;
		}		
	}
	
	if (objMM.value == 9) //Sep
	{
		if (objDD.value > 30)
		{
			alert("El Setembre no pot tenir més de 30 dies.");
			objDD.focus();
			return false;
		}		
	}
	
	if (objMM.value == 11) //Nov
	{
		if (objDD.value > 30)
		{
			alert("El Novembre no pot tenir més de 30 dies.");
			objDD.focus();
			return false;
		}		
	}	
	
	//Check for Feb
	if (objMM.value==2)
	{			
		//Check for days
		if(objDD.value >29)
		{
			alert("El Febrer no pot tenir més de 29 dies.");
			objDD.focus();
			return false;
		}		
		//Check for Leap year
		if ((objYYYY.value % 4)!=0)	
		{
			if(objDD.value > 28)
			{
				alert("No és un any de traspàs.");
				objDD.focus();
				return false;
			}			
		}
	}		
	return true;
}
 
function validateEmail(obj)
{
	//Validates email
	var tempEmail = obj.value;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(tempEmail)) 
	{
		return true;
	}
	else
	{
		alert("Adreça de mail incorrecta.");		
		obj.focus();
		return false;
	}
}

function filterNumber(obj)
{
	//Validates unsigned whole numbers
	var validString ="0123456789";
	var outputString;
	outputString = "";
	
	for(x=0;x<obj.value.length;x++)
	{
		if (validString.indexOf(obj.value.charAt(x))!=-1)
		{
			outputString = outputString + obj.value.charAt(x).toString();
		}
	}	
	obj.value = outputString;
}

function validatePhoneNumber(phoneNumberFirst, phoneNumberMiddle, phoneNumberLast, requiredMessage, invalidMessage, compulsory)
{
	//Validates xxx-xxx-xxxx style phone number using phoneNumberFirst, phoneNumberMiddle & phoneNumberLast controls
	var checkPhoneNumber;
	checkPhoneNumber = false;
	if (compulsory == true)
	{
		checkPhoneNumber = true;
	}
	else
	{
		if (phoneNumberFirst.value.length+phoneNumberMiddle.value.length+phoneNumberLast.value.length>0)
		{
			checkPhoneNumber = true;
		}
		else
		{
			checkPhoneNumber = false;
		}
	}
	if (checkPhoneNumber==true)
	{
		if (phoneNumberFirst.value.trim() == "")
		{
			alert(requiredMessage);
			phoneNumberFirst.focus();
			return false;
		}	
		if (phoneNumberFirst.value.trim().length<3)
		{
			alert(invalidMessage);
			phoneNumberFirst.focus();
			return false;
		}


		if (phoneNumberMiddle.value.trim() == "")
		{
			alert(requiredMessage);
			phoneNumberMiddle.focus();
			return false;
		}	
		if (phoneNumberMiddle.value.trim().length<3)
		{
			alert(invalidMessage);
			phoneNumberMiddle.focus();
			return false;
		}


		if (phoneNumberLast.value.trim() == "")
		{
			alert(requiredMessage);
			phoneNumberLast.focus();
			return false;
		}			
		if (phoneNumberLast.value.trim().length<4)
		{
			alert(invalidMessage);
			phoneNumberLast.focus();
			return false;
		}
	}
}

function calculateAndReturnAgeString(dobDay,dobMonth,dobYear,onDay,onMonth,onYear,outputStyle)
{
	//Calculates age for given dobDay,dobMonth,dobYear,onDay,onMonth & onYear controls
	var outputString;	
	var numberOfDays, numberOfMonths, numberOfYears;
	var strDays, strMonths, strYears;	
			
	if(dobDay > 0 && dobMonth > 0 && dobYear > 0)
	{
							    							
		numberOfYears = (onYear - dobYear);
		numberOfMonths = (onMonth - dobMonth);
		numberOfDays = (onDay - dobDay);
								
		if (numberOfMonths<0)
		{
			numberOfYears = numberOfYears -1;
			numberOfMonths = (12 + numberOfMonths);
		}
		
		if (numberOfDays==30)
		{
			numberOfMonths = (numberOfMonths + 1);
			numberOfDays = 0;
		}									
					
		if (numberOfMonths==12)
		{
			numberOfYears = (numberOfYears + 1);
			numberOfMonths = 0;
		}
		
		strYears = "";
		if (numberOfYears > 0 )
		{
			strYears = numberOfYears + " year(s)";			
		}
		
		strMonths = "";
		if (numberOfMonths  > 0 )
		{
			strMonths = numberOfMonths  + " month(s)";			
		}

		strDays = "";
		if (numberOfDays  > 0 )
		{
			strDays = numberOfDays  + " day(s)";			
		}
		
		if (numberOfYears > 0 || numberOfMonths > 0 || numberOfDays >0)
		{
			switch(outputStyle)
			{
				case 1:
				{
					outputString = strYears + " " + strMonths + " " + strDays;
					break;
				}
				case 2:
				{
					outputString = strYears;
					break;
				}
				case 3:
				{
					outputString = strMonths;
					break;
				}
				case 4:
				{
					outputString = strDays;
					break;
				}
				case 5:
				{
					outputString = numberOfYears;
					break;
				}								
			}			
		}
		else
		{
			outputString = "";			
		}		
	}
	else
	{
		outputString = ""
	}
	return outputString;
}

function setComboSelected(obj, valueToCompare)
{
	//Sets default value for the combo box
	for(x=0;x<=obj.options.length-1;x++)
	{
		if (obj.options[x].value==valueToCompare)
		{
			obj.selectedIndex = x;
			return;
		}
	}
	return;
}

function getMonthName(monthValue)
{
	//Returns month name
	switch(monthValue)
	{
		case 1:
		{
			return 'Jan';
			break;
		}
		case 2:
		{
			return 'Feb';
			break;
		}
		case 3:
		{
			return 'Mar';
			break;
		}
		case 4:
		{
			return 'Apr';
			break;
		}
		case 5:
		{
			return 'May';
			break;
		}
		case 6:
		{
			return 'Jun';
			break;
		}
		case 7:
		{
			return 'Jul';
			break;
		}
		case 8:
		{
			return 'Aug';
			break;
		}
		case 9:
		{
			return 'Sep';
			break;
		}
		case 10:
		{
			return 'Oct';
			break;
		}
		case 11:
		{
			return 'Nov';
			break;
		}
		case 12:
		{
			return 'Dec';
			break;
		}
	}		
}

function getCurrentTime()
{
	//Returns current time
	var currentDateTime = new Date();	
	var hours = currentDateTime.getHours();
	var minutes = currentDateTime.getMinutes();
	//var seconds = currentDateTime.getSeconds();
	var timeValue;
	timeValue = "";
	timeValue = ((hours >12) ? hours -12 :hours);
	if (timeValue == "0") timeValue = 12;
	timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
	//timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
	timeValue += (hours >= 12) ? " P.M." : " A.M.";
	return timeValue;
}

function getCurrentDate()
{
	//Returns current date
	var currentDateTime = new Date();	
	var day = currentDateTime.getDate();
	var month = getMonthName(currentDateTime.getMonth() + 1);	
	var year = currentDateTime.getFullYear();
	var dateValue;
	dateValue = "";
	dateValue = day + '/' + month +'/' + year;
	return dateValue;
}

String.prototype.trim = function() 
{
 // skip leading and trailing whitespace
 // and return everything in between
 //return this.replace(/^\s*(\b.*\b|)\s*$/, "$1");
  return this.replace(/(^\s *)|(\s*$)/g,"")
}

function numValid(obj,digitsAfterDecimal)
{
	//Validates signed decimal & whole numbers
	var testString;
	if(digitsAfterDecimal>0)
	{
		testString=".0123456789-";
	}			
	else
	{
		testString="0123456789-";
	}
	var outputString;
	outputString="";
	for(i=0;i<=obj.value.length-1;i++)
	{	
		if(testString.indexOf(obj.value.charAt(i))!=-1)
		{
			if (obj.value.charAt(i)==".")
			{			
				if (outputString.indexOf(".")==-1)
				{
					outputString=outputString+obj.value.charAt(i);
				}
			}
			else
			{
				if (obj.value.charAt(i)=="-")
				{			
					if (outputString.indexOf("-")==-1)
					{
						if (i==0)
						{
							outputString=outputString+obj.value.charAt(i);
						}
					}
				}
				else
				{
					outputString=outputString+obj.value.charAt(i);					
				}
			}
		}
	}			
	obj.value=roundNumber(outputString,digitsAfterDecimal);	
	if (obj.value==".")
	{
		obj.value="";
	}	
	if (obj.value.indexOf(".")==(obj.value.length-1))
	{
		obj.value=obj.value.substr(0,obj.value.length-1);
	}
	if (isNaN(parseFloat(obj.value)))
	{
		obj.value="";
	}				
}

function roundNumber(inputValue,digitsAfterDecimal)
{
	//Rounds number upto given digitsAfterDecimal
	inputValue=(inputValue*(Math.pow(10,digitsAfterDecimal)));
	inputValue=Math.round(inputValue);
	inputValue=(inputValue/(Math.pow(10,digitsAfterDecimal)));
	return inputValue;
}

function truncate(inputValue,digitsAfterDecimal)
{	
	//Truncates number upto given digitsAfterDecimal
	if(digitsAfterDecimal>0)
	{
		if (inputValue.indexOf(".")!=-1)
		{				
			return (inputValue.substr(0,(inputValue.indexOf(".")+digitsAfterDecimal+1)));
		}
		else
		{
			return inputValue;
		}
	}
	else
	{
		if (inputValue.indexOf(".")!=-1)
		{
			return (inputValue.substr(0,inputValue.indexOf(".")));
		}
		else
		{
			return inputValue;
		}						
	}
}

function validateText(obj)
{
	//Replace all invalid characters from string i.e. the characters that are not present in our list
	//obj.value = obj.value.replace(/[^0-9a-zA-Z`!@#$%^&*()-_=+|\[{\]};:,<.>/?\€,ƒ,…,†,‡,‰,Š,Œ,Ž,™,š,œ,ž,Ÿ,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ\'\"\r\n\s]/g,"");
	obj.value = obj.value.replace(/<%/g,"");
	obj.value = obj.value.replace(/%>/g,"");
}

