var isOpera = navigator.userAgent.indexOf("Opera") > -1; 
var isIE = navigator.userAgent.indexOf("MSIE") > 1 && !isOpera; 
var isMoz = navigator.userAgent.indexOf("Mozilla/5.") == 0 && !isOpera;

function replaceText(id)
{
	if((!id) || id=='')
	{
		eng='engraver';
		fnt='fonts';
		view='engraverView';
	}
	else
	{
		eng='engraver_' + id;
		fnt='fonts_' + id;
		view='engraverView_' + id;
	}

	//alert(document.getElementById(eng).value);
  var text = document.getElementById(eng).value;
  text = text.replace(/\+/g,'%2B');
  text = text.replace(/"/g,'%22');
	text = encodeURIComponent(text);
  text = text.replace(/'/g,'%27');
	
 	imgurl = "https://www.tungstenworld.com/core/engraver/libs/font.php?text="+text+"&style="+encodeURIComponent(document.getElementById(fnt).value);
//alert('imgurl = '+imgurl);
	//alert(text);
	document.getElementById(view).innerHTML = "<img src='"+imgurl+"' border='0' vspace='5' hspace='5'>";
}

function set_cursor_pos(field,cur_pos)
{
   if (cur_pos == -1) return;
   field.focus();
   if (field.createTextRange) {
      var range = field.createTextRange();
      range.move("Character",cur_pos);
      range.select();
   }
   else if (field.setSelectionRange) field.setSelectionRange(cur_pos,cur_pos);
}

function get_cursor_pos(field)
{
   if (typeof field.selectionStart != "undefined")
      return field.selectionStart;
   else if (document.selection)
      return Math.abs(document.selection.createRange().moveStart("character",-1000000));
}

function get_selection_length(field)
{
   if (typeof field.selectionStart != "undefined") {
      return field.selectionEnd - field.selectionStart;
}
   else if (document.selection) {
      var selected_range = document.selection.createRange();
      return selected_range.text.length;
   }
}

function insert_char(keychar,field,cursor_pos)
{
   field.value = field.value.substring(0,cursor_pos) + keychar + field.value.substring(cursor_pos);
}

function replace_char(keychar,field,cursor_pos)
{
   field.value = field.value.substring(0,cursor_pos) + keychar + field.value.substring(cursor_pos + 1);
}

function delete_chars(field,pos,num_chars)
{
   field.value = field.value.substring(0,pos) + field.value.substring(pos + num_chars);
}

 function addSymbol(btnvalue,id)
 {
	if((!id) || id=='')
	{
		eng='engraver';
		fnt='fonts';
		view='engraverView';
		ve='visibleEngraver';
	}
	else
	{
		eng='engraver_' + id;
		fnt='fonts_' + id;
		view='engraverView_' + id;
		ve='visibleEngraver_' + id;
	}
	if(btnvalue == 'infi')
		btnvl = '\x10';
	if(btnvalue == 'bull')
		btnvl = '\x11';
	if(btnvalue == 'cros')
		btnvl = '\x12';
	if(btnvalue == 'hear')
		btnvl = '\x13';
	if(btnvalue == 'yiny')
		btnvl = '\x14';
  var visible_field = document.getElementById(ve);
  visible_field.focus();
  if (visible_field.value.length >= 30) return;
  var cursor_pos = get_cursor_pos(visible_field);
  var engraver_field = document.getElementById(eng);
  insert_char(btnvl,engraver_field,cursor_pos);
  var visible_field = document.getElementById(ve);
  insert_char('*',visible_field,cursor_pos);
  replaceText(id);
  set_cursor_pos(visible_field,cursor_pos + 1);
 }

/*
var keyboard_symbols = new Array('','','','','','','','','','','','','','','',
   '','','','','','','','','','','','','','','','','','','!','"','#','$','%',
   '&','\'','(',')','*','+',',','-','.','/','','','','','','','','','','',':',
   ';','<','=','>','?','@','','','','','','','','','','','','','','','','','',
   '','','','','','','','','','','','^','_','`','','','','','','','','','','',
   '','','','','','','','','','','','','','','','','{','|','}','~');

function convert_keycode(event)
{
   if (isIE) var keycode = event.keyCode;
   else var keycode = event.charCode;
   if (((keycode > 32) && (keycode < 48)) ||
       ((keycode > 57) && (keycode < 65)) ||
       ((keycode > 93) && (keycode < 97)) ||
       ((keycode > 122) && (keycode < 127))) return keyboard_symbols[keycode];
   else return String.fromCharCode(keycode);
}
*/

function engraver_keydown(event,id)
{
   if (! isIE) return;
   var keycode = event.keyCode;
   if ((keycode == 8) || (keycode == 46)) engraver_keypress(event,id,true);
}

function engraver_keypress(event,id,delete_flag)
{
	if((!id) || id=='')
	{
		ve='visibleEngraver';
		eng='engraver';
	}
	else
	{
		ve='visibleEngraver_' + id;
		eng='engraver_' + id;
	}
	   
   if (! event) event = window.event;
   var keycode = event.keyCode;
   if ((! isIE) && ((keycode == 8) || (keycode == 46))) delete_flag = true;
// alert('keypress keycode = '+event.keyCode+', delete_flag = '+delete_flag);
//   if ((keycode > 34) && (keycode < 41)) return;
	//alert(ve);
   var visible_field = document.getElementById(ve);
   //alert(visible_field + " " + ve);
   var cursor_pos = get_cursor_pos(visible_field);
   var selection_length = get_selection_length(visible_field);
   var engraver_field = document.getElementById(eng);
//   var selection_length = engraver_field.value.length - visible_field.value.length;
   if ((selection_length > 0) && delete_flag) selection_length--;
   if (selection_length > 0) delete_chars(engraver_field,cursor_pos,selection_length);
   if (delete_flag && (keycode == 8)) {
      if (cursor_pos > 0) delete_chars(engraver_field,cursor_pos - 1,1);
   }
   else if (delete_flag && (keycode == 46)) delete_chars(engraver_field,cursor_pos,1);
   else if (visible_field.value.length < 30) {
//      var current_char = visible_field.value.charAt(cursor_pos - 1);
//      var current_char = convert_keycode(event);
      var current_char = String.fromCharCode(isIE ? event.keyCode : event.charCode);
//      if (selection_length > 0) replace_char(current_char,engraver_field,cursor_pos); else
      insert_char(current_char,engraver_field,cursor_pos);
// alert('inserted '+current_char+', keyCode = '+event.keyCode);
   }
   replaceText(id);
}

