
var combo_text = "";
var combo_timeout_id = null;

    // Ultimate client-side JavaScript client sniff. Version 3.02

    // convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase();

    // *** BROWSER VERSION ***
    // Note: On IE5, these return 4, so use is_ie5up to detect IE5.
    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);

    // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
    // If you want to allow spoofing, take out the tests for opera and webtv.
    var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
    var is_nav2 = (is_nav && (is_major == 2));
    var is_nav3 = (is_nav && (is_major == 3));
    var is_nav4 = (is_nav && (is_major == 4));
    var is_nav4up = (is_nav && (is_major >= 4));
    var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );
    var is_nav6 = (is_nav && (is_major == 5));
    var is_nav6up = (is_nav && (is_major >= 5));
    var is_gecko = (agt.indexOf('gecko') != -1);


    var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var is_ie3    = (is_ie && (is_major < 4));
    var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5")==-1) );
    var is_ie4up  = (is_ie && (is_major >= 4));
    var is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    var is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
    var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
    var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
    
   
//
// internet explorer 4 onkeydown event'ini cancel edemiyor.
// bu kod sadece internet explorer 5 ve ustu versiyonlar icin
// calismalidir.
//

if (is_ie5up)
{
	//alert('onDocumentKeyDown');
	document.onkeydown = onDocumentKeyDown;
	//alert('onDocumentKeyDown1');
}
	
function onDocumentCut()
{
	if (event.srcElement.className == "formatted_numeric")
	{
		event.returnValue = false;
		return false;
	}
	return true;
}
function onDocumentPaste()
{
	if (event.srcElement.className == "formatted_numeric")
	{
		event.returnValue = false;
		return false;
	}
	return true;
}

//r : raw_data_length
//f: formatted edit box max length

function f2r(len)
{
	return len - Math.floor(len	/4);
}
function r2f(len)
{
	return len + Math.floor((len-1)	/3);
}

function soldaki_sifirlari_at(x)
{
	var i = 0;

	while (i < x.length)
	{
		if (x.charAt(i) == '0')
			i++;
		else
			break;
	}
	if (i == x.length)
		return "0";
	return x.substring(i, x.length);
}
function format(l)
{
	if (l == "" || l == "0")
		return l;

	var s = new String("");

	l = soldaki_sifirlari_at(l);

	var len = l.length;
	var i = 0;

	for (i = 0; i < len; i++)
	{
		if (i != 0 && ((len-i) % 3) == 0)
    		s += ",";
		s += l.charAt(i);
	}
	return s;
}
function remove_format(l)
{
  var i = 0;
  var s = new String("");

  while (i < l.length)
  {
     if (l.charAt(i) != ',')
		s += l.charAt(i);
	 i++;
  }
  return s;
}

function mapKeyCode(code)
{
	return event.keyCode-48;
}
function onDocumentKeyDown()
{

	var e = event.srcElement;

	if (event.keyCode == 109)
	{
		event.keyCode = 9;
		return true;
	}
	else if (event.keyCode == 13)
	{
		return true;
	}
	else if (e.className == "formatted_numeric")
	{
		if (event.keyCode == 9 || // tab
			(event.keyCode >= 35 && event.keyCode <= 40)) // home,end, arrow keys
			return true;
		if (event.keyCode == 46) // delete
		{
			if (document.selection.type == "Text")
				document.selection.clear();
			raw_text = remove_format(e.value);
			e.value = format(raw_text);
			return false;	
		}	
		var raw_text;
		
		event.returnValue = false;
		if (event.keyCode == 8) // backspace
		{
			if (document.selection.type == "Text")
			{
				document.selection.clear();
				raw_text = remove_format(e.value);
				e.value = format(raw_text);
			}	
			else
			{	
				raw_text = remove_format(e.value);
				raw_text = raw_text.substring(0, raw_text.length - 1);
				e.value = format(raw_text);
			}
		}	
		else if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105))
		{
			if (document.selection.type == "Text")
				document.selection.clear();
			raw_text = remove_format(e.value);
			if (event.keyCode >= 96 && event.keyCode <= 105)
				event.keyCode = mapKeyCode(event.keyCode);
			var maxLen = f2r(e.maxLength);
			if (maxLen > 18)
				maxLen = 18;
			if (raw_text.length < maxLen)
				raw_text = raw_text + String.fromCharCode(event.keyCode);
			e.value = format(raw_text);
		}
	}
	else if (e.className == "special_combo")
	{
		if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105))
		{
			if (event.keyCode >= 96 && event.keyCode <= 105)
				event.keyCode = mapKeyCode(event.keyCode);
			if (combo_timeout_id)
				window.clearTimeout(combo_timeout_id);
			combo_text += String.fromCharCode(event.keyCode);
			var index = find_closest_item_index(e, combo_text);
			event.returnValue = false;
			e.selectedIndex = index;
			combo_timeout_id = window.setTimeout("special_combo_timed_out()", 600);
		}
	}
}
function onDocumentKeyPress()
{

	var e = event.srcElement;

	if (e.className == "numeric")
	{
		if ((event.keyCode >= 48 && event.keyCode <= 57) || //(event.keyCode >= 96 && event.keyCode <= 105) ||
				event.keyCode == 13 || // backspace
				event.keyCode == 8 || // backspace
				event.keyCode == 9 || // tab
				event.keyCode == 46 || // delete
				(event.keyCode >= 35 && event.keyCode <= 40)) // home,end, arrow keys
		{		
			event.returnValue = true;
			return true;
		}
		else
		{
			event.returnValue = false;
			return false;
		}
	}
}

function matching_char_count(text, pattern)
{
	var i = 0;
	var len = pattern.length;

	if (text.length < pattern.length)
		len = text.length;
	while (i < len)
	{
		if (text.charAt(i) != pattern.charAt(i))
			break;
		i++;
	}
	return i;
}
function find_closest_item_index(e, combo_text)
{
	var opt = e.options;
	var max_match_index = 0;
	var max_match = 0;

	for (i = 0; i < opt.length; i++)
	{
		var match_count = matching_char_count(opt(i).text, combo_text);

		if (match_count > max_match)
		{
			max_match = match_count;
			max_match_index = i;
		}
	}
	return max_match_index;
}

function special_combo_timed_out()
{
	combo_text = "";
	window.clearTimeout(combo_timeout_id);
}

function make_numeric(l)
{
  var i = 0;
  var s = new String("");

  while (i < l.length)
  {
     if (l.charAt(i) >= '0' && l.charAt(i) <= '9')
		s += l.charAt(i);
	 i++;
  }
  return s;
}
function clear_numeric_formats()
{

	var form = event.srcElement;

	for (j = 0; j < form.elements.length; j++)
	{
		var obj = form.elements(j);

		if (obj.className == "formatted_numeric")
			obj.value = remove_format(obj.value);
		else if (obj.className == "numeric")
			obj.value = make_numeric(obj.value);
		else if (form.elements(j).type == "submit")
			obj.disabled = true;
	}
	return true;
}

function onPageLoad()
{


	if (!is_ie5up)
		return;
	for (i = 0; i < document.forms.length; i++)
	{
	
		var form = document.forms.item(i);

		if (form.onsubmit != null)
		{alert('34');
			form.onsubmit = new Function("var res = eval(" + form.onsubmit + "()); if (res == false) return false; return clear_numeric_formats();");
			}
		else
			form.onsubmit = clear_numeric_formats;
		for (j = 0; j < form.elements.length; j++)
		{
			var o = form.elements(j);
			if (o.className == "formatted_numeric")
			{
				o.value = format(remove_format(o.value));
				o.oncut = onDocumentCut;
				o.onpaste = onDocumentPaste;
			}
			else if (o.className == "numeric")
				o.onkeypress = onDocumentKeyPress;
		}
	}
}

