String.prototype.trim = function(){
return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))
}
String.prototype.startsWith = function(str){
return (this.match("^"+str)==str)
}
String.prototype.endsWith = function(str){
return (this.match(str+"$")==str)
}
String.prototype.contains = function(str){
return (this.indexOf(str)>=0);
}
Array.prototype.contains = function(searchStr) {
	return (this.getIndex(searchStr) == -1?  false: true);
}

Array.prototype.getIndexStartsWith = function(searchStr) {
   var pos = -1;
   for (var i=0; i<this.length; i++) {
     if (this[i].startsWith(searchStr)) {
		pos = i;
		break;
	}
   }
   return pos;
}

Array.prototype.getIndex = function(searchStr) {
   var pos = -1;
   for (var i=0; i<this.length; i++) {
     if (this[i]==searchStr) {
		pos = i;
		break;
	}
   }
   return pos;
}

function onKeyPressOnlyNumbers(e){
	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;
	keychar = String.fromCharCode(key);
	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || 
		(key==13) || (key==27) || (key==37) || (key==39) || (key==46))
	   return true;
	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
	   return true;
	return false;
}
//general
function autofocus(field, limit, next, evt) {
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
		((evt.which) ? evt.which : 0));
	if (charCode > 31 && field.value.length == limit) {
		field.form.elements[next].focus();
	}
}
function setRadioDefault(name, objectName, pos){
	if(objectName){
		if(pos <=1){
			if(!objectName[0].checked && !objectName[1].checked ){
				objectName[pos].checked = true;
			}
		}
		else{
			if(!objectName[2].checked && !objectName[3].checked ){
				objectName[pos].checked = true;
			}
		}
	}
}
function setFormValue(name, val){
	var obj = document.UserForm[name];
	if(obj){
		if(obj.type == "select-one"){
			for(var i =0; i< obj.length; i++){
				if(obj[i].value == val){
					obj[i].selected = true;
					break;
				}
			}
		}
		else if(obj.type == undefined){
			for(var i =0; i< obj.length; i++){
				if(obj[i].value == val){
					obj[i].checked = true;
					break;
				}
			}
		}
		else{
			obj.value = val;			
		}
	}
}

function setRadioMust(name, objectName, pos){
	if(objectName){
		objectName[pos].checked = true;
	}
}
function setRadioMustNot(name, objectName, pos){
	if(objectName){
		objectName[pos].checked = false;
	}
}
function setSelectDefault(fieldName, value){
	if(fieldName){
		fieldName.value = value;
	}
}
function setSelectDefaultCheck(fieldName, value){
	if(fieldName){
		if(fieldName.value ==''){
			fieldName.value = value;
		}
	}
}
function uncheckRadio(obj, pos){
	if(obj){
		if(obj[pos].checked){					
			obj[pos].checked = false;			
		}
	}	
}

function checkMustNotRadio(obj, pos, msgtext){
	if(obj){
		if(obj[pos].checked){
			alert(msgtext);			
			obj[pos].checked = false;
			return true;
		}
	}
	return false;
}

function alertSelMsg(obj, ref, msgtext){
	if(obj){
		if(obj.value == ref){
			alert(msgtext);			
			obj.value ="";
			obj.focus();
		}
	}
}

function checkEmptyRadio(obj){
	if(obj){
		if(!obj[0].checked && !obj[1].checked){					
			return true;
		}
	}
	return false;
}
function isEmpty(value){
	if(value){
		return value.length ==0? true : false;
	}
	return true;
}

function getQuestionText(id){

	var questStr = $("#Question"+id).find(".fieldtext").html();
	
	if(null == questStr){	
		questStr = $("#Question"+id).find(".field-label-short2").html();	
		if(null == questStr){	
			return "Please review your form and answer all questions in order to submit your request.";
		}
	}
	return questStr;
}

function setQuestionText(id, txt){
	var obj = $("#Question"+id).find(".fieldtext");	
	if(!obj){	
		obj = $("#Question"+id).find(".field-label-short2");	
	}
	
	
	if(obj){	
		obj.text(txt);
	}
}

function checkGeneralEmpty(name, msgtext){
	var obj = document.UserForm[name];
	if(obj){
		if(obj.type == undefined){
			var flag = true;
			for (var i = 0; i < obj.length; i++){
				if(obj[i].checked){
					flag = false;
					break;
				}
			}
			if(flag){
				if(msgtext !=""){
					alert(msgtext);
					if(obj.length>0){
						obj[0].focus();
					}
				}
				return true;
			}
		}
		else{
			if(obj.value == ''){
				if(msgtext !=""){
					alert(msgtext);
					obj.focus();
				}
				return true;
			}
		}
	}
	return false;
}
function getGeneralVal(name){
	var obj = document.UserForm[name];
	if(obj){
		if(obj.type == "select-one"){
			return obj.value;
		}
		else if(obj.type =="checkbox"){
			if(obj.checked){
				return obj.value;			
			}			
		}
		else if(obj.type == undefined){			
			for (var i = 0; i < obj.length; i++){
				if(obj[i].checked){
					return obj[i].value;
				}
			}
		}		
		else{
			return obj.value;			
		}
	}
	return "";
}
function startAnimation(){
	var atag = document.getElementById("busyimage");
	if(atag){
		atag.src = "images/busy.gif";		
	}
}

function unloadPageBusy(){
	hideIt("busyIcon");
	showIt("submit_p2");
}

function showIt(givenname){		
	$("#"+givenname).show();
}

function hideIt(givenname){	
	$("#"+givenname).hide();
}
function trimString (str) {
	if(str =='')
		return str;

  while (str.charAt(0) == ' ')
    str = str.substring(1);
  while (str.charAt(str.length - 1) == ' ')
    str = str.substring(0, str.length - 1);
  return str;
}
//////////////// commom util //////////////////
function getAgeByYear(val){
	return getCurYear() - val;
}
function getInt(val){
	return getIntByDef(val, 0);
}
function getIntByDef(val, def){
	var intval = parseInt(val, 10);
	if(isNaN(intval)){
		return def;
	}
	return intval;
}
function getCurYear(){	
	try{
		return (new Date()).getFullYear();
	}
	catch(err){
		return 2012;
	}
}
function getCurMonth(){	
	try{
		return (new Date()).getMonth() + 1;
	}
	catch(err){
		return 1;
	}
}
