function textCounter(field, countfield, maxlimit) 
{
	// if too long...trim it!
	if (field.value.length > maxlimit) 
	{
		field.value = field.value.substring(0, maxlimit);
	}
	// otherwise, update 'characters left' counter
	else
	{
		countfield.value = maxlimit - field.value.length;
	}
}

function FreezeScreen(msg) 
{
  scroll(0,0);
  var outerPane = document.getElementById('FreezePane');
  var innerPane = document.getElementById('InnerFreezePane');
  if (outerPane) outerPane.className = 'FreezePaneOn';
  if (innerPane) innerPane.innerHTML = msg;
}


function compareFieldWithRegex(str, regex)
{
	for(i=0;i < str.length;i++)
	{
		var letter = str.charAt(i);
		if(!regex.test(letter))
		{
			return false;
		}
	}
	return true;
}

function SetCookie( sName, sValue, expiryYear)
{
  var test = sName+"="+escape(sValue) + ";expires=Mon, 1 Jan "+expiryYear+" 23:59:59 GMT;" +";";
  document.cookie =  test;
  location.reload();
}

function SetLoginCookie( sName, sValue, expiryYear)
{
  var test = sName+"="+escape(sValue) + ";expires=Mon, 1 Jan "+expiryYear+" 23:59:59 GMT;" +";";
  document.cookie =  test;
}

function isNumberOrLetter(s)
{
	for(i=0;i < s.length;i++){
		var letter = s.charAt(i);
		if(!((letter >= '0' && letter <= '9') || (letter >= 'a' && letter <= 'z') || (letter >= 'A' && letter <= 'Z') || letter=='_')){
			return false;
		}
	}
	return true;
}


function isValidate(field)
{


	var i;

	for (i = 0; i < field.length; i++)
	{
		var c = field.substr(i,1);

		if (! (isLetter(c) || isDigit(c) ) )
		{
			return false;
		}
	}

	return true;
}



function isLetterString(field)
{
	field = myTrim(field);

	var i;

	for (i = 0; i < field.length; i++)
	{
		var c = field.charAt(i);

		if (! isLetter(c) )
		{
			return false;
		}
	}

	return true;
}


function isRunNian(s){
	//alert(s%4);
	if(s%4!=0){
		return false;
	}else{
		if(s%100!=0){
			return true;
		}else{
			if(s%400==0){
				return true;
			}else{
				return false;
			}
		}
	}
}





 function getLastDay(year,month){
	var s = new Array("01","03","05","07","08","10","12");
	var s1=new Array("04","06","09","11");

	for(i=0;i< s.length;i++){
		if(month==s[i]){
			return "31";
		}
	}

	for(i=0;i<s1.length;i++){
		if(month==s1[i]){
			return "30";
		}
	}

	if(isRunNian(year)){
		return "29";
	}else{
		return "28";
	}

}



function isNumbers(field)
{
	field = myTrim(field);

	var i;

	for (i = 0; i < field.length; i++)
	{
		var c = field.charAt(i);

		if (!isDigit(c) )
		{
			return false;
		}
	}

	return true;
}


function radio_active(radio_group)
{
	for(counter = 0 ; counter < radio_group.length ; counter++)
	{
		if(radio_group[counter].checked)
		{
			return counter;
		}
	}

	return -1;
}



function isEmpty(field)
{
	field = trimEnter(field);
	return ((field == null) || (field.length == 0) || myTrim(field)=="");
}


function trimEnter(input)
{
	var tmp = "";

	for (var begin=0;begin <input.length;begin++)
	{
		var chrCode = input.charCodeAt(begin);
		if((chrCode!=13)&&(chrCode!=10))
		tmp+=input.charAt(begin);

	}
	return tmp;
}



function isInteger(field)
{
	s = myTrim(field);

	var i;

	if (isEmpty(field))
	{
		return false;
	}

	for (i=0; i<field.length; i++)
	{
		var c = field.charAt(i);

		if (!isDigit(c))
		{
			return false;
		}

		if(c==0&&i==0&&field.length>1)
		{
			return false;
		}
	}

	return true;
}



function isLetter(c)
{
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) );
}



function isDigit(c)
{
	return ((c >= "0") && (c <= "9"));
}


function myTrim(str)
{
	var end = false;
	var ch;

	while(!end)
	{
		if (str.length == 0) break;
		ch = str.charAt(0);

		if (ch == ' ')
		{
			str = str.substring(1,str.length);
		}
		else
		{
			end = true;
		}
	}

	end = false;

	while(!end)
	{
		if (str.length == 0)
		{
			break;
		}

		ch = str.charAt(str.length-1);

		if (ch == ' ')
		{
			str = str.substring(0,str.length-1);
		}
		else
		{
			end = true;
		}
	}

	return str;
}





function myReset(w, h)
{
	var pox = (screen.width-w)/2;
	var poy = (screen.height-h)/2;
	window.resizeTo(w+15, h+10);
	window.moveTo(((pox>0&&pox<screen.width)?pox:0), ((poy>0&&poy<screen.height)?poy:0));
}



function isPrice(field)
{
	field = myTrim(field);
	var i;
	var seenDecimalPoint = false;

	if (isEmpty(field))
	{
		return false;
	}

	if (field == ".")
	{
		return false;
	}

	for (i=0; i<field.length; i++)
	{
		// Check that current character is number.
		var c = field.charAt(i);

		if ((c == ".") && !seenDecimalPoint)
		{
			seenDecimalPoint = true;
		}
		else if (!isDigit(c))
		{
			return false;
		}
	}
	if(seenDecimalPoint == true)
	{
	  var afterdot = field.substring(field.indexOf('.',0)+1).length;

	  if(afterdot > 2)
	  {
		 return false;
	  }
    }
	return true;
}



function calculatebytesize(field)
{
	field = myTrim(field);

	var i;
	var size=0;

	for (i = 0; i < field.length; i++)
	{
		var c = field.charAt(i);

		if ((c >= "!") && (c <= "\u20AC")||(c==" ") )
		{
			size=size+1;
		}
		else
		{
			size=size+3;
		}
	}

	return size;
}




function setLetterBorder(toneNameLetter)
{
	var imgName = "img" + toneNameLetter.toLowerCase();
	document.images[imgName].border = 2;

}



function setSelectValue(selectstart, value1, selectend, value2)
{
	if(selectstart.value == value1)
	{
		selectend.value = value2;
		selectend.disabled = true;
	}
	else
	{
		selectend.disabled = false;
	}
}


function checkHandPhone(phone , countrytype)
{


	if(isNaN(phone))
	{
		return 1;
	}


	if(countrytype == 1)
	{
		if(phone.length != 8)
		{
			return 2;
		}
		else if(phone.charAt(0) != '0')
		{
			return 3;
		}
		else
		{
			return 0;
		}
	}
	else
	{
		if(phone.length != 11)
		{
			return 2;
		}
		else if(phone.charAt(0) != '1' || phone.charAt(1) != '3')
		{
			return 3;
		}
		else
		{
			return 0;
		}
	}
}



function checkFixedPhone(phone)
{
	if(isNaN(phone))
	{
		return 1;
	}
	else if(phone.length == 0)
	{
		return 2;
	}
	else if (phone.length > 15)
	{
		return 3;
	}

	else if(phone.charAt(0) != '0')
	{
		return 4;
	}
	else if(	phone.length <10)
	{
		return 5;
	}
	else
	{
		return 0;
	}
}




function convertDBFormat(dbField)
{
	var returnStr = "";
	var fieldArray = dbField.split("'");

	for(var i = 0; i < fieldArray.length; i++)
	{
		if(i == fieldArray.length - 1)
		{
			returnStr = returnStr + fieldArray[i];
		}
		else
		{
			returnStr = returnStr + fieldArray[i] + "''";
		}
	}

	return returnStr;
}


function play(field)
{
	document.all.bgsound.src=field;
}




function round_decimals(original_number , decimals)
{
	var result1 = original_number * Math.pow(10 , decimals);
	var result2 = Math.round(result1);
	var result3 = result2 / Math.pow(10 , decimals);

	return(result3);
}




// Modified for Fixing the Defect ID: AA6D01310 By Jayesh Damodar Patel on 19-02-2007
/*function containInvalidChar(field)
{
	for (i = 0; i < field.length; i++)
	{
		var c = field.charAt(i);

		if(c == '?' || c == '&' || c == '<'
		   || c == '>' || c == '\'' || c == '"'
		   || c == '@' || c == '#'|| c == '\\'|| c == '`'
		   || c == ';' || c == '$' || c == '^' || c == '\/'|| c == '!' || c == '~' || c == '_'|| c == '%'|| c == ','|| c == '|'|| c == '+'|| c == '*')
		{
			return true;
		}
	}

	return false;
}*/

var reg = " ";
function containInvalidChar(field)
{
	var i=0, j=0;
	for (i = 0; i < field.length; i++)
	{
		var c = field.charAt(i);
		for (j = 0; j < reg.length; j++)
		{	
			if(c == reg.charAt(j) )
			{
				return true;
			}
		}
	}

	return false;
}

// Modification for the Defect ID: AA6D01310 By Jayesh Damodar Patel Ends.


//Begin RBTV5.0D82
function containSpecialChar(field)
{
	for (i = 0; i < field.length; i++)
	{
		var c = field.charAt(i);

		if( c == '&' || c == '<' || c == '!' || c == '*'
		   || c == '>' || c == '"' || c == '(' || c == ')'
		   || c == '-' || c == '_' || c == '+' || c == '='
		   || c == '|' || c == ';' || c == ':' || c == '\''
		   || c == '.' || c == ',' || c == '?' 
		   || c == '[' || c == ']' || c == '{' || c == '}'
		   || c == '@' || c == '#'|| c == '\\'|| c == '`'
		   || c == '$' || c == '^' || c == '\/' || c == '~' || c == '%')
		{
			return true;
		}
	}

	return false;
}
//Begin RBTV5.0D82

function isPhoneNumber(field)
{
	for (i = 0; i < field.length; i++)
	{
		var c = field.charAt(i);

		if((!isDigit(c))&&c!='-')
		{
			return false;
		}
	}

	return true;

}



function converturlcode(field)
{
	field = field.replace('%','%25')
	field = field.replace('&','%26')
	field = field.replace('"','&quot;')
	field = field.replace('>','&gt;')
	field = field.replace('<','&lt;')
	field = field.replace('#','%23')
	field = field.replace('+','%2B')

	return field;
}






function dropit2(name)
{
	var zindex=100
	var sOpen=""
	var nMenuNum = name.substring(name.length - 1,name.length)

	sOpen="dropmenu" + nMenuNum

	var themenu=document.all[sOpen]

	if (themenu == null)
	{
		return
	}

	if (document.all)
	{
		themenu.style.left=document.body.scrollLeft+event.clientX-event.offsetX
		themenu.style.top=document.body.scrollTop+event.clientY-event.offsetY+25

		if (themenu.style.visibility=="hidden")
		{
			 themenu.style.visibility="visible"
			 themenu.style.zIndex=zindex++
		}
	}
}



function hidemenu(name)
{
	var zindex=100
	var sOpen=""
	var nMenuNum = name.substring(name.length - 1,name.length)
	sOpen="dropmenu" + nMenuNum
	var themenu=document.all[sOpen]

	if (themenu == null)
	{
		return;
	}

	var theID = window.event.toElement.id.substring(0,1)

	if(window.event.toElement.id!=sOpen && window.event.toElement.id!="link" )
	{
		themenu.style.visibility="hidden";
	}
}





function decomposeString(str, sperate1, sperate2)
{
	var returnArray = new Array();
	var tempArray = str.split(sperate1);
	var p = 0;

	for(i = 0; i < tempArray.length; i++)
	{
		var andArray = tempArray[i].split(sperate2);

		for(j = 0; j < andArray.length; j++)
		{
			if(andArray[j] != '' && andArray[j] != null)
			{
				returnArray[p++] = andArray[j];
			}
		}
	}

	return returnArray;
}


var new_window


function window_available()
{
	if(! new_window)
	{
		return false;
	}
	else if(new_window.closed)
	{
		return false;
	}
	else
	{
		return true;
	}
}


function play(url , toneName , backgroundmap)
{

	if(!window_available())
	{

		new_window = window.open('/auditionpage.htm' ,"", "width=200 , height=200");
		//new_window.close();
	}
	else
	{
		new_window.close();
		new_window = window.open('/auditionpage.htm' ,"", "width=0 , height=0");
	}



	new_window.MediaPlayer.FileName = url;
	//new_window.MediaPlayer.Play();

}



function validatetime(dateString)
{

	if(dateString.length!=8)
	{
		return false;
	}

	if(isNumbers(dateString.substring(0,2))==false
	   ||isNumbers(dateString.substring(3,5))==false
	   ||isNumbers(dateString.substring(6,8))==false)
	{
		return false;
	}

	if(dateString.charAt(2)!=':'||dateString.charAt(5)!=':')
	{
		return false;
	}

	var hour=parseInt(dateString.substring(0,2),10);
	var minute=parseInt(dateString.substring(3,5),10);
	var second=parseInt(dateString.substring(6,8),10);

	if(hour<24&&minute<60&&second<60)
	{
		return true;
	}
	else
	{
		return false;
	}

}


 var listenWindow;
function listen(toneCode,tongPath, toneName, singer)
{
	if(listenWindow != null)
	{
		 listenWindow.close();
	}
	var left = 20;//Math.floor( (screen.width - 400) / 2);
	var top = 20;//Math.floor( (screen.height - 300) / 2);
	var lisurl="../user/listentone.screen?toneCode="+toneCode+"&tonePath="+tongPath+"&toneName="+toneName+"&singer="+singer;
	listenWindow = window.open(lisurl,"listen","width=450,height=300,top="+top+",left="+left);
}





 var splistenWin;
function splisten(toneType,tongPath, toneID, toneName,callFrom)
{
	if(splistenWin != null)
	{
		 splistenWin.close();
	}
	var left = 20;//Math.floor( (screen.width - 400) / 2);
	var top = 20;//Math.floor( (screen.height - 300) / 2);
	var lisurl= "../sp/listentone.screen?toneType="+toneType+"&tonePath="+tongPath+"&toneID="+toneID+"&toneName="+toneName+"&callFrom="+callFrom;
	splistenWin = window.open(lisurl,"listen","width=400,height=300,top="+top+",left="+left);
}


 var corplistenWin;
function corplisten(toneType,tongPath, toneID, toneName)
{
	if(corplistenWin != null)
	{
		 corplistenWin.close();
	}
	var left = 20;//Math.floor( (screen.width - 400) / 2);
	var top = 20;//Math.floor( (screen.height - 300) / 2);
	corplistenWin = window.open("../corp/listentone.screen?toneType="+toneType+"&tonePath="+tongPath+"&toneID="+toneID+"&toneName="+toneName,"listen","width=400,height=300,top="+top+",left="+left);
}

//add by lirenming
 var cutToneWindow;
function cutTone(toneBoxId, toneId, tongPath, toneName, singer, toneOffsets)
{
	if(cutToneWindow != null)
	{
		 cutToneWindow.close();
	}
	var left = 20;//Math.floor( (screen.width - 400) / 2);
	var top = 20;//Math.floor( (screen.height - 300) / 2);
	var lisurl="../user/cuttone.screen?toneBoxID="+toneBoxId+"&toneID="+toneId+"&tonePath="+tongPath+"&toneName="+toneName+"&singer="+singer+"&toneOffsets="+toneOffsets;
	cutToneWindow = window.open(lisurl,"","width=600,height=350,top="+top+",left="+left);
}
function numberOnly() // onkeypress event
{
  var key = window.event.keyCode;
  if(( key > 47 && key < 58 ) || (key==8)|| (key==9)|| (key==13)|| (key==37)|| (key==38)
	|| (key==39)|| (key==40)|| (key==46) || ( key > 95 && key < 106 ))
	  window.event.returnValue = true;
  else {
	  window.event.returnValue = false;
  }
}


function trim(strValue)
{
	var iLTR, jRTL;
	var chr;


	for( iLTR = 0; iLTR < strValue.length; iLTR++ )
	{
		chr = strValue.charAt(iLTR) ;
		if( chr != " " ) break;
	}

	if( iLTR == strValue.length ) return "";


	for( jRTL = strValue.length - 1; jRTL >= 0; jRTL-- )
	{
		chr = strValue.charAt(jRTL);
		if( chr != " " ) break;
	}
	return strValue.substring(iLTR, jRTL + 1);
}


function trimZero(strValue)
{
	var iLTR;
	var chr;


	for( iLTR = 0; iLTR < strValue.length; iLTR++ )
	{
		chr = strValue.charAt(iLTR) ;
		if( chr != "0" ) break;
	}

	if( iLTR == strValue.length ) return "";

	return strValue.substring(iLTR, strValue.length);
}


function existChinese(strValue)
{
	var chrCode
	for(var iChar = 0; iChar < strValue.length; iChar++)
	{
		chrCode = strValue.charCodeAt(iChar);
		if(parseInt(chrCode) > 255)
		{
			return true;
		}
	}
	return false;
}



function formatInputNumber(oElement, length, decimal)
{
	var oInput = oElement;
	var oInputValue = trim(oInput.value);
	var iLowcase = oInputValue.indexOf("e");
	var iUpcase = oInputValue.indexOf("E");

	if( oInputValue == "")
	{
		oInput.value = "";
		return true;
	}

	if (existChinese(oInputValue))
	{
		oInput.value = "";
		return true;
	}

	if((iLowcase != -1)||(iUpcase != -1))
	{

		return true;
	}


	var bOverflow = false;
	var partInteger = "";
	var countIntegerLength = 0;
	var partDecimal = "";
	var countDecimalLength = 0;

	var iPoint = oInputValue.indexOf(".");

	var allowIntegerLength = length - decimal - 1;
	var allowDecimalLength = decimal;


	if(iPoint == -1)
	{
		partInteger = oInputValue;
		partInteger = trimZero(partInteger);
		countIntegerLength = oInputValue.length;
	}
	else
	{
		partInteger = oInputValue.substring(0,iPoint);
		partInteger = trimZero(partInteger);
		countIntegerLength = partInteger.length;

		partDecimal = oInputValue.substring(iPoint + 1, iPoint + 1 + allowDecimalLength);
		countDecimalLength = partDecimal.length;
	}
	if (partInteger == "")
	{
		partInteger = "0";
	}


	if(countIntegerLength > allowIntegerLength)
	{
		partInteger = "0";
		bOverflow = true;
	}


	if(countDecimalLength < allowDecimalLength)
	{
		for (var iDecimal = 0; iDecimal < (allowDecimalLength - countDecimalLength); iDecimal++)
			partDecimal = partDecimal + "0";
	}


	if (partDecimal != "")
	{
		oInput.value = partInteger + "." + partDecimal;
	}
	else
	{
		oInput.value = partInteger
	}
	if (bOverflow) oInput.focus();
}


function clearValue(obj){
	obj.value = "";
}
 

 var adminlistenWin
function adminlisten(toneType,tongPath, toneID, toneName)
{

	if(adminlistenWin != null)
	{
		 adminlistenWin.close();
	}
	
	var left = 20;//Math.floor( (screen.width - 400) / 2);
	var top = 20;//Math.floor( (screen.height - 300) / 2);
	var lisurl= encodeURI("listentone.screen?toneType="+toneType+"&tonePath="+tongPath+"&toneID="+toneID+"&toneName="+toneName);
	adminlistenWin = window.open(lisurl,"","width=400,height=300,top="+top+",left="+left);
}

var previewWin;
function previewpic(toneType,tongPath, toneID, toneName)
{
	
	if(previewWin != null)
	{
	  previewWin.close();
	}
	var left = 20;//Math.floor( (screen.width - 400) / 2);
	var top = 20;//Math.floor( (screen.height - 300) / 2);
	var lisurl= encodeURI("previewpic.screen?toneType="+toneType+"&tonePath="+tongPath+"&toneID="+toneID+"&toneName="+toneName);
	previewWin = window.open(lisurl,"1",'scrollbars=1 ,width=650,height=535,resizable=1');
}

function down(m1,m2,m3)
{
form1.action = "/sp/DownPicFileServlet?picCode=" + m1 + "&formatName=" + m2+ "&type=" + m3;
form1.submit();
}

Validator =function() {
	this.Require = /\S/;
	this.SingleLetter = /^[A-Za-z]{1}$/;
	this.Price = /^[0-9]{1}(\.\d{1,2})?$/;
	this.ListenFile = /^(.)*\.wav$/;
	this.PreviewFile = /^(.)*\.jpg$/;
	this.Email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	this.Phone = /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/;
	this.Mobile = /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/;
	this.Url = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
	this.IdCard = /^\d{15}(\d{2}[A-Za-z0-9])?$/;
	this.Currency = /^\d+(\.\d+)?$/;
	this.Number = /^\d+$/;
	this.Zip = /^[1-9]\d{5}$/;
	this.QQ = /^[1-9]\d{4,8}$/;
	this.Integer = /^[-\+]?\d+$/;
	this.Double = /^[-\+]?\d+(\.\d+)?$/;
	this.English = /^[A-Za-z]+$/;
	this.Chinese =  /^[\u0391-\uFFE5]+$/;
	this.UnSafe = /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/;
	this.IsSafe = function(str){return !this.UnSafe.test(str);};
	this.SafeString = "this.IsSafe(value)";
	this.Limit ="this.limit(value.length,getAttribute('min'),  getAttribute('max'))";
	this.LimitB = "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))";
	this.Date = "this.IsDate(value, getAttribute('min'), getAttribute('format'))";
	this.Repeat = "value == document.getElementsByName(getAttribute('to'))[0].value";
	this.Range = "getAttribute('min') < value && value < getAttribute('max')";
	this.Compare = "this.compare(value,getAttribute('operator'),getAttribute('to'))";
	this.Custom = "this.Exec(value, getAttribute('regexp'))";
	this.Group = "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))";
	this.ErrorItem = [document.forms[0]];
	this.ErrorMessage = ["以下原因导致提交失败：\t\t\t\t"];
	this.Validate = function(theForm, mode){
		var obj = theForm || event.srcElement;
		var count = obj.elements.length;
		this.ErrorMessage.length = 1;
		this.ErrorItem.length = 1;
		this.ErrorItem[0] = obj;
		for(var i=0;i<count;i++){
			with(obj.elements[i]){
				var _dataType = getAttribute("dataType");
				if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
				this.ClearState(obj.elements[i]);
				if(getAttribute("require") == "false" && value == "") continue;
				switch(_dataType){
					case "Date" :
					case "Repeat" :
					case "Range" :
					case "Compare" :
					case "Custom" :
					case "Group" : 
					case "Limit" :
					case "LimitB" :
					case "SafeString" :
						if(!eval(this[_dataType]))	{
							this.AddError(i, getAttribute("msg"));
						}
						break;
					default :
						if(!this[_dataType].test(myTrim(value))){
							this.AddError(i, getAttribute("msg"));
						}
						break;
				}
			}
		}
		if(this.ErrorMessage.length > 1){
			mode = mode || 1;
			var errCount = this.ErrorItem.length;
			switch(mode){
			case 2 :
				for(var i=1;i<errCount;i++)
					this.ErrorItem[i].style.color = "red";
			case 1 :
				alert(this.ErrorMessage.join("\n"));
				this.ErrorItem[1].focus();
				break;
			case 3 :
				for(var i=1;i<errCount;i++){
				try{
					var span = document.createElement("SPAN");
					span.id = "__ErrorMessagePanel";
					span.style.color = "red";
					this.ErrorItem[i].parentNode.appendChild(span);
					span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");
					}
					catch(e){alert(e.description);}
				}
				this.ErrorItem[1].focus();
				break;
			default :
				alert(this.ErrorMessage.join("\n"));
				break;
			}
			return false;
		}
		return true;
	};
	this.limit = function(len,min, max){
		min = min || 0;
		max = max || Number.MAX_VALUE;
		return min <= len && len <= max;
	};
	this.LenB = function(str){
		return str.replace(/[^\x00-\xff]/g,"**").length;
	};
	this.ClearState = function(elem){
		with(elem){
			if(style.color == "red")
				style.color = "";
			var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
			if(lastNode.id == "__ErrorMessagePanel")
				parentNode.removeChild(lastNode);
		}
	};
	this.AddError = function(index, str){
		this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];
		this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
	};
	this.Exec = function(op, reg){
		return new RegExp(reg,"g").test(op);
	};
	this.compare = function(op1,operator,op2){
		switch (operator) {
			case "NotEqual":
				return (op1 != op2);
			case "GreaterThan":
				return (op1 > op2);
			case "GreaterThanEqual":
				return (op1 >= op2);
			case "LessThan":
				return (op1 < op2);
			case "LessThanEqual":
				return (op1 <= op2);
			default:
				return (op1 == op2);            
		}
	};
	this.MustChecked = function(name, min, max){
		var groups = document.getElementsByName(name);
		var hasChecked = 0;
		min = min || 1;
		max = max || groups.length;
		for(var i=groups.length-1;i>=0;i--)
			if(groups[i].checked) hasChecked++;
		return min <= hasChecked && hasChecked <= max;
	};
	this.IsDate = function(op, formatString){
		formatString = formatString || "ymd";
		var m, year, month, day;
		switch(formatString){
			case "ymd" :
				m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
				if(m == null ) return false;
				day = m[6];
				month = m[5]--;
				year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
				break;
			case "dmy" :
				m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
				if(m == null ) return false;
				day = m[1];
				month = m[3]--;
				year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
				break;
			default :
				break;
		}
		if(!parseInt(month)) return false;
		month = month==12 ?0:month;
		var date = new Date(year, month, day);
        return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate());
		function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
	};
 }

//Add by Jacky Liu 60005607 at 2007-06-09: for the poped windows for AIMI.
var shockWindow;
function downshocktone(toneCode)
{
		if(shockWindow != null)
		{
			 shockWindow.close();
		}
	  shockWindow = window.open("/user/queryshocktone.do?resourcecode="+toneCode,"","width=400,height=300,top=100,left=100");
}
var pictureWindow;
function downloadpicture(toneID,toneCode)
{
		if(pictureWindow != null)
		{
			 pictureWindow.close();
		}
	  var param = "resourceid=" + toneID + "&resourcecode=" + toneCode;
    pictureWindow = window.open("/user/querypicture.do?"+param,"","width=450,height=530,resizable,top=100,left=100");
}

var ivrsongWindow;
function ivrsong(toneID,toneCode,tonePath,toneName,price)
{
	  if(ivrsongWindow != null)
	  {
	     ivrsongWindow.close();
	  }		
		var param =	"toneID="+toneID+"&toneCode="+toneCode+"&tonePath="+tonePath+"&toneName="+toneName+"&price="+price;
			  
    ivrsongWindow = window.open("/user/ivrsongpresent.screen?"+param,"","width=480,height=350,top=100,left=100");    
}
//End add by jacky liu 2007-06-09

var detailWindow;
function showdetail(toneID,toneCode,toneName,singerName,desc,price,toneValidDay,spName,updateTime,downTimes,relativeTime)
{
    if(detailWindow != null)
    {
        detailWindow.close();
    }
    var param = "toneID=" + toneID + "&toneCode=" + toneCode + "&toneName=" + toneName
	          + "&singerName=" + singerName + "&desc=" + desc + "&price=" + price
			  + "&toneValidDay=" + toneValidDay + "&spName=" + spName + "&updateTime=" + updateTime
			  + "&downTimes=" + downTimes+"&relativeTime="+relativeTime;
    detailWindow = window.open("userdowntone.screen?"+param,"","width=400,height=420,top=100,left=100");
}

var downWindow;
function downtone(toneID,toneCode,toneName,singerName,desc,price,toneValidDay,spName,updateTime,downTimes,relativeTime)
{
    if(downWindow != null)
    {
        downWindow.close();
    }
    var param = "toneID=" + toneID + "&toneCode=" + toneCode + "&toneName=" + toneName
	          + "&singerName=" + singerName + "&desc=" + desc + "&price=" + price
			  + "&toneValidDay=" + toneValidDay + "&spName=" + spName + "&updateTime=" + updateTime
			  + "&downTimes=" + downTimes+"&relativeTime="+relativeTime;
    downWindow = window.open("userdowntone.screen?"+param,"","width=400,height=420,top=100,left=100");
}

var deliverWindow;
function delivertone(toneID,toneCode,toneName,singerName,desc,price,toneValidDay,spName,updateTime,downTimes,relativeTime)
{
    if(deliverWindow != null)
    {
        deliverWindow.close();
    }
    var param = "toneID=" + toneID + "&toneCode=" + toneCode + "&toneName=" + toneName
	          + "&singerName=" + singerName + "&desc=" + desc + "&price=" + price
			  + "&toneValidDay=" + toneValidDay + "&spName=" + spName + "&updateTime=" + updateTime
			  + "&downTimes=" + downTimes+"&relativeTime="+relativeTime;
    deliverWindow = window.open("/user/userdelivertone.screen?"+param,"","width=400,height=420,top=100,left=100");
}
var listenWindow;
function listen1(toneCode,tongPath, toneName, singer)
{
    if(listenWindow != null)
    {
            listenWindow.close();
    }
    var left = 20;//Math.floor( (screen.width - 400) / 2);
    var top = 20;//Math.floor( (screen.height - 300) / 2);
    listenWindow = window.open("/user/listentone.screen?toneCode="+toneCode+"&tonePath="+tongPath+"&toneName="+toneName+"&singer="+singer,"","width=450,height=300,top="+top+",left="+left);
}

function cancelRBTService()
{
    if (confirm("Confirm the cancel of RBT service?"))
	  {
	      document.location.href="/user/userdeleteaccount.do";
    }
}

function isActiveUser(status,userType)
{
	 if(confirm("Confirm the user activating?"))
	 {
	 		document.location.href = "/user/modifystatus.do?status="+status+"&userType="+userType;
	 }
}

function isSuspendUser(status,userType)
{
	 if(confirm("Confirm the user suspending?"))
	 {
	 		document.location.href = "/user/modifystatus.do?status="+status+"&userType="+userType;
	 }
}

