/*======================================================
=============== String utilities =======================
======================================================*/
function TrimLeft(p_szText){
	var leftIndex=0;  
	while(leftIndex<p_szText.length){
    if(p_szText.charAt(leftIndex)!=" ") break;    
    leftIndex++;
  }
  return p_szText.substring(leftIndex,p_szText.length);
}

function TrimRight(p_szText){	
  var rightIndex=p_szText.length; 	
  while(rightIndex>0){
    rightIndex--;
    if (p_szText.charAt(rightIndex)!=" ") break;   
  }
  return p_szText.substring(0,rightIndex+1);
}

function Trim(p_szText){	
	return TrimRight(TrimLeft(p_szText));
}

function isBlank(p_str){
	var strTemp = p_str;
	strTemp = strTemp.replace(/ /gi,"");
	return ((strTemp.length==0)?true:false);
}

function isUserNameValid(p_szName){
	var i=0;
	var szTemp = "";
	var szName=p_szName;
	var szCheck ="0123456789_aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ";
	while(i<szName.length){
		szTemp = szName.charAt(i) + "";
		if (szCheck.indexOf(szTemp)==-1) return false;		
		i++;
	}
	return true;
}

function isEmailValid(p_szName){
	var i=0;
	var szTemp = "";
	var szName=p_szName;
	var szCheck ="0123456789_aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ.-@";
	while(i<szName.length){
		szTemp = szName.charAt(i) + "";
		if (szCheck.indexOf(szTemp)==-1) return false;		
		i++;
	}
	return true;
}

function testLength(content,l)
{
  var len=content.length;
  return ((len>l)?true:false);
}

function cutString(content,len)
{
  var str=content.substring(0,len);
  return str;
}

function StringToHTML(szText)
{
  var len = szText.length;
  var i = 0;
  var szTemp = "";
  while(i<len){
    if (szText.charAt(i)=="\"")
    { szTemp += "&#34;";
    }else if (szText.charAt(i)=="\'")
    { szTemp += "&#39;";
    }else if (szText.charAt(i)=="&")
    { szTemp += "&#38;";
    }else if (szText.charAt(i)=="<")
    { szTemp += "&#60;";
    }else if (szText.charAt(i)==">")
    { szTemp += "&#62;";
    }else
    { szTemp += szText.charAt(i);
    }
    i++;
  }
  return szTemp;
}

function GetBlankString(len)
{
  var i = 0;
  var str = "";
  var ilen = ((len==null)||(len==0))?50:len;
  for (i=0;i<ilen;i++){
    str+="&nbsp;";
  }
  return str;
}

function replaceChar(str,oldChar,newChar){
	var strTemp="";	
	for(i=0;i<str.length;i++){
		if(str.charAt(i)==oldChar)
			strTemp += newChar;
		else
			strTemp += str.charAt(i);
	}
	return strTemp;	
}

/*======================================================
=============== Utilities for tag DIV ==================
======================================================*/
function show(id) {	
	if (NS4) document.layers[id].visibility = "show";	
	else if (IE) document.all[id].style.visibility = "visible";
	else if (NS6)	document.getElementById(id).style.visibility = "visible";		
}

function hide(id) {		
	if (NS4) document.layers[id].visibility = "hide";		
	else if (IE) document.all[id].style.visibility = "hidden"
	else if (NS6) document.getElementById(id).style.visibility = "hidden"
}

function write(id,text,back_color){
	var elm=null;
	if(IE || NS6){
		elm = (IE ? document.all[id]:document.getElementById(id));
		elm.innerHTML = text;
	}else if(NS4){
		elm = document.layers[id];                        
    myBox=(elm.document.layers.length==0)?new Layer(800,elm):elm.document.layers[0];
    myBox.bgColor=back_color;
    myBox.document.write(text);
    myBox.document.close();
    myBox.visibility = "inherit";
	}
}

function displayText(id,text,back_color,font_name,font_size,font_color){
	if(!(id=='' || id==null)){
		var elm=null;
		var sText = (text==null)?"":text;
    var sFace = (font_name==''||font_name==null)?'tahoma':font_name;
		var sSize = (font_size==''||font_size==null)?'2':font_size;
		var sColor = (font_color==''||font_color==null)?'red':font_color;
		var sBackColor = (back_color==''||back_color==null)?"#FFFFFF":back_color;
		var str='<font face=\"' + sFace + '\" size=\"' + sSize + '\" color=\"' + sColor + '\">' + sText + '</font>';    
    write(id,str,sBackColor);
    (sText=="")?hide(id):show(id);    
	}//end if(!(id=='' || id==null))
}

/*======================================================
=============== Date time utilities ====================
======================================================*/
function isDateValid(p_Month,p_Day,p_Year){
	if (p_Month==0 || p_Day==0 || p_Year==0) return false;
	if (p_Month==2){
		if(((p_Year%4)==0 && (p_Year%100)!=0) || (p_Year%400)==0){
			if (p_Day>29)	return false;			
		} 
		else {
			if(p_Day>28)	return false;			
		}
	}
	if (p_Day==31 && (p_Month==4 || p_Month==6 || p_Month==9 || p_Month==11)){
		return false;
	}
	return true;
}

function addZero(num){	
	return (num<10)?"0" + num:num;
}

function formatDate(p_Month,p_Day,p_Year,pattern){	
	var PattID=0;
	var str="";	
	var arrMonth = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var arrPattern = new Array("mm/dd/yyyy","dd/mm/yyyy","mmm dd, yyyy","mmm - dd - yyyy","dd - mmm - yyyy");
	if(isDateValid(p_Month,p_Day,p_Year)){
		for(i=0;i<arrPattern.length;i++){
			if(pattern.toLowerCase()==arrPattern[i]){
				PattID = i;
				break;
			}
		}		
		switch(PattID){
			case 0:{
				str = addZero(p_Month) + "/" + addZero(p_Day) + "/" + p_Year;
				break;
			}
			case 1:{
				str = addZero(p_Day) + "/" + addZero(p_Month) + "/" + p_Year;
				break;
			}
			case 2:{
				str = arrMonth[p_Month - 1] + " " + addZero(p_Day) + ", " + p_Year;
				break;
			}
			case 3:{
				str = arrMonth[p_Month - 1] + " - " + addZero(p_Day) + " - " + p_Year;
				break;
			}
			case 4:{
				str = addZero(p_Day) + " - " + arrMonth[p_Month - 1] + " - " + p_Year;
				break;
			}
		}	
	}//end if(isDateValid(p_Month,p_Day,p_Year))
	return str;
}
