var f;
var counting=false;
var start_time,now_time,timer_id=null;
var input_msg,escape_msg,escape_msg1;
var i,max_len,no_of_Eng_Char,no_of_Chi_Char,total_no_of_char,chi_position,no_of_Eng_Char2,no_of_Chi_Char2,total_no_of_char2;
var max_eng_char=139,max_chi_char=69;

function update_counter(form) {
        input_msg=form.Msg.value;
        input_msg2=form.sender.value;
        escape_msg=escape(input_msg);
        escape_msg2=escape(input_msg2);
        chi_position=0;
        chi_position2=0;
        no_of_Eng_Char=0;
        no_of_Chi_Char=0;
        no_of_Eng_Char2=0;
        no_of_Chi_Char2=0;

// For Text one
        for (i=0;i<escape_msg2.length;i++) {
                if (escape_msg2.charAt(i)=="%") {
                        if (escape_msg2.charAt(i+1)=="u" || escape_msg2.charAt(i+1)=="A" || escape_msg2.charAt(i+1)=="B" || escape_msg2.charAt(i+1)=="C" || escape_msg2.charAt(i+1)=="D" || escape_msg2.charAt(i+1)=="E" || escape_msg2.charAt(i+1)=="F") {
                                no_of_Chi_Char2++;
                                if (chi_position2==0) { chi_position2=no_of_Eng_Char2+no_of_Chi_Char2; }
                                if (escape_msg2.charAt(i+1)=="u") { i+=5; }
                                else {
                                        i+=3;
                                        if (escape_msg2.charAt(i)=="%") { i+=2; }
                                }
                        } else {
                                no_of_Eng_Char2++;
                                i+=2;
                        }
                } else { no_of_Eng_Char2++; }
                if ((no_of_Eng_Char2+no_of_Chi_Char2)==max_chi_char) { escape_msg3=escape_msg2.substring(0,i+1); }
        }
        total_no_of_char2=no_of_Eng_Char2+no_of_Chi_Char2;

//For Textarea one
        for (i=0;i<escape_msg.length;i++) {
                if (escape_msg.charAt(i)=="%") {
                        if (escape_msg.charAt(i+1)=="u" || escape_msg.charAt(i+1)=="A" || escape_msg.charAt(i+1)=="B" || escape_msg.charAt(i+1)=="C" || escape_msg.charAt(i+1)=="D" || escape_msg.charAt(i+1)=="E" || escape_msg.charAt(i+1)=="F") {
                                no_of_Chi_Char++;
                                if (chi_position==0) { chi_position=no_of_Eng_Char+no_of_Chi_Char; }
                                if (escape_msg.charAt(i+1)=="u") { i+=5; }
                                else {
                                        i+=3;
                                        if (escape_msg.charAt(i)=="%") { i+=2; }
                                }
                        } else {
                                no_of_Eng_Char++;
                                i+=2;
                        }
                } else { no_of_Eng_Char++; }
                if ((no_of_Eng_Char+no_of_Chi_Char)==(max_chi_char-total_no_of_char2)) { escape_msg1=escape_msg.substring(0,i+1); }
        }
        total_no_of_char=no_of_Eng_Char+no_of_Chi_Char;

        if (no_of_Chi_Char>0 || no_of_Chi_Char2>0) {
		form.code.value="big5";
                form.remLen.value=Math.max(max_chi_char-total_no_of_char-total_no_of_char2,0);
                if (total_no_of_char+total_no_of_char2>max_chi_char) {
                		if (navigator.appName=="Netscape") {
					alert("Please write message within 70 Chinese characters(Big5/GB) or 140 English charactersĦI");
				}
                        if (chi_position>(max_chi_char-total_no_of_char2)) { 
				form.Msg.value=input_msg.substring(0,chi_position-1); 
                        } else { form.Msg.value=unescape(escape_msg1); }
                }
        } else {
		form.code.value="english";
                form.remLen.value=Math.max(max_eng_char-total_no_of_char-total_no_of_char2,0);
                if (total_no_of_char>(max_eng_char-total_no_of_char2)) {
                        form.Msg.value=input_msg.substring(0,max_eng_char-total_no_of_char2);
                	if (navigator.appName=="Netscape") {
				alert("Please write message within 70 Chinese characters(Big5/GB) or 140 English charactersĦI");
			}
                }
        }
        if (counting) {
                start_time=new Date();
                start_time=start_time.getTime();
                delay_counter(form);
        }
}

function delay_counter(form) {
        now_time=new Date();
        now_time=now_time.getTime();
        if (now_time-start_time<=500) {
                f=form;
                if (counting) { timer_id=setTimeout("delay_counter(f)",500); }
        } else {
                if (navigator.appName=="Netscape") {
//                        	form.remLen.focus();
//                        	form.Msg.focus();
                }
                update_counter(form);
        }
}

function start_counter(form) {
        counting=true;
        update_counter(form);
}

function stop_counter(form) {
        counting=false;
        clearTimeout(timer_id);
        update_counter(form);
} 

