var IE=(navigator.appName.toLowerCase().indexOf("microsoft")!=-1)?true:false;
var NS=(navigator.appName.toLowerCase().indexOf("netscape")!=-1)?true:false;
var MAC=(navigator.appVersion.toLowerCase().indexOf("mac")!=-1)?true:false;
var isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") != -1);true;false;
var realLength=0;
var textObj=null;
var maxLength=0;
var updateTimer=null;
var useCounter=false;
var globalId=null;
var lastLeftChars=0;
var alertBox=false;
if (typeof isGiftMessage == 'undefined'){
	isGiftMessage = false;
}

function onError(){
	top.location="javascript:";
}
function initCharCount(obj,max,counter,id,msg){
	globalId=id;
	textObj=obj;
	realLength=obj.value.length;
	maxLength=max;
	useCounter=counter;
	alertBox=msg;
	obj.onblur=new Function("if(updateTimer) top.clearTimeout(updateTimer)");
	obj.onblur= validateMessage;
	obj.onkeypress=watchMax;
	obj.onkeydown=watchMax;
	obj.onkeyup=watchMax;
}

function watchMax(e)
{
	//window.status=realLength - countCR();
	var keyCode=(NS)?e.which:event.keyCode;
	
	updateMessageLimit();
	
	if(realLength>=maxLength && keyCode!=8 && keyCode!=37 && keyCode!=38 && keyCode!=39 && keyCode!=40 && keyCode!=46){
		//Safari has a bug that doesnt cancel events correctly.
		if(isSafari && keyCode!=127) this.blur();
		if (isGiftMessage && keyCode!=13) {
			this.blur();
		}
		return false
	}
	else{
		if(!MAC) return true;
	}
}

function writeToLayer(){
	var leftChars=maxLength-realLength;
	if(leftChars<0) leftChars=0;
	if(leftChars>maxLength) leftChars=maxLength;
//	if(lastLeftChars!=leftChars){
		lastLeftChars=leftChars;
		//var strOutput="<font size=1><font color=red><b>";
		var strOutput="<span class='medText'>";
		//strOutput+=leftChars;
		//if(leftChars==1) strOutput+="</b></font> character remaining";
		if(leftChars==1) strOutput+=prefixMessage + leftChars + suffixMessage + "</span>";
		//else strOutput+="</b></font> characters remaining</font>";
		else strOutput+=prefixMessage + leftChars + suffixMessage + "</span>";
		if (document.getElementById)
		{
			var x=(globalId==null)? document.getElementById(textObj.name+"Lyr"): document.getElementById(globalId+"Lyr");
			if (x)
			{
				x.innerHTML = '';
				x.innerHTML = strOutput;
			}
		}
		else if (document.all)
		{
			var x=(globalId==null)? eval("document.all."+textObj.name+"Lyr"):eval("document.all."+globalId+"Lyr");
			x.innerHTML = strOutput;
		}
		
		

//	}
}

function checkMessageLimit(obj,id){
	var counter=true
	id = "ID" + id
	msg=""

	initCharCount(obj,max,counter,id,msg);
	updateMessageLimit();
}

function updateMessageLimit()
{
	realLength=textObj.value.length-countCR();
	
	if (textObj.value.length > maxLength){	
		textObj.value = textObj.value.substring(0,max);
	}
	if(useCounter) writeToLayer();
}

function validateMessage() {
	if (textObj.value.length-countCR() > maxLength){
		if (isGiftMessage){alert(exceededMessage);}
		textObj.value = textObj.value.substring(0,max + countCR());
		}
}


function countCR() {
		if (typeof isGiftMessage == 'undefined'){
			isGiftMessage = false;
		}
		if (isGiftMessage) {
			count = 0;
			for (cpos=0;cpos<=textObj.value.length;cpos++){
				c = textObj.value.charCodeAt(cpos);
				if (c == 13 && (document.all)){count = count + 1}
				else if (c == 10 && (!document.all)){count = count + 1}
			}
			if (document.all && !isMac) {count = count*2;}
			return count;
		}
		else { return 0}
}

function checkMessageLimitOnly(obj,id){
	var counter=true
	id = "ID" + id
	msg=""
	if(arguments.length>0) initCharCount(obj,max,counter,id,msg);
	else realLength=textObj.value.length;
	if (textObj.value.length > maxLength){	
		textObj.value = textObj.value.substring(0,max);
	}	
}