﻿addEvent = function(o, e, f, s){
	//var cet = r = "_" + (e = "on" + e)
	
    var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
    r[r.length] = [f, s || o], o[e] = function(e)
    {
        try{
            (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
            e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
            e.target || (e.target = e.srcElement || null);
            e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
        }catch(f){}
        for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
        return e = null, !!d;
    }
};

removeEvent = function(o, e, f, s){
    for(var i = (e = o["_on" + e] || []).length; i;)
        if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
            return delete e[i];
    return false;
};

/*********************************************************
REQUIRES: http://www.jsfromhell.com/geral/event-listener
*********************************************************/

MaskInput = function(f, m){ //v1.0
    function mask(e){
        var patterns = {"1": /[A-Z]/i, "2": /[0-9]/, "4": /[À-ÿ]/i, "8": /./ },
            rules = { "a": 3, "A": 7, "9": 2, "C":5, "c": 1, "*": 8};
        function accept(c, rule){
            for(var i = 1, r = rules[rule] || 0; i <= r; i<<=1)
                if(r & i && patterns[i].test(c))
                    break;
                return i <= r || c == rule;
        }
        var k, mC, r, c = String.fromCharCode(k = e.key), l = f.value.length;
        (!k || k == 8 ? 1 : (r = /^(.)\^(.*)$/.exec(m)) && (r[0] = r[2].indexOf(c) + 1) + 1 ?
            r[1] == "O" ? r[0] : r[1] == "E" ? !r[0] : accept(c, r[1]) || r[0]
            : (l = (f.value += m.substr(l, (r = /[A|9|C|\*]/i.exec(m.substr(l))) ?
            r.index : l)).length) < m.length && accept(c, m.charAt(l))) || e.preventDefault();
    }
    for(var i in !/^(.)\^(.*)$/.test(m) && (f.maxLength = m.length), {keypress: 0, keyup: 1})
    {
        //alert(i);
//        alert(f.maxLength);
//        alert(mask);
        addEvent(f, i, mask);
    }
};

//isDate = function(y, m, d){ //v1.0
//        if(typeof y == "string" && m instanceof RegExp && d){
//            if(!m.test(y)) return 1;
//            y = RegExp["$" + d.y], m = RegExp["$" + d.m], d = RegExp["$" + d.d];
//        }
//        d = Math.abs(d) || 0, m = Math.abs(m) || 0, y = Math.abs(y) || 0;
//        return arguments.length != 3 ? 1 : d < 1 || d > 31 ? 2 : m < 1 || m > 12 ? 3 : /4|6|9|11/.test(m) && d == 31 ? 4
//        : m == 2 && (d > ((y = !(y % 4) && (y % 1e2) || !(y % 4e2)) ? 29 : 28)) ? 5 + !!y : 0;
//};


function ValidateNumber(evt) {
    var txtbox = null;
    if(!evt && window.event) {
        evt=window.event;
        txtbox = evt.srcElement;
        }
    else txtbox = evt.target;
	if (txtbox.value =="") return;
	//this is a regular expression for 2 decimals postion
	var re = /^(\+|-)?\d{1,6}(\.\d{1,2})?$/g;
	if (!re.test(txtbox.value))
		{
			txtbox.style.borderBottom="maroon 1pt inset";
			txtbox.style.borderRight="maroon 1pt inset";
			txtbox.style.borderTop="red 2px outset";
			txtbox.style.borderLeft="red 2px outset";
			txtbox.style.textAlign="left";
			var lbl= txtbox.parentNode.children[1];
			if (!lbl) {
				lbl =document.createElement("<span>");
				txtbox.parentNode.appendChild(lbl);
			}
			lbl.innerText="* Invalid number";
			lbl.style.color="red";

		}
	else
		{
			txtbox.style.textAlign="right";
			txtbox.style.borderBottom="gainsboro 1pt groove";
			txtbox.style.borderRight="gainsboro 1pt groove";
			txtbox.style.borderTop="gray 2px outset";
			txtbox.style.borderLeft="gray 2px outset";
			var lbl= txtbox.parentNode.children[1];

			if (lbl) {
				lbl.innerHTML ="";
			}
			
		}
}

function TarihOk(evt)
{
    check_date(evt);
}

function check_date(field){
    var checkstr = "0123456789";
    var DateField = field;
    var Datevalue = "";
    var DateTemp = "";
    var seperator = ".";
    var day;
    var month;
    var year;
    var leap = 0;
    var err = 0;
    var i;
       err = 0;
       DateValue = DateField.value;
       /* Delete all chars except 0..9 */
       for (i = 0; i < DateValue.length; i++) {
	      if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	         DateTemp = DateTemp + DateValue.substr(i,1);
	      }
       }
       DateValue = DateTemp;
       /* Always change date to 8 digits - string*/
       /* if year is entered as 2-digit / always assume 20xx */
       if (DateValue.length == 6) {
          DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
       if (DateValue.length != 8) {
          err = 19;}
       /* year is wrong if year = 0000 */
       year = DateValue.substr(4,4);
       if (year == 0 || year > 2100 || year < 1900) {
          err = 20;
       }       
       /* Validation of month*/
       month = DateValue.substr(2,2);
       if ((month < 1) || (month > 12)) {
          err = 21;
       }
       /* Validation of day*/
       day = DateValue.substr(0,2);
       if (day < 1) {
         err = 22;
       }
       /* Validation leap-year / february / day */
       if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
          leap = 1;
       }
       if ((month == 2) && (leap == 1) && (day > 29)) {
          err = 23;
       }
       if ((month == 2) && (leap != 1) && (day > 28)) {
          err = 24;
       }
       /* Validation of other months */
       if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
          err = 25;
       }
       if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
          err = 26;
       }
       /* if 00 ist entered, no error, deleting the entry */
       if ((day == 0) && (month == 0) && (year == 00)) {
          err = 0; day = ""; month = ""; year = ""; seperator = "";
       }
       /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
       if (err == 0) {
          DateField.value = day + seperator + month + seperator + year;
       }
       /* Error-message if err != 0 */
       else {
          alert("Hatalı Tarih !");
          DateField.select();
	      DateField.focus();
       }
}
// TARİH MASK //
function doGetCaretPosition (oField) 
{
	var iCaretPos = 0;
    if (document.selection) 
    { 
		oField.focus ();
		var oSel = document.selection.createRange ();
		oSel.moveStart ('character', -oField.value.length);
		iCaretPos = oSel.text.length;
	}
	return (iCaretPos);
}
function setCaretTo(obj, pos) 
{
	if(obj.createTextRange) 
	{
		var range = obj.createTextRange();   
		range.move("character", pos);   
		range.select();   
	} else if(obj.selectionStart) 
	{
		obj.focus();   
		obj.setSelectionRange(pos, pos);   
	}   
}  
function copyit(theField) 
{
	var selectedText = document.selection;
	if (selectedText.type == 'Text') 
	{
		var newRange = selectedText.createRange();
		theField.focus();
		return newRange.text;
	} 
	return "";
}

function tarihMask()
{
	if (window.event.srcElement.readOnly) 
		return;  
	
	var key_code = window.event.keyCode;  
	var lRak = "0";
	var oElement = window.event.srcElement;  
	
	
	if (key_code == 96)
		lRak = "0";
	else if (key_code == 97)
		lRak = "1";
	else if (key_code == 98)
		lRak = "2";
	else if (key_code == 99)
		lRak = "3";
	else if (key_code == 100)
		lRak = "4";
	else if (key_code == 101)
		lRak = "5";
	else if (key_code == 102)
		lRak = "6";
	else if (key_code == 103)
		lRak = "7";
	else if (key_code == 104)
		lRak = "8";
	else if (key_code == 105)
		lRak = "9";
	else
		lRak = String.fromCharCode(key_code);

	if (lRak =="B")
	{        
		var d = new Date();       
		var lGun = d.getDate() + ""
		var lAy = d.getMonth() + 1 + ""
		var lYil = d.getFullYear() + ""
		oElement.value = padl(lGun, 2, "0") + "." + padl(lAy, 2, "0") + "." + lYil;
		
		window.event.returnValue = 0;
    }
	
    if (!window.event.shiftKey && !window.event.ctrlKey && !window.event.altKey) 
    {        
		if ((key_code > 47 && key_code < 58) || (key_code > 95 && key_code < 106)) 
		{

			
			var orj = oElement.value;
			var lSecili = copyit(oElement);
			var lYeni = "";
			var lGun = "", lAy = "", lYil = "";
			
			if (lSecili == ".")
					return ;

			var ttt = doGetCaretPosition(oElement);
			var lYeniPos = ttt;
			
			if (ttt == 10 && lSecili.length == 10)
			{
				oElement.value = "";
				return ;
			}
			
			for (var z = 0 ; z < oElement.value.length;z++)
			{
				if (oElement.value.substr(z,1) != ".")
					lYeni += oElement.value.substr(z,1);
			}
			
			//sonuna ekleniyor
			if ((lYeni.length + 2 <= ttt) && lSecili.length == 0)
			{
				lYeni += lRak;
				lGun = lYeni.substr(0,2);
				lAy = lYeni.substr(2,2);
				lYil = lYeni.substr(4,4);

				if (lGun.length == 2)
					lGun += ".";
				if (lAy.length == 2)
					lAy += ".";
				lYeni =lGun + lAy + lYil;
				oElement.value = lYeni;

			} else //araya ekleniyor
			{
				lGun = lYeni.substr(0,2);
				lAy = lYeni.substr(2,2);
				lYil = lYeni.substr(4,4);
				
				if (lSecili.length == 2 && ttt == 2)
				{
					lGun = lRak + " ";
					lYeniPos = ttt-1;
				}
				if (lSecili.length == 1 && ttt == 1)
					lGun = lRak + lGun.substr(0,1);
				if (lSecili.length == 1 && ttt == 2)
				{
					lGun = lGun.substr(0,1) + lRak;
					lYeniPos = ttt+1;
				}
				
				if (lSecili.length == 2 && ttt == 5)
				{
					lAy = lRak + " ";
					lYeniPos = ttt-1;
				}

				if (lSecili.length == 1 && ttt == 4)
					lAy = lRak + lAy.substr(0,1);

				if (lSecili.length == 1 && ttt == 5)
					lAy = lAy.substr(0,1) + lRak;


				if ((lSecili.length > 0) && (ttt == 7 || ttt == 8 || ttt == 9 || ttt == 10))
				{
					if (lSecili.length == 4)
						lYil = lRak;
					else if (lSecili.length < 4)
					{
						lYil = lYil.substr(0,(ttt - 6) - lSecili.length) + lRak + lYil.substr(ttt-6);
						if (ttt < 10)
							lYeniPos = ttt - lSecili.length + 1;
					}
				}

				if (ttt == 0 && lSecili.length == 0)
					lGun = lRak + lGun.substr(1,1);
				else if (ttt == 1 && lSecili.length == 0)
				{
					lGun = lGun.substr(0,1) + lRak;
					lYeniPos = ttt + 1;
				} else if (ttt == 3 && lSecili.length == 0)
					lAy = lRak + lAy.substr(1,1);
				else if (ttt == 4 && lSecili.length == 0) 
				{
					lAy = lAy.substr(0,1) + lRak;
					lYeniPos = ttt + 1;
				} else if ((lSecili.length == 0) && (ttt == 6 || ttt == 7 || ttt == 8 || ttt == 9))
				{
					lYil = lYil.substr(0,ttt-6) + lRak + lYil.substr(ttt-5);
				} 
				
				if (lGun.length == 2)
					lGun += ".";
				if (lAy.length == 2)
					lAy += ".";
				lYeni =lGun + lAy + lYil;
				oElement.value = lYeni;
				
				if (lSecili.length == 0)
					setCaretTo(oElement, lYeniPos + 1);
				else
					setCaretTo(oElement, lYeniPos);
				
			}
			window.event.returnValue = false;
		} 
	} 
	if (key_code > 64 && key_code < 91)
		window.event.returnValue = false;
	
}


