/**
 * begin with lowercase character and between 3 to 30 character,support 
 *@author:sam
 */
function matchUserName(name)
{
	if(!name)
	return false;
	
	var patrn=/^[a-z|_]{1}([a-z0-9]|[_]){2,29}$/;
	return patrn.test(name);
	
	//var reg=/([a-z]|_)+([a-z]|_|[0-9])*/;
	//var rs=name.match(reg);
	//return rs[0]==name;
}
/**
 *check domain
 */
function matchDomain(domain)
{
	if(!domain)
	return false;
	var patrn=/^([a-z0-9]){4,15}$/;
	return patrn.test(domain);
}


/**
 * check if is password
 * only support lowercase letter ,number and underline. must between 6-20
 *@author:sam
 */
function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
return patrn.test(s);
}

/**
*check if is mobile
*
*/
function isMobil(s)
{
	var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
	return patrn.test(s);
}



/**
* check email
*/
function validEmail(validObj)
{
	
	var patrn=/^\ *[a-zA-Z0-9][\.a-zA-Z0-9-_]*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9_-]+)+\ *$/;
	return patrn.test(validObj);
	/*
	var r = validObj.search(/^\ *[a-zA-Z0-9][\.a-zA-Z0-9-_]*@[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]+)+\ *$/);
  	if(r==-1)
		return false;
	return true;  
	*/
}

/**
*check domain
*
*/
function checkDomain(nname)
{
var arr = new Array(
'.com','.net','.org','.biz','.coop','.info','.museum','.name',
'.pro','.edu','.gov','.int','.mil','.ac','.ad','.ae','.af','.ag',
'.ai','.al','.am','.an','.ao','.aq','.ar','.as','.at','.au','.aw',
'.az','.ba','.bb','.bd','.be','.bf','.bg','.bh','.bi','.bj','.bm',
'.bn','.bo','.br','.bs','.bt','.bv','.bw','.by','.bz','.ca','.cc',
'.cd','.cf','.cg','.ch','.ci','.ck','.cl','.cm','.cn','.co','.cr',
'.cu','.cv','.cx','.cy','.cz','.de','.dj','.dk','.dm','.do','.dz',
'.ec','.ee','.eg','.eh','.er','.es','.et','.fi','.fj','.fk','.fm',
'.fo','.fr','.ga','.gd','.ge','.gf','.gg','.gh','.gi','.gl','.gm',
'.gn','.gp','.gq','.gr','.gs','.gt','.gu','.gv','.gy','.hk','.hm',
'.hn','.hr','.ht','.hu','.id','.ie','.il','.im','.in','.io','.iq',
'.ir','.is','.it','.je','.jm','.jo','.jp','.ke','.kg','.kh','.ki',
'.km','.kn','.kp','.kr','.kw','.ky','.kz','.la','.lb','.lc','.li',
'.lk','.lr','.ls','.lt','.lu','.lv','.ly','.ma','.mc','.md','.mg',
'.mh','.mk','.ml','.mm','.mn','.mo','.mp','.mq','.mr','.ms','.mt',
'.mu','.mv','.mw','.mx','.my','.mz','.na','.nc','.ne','.nf','.ng',
'.ni','.nl','.no','.np','.nr','.nu','.nz','.om','.pa','.pe','.pf',
'.pg','.ph','.pk','.pl','.pm','.pn','.pr','.ps','.pt','.pw','.py',
'.qa','.re','.ro','.rw','.ru','.sa','.sb','.sc','.sd','.se','.sg',
'.sh','.si','.sj','.sk','.sl','.sm','.sn','.so','.sr','.st','.sv',
'.sy','.sz','.tc','.td','.tf','.tg','.th','.tj','.tk','.tm','.tn',
'.to','.tp','.tr','.tt','.tv','.tw','.tz','.ua','.ug','.uk','.um',
'.us','.uy','.uz','.va','.vc','.ve','.vg','.vi','.vn','.vu','.ws',
'.wf','.ye','.yt','.yu','.za','.zm','.zw','.mobi');

var mai = nname;
var val = true;

var dot = mai.lastIndexOf(".");
var dname = mai.substring(0,dot);
var ext = mai.substring(dot,mai.length);
//alert(ext);
	
if(dot>2 && dot<57)
{
	for(var i=0; i<arr.length; i++)
	{
	  if(ext == arr[i])
	  {
	 	val = true;
		break;
	  }	
	  else
	  {
	 	val = false;
	  }
	}
	if(val == false)
	{
	  	 alert("Your domain extension "+ext+" is not correct");
		 return false;
	}
	else
	{
		for(var j=0; j<dname.length; j++)
		{
		  var dh = dname.charAt(j);
		  var hh = dh.charCodeAt(0);
		  if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123) || hh==45 || hh==46)
		  {
			 if((j==0 || j==dname.length-1) && hh == 45)	
		  	 {
		 	  	 alert("Domain name should not begin are end with '-'");
			      return false;
		 	 }
		  }
		else	{
		  	 alert("Your domain name should not have special characters");
			 return false;
		  }
		}
	}
}
else
{
 alert("Your Domain name is too short/long");
 return false;
}	

return true;
}




 //base on prototype.js
 function show_loading(id,hide_objs,loading_msg,path){
  if(!loading_msg)
  	loading_msg="";
  if(path)
  {
   	$(id).innerHTML = "<font color=red>"+loading_msg+'</font><img src="'+path+'/images/progress.gif" position="absmiddle"/>';
  }else
  {
  $(id).innerHTML =loading_msg+ '<img src="/images/progress.gif" position="absmiddle"/>';
  }
   for(var i=0;i<hide_objs.length;i++){
      $(hide_objs[i]).disabled = true;
   }
}
  //base on prototype.js
function hide_loading(id,hide_objs){
   $(id).innerHTML = '';
   for(var i=0;i<hide_objs.length;i++){
      $(hide_objs[i]).disabled = false;
   }
}


//base on prototype.js
var _andylau_golbal_id="";
function complete_show(id,message)
{
	show_message(id,message);
		
	//setTimeOutCall("hide_message",timesout);
}
//base on prototype.js
function show_message(id,message)
{
	$(id).innerHTML="<div  style='font-size:16; background-color:#B8B13A;width:200px;' ><font color=blue'>"+message+"</font></div>";
	_andylau_golbal_id=id;
	setTimeout(hide_message,3000);

}
//base on prototype.js
function hide_message()
{
  if(_andylau_golbal_id!="")
  {
  	$(_andylau_golbal_id).innerHTML="";
  }
}


/*

==================================================================

RTrim(string):trim left side whitespace

==================================================================

*/
function LTrim(str)

{

    var whitespace = new String(" \t\n\r");

    var s = new String(str);

    if (whitespace.indexOf(s.charAt(0)) != -1)

    {

        var j=0, i = s.length;

        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)

        {

            j++;

        }

        s = s.substring(j, i);

    }

    return s;

}

 

/*

==================================================================

RTrim(string):trim right side whitespace

==================================================================

*/

function RTrim(str)

{

    var whitespace = new String(" \t\n\r");

    var s = new String(str);

    if (whitespace.indexOf(s.charAt(s.length-1)) != -1)

    {

        var i = s.length - 1;

        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)

        {

            i--;

        }

        s = s.substring(0, i+1);

    }

    return s;

}

 

/*

==================================================================

Trim(string):trim left and right side whitespace

==================================================================

*/

function Trim(str)

{

    return RTrim(LTrim(str));

}


//yyyy-mm-dd
function isDate(oStartDate)
{
    //1900-2099 yyyy-mm-dd 
    var pat_hd=/^(19|20)\d{2}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/;
  
 try{
     if(!pat_hd.test(oStartDate)){throw "Date not allow";}
  var arr_hd=oStartDate.split("-");
  var dateTmp;
  dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
  if(dateTmp.getFullYear()!=parseFloat(arr_hd[0]) || dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1 || dateTmp.getDate()!=parseFloat(arr_hd[2]))
  {
   throw "Date not allow";
  }
 }
 catch(ex)
 {
  if(ex.description)
   {return false;}
   else
    {return false;}
 }
 return true;
}


//?????????????????????????????????   ,?????????????????????yyyy-mm-dd[ hh:mi] ???????????????????????????????????????
function isDateAndTime(oDateTime)
{
    //??????????????????????????? ?????????1900-2099???  ????????? yyyy-mm-dd [ hh:mi]  ??????????????????????????????????????????
    var pat_hd=/^(19|20\d{2}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))){1}(\s\d{2}:\d{2})?$/;
 try{
   if(!pat_hd.test(oDateTime)) throw "date not allow!";
   var arr_dt=oDateTime.split(" ");
   if(arr_dt[0]=='') throw "date not allow!";
   var oDate=arr_dt[0];
   var arr_hd=oDate.split("-");
   var dateTmp;
   dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
   if(dateTmp.getFullYear()!=parseFloat(arr_hd[0]) || dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1 || dateTmp.getDate()!=parseFloat(arr_hd[2])) throw "date format error???";
            if(arr_dt[1] && arr_dt[1]!='')
            {
               var oTime=arr_dt[1];
               var arr_ht=oTime.split(":");
               dateTmp.setHours(arr_ht[0],arr_ht[1]);
      if(dateTmp.getHours()!=parseFloat(arr_ht[0]) || dateTmp.getMinutes()!=parseFloat(arr_ht[1]) ) throw "date format error";
            }
  }
 catch(ex)
  {
   if(ex.description)
   {return false;}
   else
    {return false;}
  }
 return true;
}

var imgArray=['.jpg','.jpeg','.gif','.png'];
function isSupportImg(pattern)
{

	if(pattern)
	{
		var checkObj=pattern.toLowerCase();
		for(var i=0;i<imgArray.length;i++)
		{
			if(checkObj==imgArray[i])
				return true;		
		}
	}
	return false;
}

/*
* is support image and swf
*/
function isSupportImgAndSwf(pattern)
{
	if(pattern)
	{
		var checkObj=pattern.toLowerCase();
		if(checkObj==".swf")
		return true;
		
		for(var i=0;i<imgArray.length;i++)
		{
			if(checkObj==imgArray[i])
				return true;		
		}
	}
	
	return false;
}

var videoArray=['.3gp','.asf','.asx','.avi','.divx','.flv','.m1v','.m2v','.m4v','.mov','.mp4','.mpeg','.mpg','.ram','.rm','.rmvb','.vob','.wmv','.xvid'];
/*
*
*check if support this video format
*/
function isSupportVideoFormat(checkFormat)
{
	if(checkFormat)
	{
		var checkObj=checkFormat.toLowerCase();
		for(var i=0;i<videoArray.length;i++)
		{
			if(checkObj==videoArray[i])
				return true;
				
		}
	}	
	
		
	return false;
}

//check url

function checkURL(url){  

// ??:ThankWsx
// ??:2006/10/20
Namespace = new Object();
// ????????register???????????????"Grandsoft.GEA"
Namespace.register = function(fullNS) {
    // ???????N??, ??Grandsoft?GEA?
    var nsArray = fullNS.split('.');
    var sEval = "";
    var sNS = "";
    for (var i = 0; i < nsArray.length; i++)
    {
        if (i != 0) sNS += ".";
        sNS += nsArray[i];
        // ????????????????????????
        // ?????Grandsoft?????Grandsoft.GEA?????
        sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
    }
    if (sEval != "") eval(sEval);
}
Namespace.register("SmartKeyword.LampHexi");
//    ????URL??
SmartKeyword.LampHexi.URL =function(url,withfile) {
    this.url = url;
    this.withfile = withfile;
}
SmartKeyword.LampHexi.URL.prototype.url = "http://lampee.cn";
SmartKeyword.LampHexi.URL.prototype.show = function() {
    return this.url;
}
SmartKeyword.LampHexi.URL.prototype.validateURL = function() {
    url = this.url;
    withfile = this.withfile;
    url = url.replace(/s/ig,"");
    var pathresult;
    // indexOf ???? ?? ?? -1
    if(url.indexOf("http://")==0) {
        newurl = url.substr(7);
    } else {
        newurl =url;
    }
    if(newurl.indexOf("/")!=-1 && newurl.indexOf("/")!=newurl.length-1) {
        domain = newurl.substr(0,newurl.indexOf("/"));
        if(this.validateDomain(domain)==false) {
            return false;
        }
        if(!withfile) {
            if(newurl.lastIndexOf("/")==newurl.length-1) {
                path = newurl.substring(newurl.indexOf("/")+1,newurl.length-1);
            } else {
                path = newurl.substr(newurl.indexOf("/")+1);
            }
                pathresult = this.validatePath(path);
                if(pathresult!=false) {
                    return true;
                } else {
                    return false;
                }
        } else {
            if(newurl.lastIndexOf("/")==newurl.length-1) {
                return false;
            } else {
                path = newurl.substring(newurl.indexOf("/")+1,newurl.lastIndexOf("/"));
                filename =newurl.substr(newurl.lastIndexOf("/")+1);
                pathresult = this.validatePath(path);
                if(pathresult!=false) {
                    ;
                } else {
                    return false;
                }
                if(this.validateFile(filename)!=false) {
                    return true;
                } else {
                    return false;
                }
            }
        }
    } else {
        if(newurl.lastIndexOf("/")==newurl.length-1) {
            domain = newurl.substr(0,newurl.length-1);
        } else {
            domain = newurl.substr(0,newurl.length);
        }
        return this.validateDomain(domain);
    }
}
//LampHexi.prototype.validatePath(
//????URL?????????????????
//URL?withfile??????????false

SmartKeyword.LampHexi.URL.prototype.validatePath = function(path) {
    paths = path.split("/");
    for(i=0;i<paths.length;i++) {
        if(paths[i]!=''&&this.validateFolder(paths[i])!=false) {
            ;
        } else {
            return false;
        }
    }
}
SmartKeyword.LampHexi.URL.prototype.validateFile = function(filename) {
    var re = /[^w.?&=%]+/ig;
    if(re.test(filename)) {
        return false;
    } else {
        return true;
    }
}
SmartKeyword.LampHexi.URL.prototype.validateFolder = function(folder) {
    var re = /[^w]+/ig;
    if(re.test(folder)) {
        return false;
    } else {
        return true;
    }
}
SmartKeyword.LampHexi.URL.prototype.validateDomain = function(domain) {
var arr = new Array(
'.com','.net','.org','.biz','.coop','.info','.museum','.name',
'.pro','.edu','.gov','.int','.mil','.ac','.ad','.ae','.af','.ag',
'.ai','.al','.am','.an','.ao','.aq','.ar','.as','.at','.au','.aw',
'.az','.ba','.bb','.bd','.be','.bf','.bg','.bh','.bi','.bj','.bm',
'.bn','.bo','.br','.bs','.bt','.bv','.bw','.by','.bz','.ca','.cc',
'.cd','.cf','.cg','.ch','.ci','.ck','.cl','.cm','.cn','.co','.cr',
'.cu','.cv','.cx','.cy','.cz','.de','.dj','.dk','.dm','.do','.dz',
'.ec','.ee','.eg','.eh','.er','.es','.et','.fi','.fj','.fk','.fm',
'.fo','.fr','.ga','.gd','.ge','.gf','.gg','.gh','.gi','.gl','.gm',
'.gn','.gp','.gq','.gr','.gs','.gt','.gu','.gv','.gy','.hk','.hm',
'.hn','.hr','.ht','.hu','.id','.ie','.il','.im','.in','.io','.iq',
'.ir','.is','.it','.je','.jm','.jo','.jp','.ke','.kg','.kh','.ki',
'.km','.kn','.kp','.kr','.kw','.ky','.kz','.la','.lb','.lc','.li',
'.lk','.lr','.ls','.lt','.lu','.lv','.ly','.ma','.mc','.md','.mg',
'.mh','.mk','.ml','.mm','.mn','.mo','.mp','.mq','.mr','.ms','.mt',
'.mu','.mv','.mw','.mx','.my','.mz','.na','.nc','.ne','.nf','.ng',
'.ni','.nl','.no','.np','.nr','.nu','.nz','.om','.pa','.pe','.pf',
'.pg','.ph','.pk','.pl','.pm','.pn','.pr','.ps','.pt','.pw','.py',
'.qa','.re','.ro','.rw','.ru','.sa','.sb','.sc','.sd','.se','.sg',
'.sh','.si','.sj','.sk','.sl','.sm','.sn','.so','.sr','.st','.sv',
'.sy','.sz','.tc','.td','.tf','.tg','.th','.tj','.tk','.tm','.tn',
'.to','.tp','.tr','.tt','.tv','.tw','.tz','.ua','.ug','.uk','.um',
'.us','.uy','.uz','.va','.vc','.ve','.vg','.vi','.vn','.vu','.ws',
'.wf','.ye','.yt','.yu','.za','.zm','.zw');
//    protocal://<user>:<password>@<host>:<port>/<url-path>
//    http://<host>:<port>/<path>?<searchpart>  
    //    path ? searchpart ?????????????? / ???????
    //

var mai = domain;
var val = true;

var dot = mai.lastIndexOf(".");        //????.???
var dname = mai.substring(0,dot);    //?????.???????
var ext = mai.substring(dot,mai.length);    //??
//alert(ext);
    
if(dot>2 && dot<57) {
    for(var i=0; i<arr.length; i++) {
      if(ext == arr[i]) {
         val = true;
        break;
      } else {
         val = false;
      }
    }
    if(val == false) {
        alert("Your domain extension "+ext+" is not correct");    //???????
        return false;
    } else {
        for(var j=0; j<dname.length; j++) {
          var dh = dname.charAt(j);
          var hh = dh.charCodeAt(0);
          if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123) || hh==45 || hh==46) {
             if((j==0 || j==dname.length-1) && hh == 45) {
                                 alert("Domain name should not begin are end with '-'");
                  return false;
              }
          } else {
              alert("Your domain name should not have special characters");
             return false;
          }
        }
    }
} else {
    alert("Your Domain name is too short/long");
    return false;
}    
return true;
}  


var myurl = new SmartKeyword.LampHexi.URL(url,true);
//??????????myurl,??URL???????
//?????FALSE ?????????? TRUE????????
//alert(myurl.show());  //??URL
//alert(myurl.validateURL());  //??URL????TRUE???URL?FALSE???URL
return myurl.validateURL();

}

/*
* return true or false
*/
function checkIsInt(value)
{
 if(value==""||value.indexOf("0")==0&&value.length>1||isNaN(value)||value.indexOf("-")>-1||value.indexOf(".")>0){
    return false;   
 }else
 {
 	return true;
 }
}

function checkIsFloat(value){
var flag = true;
 var values = value.split(".");    
 if(values.length>2){
  flag = false;
   return flag;
 }
 var value1 = values[0];
 if(values.length==1){
    if(!checkIsInt(value1)){
      flag = false;
      return flag;
   }
 }
      
  if(values.length==2){
  if(!checkIsInt(value1)){
      flag = false;
      return flag;
   }
  
	 var value2 = values[1];
	 if(value2.length>2){
	    flag = false;
	  return flag;
	 }
	
	 if(isNaN(value2)||value2.indexOf("-")>-1){
	    flag = false;  
	   return flag;
	 }
  }
  return flag; 
}

function toBreakWord(id,intLen){
		var obj=document.getElementById(id);		
		var strContent=obj.innerHTML;
		var strTemp="";
		while(strContent.length>intLen){
		strTemp+=strContent.substr(0,intLen)+"&#10;";
		strContent=strContent.substr(intLen,strContent.length);
		}
		strTemp+="&#10;"+strContent;
		obj.innerHTML=strTemp;
}

function toBreakWordByObj(obj,intLen){	
		var strContent=obj.innerHTML;
					var strTemp="";
					while(strContent.length>intLen){
					
					var strTemp1=strContent.substr(0,intLen);
					//check if had & get 5 character
					 var forntStr=strTemp1.substring(strTemp1.length-5,strTemp1.length);
					 var pot=forntStr.indexOf("&");
					 if(pot>0)
					 {
					   //had &
					   var subPot=strTemp1.length-5+pot;
					   strTemp+=strTemp1.substring(0,subPot)+"&#10;";
					   strContent=strContent.substr(subPot,strContent.length);
					 }else
					 {
					 	//front 30
					 	var forntStr2=strTemp1.substring(strTemp1.length-25,strTemp1.length);
					 	var pot_3=forntStr2.lastIndexOf("<");
					 	var pot_4=forntStr2.lastIndexOf(">");
					 	if(pot_4<pot_3)
					 	{
					 		//need substring
					 		
					 		
					 		var tempStr2=strContent.substring(intLen,strContent.length);
					 		var pot_5=tempStr2.indexOf(">");
					 		
					 		strTemp+=strContent.substring(0,intLen+pot_5)+"&#10;";
					 		strContent=strContent.substr(intLen+pot_5,strContent.length);
					 	}else
					 	{
					 	
					 		strTemp+=strContent.substr(0,intLen)+"&#10;";
							strContent=strContent.substr(intLen,strContent.length);
					 	
					 	}
					 
					 }
					
					
					//strTemp+=strContent.substr(0,intLen)+"&#10;";
					//strContent=strContent.substr(intLen,strContent.length);
					
					
					}
					strTemp+="&#10;"+strContent;
					obj.innerHTML=strTemp;
}

function andylauCustomSaveContent(element_id, html, body)
{
	//alert(document.getElementById(element_id).cols );
	//alert(encodeURIComponent(html));
    //alert(html.indexOf("\r"));
	//alert(html.indexOf("\n"));
	//alert(html.indexOf("\r\n"));

	    
		var intLen=60;
		if(document.getElementById(element_id).cols )
		{
				intLen=document.getElementById(element_id).cols;
		}
        var strContent=html;
		var strTemp="";
		while(strContent.length>intLen){
		
		var strTemp1=strContent.substr(0,intLen);
		//check if had & get 5 character
		 var forntStr=strTemp1.substring(strTemp1.length-5,strTemp1.length);
		 var pot=forntStr.indexOf("&");
		 if(pot>0)
		 {
		   //had &
		   var subPot=strTemp1.length-5+pot;
		   strTemp+=strTemp1.substring(0,subPot)+"&#10;";
		   strContent=strContent.substr(subPot,strContent.length);
		 }else
		 {
			//front 30
			var forntStr2=strTemp1.substring(strTemp1.length-25,strTemp1.length);
			var pot_3=forntStr2.lastIndexOf("<");
			var pot_4=forntStr2.lastIndexOf(">");
			if(pot_4<pot_3)
			{
				//need substring
				
				
				var tempStr2=strContent.substring(intLen,strContent.length);
				var pot_5=tempStr2.indexOf(">");
				
				strTemp+=strContent.substring(0,intLen+pot_5)+"&#10;";
				strContent=strContent.substr(intLen+pot_5,strContent.length);
			}else
			{
			
				strTemp+=strContent.substr(0,intLen)+"&#10;";
				strContent=strContent.substr(intLen,strContent.length);
			
			}
		 
		 }
		}
		strTemp+="&#10;"+strContent;
		return strTemp;

   //alert(body);

}



