function TrimString(sInString) {
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}

function byID(id){
	return document.getElementById(id);
}

function ContainsForbiddenChars(str){	
	var reg2 = new RegExp(",", "g");
	var reg3 = new RegExp("\\?", "g");
	var reg4 = new RegExp("/", "g");			
	var reg5 = new RegExp("\\\\", "g");			
	var reg6 = new RegExp("&", "g");	
	if (str.match(reg2) 
		|| str.match(reg3)
		|| str.match(reg4)
		|| str.match(reg5)
		|| str.match(reg6))
	{ 
		return true;		
		
	}
	else
		return false;
}

function EmailCheck(str) {

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail ID");
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail ID");
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail ID");
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail ID");
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail ID");
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail ID");
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail ID");
		    return false;
		 }

 		 return true;			
	}
	
	
//080428 login name check - unix style ^[a-z][a-z0-9]+$

function LoginNameCheck(Str) {

	var v= new RegExp("^[a-z][a-z0-9]+$");
	//v.compile("^[a-z][a-z0-9]+$");
	
    return (v.test(Str));
}	
	
	
function UrlCheck(Str) {

	var v = new RegExp();
    v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
    return (v.test(Str));

}  	
	
/*	
function FileSizeDisplayKB(filesize){
	var msize = (Math.floor((filesize / (1024)) ))
		return (msize);
}*/


//071203 amalia
function FileSizeDisplayKB(filesize){

   msize= 0;
   
   if (filesize> 0 && filesize<1024) {
    msize= roundUp(filesize / (1024),2);//(filesize / (1024)).toFixed(2); 
   } else {
	msize = (Math.floor((filesize / (1024)) ))
   }	
		
  return (msize);
}


function FileSizeDisplayMB(filesize) {
  
  var msize= Math.floor(filesize/(1048576))
  return msize;
}


function roundUp(f,num) {

  var m= Math.pow(10,num);
  return Math.ceil(f*m)/m; 
} 	
// end

function FileSizeDisplay(filesize){
	if (filesize<1024)
		return FComma(filesize + " byte");
	else if (filesize>=1024 && filesize < 1024*1024){		
		var ksize = FComma(Math.floor((filesize / 1024) * 10) / 10)
		return (ksize + " KB");
	}	
	else if (filesize >=1024*1024 && filesize < 1024*1024*1024){
		var msize = FComma(Math.floor((filesize / (1024*1024)) * 10) / 10)
		return (msize + " MB");
	}
	else if(filesize >=1024*1024*1024){
		var gsize = FComma(Math.floor((filesize / (1024*1024*1024)) * 10) / 10)
		return (gsize + " GB");
	}
		
}


function FComma(SS) {
    var T = "", S = String(SS), L = S.length - 1, C, j, P = S.indexOf(".") - 1;
    if (P < 0) {
        P = L;
    }
    for (j = 0; j <= L; j++) {
        T += (C = S.charAt(j));
        if ((j < P) && ((P - j) % 3 == 0) && (C != "-")) {
            T += ",";
        }
    }
    return T;
}

function CheckFileFormat(filename, extension){
	var strArr = filename.split(".");
	if (strArr.length<=1)
		return false;
		

	var fileext = strArr[strArr.length-1];
	if ((fileext.toLowerCase()) == (extension.toLowerCase()))
		return true;
	else 
		return false;
}

function GetFileFormat(filename){
	var strArr = filename.split(".");
	var fileext = "";
	if (strArr.length<=1)
		return fileext;
	
	fileext = strArr[strArr.length-1];
	return fileext;
	
}


// 070611 Amalia function added for checkboxes
//table id, checkbox id 
function checkAllchk(tbl, chkAll) {
    
    var theTable= byID(tbl).tBodies[0];
    var list = theTable.getElementsByTagName("input");
    
    for (var i=0; i<list.length; i++ ) {
    if ((list[i].type == "checkbox") && !list[i].disabled) //070521 disabled
    	list[i].checked =  byID(chkAll).checked;
    }

}

/* 
//070815 amalia function added to force maxlength on textareas

function imposeMaxLength( field, maxlimit ) {
  if ( field.value.length > maxlimit )
  {
    field.value = field.value.substring( 0, maxlimit );
  }
}
*/


//071012
function showTips() {
   
   if ( byID('moretips').style.display== 'block')  { //toggle off
   byID('moretips').style.display= 'none' ;
   byID('showTips').innerHTML = "Show more tips...";
   byID('bg').className= 'bg';
   }
   else {
   byID('moretips').style.display= 'block' ;
   byID('showTips').innerHTML = "Hide tips";
   byID('bg').className= 'bg_long';
   }
   
}

//071029 toggle 
function toggle(id) {

 if (byID("assoc"+id).style.display=='none') {
 
 byID("assoc"+id).style.display ='';
 byID("plus"+id).src= HOME+"/img/minus.gif";
 }
 else {
 byID("assoc"+id).style.display ='none';
 byID("plus"+id).src= HOME+"/img/plus.gif";
 }
 
}

//071130 preserve extension and gaps
function wrapText(txt,max) {

  var result="";
  var index= max; 

  var body =txt;
  var ext= "";

   if (txt.lastIndexOf('.')!=-1) {
  //has ext
  ext= txt.substring(txt.lastIndexOf('.'));
  body = txt.substring(0,txt.lastIndexOf('.'));
  }

  while (body.length>=max) { 

    var temp= body.substring(0, max);
    if (temp.indexOf(' ')!= -1) {
      //has gaps
      index= temp.lastIndexOf(' ')+1; 
      result+= body.substring(0,index);
      body = body.substring(index);
    }
    else {
      result+= body.substring(0,max)+"<br>";
      body= body.substring(max);
    } 
  }

  //add last bit and extension

  if (body.length+ext.length<=max) {
    result += body+ext;
  } 
  else {
    result+= body+"<br>"+ext;
  }



  return result;
}


function log10 (x) {
	
	return (Math.log(x) / Math.LN10);
	
}


