// function trimInput( objName )
// Will remove spaces both left and right from the input in a TextBox.
// Use: onBlur="Javascript: trim( this );"
function trim( objName ) {
	var fieldToTrim = objName;
	var s = fieldToTrim.value;

	// Trim left.
	if ( s.length > 0 ) {
		while ( s.indexOf( ' ' ) == 0 ) {
			s = s.substr( 1 );
		}
	}

	// Trim right
	if ( s.length > 0 ) {
		while( s.lastIndexOf( ' ' ) == s.length - 1 ) {
			s = s.substr( 0, s.length - 1 );
		}
	}

	fieldToTrim.value = s;
	return false;
}
// Function to Validate the special characters in a Name.
// Onblur of the textbox for the Name fields.
function ValidateName(objName)
{	
	var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?0123456789";
	//alert (objName.value.length);
	for (var i = 0; i < objName.value.length; i++) {
  	if (iChars.indexOf(objName.value.charAt(i)) != -1) {
  	alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
	return false;
  	}
  }
}

// function formatBirthDate( objName )
// Will take the value in a TextBox and reformat the input into a properly formatted date.
// If only 2 digits are supplied for the year the method will add '19' in front of it.
// Use: onBlur="Javascript: formatBirthDate( this );"
function formatBirthDate( objName ) {
	var strDatestyle = "EU"; // European date style. For United States style use "US"
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array( "-"," ","/","." );
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array( 12 );
	strMonthArray[0] = "01";
	strMonthArray[1] = "02";
	strMonthArray[2] = "03";
	strMonthArray[3] = "04";
	strMonthArray[4] = "05";
	strMonthArray[5] = "06";
	strMonthArray[6] = "07";
	strMonthArray[7] = "08";
	strMonthArray[8] = "09";
	strMonthArray[9] = "10";
	strMonthArray[10] = "11";
	strMonthArray[11] = "12";
	strDate = datefield.value;

	if ( strDate.length < 1 ) {
		return true;
	}

	for ( intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++ ) {
		if ( strDate.indexOf( strSeparatorArray[intElementNr] ) != -1 ) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if ( strDateArray.length != 3 ) {
				err = 1;
				return false;
			} else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
				if ( strDay.length == 3 ) {
					return false;
				}
			}
			booFound = true;
		}
	}

	if ( booFound == false ) {
		if ( strDate.length>5 ) {
			strDay = strDate.substr( 0, 2 );
			strMonth = strDate.substr( 2, 2 );
			strYear = strDate.substr( 4 );
		} else {
			return false;
		}
	}

	if ( strYear.length == 2 ) {
		strYear = '19' + strYear;
	}

	// US style
	if ( strDatestyle == "US" ) {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}

	intday = parseInt( strDay, 10 );
	if ( isNaN( strDay ) ) {
		err = 2;
		return false;
	}

	intMonth = parseInt( strMonth, 10 );
	if ( isNaN( strMonth ) ) {
		err = 3;
		return false;
	}

	if (isNaN(intMonth)) {
		for ( i = 0; i < 12; i++ ) {
		if ( strMonth.toUpperCase() == strMonthArray[i].toUpperCase() ) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
	}

	intYear = parseInt( strYear, 10 );
	
	if ( isNaN( strYear ) ) {
		err = 4;
		return false;
	}

	if ( intMonth > 12 || intMonth < 1 ) {
		err = 5;
		return false;
	}

	if ( ( intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && ( intday > 31 || intday < 1 ) ) {
		err = 6;
		return false;
	}

	if ( ( intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11 ) && ( intday > 30 || intday < 1 ) ) {
		err = 7;
		return false;
	}

	if ( intMonth == 2 ) {
		if ( intday < 1 ) {
			err = 8;
			return false;
		}
		if ( LeapYear( intYear ) == true) {
			if ( intday > 29 ) {
				err = 9;
				return false;
			}
		} else {
			if ( intday > 28 ) {
				err = 10;
				return false;
			}
		}
	}

	if ( intday < 10 ) { 
		intday = "0" + intday;
	}
	if ( strDatestyle == "US" ) {
		datefield.value = strMonthArray[intMonth-1] + " " + intday +" " + strYear;
	} else {
		datefield.value = intday + "." + strMonthArray[intMonth-1] + "." + strYear;
	}
	return true;
}

// function formatDate( objName, intCentury )
// Will take the value in a TextBox and reformat the input into a properly formatted date.
// If only 2 digits are supplied for the year the method will add '19' in front of it.
// Use: onBlur="Javascript: formatDate( this, 20 );"
function formatDate( objName, intCentury ) {
	var strDatestyle = "EU"; // European date style. For United States style use "US"
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array( "-"," ","/","." );
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array( 12 );
	strMonthArray[0] = "01";
	strMonthArray[1] = "02";
	strMonthArray[2] = "03";
	strMonthArray[3] = "04";
	strMonthArray[4] = "05";
	strMonthArray[5] = "06";
	strMonthArray[6] = "07";
	strMonthArray[7] = "08";
	strMonthArray[8] = "09";
	strMonthArray[9] = "10";
	strMonthArray[10] = "11";
	strMonthArray[11] = "12";
	strDate = datefield.value;

	if ( strDate.length < 1 ) {
		return true;
	}

	for ( intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++ ) {
		if ( strDate.indexOf( strSeparatorArray[intElementNr] ) != -1 ) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if ( strDateArray.length != 3 ) {
				err = 1;
				return false;
			} else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
				if ( strDay.length == 3 ) {
					return false;
				}
			}
			booFound = true;
		}
	}

	if ( booFound == false ) {
		if ( strDate.length>5 ) {
			strDay = strDate.substr( 0, 2 );
			strMonth = strDate.substr( 2, 2 );
			strYear = strDate.substr( 4 );
		} else {
			return false;
		}
	}

	if ( strYear.length == 2 ) {
		strYear = intCentury + strYear;
	}

	// US style
	if ( strDatestyle == "US" ) {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}

	intday = parseInt( strDay, 10 );
	if ( isNaN( strDay ) ) {
		err = 2;
		return false;
	}

	intMonth = parseInt( strMonth, 10 );
	if ( isNaN( strMonth ) ) {
		err = 3;
		return false;
	}

	if (isNaN(intMonth)) {
		for ( i = 0; i < 12; i++ ) {
		if ( strMonth.toUpperCase() == strMonthArray[i].toUpperCase() ) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
	}

	intYear = parseInt( strYear, 10 );
	
	if ( isNaN( strYear ) ) {
		err = 4;
		return false;
	}

	if ( intMonth > 12 || intMonth < 1 ) {
		err = 5;
		return false;
	}

	if ( ( intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && ( intday > 31 || intday < 1 ) ) {
		err = 6;
		return false;
	}

	if ( ( intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11 ) && ( intday > 30 || intday < 1 ) ) {
		err = 7;
		return false;
	}

	if ( intMonth == 2 ) {
		if ( intday < 1 ) {
			err = 8;
			return false;
		}
		if ( LeapYear( intYear ) == true) {
			if ( intday > 29 ) {
				err = 9;
				return false;
			}
		} else {
			if ( intday > 28 ) {
				err = 10;
				return false;
			}
		}
	}

	if ( intday < 10 ) { 
		intday = "0" + intday;
	}
	if ( strDatestyle == "US" ) {
		datefield.value = strMonthArray[intMonth-1] + " " + intday +" " + strYear;
	} else {
		datefield.value = intday + "." + strMonthArray[intMonth-1] + "." + strYear;
	}
	return true;
}


// function resetForm( which )
// Will empty all fields in the selected form with some exceptions. The form selection dropdownboxes
// on our Customer Support pages are ignored and not reset.
// Use: onBlur="Javascript: resetForm( which );"
function resetForm( which ) {
	for ( i = 0; i < which.length; i++ ){
		var tempobj = which.elements[i];
		if ( tempobj.type == "text" ){
			eval( tempobj.value = "" )
		}
		else if ( tempobj.type == "checkbox" ) {
			eval( tempobj.checked = 0 )
		}
		else if ( tempobj.type == "textarea" ) {
			eval( tempobj.value = "" )
		}
		else if ( tempobj.type == "select-one" ) {
			// Always ignore the form selection dropdownboxes on our Customer Support pages.
			if( tempobj.id.indexOf( "cboKategori" ) == -1 && 
			    tempobj.id.indexOf( "cboEmne" ) == -1 && 
			    tempobj.id.indexOf( "cboSpesifikasjon" ) == -1 ) {
				tempobj.selectedIndex = 0
			}
		}
	}
	return false
}

//function buildPopup( stringUrl, intWindowWidth, intWindowHeight )
//Will open a new popup window with the specified width and height
function buildPopup( stringUrl, intWindowWidth, intWindowHeight ){
	
	if( intWindowWidth == null || intWindowHeight == null ){
		intWindowWidth = 600;
		intWindowHeight = 400;
	}

	var windowFeaturesString = "dependent, width="+intWindowWidth+",height="+intWindowHeight+",toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=Yes,resizable=yes";
	window.open( stringUrl, 'MyWindow', windowFeaturesString );
}

//To set mouse pointer as Hand style onmouseover even
function setMouseStyle(elementID)
{   
  document.getElementById(elementID).style.cursor = "hand";  
}

function buildPopupAndSetFocus( stringUrl, intWindowWidth, intWindowHeight ){
	if( intWindowWidth == null || intWindowHeight == null ){
		intWindowWidth = 600;
		intWindowHeight = 400;
	}

	var windowFeaturesString = "dependent, width="+intWindowWidth+",height="+intWindowHeight+",toolbar=No,location=No,directories=No,status=No,menubar=No,scrollbars=Yes,resizable=yes";
	var win = window.open( stringUrl, 'MyWindow', windowFeaturesString );
	win.focus();
}

// function LeapYear( intYear )
// Will test if the input is a leap year. Mainly used as a helper method for other functions.
// Use: NA
function LeapYear( intYear ) {
	if ( intYear % 100 == 0 ) {
		if ( intYear % 400 == 0 ) {
			return true; 
		}
	} else {
		if ( ( intYear % 4 ) == 0 ) { 
			return true;
		}
	}
	return false;
}

function makeSelection( sControlClientId ) {
	var o = document.getElementById( sControlClientId );
	o.checked = true;
}

function printPage() {
	window.print();
}

function setDisabledItems( isDisabled, itemList ) {
	for(var i=0; i< itemList.length;i++) {
		var item = document.getElementById( itemList[i] );
		item.disabled = isDisabled;
	}
}
